commit d91c2a4ced7c6e5698399e94436862b776255bb3 Author: John.Miao Date: Tue May 13 09:46:54 2025 +0800 init diff --git a/README.md b/README.md new file mode 100644 index 0000000..a55cb3b --- /dev/null +++ b/README.md @@ -0,0 +1,30 @@ +## 开发 + +```bash +# 安装依赖 +npm install + +# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 +npm install --registry=https://registry.npmmirror.com + +# 启动服务 +npm run dev +``` + +浏览器访问 http://localhost:80 + +## 发布 + +```bash +# 构建测试环境 +npm run build:stage + +# 构建生产环境 +npm run build:prod +``` + +## 注意 + +```bash +# node.js版本不能高于16,推荐用16的最后一个LTS版本 +``` diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..b99f001 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,13 @@ +module.exports = { + presets: [ + // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app + '@vue/cli-plugin-babel/preset' + ], + 'env': { + 'development': { + // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). + // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. + 'plugins': ['dynamic-import-node'] + } + } +} diff --git a/bin/build.bat b/bin/build.bat new file mode 100644 index 0000000..dda590d --- /dev/null +++ b/bin/build.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [Ϣ] Weḅdistļ +echo. + +%~d0 +cd %~dp0 + +cd .. +npm run build:prod + +pause \ No newline at end of file diff --git a/bin/jessibuca/decoder.js b/bin/jessibuca/decoder.js new file mode 100644 index 0000000..da98db9 --- /dev/null +++ b/bin/jessibuca/decoder.js @@ -0,0 +1 @@ +!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(require("path"),require("fs"),require("crypto")):"function"==typeof define&&define.amd?define(["path","fs","crypto"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).path,e.fs,e.crypto$1)}(this,(function(e,r,t){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(e),a=n(r),i=n(t);var s=function(e,r){return e(r={exports:{}},r.exports),r.exports}((function(e){var r,t=void 0!==t?t:{},n=(t={print:function(e){console.log("Jessibuca: [worker]:",e)},printErr:function(e){console.warn("Jessibuca: [worker]:",e),postMessage({cmd:"wasmError",message:e})}},{});for(r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);var s,u="./this.program",c=!1,l=!1,f=!1;c="object"==typeof window,l="function"==typeof importScripts,f="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,s=!c&&!f&&!l;var d,p,h,m,v,g="";f?(g=l?o.default.dirname(g)+"/":__dirname+"/",d=function(e,r){return m||(m=a.default),v||(v=o.default),e=v.normalize(e),m.readFileSync(e,r?null:"utf8")},h=function(e){var r=d(e,!0);return r.buffer||(r=new Uint8Array(r)),P(r.buffer),r},process.argv.length>1&&(u=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),e.exports=t,process.on("uncaughtException",(function(e){if(!(e instanceof ot))throw e})),process.on("unhandledRejection",ne),t.inspect=function(){return"[Emscripten Module object]"}):s?("undefined"!=typeof read&&(d=function(e){return read(e)}),h=function(e){var r;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(P("object"==typeof(r=read(e,"binary"))),r)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(c||l)&&(l?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),g=0!==g.indexOf("blob:")?g.substr(0,g.lastIndexOf("/")+1):"",d=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},l&&(h=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),p=function(e,r,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=function(){200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)});var y=t.print||console.log.bind(console),w=t.printErr||console.warn.bind(console);for(r in n)n.hasOwnProperty(r)&&(t[r]=n[r]);n=null,t.arguments&&t.arguments,t.thisProgram&&(u=t.thisProgram),t.quit&&t.quit;var E,b,_=16;function k(e){k.shown||(k.shown={}),k.shown[e]||(k.shown[e]=1,w(e))}t.wasmBinary&&(E=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&ne("no native wasm support detected");var T=!1;function P(e,r){e||ne("Assertion failed: "+r)}var D="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function C(e,r,t){for(var n=r+t,o=r;e[o]&&!(o>=n);)++o;if(o-r>16&&e.subarray&&D)return D.decode(e.subarray(r,o));for(var a="";r>10,56320|1023&c)}}else a+=String.fromCharCode((31&i)<<6|s)}else a+=String.fromCharCode(i)}return a}function A(e,r){return e?C(M,e,r):""}function S(e,r,t,n){if(!(n>0))return 0;for(var o=t,a=t+n-1,i=0;i=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i);if(s<=127){if(t>=a)break;r[t++]=s}else if(s<=2047){if(t+1>=a)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=a)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=a)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-o}function F(e,r,t){return S(e,M,r,t)}function x(e){for(var r=0,t=0;t=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++t)),n<=127?++r:r+=n<=2047?2:n<=65535?3:4}return r}var R,$,M,O,I,j,U,N,B,W,L="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function z(e,r){for(var t=e,n=t>>1,o=n+r/2;!(n>=o)&&I[n];)++n;if((t=n<<1)-e>32&&L)return L.decode(M.subarray(e,t));for(var a="",i=0;!(i>=r/2);++i){var s=O[e+2*i>>1];if(0==s)break;a+=String.fromCharCode(s)}return a}function H(e,r,t){if(void 0===t&&(t=2147483647),t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,a=0;a>1]=i,r+=2}return O[r>>1]=0,r-n}function V(e){return 2*e.length}function X(e,r){for(var t=0,n="";!(t>=r/4);){var o=j[e+4*t>>2];if(0==o)break;if(++t,o>=65536){var a=o-65536;n+=String.fromCharCode(55296|a>>10,56320|1023&a)}else n+=String.fromCharCode(o)}return n}function G(e,r,t){if(void 0===t&&(t=2147483647),t<4)return 0;for(var n=r,o=n+t-4,a=0;a=55296&&i<=57343)i=65536+((1023&i)<<10)|1023&e.charCodeAt(++a);if(j[r>>2]=i,(r+=4)+4>o)break}return j[r>>2]=0,r-n}function q(e){for(var r=0,t=0;t=55296&&n<=57343&&++t,r+=4}return r}t.INITIAL_MEMORY;var J=[],Y=[],K=[],Q=[];var Z=0,ee=null;function re(e){Z++,t.monitorRunDependencies&&t.monitorRunDependencies(Z)}function te(e){if(Z--,t.monitorRunDependencies&&t.monitorRunDependencies(Z),0==Z&&ee){var r=ee;ee=null,r()}}function ne(e){throw t.onAbort&&t.onAbort(e),w(e+=""),T=!0,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}function oe(e,r){return String.prototype.startsWith?e.startsWith(r):0===e.indexOf(r)}t.preloadedImages={},t.preloadedAudios={};var ae="data:application/octet-stream;base64,";function ie(e){return oe(e,ae)}var se="file://";function ue(e){return oe(e,se)}var ce,le,fe="decoder.wasm";function de(e){try{if(e==fe&&E)return new Uint8Array(E);if(h)return h(e);throw"both async and sync fetching of the wasm failed"}catch(e){ne(e)}}function pe(e){for(;e.length>0;){var r=e.shift();if("function"!=typeof r){var n=r.func;"number"==typeof n?void 0===r.arg?W.get(n)():W.get(n)(r.arg):n(void 0===r.arg?null:r.arg)}else r(t)}}ie(fe)||(fe=function(e){return t.locateFile?t.locateFile(e,g):g+e}(fe));var he={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,r){for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:function(e){var r="/"===e.charAt(0),t="/"===e.substr(-1);return(e=he.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:function(e){var r=he.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.substr(0,n.length-1)),t+n):"."},basename:function(e){if("/"===e)return"/";var r=(e=(e=he.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===r?e:e.substr(r+1)},extname:function(e){return he.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return he.normalize(e.join("/"))},join2:function(e,r){return he.normalize(e+"/"+r)}};var me={resolve:function(){for(var e="",r=!1,t=arguments.length-1;t>=-1&&!r;t--){var n=t>=0?arguments[t]:we.cwd();if("string"!=typeof n)throw new TypeError("Arguments to path.resolve must be strings");if(!n)return"";e=n+"/"+e,r="/"===n.charAt(0)}return(r?"/":"")+(e=he.normalizeArray(e.split("/").filter((function(e){return!!e})),!r).join("/"))||"."},relative:function(e,r){function t(e){for(var r=0;r=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=me.resolve(e).substr(1),r=me.resolve(r).substr(1);for(var n=t(e.split("/")),o=t(r.split("/")),a=Math.min(n.length,o.length),i=a,s=0;s0?t.slice(0,n).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(r=window.prompt("Input: "))&&(r+="\n"):"function"==typeof readline&&null!==(r=readline())&&(r+="\n");if(!r)return null;e.input=Yr(r,!0)}return e.input.shift()},put_char:function(e,r){null===r||10===r?(y(C(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(y(C(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,r){null===r||10===r?(w(C(e.output,0)),e.output=[]):0!=r&&e.output.push(r)},flush:function(e){e.output&&e.output.length>0&&(w(C(e.output,0)),e.output=[])}}};function ge(e){for(var r=function(e,r){return r||(r=_),Math.ceil(e/r)*r}(e,16384),t=et(r);e=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),0!=t&&(r=Math.max(r,256));var n=e.contents;e.contents=new Uint8Array(r),e.usedBytes>0&&e.contents.set(n.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,r){if(e.usedBytes!=r)if(0==r)e.contents=null,e.usedBytes=0;else{var t=e.contents;e.contents=new Uint8Array(r),t&&e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr:function(e){var r={};return r.dev=we.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,we.isDir(e.mode)?r.size=4096:we.isFile(e.mode)?r.size=e.usedBytes:we.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.timestamp),r.mtime=new Date(e.timestamp),r.ctime=new Date(e.timestamp),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr:function(e,r){void 0!==r.mode&&(e.mode=r.mode),void 0!==r.timestamp&&(e.timestamp=r.timestamp),void 0!==r.size&&ye.resizeFileStorage(e,r.size)},lookup:function(e,r){throw we.genericErrors[44]},mknod:function(e,r,t,n){return ye.createNode(e,r,t,n)},rename:function(e,r,t){if(we.isDir(e.mode)){var n;try{n=we.lookupNode(r,t)}catch(e){}if(n)for(var o in n.contents)throw new we.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=t,r.contents[t]=e,r.timestamp=e.parent.timestamp,e.parent=r},unlink:function(e,r){delete e.contents[r],e.timestamp=Date.now()},rmdir:function(e,r){var t=we.lookupNode(e,r);for(var n in t.contents)throw new we.ErrnoError(55);delete e.contents[r],e.timestamp=Date.now()},readdir:function(e){var r=[".",".."];for(var t in e.contents)e.contents.hasOwnProperty(t)&&r.push(t);return r},symlink:function(e,r,t){var n=ye.createNode(e,r,41471,0);return n.link=t,n},readlink:function(e){if(!we.isLink(e.mode))throw new we.ErrnoError(28);return e.link}},stream_ops:{read:function(e,r,t,n,o){var a=e.node.contents;if(o>=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-o,n);if(i>8&&a.subarray)r.set(a.subarray(o,o+i),t);else for(var s=0;s0||n+t8)throw new we.ErrnoError(32);for(var o=he.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),a=we.root,i="/",s=0;s40)throw new we.ErrnoError(32)}}return{path:i,node:a}},getPath:function(e){for(var r;;){if(we.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?t+"/"+r:t+r:t}r=r?e.name+"/"+r:e.name,e=e.parent}},hashName:function(e,r){for(var t=0,n=0;n>>0)%we.nameTable.length},hashAddNode:function(e){var r=we.hashName(e.parent.id,e.name);e.name_next=we.nameTable[r],we.nameTable[r]=e},hashRemoveNode:function(e){var r=we.hashName(e.parent.id,e.name);if(we.nameTable[r]===e)we.nameTable[r]=e.name_next;else for(var t=we.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode:function(e,r){var t=we.mayLookup(e);if(t)throw new we.ErrnoError(t,e);for(var n=we.hashName(e.id,r),o=we.nameTable[n];o;o=o.name_next){var a=o.name;if(o.parent.id===e.id&&a===r)return o}return we.lookup(e,r)},createNode:function(e,r,t,n){var o=new we.FSNode(e,r,t,n);return we.hashAddNode(o),o},destroyNode:function(e){we.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var r=we.flagModes[e];if(void 0===r)throw new Error("Unknown file open mode: "+e);return r},flagsToPermissionString:function(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:function(e,r){return we.ignorePermissions||(-1===r.indexOf("r")||292&e.mode)&&(-1===r.indexOf("w")||146&e.mode)&&(-1===r.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){var r=we.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate:function(e,r){try{we.lookupNode(e,r);return 20}catch(e){}return we.nodePermissions(e,"wx")},mayDelete:function(e,r,t){var n;try{n=we.lookupNode(e,r)}catch(e){return e.errno}var o=we.nodePermissions(e,"wx");if(o)return o;if(t){if(!we.isDir(n.mode))return 54;if(we.isRoot(n)||we.getPath(n)===we.cwd())return 10}else if(we.isDir(n.mode))return 31;return 0},mayOpen:function(e,r){return e?we.isLink(e.mode)?32:we.isDir(e.mode)&&("r"!==we.flagsToPermissionString(r)||512&r)?31:we.nodePermissions(e,we.flagsToPermissionString(r)):44},MAX_OPEN_FDS:4096,nextfd:function(e,r){e=e||0,r=r||we.MAX_OPEN_FDS;for(var t=e;t<=r;t++)if(!we.streams[t])return t;throw new we.ErrnoError(33)},getStream:function(e){return we.streams[e]},createStream:function(e,r,t){we.FSStream||(we.FSStream=function(){},we.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var n=new we.FSStream;for(var o in e)n[o]=e[o];e=n;var a=we.nextfd(r,t);return e.fd=a,we.streams[a]=e,e},closeStream:function(e){we.streams[e]=null},chrdev_stream_ops:{open:function(e){var r=we.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new we.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,r){return e<<8|r},registerDevice:function(e,r){we.devices[e]={stream_ops:r}},getDevice:function(e){return we.devices[e]},getMounts:function(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push.apply(t,n.mounts)}return r},syncfs:function(e,r){"function"==typeof e&&(r=e,e=!1),we.syncFSRequests++,we.syncFSRequests>1&&w("warning: "+we.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=we.getMounts(we.root.mount),n=0;function o(e){return we.syncFSRequests--,r(e)}function a(e){if(e)return a.errored?void 0:(a.errored=!0,o(e));++n>=t.length&&o(null)}t.forEach((function(r){if(!r.type.syncfs)return a(null);r.type.syncfs(r,e,a)}))},mount:function(e,r,t){var n,o="/"===t,a=!t;if(o&&we.root)throw new we.ErrnoError(10);if(!o&&!a){var i=we.lookupPath(t,{follow_mount:!1});if(t=i.path,n=i.node,we.isMountpoint(n))throw new we.ErrnoError(10);if(!we.isDir(n.mode))throw new we.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},u=e.mount(s);return u.mount=s,s.root=u,o?we.root=u:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),u},unmount:function(e){var r=we.lookupPath(e,{follow_mount:!1});if(!we.isMountpoint(r.node))throw new we.ErrnoError(28);var t=r.node,n=t.mounted,o=we.getMounts(n);Object.keys(we.nameTable).forEach((function(e){for(var r=we.nameTable[e];r;){var t=r.name_next;-1!==o.indexOf(r.mount)&&we.destroyNode(r),r=t}})),t.mounted=null;var a=t.mount.mounts.indexOf(n);t.mount.mounts.splice(a,1)},lookup:function(e,r){return e.node_ops.lookup(e,r)},mknod:function(e,r,t){var n=we.lookupPath(e,{parent:!0}).node,o=he.basename(e);if(!o||"."===o||".."===o)throw new we.ErrnoError(28);var a=we.mayCreate(n,o);if(a)throw new we.ErrnoError(a);if(!n.node_ops.mknod)throw new we.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},create:function(e,r){return r=void 0!==r?r:438,r&=4095,r|=32768,we.mknod(e,r,0)},mkdir:function(e,r){return r=void 0!==r?r:511,r&=1023,r|=16384,we.mknod(e,r,0)},mkdirTree:function(e,r){for(var t=e.split("/"),n="",o=0;othis.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}},a.prototype.setDataGetter=function(e){this.getter=e},a.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",t,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,a=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,i=1048576;o||(i=n);var s=this;s.setDataGetter((function(e){var r=e*i,o=(e+1)*i-1;if(o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,r){if(e>r)throw new Error("invalid range ("+e+", "+r+") or no bytes requested!");if(r>n-1)throw new Error("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;if(o.open("GET",t,!1),n!==i&&o.setRequestHeader("Range","bytes="+e+"-"+r),"undefined"!=typeof Uint8Array&&(o.responseType="arraybuffer"),o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),!(o.status>=200&&o.status<300||304===o.status))throw new Error("Couldn't load "+t+". Status: "+o.status);return void 0!==o.response?new Uint8Array(o.response||[]):Yr(o.responseText||"",!0)}(r,o)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!a&&n||(i=n=1,n=this.getter(0).length,i=n,y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!l)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new a;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var s={isDevice:!1,contents:i}}else s={isDevice:!1,url:t};var u=we.createFile(e,r,s,n,o);s.contents?u.contents=s.contents:s.url&&(u.contents=null,u.url=s.url),Object.defineProperties(u,{usedBytes:{get:function(){return this.contents.length}}});var c={};return Object.keys(u.stream_ops).forEach((function(e){var r=u.stream_ops[e];c[e]=function(){return we.forceLoadFile(u),r.apply(null,arguments)}})),c.read=function(e,r,t,n,o){we.forceLoadFile(u);var a=e.node.contents;if(o>=a.length)return 0;var i=Math.min(a.length-o,n);if(a.slice)for(var s=0;s>2]=n.dev,j[t+4>>2]=0,j[t+8>>2]=n.ino,j[t+12>>2]=n.mode,j[t+16>>2]=n.nlink,j[t+20>>2]=n.uid,j[t+24>>2]=n.gid,j[t+28>>2]=n.rdev,j[t+32>>2]=0,le=[n.size>>>0,(ce=n.size,+Math.abs(ce)>=1?ce>0?(0|Math.min(+Math.floor(ce/4294967296),4294967295))>>>0:~~+Math.ceil((ce-+(~~ce>>>0))/4294967296)>>>0:0)],j[t+40>>2]=le[0],j[t+44>>2]=le[1],j[t+48>>2]=4096,j[t+52>>2]=n.blocks,j[t+56>>2]=n.atime.getTime()/1e3|0,j[t+60>>2]=0,j[t+64>>2]=n.mtime.getTime()/1e3|0,j[t+68>>2]=0,j[t+72>>2]=n.ctime.getTime()/1e3|0,j[t+76>>2]=0,le=[n.ino>>>0,(ce=n.ino,+Math.abs(ce)>=1?ce>0?(0|Math.min(+Math.floor(ce/4294967296),4294967295))>>>0:~~+Math.ceil((ce-+(~~ce>>>0))/4294967296)>>>0:0)],j[t+80>>2]=le[0],j[t+84>>2]=le[1],0},doMsync:function(e,r,t,n,o){var a=M.slice(e,e+t);we.msync(r,a,o,t,n)},doMkdir:function(e,r){return"/"===(e=he.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),we.mkdir(e,r,0),0},doMknod:function(e,r,t){switch(61440&r){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return we.mknod(e,r,t),0},doReadlink:function(e,r,t){if(t<=0)return-28;var n=we.readlink(e),o=Math.min(t,x(n)),a=$[r+o];return F(n,r,t+1),$[r+o]=a,o},doAccess:function(e,r){if(-8&r)return-28;var t;if(!(t=we.lookupPath(e,{follow:!0}).node))return-44;var n="";return 4&r&&(n+="r"),2&r&&(n+="w"),1&r&&(n+="x"),n&&we.nodePermissions(t,n)?-2:0},doDup:function(e,r,t){var n=we.getStream(t);return n&&we.close(n),we.open(e,r,0,t,t).fd},doReadv:function(e,r,t,n){for(var o=0,a=0;a>2],s=j[r+(8*a+4)>>2],u=we.read(e,$,i,s,n);if(u<0)return-1;if(o+=u,u>2],s=j[r+(8*a+4)>>2],u=we.write(e,$,i,s,n);if(u<0)return-1;o+=u}return o},varargs:void 0,get:function(){return Ee.varargs+=4,j[Ee.varargs-4>>2]},getStr:function(e){return A(e)},getStreamFromFD:function(e){var r=we.getStream(e);if(!r)throw new we.ErrnoError(8);return r},get64:function(e,r){return e}};function be(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var _e=void 0;function ke(e){for(var r="",t=e;M[t];)r+=_e[M[t++]];return r}var Te={},Pe={},De={},Ce=48,Ae=57;function Se(e){if(void 0===e)return"_unknown";var r=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return r>=Ce&&r<=Ae?"_"+e:e}function Fe(e,r){return e=Se(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(r)}function xe(e,r){var t=Fe(r,(function(e){this.name=r,this.message=e;var t=new Error(e).stack;void 0!==t&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},t}var Re=void 0;function $e(e){throw new Re(e)}var Me=void 0;function Oe(e){throw new Me(e)}function Ie(e,r,t){function n(r){var n=t(r);n.length!==e.length&&Oe("Mismatched type converter count");for(var o=0;o>2])}function ir(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function sr(e){this.rawDestructor&&this.rawDestructor(e)}function ur(e){null!==e&&e.delete()}function cr(e,r,t){if(r===t)return e;if(void 0===t.baseClass)return null;var n=cr(e,r,t.baseClass);return null===n?null:t.downcast(n)}function lr(){return Object.keys(pr).length}function fr(){var e=[];for(var r in pr)pr.hasOwnProperty(r)&&e.push(pr[r]);return e}function dr(e){Ge=e,qe.length&&Ge&&Ge(Je)}var pr={};function hr(e,r){return r=function(e,r){for(void 0===r&&$e("ptr should not be undefined");e.baseClass;)r=e.upcast(r),e=e.baseClass;return r}(e,r),pr[r]}function mr(e,r){return r.ptrType&&r.ptr||Oe("makeClassHandle requires ptr and ptrType"),!!r.smartPtrType!==!!r.smartPtr&&Oe("Both smartPtrType and smartPtr must be specified"),r.count={value:1},ze(Object.create(e,{$$:{value:r}}))}function vr(e){var r=this.getPointee(e);if(!r)return this.destructor(e),null;var t=hr(this.registeredClass,r);if(void 0!==t){if(0===t.$$.count.value)return t.$$.ptr=r,t.$$.smartPtr=e,t.clone();var n=t.clone();return this.destructor(e),n}function o(){return this.isSmartPointer?mr(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:r,smartPtrType:this,smartPtr:e}):mr(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var a,i=this.registeredClass.getActualType(r),s=Qe[i];if(!s)return o.call(this);a=this.isConst?s.constPointerType:s.pointerType;var u=cr(r,this.registeredClass,a.registeredClass);return null===u?o.call(this):this.isSmartPointer?mr(a.registeredClass.instancePrototype,{ptrType:a,ptr:u,smartPtrType:this,smartPtr:e}):mr(a.registeredClass.instancePrototype,{ptrType:a,ptr:u})}function gr(e,r,t,n,o,a,i,s,u,c,l){this.name=e,this.registeredClass=r,this.isReference=t,this.isConst=n,this.isSmartPointer=o,this.pointeeType=a,this.sharingPolicy=i,this.rawGetPointee=s,this.rawConstructor=u,this.rawShare=c,this.rawDestructor=l,o||void 0!==r.baseClass?this.toWireType=nr:n?(this.toWireType=tr,this.destructorFunction=null):(this.toWireType=or,this.destructorFunction=null)}function yr(e,r,n){return-1!=e.indexOf("j")?function(e,r,n){var o=t["dynCall_"+e];return n&&n.length?o.apply(null,[r].concat(n)):o.call(null,r)}(e,r,n):W.get(r).apply(null,n)}function wr(e,r){var t,n,o,a=-1!=(e=ke(e)).indexOf("j")?(t=e,n=r,o=[],function(){o.length=arguments.length;for(var e=0;e>2)+n]);return t}function Tr(e){for(;e.length;){var r=e.pop();e.pop()(r)}}function Pr(e,r){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var t=Fe(e.name||"unknownFunctionName",(function(){}));t.prototype=e.prototype;var n=new t,o=e.apply(n,r);return o instanceof Object?o:n}function Dr(e,r,t){return e instanceof Object||$e(t+' with invalid "this": '+e),e instanceof r.registeredClass.constructor||$e(t+' incompatible with "this" of type '+e.constructor.name),e.$$.ptr||$e("cannot call emscripten binding method "+t+" on deleted object"),rr(e.$$.ptr,e.$$.ptrType.registeredClass,r.registeredClass)}var Cr=[],Ar=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Sr(e){e>4&&0==--Ar[e].refcount&&(Ar[e]=void 0,Cr.push(e))}function Fr(){for(var e=0,r=5;r>2])};case 3:return function(e){return this.fromWireType(B[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Or(e,r,t){switch(r){case 0:return t?function(e){return $[e]}:function(e){return M[e]};case 1:return t?function(e){return O[e>>1]}:function(e){return I[e>>1]};case 2:return t?function(e){return j[e>>2]}:function(e){return U[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Ir(e){return e||$e("Cannot use deleted val. handle = "+e),Ar[e].value}function jr(e,r){var t=Pe[e];return void 0===t&&$e(r+" has unknown type "+br(e)),t}var Ur={};var Nr=[];function Br(e,r){return(e>>>0)+4294967296*r}function Wr(e,r){if(e<=0)return e;var t=r<=32?Math.abs(1<=t&&(r<=32||e>t)&&(e=-2*t+e),e}function Lr(e,r){return e>=0?e:r<=32?2*Math.abs(1<=0;)a=zr(a[0]);var i=r.split("\n");r="";var s=new RegExp("\\s*(.*?)@(.*?):([0-9]+):([0-9]+)"),u=new RegExp("\\s*(.*?)@(.*):(.*)(:(.*))?"),c=new RegExp("\\s*at (.*?) \\((.*):(.*):(.*)\\)");for(var l in i){var f=i[l],d="",p="",h=0,m=0,v=c.exec(f);if(v&&5==v.length)d=v[1],p=v[2],h=v[3],m=v[4];else{if((v=s.exec(f))||(v=u.exec(f)),!(v&&v.length>=4)){r+=f+"\n";continue}d=v[1],p=v[2],h=v[3],m=0|v[4]}var g=!1;if(8&e){var y=emscripten_source_map.originalPositionFor({line:h,column:m});(g=y&&y.source)&&(64&e&&(y.source=y.source.substring(y.source.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=" at "+d+" ("+y.source+":"+y.line+":"+y.column+")\n")}(16&e||!g)&&(64&e&&(p=p.substring(p.replace(/\\/g,"/").lastIndexOf("/")+1)),r+=(g?" = "+d:" at "+d)+" ("+p+":"+h+":"+m+")\n"),128&e&&a[0]&&(a[1]==d&&a[2].length>0&&(r=r.replace(/\s+$/,""),r+=" with values: "+a[1]+a[2]+"\n"),a=zr(a[0]))}return r=r.replace(/\s+$/,"")}var Vr={};function Xr(){if(!Xr.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"};for(var r in Vr)e[r]=Vr[r];var t=[];for(var r in e)t.push(r+"="+e[r]);Xr.strings=t}return Xr.strings}var Gr=function(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=we.nextInode++,this.name=r,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=n},qr=365,Jr=146;function Yr(e,r,t){var n=t>0?t:x(e)+1,o=new Array(n),a=S(e,o,0,o.length);return r&&(o.length=a),o}Object.defineProperties(Gr.prototype,{read:{get:function(){return(this.mode&qr)===qr},set:function(e){e?this.mode|=qr:this.mode&=-366}},write:{get:function(){return(this.mode&Jr)===Jr},set:function(e){e?this.mode|=Jr:this.mode&=-147}},isFolder:{get:function(){return we.isDir(this.mode)}},isDevice:{get:function(){return we.isChrdev(this.mode)}}}),we.FSNode=Gr,we.staticInit(),function(){for(var e=new Array(256),r=0;r<256;++r)e[r]=String.fromCharCode(r);_e=e}(),Re=t.BindingError=xe(Error,"BindingError"),Me=t.InternalError=xe(Error,"InternalError"),Ke.prototype.isAliasOf=Ue,Ke.prototype.clone=He,Ke.prototype.delete=Ve,Ke.prototype.isDeleted=Xe,Ke.prototype.deleteLater=Ye,gr.prototype.getPointee=ir,gr.prototype.destructor=sr,gr.prototype.argPackAdvance=8,gr.prototype.readValueFromPointer=ar,gr.prototype.deleteObject=ur,gr.prototype.fromWireType=vr,t.getInheritedInstanceCount=lr,t.getLiveInheritedInstances=fr,t.flushPendingDeletes=Je,t.setDelayFunction=dr,Er=t.UnboundTypeError=xe(Error,"UnboundTypeError"),t.count_emval_handles=Fr,t.get_first_emval=xr;var Kr={x:function(e,r,t){Ee.varargs=t;try{var n=Ee.getStreamFromFD(e);switch(r){case 0:return(o=Ee.get())<0?-28:we.open(n.path,n.flags,0,o).fd;case 1:case 2:case 13:case 14:return 0;case 3:return n.flags;case 4:var o=Ee.get();return n.flags|=o,0;case 12:o=Ee.get();return O[o+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return a=28,j[rt()>>2]=a,-1}}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),-e.errno}var a},w:function(e,r,t){Ee.varargs=t;try{var n=Ee.getStr(e),o=t?Ee.get():0;return we.open(n,r,o).fd}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),-e.errno}},C:function(e,r,t,n,o){var a=be(t);je(e,{name:r=ke(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?n:o},argPackAdvance:8,readValueFromPointer:function(e){var n;if(1===t)n=$;else if(2===t)n=O;else{if(4!==t)throw new TypeError("Unknown boolean type size: "+r);n=j}return this.fromWireType(n[e>>a])},destructorFunction:null})},n:function(e,r,n,o,a,i,s,u,c,l,f,d,p){f=ke(f),i=wr(a,i),u&&(u=wr(s,u)),l&&(l=wr(c,l)),p=wr(d,p);var h=Se(f);!function(e,r,n){t.hasOwnProperty(e)?((void 0===n||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[n])&&$e("Cannot register public name '"+e+"' twice"),Ze(t,e,e),t.hasOwnProperty(n)&&$e("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),t[e].overloadTable[n]=r):(t[e]=r,void 0!==n&&(t[e].numArguments=n))}(h,(function(){_r("Cannot construct "+f+" due to unbound types",[o])})),Ie([e,r,n],o?[o]:[],(function(r){var n,a;r=r[0],a=o?(n=r.registeredClass).instancePrototype:Ke.prototype;var s=Fe(h,(function(){if(Object.getPrototypeOf(this)!==c)throw new Re("Use 'new' to construct "+f);if(void 0===d.constructor_body)throw new Re(f+" has no accessible constructor");var e=d.constructor_body[arguments.length];if(void 0===e)throw new Re("Tried to invoke ctor of "+f+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(d.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),c=Object.create(a,{constructor:{value:s}});s.prototype=c;var d=new er(f,s,c,p,n,i,u,l),m=new gr(f,d,!0,!1,!1),v=new gr(f+"*",d,!1,!1,!1),g=new gr(f+" const*",d,!1,!0,!1);return Qe[e]={pointerType:v,constPointerType:g},function(e,r,n){t.hasOwnProperty(e)||Oe("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==n?t[e].overloadTable[n]=r:(t[e]=r,t[e].argCount=n)}(h,s),[m,v,g]}))},i:function(e,r,t,n,o,a){P(r>0);var i=kr(r,t);o=wr(n,o);var s=[a],u=[];Ie([],[e],(function(e){var t="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[r-1])throw new Re("Cannot register multiple constructors with identical number of parameters ("+(r-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[r-1]=function(){_r("Cannot construct "+e.name+" due to unbound types",i)},Ie([],i,(function(n){return e.registeredClass.constructor_body[r-1]=function(){arguments.length!==r-1&&$e(t+" called with "+arguments.length+" arguments, expected "+(r-1)),u.length=0,s.length=r;for(var e=1;e0?", ":"")+f),d+=(c?"var rv = ":"")+"invoker(fn"+(f.length>0?", ":"")+f+");\n",s)d+="runDestructors(destructors);\n";else for(u=i?1:2;u>>s}}var u=-1!=r.indexOf("unsigned");je(e,{name:r,fromWireType:i,toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+$r(t)+'" to '+this.name);if(to)throw new TypeError('Passing a number "'+$r(t)+'" from JS side to C/C++ side to an argument of type "'+r+'", which is outside the valid range ['+n+", "+o+"]!");return u?t>>>0:0|t},argPackAdvance:8,readValueFromPointer:Or(r,a,0!==n),destructorFunction:null})},b:function(e,r,t){var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function o(e){var r=U,t=r[e>>=2],o=r[e+1];return new n(R,o,t)}je(e,{name:t=ke(t),fromWireType:o,argPackAdvance:8,readValueFromPointer:o},{ignoreDuplicateRegistrations:!0})},m:function(e,r){var t="std::string"===(r=ke(r));je(e,{name:r,fromWireType:function(e){var r,n=U[e>>2];if(t)for(var o=e+4,a=0;a<=n;++a){var i=e+4+a;if(a==n||0==M[i]){var s=A(o,i-o);void 0===r?r=s:(r+=String.fromCharCode(0),r+=s),o=i+1}}else{var u=new Array(n);for(a=0;a>2]=o,t&&n)F(r,a+4,o+1);else if(n)for(var i=0;i255&&(Zr(a),$e("String has UTF-16 code units that do not fit in 8 bits")),M[a+4+i]=s}else for(i=0;i>2],i=a(),u=e+4,c=0;c<=o;++c){var l=e+4+c*r;if(c==o||0==i[l>>s]){var f=n(u,l-u);void 0===t?t=f:(t+=String.fromCharCode(0),t+=f),u=l+r}}return Zr(e),t},toWireType:function(e,n){"string"!=typeof n&&$e("Cannot pass non-string to C++ string type "+t);var a=i(n),u=et(4+a+r);return U[u>>2]=a>>s,o(n,u+4,a+r),null!==e&&e.push(Zr,u),u},argPackAdvance:8,readValueFromPointer:ar,destructorFunction:function(e){Zr(e)}})},D:function(e,r){je(e,{isVoid:!0,name:r=ke(r),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,r){}})},u:function(e,r,t){e=Ir(e),r=jr(r,"emval::as");var n=[],o=Rr(n);return j[t>>2]=o,r.toWireType(n,e)},e:function(e,r,t,n){var o,a;(e=Nr[e])(r=Ir(r),t=void 0===(a=Ur[o=t])?ke(o):a,null,n)},p:Sr,d:function(e,r){for(var t=function(e,r){for(var t=new Array(e),n=0;n>2)+n],"parameter "+n);return t}(e,r),n=t[0],o=n.name+"_$"+t.slice(1).map((function(e){return e.name})).join("_")+"$",a=["retType"],i=[n],s="",u=0;u4&&(Ar[e].refcount+=1)},q:function(e){Tr(Ar[e].value),Sr(e)},A:function(e,r){return Rr((e=jr(e,"_emval_take_value")).readValueFromPointer(r))},a:function(){ne()},F:function e(){return void 0===e.start&&(e.start=Date.now()),1e3*(Date.now()-e.start)|0},G:function(e,r,t){var n=function(e,r){var t=e,n=r;function o(e){var r;return n=function(e,r){return"double"!==r&&"i64"!==r||7&e&&(e+=4),e}(n,e),"double"===e?(r=B[n>>3],n+=8):"i64"==e?(r=[j[n>>2],j[n+4>>2]],n+=8):(e="i32",r=j[n>>2],n+=4),r}for(var a,i,s,u,c=[];;){var l=t;if(0===(a=$[t>>0]))break;if(i=$[t+1>>0],37==a){var f=!1,d=!1,p=!1,h=!1,m=!1;e:for(;;){switch(i){case 43:f=!0;break;case 45:d=!0;break;case 35:p=!0;break;case 48:if(h)break e;h=!0;break;case 32:m=!0;break;default:break e}t++,i=$[t+1>>0]}var v=0;if(42==i)v=o("i32"),t++,i=$[t+1>>0];else for(;i>=48&&i<=57;)v=10*v+(i-48),t++,i=$[t+1>>0];var g,y=!1,w=-1;if(46==i){if(w=0,y=!0,t++,42==(i=$[t+1>>0]))w=o("i32"),t++;else for(;;){var E=$[t+1>>0];if(E<48||E>57)break;w=10*w+(E-48),t++}i=$[t+1>>0]}switch(w<0&&(w=6,y=!1),String.fromCharCode(i)){case"h":104==$[t+2>>0]?(t++,g=1):g=2;break;case"l":108==$[t+2>>0]?(t++,g=8):g=4;break;case"L":case"q":case"j":g=8;break;case"z":case"t":case"I":g=4;break;default:g=null}switch(g&&t++,i=$[t+1>>0],String.fromCharCode(i)){case"d":case"i":case"u":case"o":case"x":case"X":case"p":var b=100==i||105==i;s=o("i"+8*(g=g||4)),8==g&&(s=117==i?(s[0]>>>0)+4294967296*(s[1]>>>0):Br(s[0],s[1])),g<=4&&(s=(b?Wr:Lr)(s&Math.pow(256,g)-1,8*g));var _=Math.abs(s),k="";if(100==i||105==i)D=Wr(s,8*g).toString(10);else if(117==i)D=Lr(s,8*g).toString(10),s=Math.abs(s);else if(111==i)D=(p?"0":"")+_.toString(8);else if(120==i||88==i){if(k=p&&0!=s?"0x":"",s<0){s=-s,D=(_-1).toString(16);for(var T=[],P=0;P=0&&(f?k="+"+k:m&&(k=" "+k)),"-"==D.charAt(0)&&(k="-"+k,D=D.substr(1));k.length+D.lengthS&&S>=-4?(i=(103==i?"f":"F").charCodeAt(0),w-=S+1):(i=(103==i?"e":"E").charCodeAt(0),w--),A=Math.min(w,20)}101==i||69==i?(D=s.toExponential(A),/[eE][-+]\d$/.test(D)&&(D=D.slice(0,-1)+"0"+D.slice(-1))):102!=i&&70!=i||(D=s.toFixed(A),0===s&&((u=s)<0||0===u&&1/u==-1/0)&&(D="-"+D));var F=D.split("e");if(C&&!p)for(;F[0].length>1&&-1!=F[0].indexOf(".")&&("0"==F[0].slice(-1)||"."==F[0].slice(-1));)F[0]=F[0].slice(0,-1);else for(p&&-1==D.indexOf(".")&&(F[0]+=".");w>A++;)F[0]+="0";D=F[0]+(F.length>1?"e"+F[1]:""),69==i&&(D=D.toUpperCase()),s>=0&&(f?D="+"+D:m&&(D=" "+D))}else D=(s<0?"-":"")+"inf",h=!1;for(;D.length>0]);else c=c.concat(Yr("(null)".substr(0,R),!0));if(d)for(;R0;)c.push(32);d||c.push(o("i8"));break;case"n":var O=o("i32*");j[O>>2]=c.length;break;case"%":c.push(a);break;default:for(P=l;P>0])}t+=2}else c.push(a),t+=1}return c}(r,t);!function(e,r){24&e&&(r=r.replace(/\s+$/,""),r+=(r.length>0?"\n":"")+Hr(e)),1&e?4&e?console.error(r):2&e?console.warn(r):512&e?console.info(r):256&e?console.debug(r):console.log(r):6&e?w(r):y(r)}(e,C(n,0))},s:function(e){M.length,ne("OOM")},t:function(e,r){try{var t=0;return Xr().forEach((function(n,o){var a=r+t;j[e+4*o>>2]=a,function(e,r,t){for(var n=0;n>0]=e.charCodeAt(n);t||($[r>>0]=0)}(n,a),t+=n.length+1})),0}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),e.errno}},v:function(e,r){try{var t=Xr();j[e>>2]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),j[r>>2]=n,0}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),e.errno}},k:function(e){try{var r=Ee.getStreamFromFD(e);return we.close(r),0}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),e.errno}},y:function(e,r){try{var t=Ee.getStreamFromFD(e),n=t.tty?2:we.isDir(t.mode)?3:we.isLink(t.mode)?7:4;return $[r>>0]=n,0}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),e.errno}},z:function(e,r,t,n){try{var o=Ee.getStreamFromFD(e),a=Ee.doReadv(o,r,t);return j[n>>2]=a,0}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),e.errno}},r:function(e,r,t,n,o){try{var a=Ee.getStreamFromFD(e),i=4294967296*t+(r>>>0),s=9007199254740992;return i<=-s||i>=s?-61:(we.llseek(a,i,n),le=[a.position>>>0,(ce=a.position,+Math.abs(ce)>=1?ce>0?(0|Math.min(+Math.floor(ce/4294967296),4294967295))>>>0:~~+Math.ceil((ce-+(~~ce>>>0))/4294967296)>>>0:0)],j[o>>2]=le[0],j[o+4>>2]=le[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0)}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),e.errno}},j:function(e,r,t,n){try{var o=Ee.getStreamFromFD(e),a=Ee.doWritev(o,r,t);return j[n>>2]=a,0}catch(e){return void 0!==we&&e instanceof we.ErrnoError||ne(e),e.errno}},E:function(e){var r=Date.now();return j[e>>2]=r/1e3|0,j[e+4>>2]=r%1e3*1e3|0,0},g:function(e){}};!function(){var e={a:Kr};function r(e,r){var n,o,a=e.exports;t.asm=a,b=t.asm.I,n=b.buffer,R=n,t.HEAP8=$=new Int8Array(n),t.HEAP16=O=new Int16Array(n),t.HEAP32=j=new Int32Array(n),t.HEAPU8=M=new Uint8Array(n),t.HEAPU16=I=new Uint16Array(n),t.HEAPU32=U=new Uint32Array(n),t.HEAPF32=N=new Float32Array(n),t.HEAPF64=B=new Float64Array(n),W=t.asm.M,o=t.asm.J,Y.unshift(o),te()}function n(e){r(e.instance)}function o(r){return function(){if(!E&&(c||l)){if("function"==typeof fetch&&!ue(fe))return fetch(fe,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+fe+"'";return e.arrayBuffer()})).catch((function(){return de(fe)}));if(p)return new Promise((function(e,r){p(fe,(function(r){e(new Uint8Array(r))}),r)}))}return Promise.resolve().then((function(){return de(fe)}))}().then((function(r){return WebAssembly.instantiate(r,e)})).then(r,(function(e){w("failed to asynchronously prepare wasm: "+e),ne(e)}))}if(re(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return w("Module.instantiateWasm callback failed with error: "+e),!1}E||"function"!=typeof WebAssembly.instantiateStreaming||ie(fe)||ue(fe)||"function"!=typeof fetch?o(n):fetch(fe,{credentials:"same-origin"}).then((function(r){return WebAssembly.instantiateStreaming(r,e).then(n,(function(e){return w("wasm streaming compile failed: "+e),w("falling back to ArrayBuffer instantiation"),o(n)}))}))}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.J).apply(null,arguments)};var Qr,Zr=t._free=function(){return(Zr=t._free=t.asm.K).apply(null,arguments)},et=t._malloc=function(){return(et=t._malloc=t.asm.L).apply(null,arguments)},rt=t.___errno_location=function(){return(rt=t.___errno_location=t.asm.N).apply(null,arguments)},tt=t._strlen=function(){return(tt=t._strlen=t.asm.O).apply(null,arguments)},nt=t.___getTypeName=function(){return(nt=t.___getTypeName=t.asm.P).apply(null,arguments)};function ot(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function at(e){function r(){Qr||(Qr=!0,t.calledRun=!0,T||(t.noFSInit||we.init.initialized||we.init(),pe(Y),we.ignorePermissions=!1,pe(K),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),Q.unshift(e);var e;pe(Q)}()))}Z>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),J.unshift(e);var e;pe(J)}(),Z>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),r()}),1)):r()))}if(t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.Q).apply(null,arguments)},t.dynCall_ijiii=function(){return(t.dynCall_ijiii=t.asm.R).apply(null,arguments)},t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.S).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.T).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.U).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.V).apply(null,arguments)},t._ff_h264_cabac_tables=82789,ee=function e(){Qr||at(),Qr||(ee=e)},t.run=at,t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();at(),e.exports=t}));const u=1e3,c=!1,l=!0,f=!1,d=!1,p="initVideo",h="render",m="playAudio",v="initAudio",g="audioCode",y="videoCode",w=1,E=2,b="init",_="decode",k="audioDecode",T="videoDecode",P="close",D="updateConfig",C="key",A="delta";(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})(),Date.now||(Date.now=function(){return(new Date).getTime()}),s.postRun=function(){var e=[],r=[],t={};"VideoEncoder"in self&&(t={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){t.isEmitInfo||(n.opt.debug&&console.log("Jessibuca: [worker] Webcodecs Video Decoder initSize"),postMessage({cmd:p,w:e.codedWidth,h:e.codedHeight}),t.isEmitInfo=!0,t.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),t.offscreenCanvasCtx=t.offscreenCanvas.getContext("2d")),t.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let r=t.offscreenCanvas.transferToImageBitmap();postMessage({cmd:h,buffer:r,delay:n.delay,ts:0},[r]),setTimeout((function(){e.close?e.close():e.destroy()}),100)},error:function(e){console.error(e)}}),decode:function(e,r){const o=e[0]>>4==1;if(t.hasInit){const n=new EncodedVideoChunk({data:e.slice(5),timestamp:r,type:o?C:A});t.decoder.decode(n)}else if(o&&0===e[1]){const r=15&e[0];n.setVideoCodec(r);const o=function(e){let r=e.subarray(1,4),t="avc1.";for(let e=0;e<3;e++){let n=r[e].toString(16);n.length<2&&(n="0"+n),t+=n}return{codec:t,description:e}}(e.slice(5));t.decoder.configure(o),t.hasInit=!0}},reset(){t.hasInit=!1,t.isEmitInfo=!1,t.offscreenCanvas=null,t.offscreenCanvasCtx=null}});var n={opt:{debug:c,forceNoOffscreen:l,useWCS:f,videoBuffer:u,openWebglAlignment:d},useOffscreen:function(){return!n.opt.forceNoOffscreen&&"undefined"!=typeof OffscreenCanvas},initAudioPlanar:function(e,t){postMessage({cmd:v,sampleRate:t,channels:e});var n=[],o=0;this.playAudioPlanar=function(t,a,i){for(var u=a,c=[],l=0,f=0;f<2;f++){var d=s.HEAPU32[(t>>2)+f]>>2;c[f]=s.HEAPF32.subarray(d,d+u)}if(o){if(!(u>=(a=1024-o)))return o+=u,r[0]=Float32Array.of(...r[0],...c[0]),void(2==e&&(r[1]=Float32Array.of(...r[1],...c[1])));n[0]=Float32Array.of(...r[0],...c[0].subarray(0,a)),2==e&&(n[1]=Float32Array.of(...r[1],...c[1].subarray(0,a))),postMessage({cmd:m,buffer:n,ts:i},n.map((e=>e.buffer))),l=a,u-=a}for(o=u;o>=1024;o-=1024)n[0]=c[0].slice(l,l+=1024),2==e&&(n[1]=c[1].slice(l-1024,l)),postMessage({cmd:m,buffer:n,ts:i},n.map((e=>e.buffer)));o&&(r[0]=c[0].slice(l),2==e&&(r[1]=c[1].slice(l)))}},setVideoCodec:function(e){postMessage({cmd:y,code:e})},setAudioCodec:function(e){postMessage({cmd:g,code:e})},setVideoSize:function(e,r){postMessage({cmd:p,w:e,h:r});var t=e*r,o=t>>2;n.useOffscreen()?(this.offscreenCanvas=new OffscreenCanvas(e,r),this.offscreenCanvasGL=this.offscreenCanvas.getContext("webgl"),this.webglObj=((e,r)=>{var t=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),n=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");r&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(o));var a=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(a,n),e.compileShader(a),e.getShaderParameter(a,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(a));var i=e.createProgram();e.attachShader(i,o),e.attachShader(i,a),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(i)),e.useProgram(i);var s=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,s),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var u=e.getAttribLocation(i,"vertexPos");e.enableVertexAttribArray(u),e.vertexAttribPointer(u,2,e.FLOAT,!1,0,0);var c=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,c),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var l=e.getAttribLocation(i,"texturePos");function f(r,t){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(i,r),t),n}e.enableVertexAttribArray(l),e.vertexAttribPointer(l,2,e.FLOAT,!1,0,0);var d=f("ySampler",0),p=f("uSampler",1),h=f("vSampler",2);return{render:function(r,t,n,o,a){e.viewport(0,0,r,t),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,d),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r,t,0,e.LUMINANCE,e.UNSIGNED_BYTE,n),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,r/2,t/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,a),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(i),e.deleteBuffer(s),e.deleteBuffer(c),e.deleteTexture(d),e.deleteTexture(p),e.deleteBuffer(h)}catch(e){}}}})(this.offscreenCanvasGL,n.opt.openWebglAlignment),this.draw=function(n,a,i,u){this.webglObj.render(e,r,s.HEAPU8.subarray(a,a+t),s.HEAPU8.subarray(i,i+o),s.HEAPU8.subarray(u,u+o));let c=this.offscreenCanvas.transferToImageBitmap();postMessage({cmd:h,buffer:c,delay:this.delay,ts:n},[c])}):this.draw=function(e,r,n,a){var i=[s.HEAPU8.subarray(r,r+t),s.HEAPU8.subarray(n,n+o),s.HEAPU8.subarray(a,a+o)].map((e=>Uint8Array.from(e)));postMessage({cmd:h,output:i,delay:this.delay,ts:e},i.map((e=>e.buffer)))}},getDelay:function(e){return e?(this.firstTimestamp?e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)):(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1),this.delay):-1},resetDelay:function(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1},init:function(){n.opt.debug&&console.log("Jessibuca: [worker] init");const r=e=>{n.opt.useWCS&&n.useOffscreen()&&e.type===E&&t.decode?t.decode(e.payload,e.ts):e.decoder.decode(e.payload,e.ts)};this.stopId=setInterval((()=>{if(e.length)if(this.dropping){for((t=e.shift()).type===w&&0===t.payload[1]&&r(t);!t.isIFrame&&e.length;)(t=e.shift()).type===w&&0===t.payload[1]&&r(t);t.isIFrame&&(this.dropping=!1,r(t))}else{var t=e[0];if(-1===this.getDelay(t.ts))n.opt.debug&&console.log("Jessibuca: [worker]: common dumex delay is -1"),e.shift(),r(t);else if(this.delay>n.opt.videoBuffer+1e3)n.opt.debug&&console.log("Jessibuca: [worker]:",`delay is ${this.delay}, set dropping is true`),this.resetDelay(),this.dropping=!0;else for(;e.length&&(t=e[0],this.getDelay(t.ts)>n.opt.videoBuffer);)e.shift(),r(t)}}),10)},close:function(){n.opt.debug&&console.log("Jessibuca: [worker]: close"),clearInterval(this.stopId),this.stopId=null,o.clear(),a.clear(),t.reset&&t.reset(),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1,this.webglObj&&(this.webglObj.destroy(),this.offscreenCanvas=null,this.offscreenCanvasGL=null,this.offscreenCanvasCtx=null),e=[],r=[],delete this.playAudioPlanar,delete this.draw},pushBuffer:function(r,t){t.type===w?e.push({ts:t.ts,payload:r,decoder:o,type:w}):t.type===E&&e.push({ts:t.ts,payload:r,decoder:a,type:E,isIFrame:t.isIFrame})}},o=new s.AudioDecoder(n),a=new s.VideoDecoder(n);postMessage({cmd:b}),self.onmessage=function(e){var r=e.data;switch(r.cmd){case b:try{n.opt=Object.assign(n.opt,JSON.parse(r.opt))}catch(e){}o.sample_rate=r.sampleRate,n.init();break;case _:n.pushBuffer(r.buffer,r.options);break;case k:o.decode(r.buffer,r.ts);break;case T:a.decode(r.buffer,r.ts);break;case P:n.close();break;case D:n.opt[r.key]=r.value}}}})); diff --git a/bin/jessibuca/decoder.wasm b/bin/jessibuca/decoder.wasm new file mode 100644 index 0000000..f7a09a4 Binary files /dev/null and b/bin/jessibuca/decoder.wasm differ diff --git a/bin/jessibuca/jessibuca.d.ts b/bin/jessibuca/jessibuca.d.ts new file mode 100644 index 0000000..b1ead7d --- /dev/null +++ b/bin/jessibuca/jessibuca.d.ts @@ -0,0 +1,637 @@ +declare namespace Jessibuca { + + /** 超时信息 */ + enum TIMEOUT { + /** 当play()的时候,如果没有数据返回 */ + loadingTimeout = 'loadingTimeout', + /** 当播放过程中,如果超过timeout之后没有数据渲染 */ + delayTimeout = 'delayTimeout', + } + + /** 错误信息 */ + enum ERROR { + /** 播放错误,url 为空的时候,调用 play 方法 */ + playError = 'playError', + /** http 请求失败 */ + fetchError = 'fetchError', + /** websocket 请求失败 */ + websocketError = 'websocketError', + /** webcodecs 解码 h265 失败 */ + webcodecsH265NotSupport = 'webcodecsH265NotSupport', + /** mediaSource 解码 h265 失败 */ + mediaSourceH265NotSupport = 'mediaSourceH265NotSupport', + /** wasm 解码失败 */ + wasmDecodeError = 'wasmDecodeError', + } + + interface Config { + /** + * 播放器容器 + * * 若为 string ,则底层调用的是 document.getElementById('id') + * */ + container: HTMLElement | string; + /** + * 设置最大缓冲时长,单位秒,播放器会自动消除延迟 + */ + videoBuffer?: number; + /** + * worker地址 + * * 默认引用的是根目录下面的decoder.js文件 ,decoder.js 与 decoder.wasm文件必须是放在同一个目录下面。 */ + decoder?: string; + /** + * 是否不使用离屏模式(提升渲染能力) + */ + forceNoOffscreen?: boolean; + /** + * 是否开启当页面的'visibilityState'变为'hidden'的时候,自动暂停播放。 + */ + hiddenAutoPause?: boolean; + /** + * 是否有音频,如果设置`false`,则不对音频数据解码,提升性能。 + */ + hasAudio?: boolean; + /** + * 设置旋转角度,只支持,0(默认),180,270 三个值 + */ + rotate?: boolean; + /** + * 1. 当为`true`的时候:视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边。 等同于 `setScaleMode(1)` + * 2. 当为`false`的时候:视频画面完全填充canvas区域,画面会被拉伸。等同于 `setScaleMode(0)` + */ + isResize?: boolean; + /** + * 1. 当为`true`的时候:视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全。等同于 `setScaleMode(2)` + */ + isFullSize?: boolean; + /** + * 1. 当为`true`的时候:ws协议不检验是否以.flv为依据,进行协议解析。 + */ + isFlv?: boolean; + /** + * 是否开启控制台调试打 + */ + debug?: boolean; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前(loading)和播放中途(heart),如果超过设定时长无数据返回,则回调timeout事件 + */ + timeout?: number; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + */ + heartTimeout?: number; + /** + * 1. 设置超时时长, 单位秒 + * 2. 在连接成功之前,如果超过设定时长无数据返回,则回调timeout事件 + */ + loadingTimeout?: number; + /** + * 是否支持屏幕的双击事件,触发全屏,取消全屏事件 + */ + supportDblclickFullscreen?: boolean; + /** + * 是否显示网 + */ + showBandwidth?: boolean; + /** + * 配置操作按钮 + */ + operateBtns?: { + /** 是否显示全屏按钮 */ + fullscreen?: boolean; + /** 是否显示截图按钮 */ + screenshot?: boolean; + /** 是否显示播放暂停按钮 */ + play?: boolean; + /** 是否显示声音按钮 */ + audio?: boolean; + /** 是否显示录制按 */ + record?: boolean; + }; + /** + * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮 + */ + keepScreenOn?: boolean; + /** + * 是否开启声音,默认是关闭声音播放的 + */ + isNotMute?: boolean; + /** + * 加载过程中文案 + */ + loadingText?: boolean; + /** + * 背景图片 + */ + background?: string; + /** + * 是否开启MediaSource硬解码 + * * 视频编码只支持H.264视频(Safari on iOS不支持) + * * 不支持 forceNoOffscreen 为 false (开启离屏渲染) + */ + useMSE?: boolean; + /** + * 是否开启Webcodecs硬解码 + * * 视频编码只支持H.264视频 (需在chrome 94版本以上,需要https或者localhost环境) + * * 支持 forceNoOffscreen 为 false (开启离屏渲染) + * */ + useWCS?: boolean; + /** + * 是否开启键盘快捷键 + * 目前支持的键盘快捷键有:esc -> 退出全屏;arrowUp -> 声音增加;arrowDown -> 声音减少; + */ + hotKey?: boolean; + /** + * 在使用MSE或者Webcodecs 播放H265的时候,是否自动降级到wasm模式。 + * 设置为false 则直接关闭播放,抛出Error 异常,设置为true 则会自动切换成wasm模式播放。 + */ + autoWasm?: boolean; + /** + * heartTimeout 心跳超时之后自动再播放,不再抛出异常,而直接重新播放视频地址。 + */ + heartTimeoutReplay?: boolean, + /** + * heartTimeoutReplay 从试次数,超过之后,不再自动播放 + */ + heartTimeoutReplayTimes?: number, + /** + * loadingTimeout loading之后自动再播放,不再抛出异常,而直接重新播放视频地址。 + */ + loadingTimeoutReplay?: boolean, + /** + * heartTimeoutReplay 从试次数,超过之后,不再自动播放 + */ + loadingTimeoutReplayTimes?: number + /** + * wasm解码报错之后,不再抛出异常,而是直接重新播放视频地址。 + */ + wasmDecodeErrorReplay?: boolean, + /** + * https://github.com/langhuihui/jessibuca/issues/152 解决方案 + * 例如:WebGL图像预处理默认每次取4字节的数据,但是540x960分辨率下的U、V分量宽度是540/2=270不能被4整除,导致绿屏。 + */ + openWebglAlignment?: boolean + } +} + + +declare class Jessibuca { + + constructor(config?: Jessibuca.Config); + + /** + * 是否开启控制台调试打印 + @example + // 开启 + jessibuca.setDebug(true) + // 关闭 + jessibuca.setDebug(false) + */ + setDebug(flag: boolean): void; + + /** + * 静音 + @example + jessibuca.mute() + */ + mute(): void; + + /** + * 取消静音 + @example + jessibuca.cancelMute() + */ + cancelMute(): void; + + /** + * 留给上层用户操作来触发音频恢复的方法。 + * + * iPhone,chrome等要求自动播放时,音频必须静音,需要由一个真实的用户交互操作来恢复,不能使用代码。 + * + * https://developers.google.com/web/updates/2017/09/autoplay-policy-changes + */ + audioResume(): void; + + /** + * + * 设置超时时长, 单位秒 + * 在连接成功之前和播放中途,如果超过设定时长无数据返回,则回调timeout事件 + + @example + jessibuca.setTimeout(10) + + jessibuca.on('timeout',function(){ + // + }); + */ + setTimeout(): void; + + /** + * @param mode + * 0 视频画面完全填充canvas区域,画面会被拉伸 等同于参数 `isResize` 为false + * + * 1 视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边 等同于参数 `isResize` 为true + * + * 2 视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全 等同于参数 `isFullResize` 为true + @example + jessibuca.setScaleMode(0) + + jessibuca.setScaleMode(1) + + jessibuca.setScaleMode(2) + */ + setScaleMode(mode: number): void; + + /** + * 暂停播放 + * + * 可以在pause 之后,再调用 `play()`方法就继续播放之前的流。 + @example + jessibuca.pause().then(()=>{ + console.log('pause success') + + jessibuca.play().then(()=>{ + + }).catch((e)=>{ + + }) + + }).catch((e)=>{ + console.log('pause error',e); + }) + */ + pause(): Promise; + + /** + * 关闭视频,不释放底层资源 + @example + jessibuca.close(); + */ + close(): void; + + /** + * 关闭视频,释放底层资源 + @example + jessibuca.destroy() + */ + destroy(): void; + + /** + * 清理画布为黑色背景 + @example + jessibuca.clearView() + */ + clearView(): void; + + /** + * 播放视频 + @example + + jessibuca.play('url').then(()=>{ + console.log('play success') + }).catch((e)=>{ + console.log('play error',e) + }) + // + jessibuca.play() + */ + play(url?: string): Promise; + + /** + * 重新调整视图大小 + */ + resize(): void; + + /** + * 设置最大缓冲时长,单位秒,播放器会自动消除延迟。 + * + * 等同于 `videoBuffer` 参数。 + * + @example + // 设置 200ms 缓冲 + jessibuca.setBufferTime(0.2) + */ + setBufferTime(time: number): void; + + /** + * 设置旋转角度,只支持,0(默认) ,180,270 三个值。 + * + * > 可用于实现监控画面小窗和全屏效果,由于iOS没有全屏API,此方法可以模拟页面内全屏效果而且多端效果一致。 * + @example + jessibuca.setRotate(0) + + jessibuca.setRotate(90) + + jessibuca.setRotate(270) + */ + setRotate(deg: number): void; + + /** + * + * 设置音量大小,取值0 — 1 + * + * > 区别于 mute 和 cancelMute 方法,虽然设置setVolume(0) 也能达到 mute方法,但是mute 方法是不调用底层播放音频的,能提高性能。而setVolume(0)只是把声音设置为0 ,以达到效果。 + * @param volume 当为0时,完全无声;当为1时,最大音量,默认值 + @example + jessibuca.setVolume(0.2) + + jessibuca.setVolume(0) + + jessibuca.setVolume(1) + */ + setVolume(volume: number): void; + + /** + * 返回是否加载完毕 + @example + var result = jessibuca.hasLoaded() + console.log(result) // true + */ + hasLoaded(): boolean; + + /** + * 开启屏幕常亮,在手机浏览器上, canvas标签渲染视频并不会像video标签那样保持屏幕常亮。 + * H5目前在chrome\edge 84, android chrome 84及以上有原生亮屏API, 需要是https页面 + * 其余平台为模拟实现,此时为兼容实现,并不保证所有浏览器都支持 + @example + jessibuca.setKeepScreenOn() + */ + setKeepScreenOn(): boolean; + + /** + * 全屏(取消全屏)播放视频 + @example + jessibuca.setFullscreen(true) + // + jessibuca.setFullscreen(false) + */ + setFullscreen(flag: boolean): void; + + /** + * + * 截图,调用后弹出下载框保存截图 + * @param filename 可选参数, 保存的文件名, 默认 `时间戳` + * @param format 可选参数, 截图的格式,可选png或jpeg或者webp ,默认 `png` + * @param quality 可选参数, 当格式是jpeg或者webp时,压缩质量,取值0 ~ 1 ,默认 `0.92` + * @param type 可选参数, 可选download或者base64或者blob,默认`download` + + @example + + jessibuca.screenshot("test","png",0.5) + + const base64 = jessibuca.screenshot("test","png",0.5,'base64') + + const fileBlob = jessibuca.screenshot("test",'blob') + */ + screenshot(filename?: string, format?: string, quality?: number, type?: string): void; + + /** + * 开始录制。 + * @param fileName 可选,默认时间戳 + * @param fileType 可选,默认webm,支持webm 和mp4 格式 + + @example + jessibuca.startRecord('xxx','webm') + */ + startRecord(fileName: string, fileType: string): void; + + /** + * 暂停录制并下载。 + @example + jessibuca.stopRecordAndSave() + */ + stopRecordAndSave(): void; + + /** + * 返回是否正在播放中状态。 + @example + var result = jessibuca.isPlaying() + console.log(result) // true + */ + isPlaying(): boolean; + + /** + * 返回是否静音。 + @example + var result = jessibuca.isMute() + console.log(result) // true + */ + isMute(): boolean; + + /** + * 返回是否正在录制。 + @example + var result = jessibuca.isRecording() + console.log(result) // true + */ + isRecording(): boolean; + + + /** + * 监听 jessibuca 初始化事件 + * @example + * jessibuca.on("load",function(){console.log('load')}) + */ + on(event: 'load', callback: () => void): void; + + /** + * 视频播放持续时间,单位ms + * @example + * jessibuca.on('timeUpdate',function (ts) {console.log('timeUpdate',ts);}) + */ + on(event: 'timeUpdate', callback: () => void): void; + + /** + * 当解析出视频信息时回调,2个回调参数 + * @example + * jessibuca.on("videoInfo",function(data){console.log('width:',data.width,'height:',data.width)}) + */ + on(event: 'videoInfo', callback: (data: { + /** 视频宽 */ + width: number; + /** 视频高 */ + height: number; + }) => void): void; + + /** + * 当解析出音频信息时回调,2个回调参数 + * @example + * jessibuca.on("audioInfo",function(data){console.log('numOfChannels:',data.numOfChannels,'sampleRate',data.sampleRate)}) + */ + on(event: 'audioInfo', callback: (data: { + /** 声频通道 */ + numOfChannels: number; + /** 采样率 */ + sampleRate: number; + }) => void): void; + + /** + * 信息,包含错误信息 + * @example + * jessibuca.on("log",function(data){console.log('data:',data)}) + */ + on(event: 'log', callback: () => void): void; + + /** + * 错误信息 + * @example + * jessibuca.on("error",function(error){ + if(error === Jessibuca.ERROR.fetchError){ + // + } + else if(error === Jessibuca.ERROR.webcodecsH265NotSupport){ + // + } + console.log('error:',error) + }) + */ + on(event: 'error', callback: (err: Jessibuca.ERROR) => void): void; + + /** + * 当前网速, 单位KB 每秒1次, + * @example + * jessibuca.on("kBps",function(data){console.log('kBps:',data)}) + */ + on(event: 'kBps', callback: (value: number) => void): void; + + /** + * 渲染开始 + * @example + * jessibuca.on("start",function(){console.log('start render')}) + */ + on(event: 'start', callback: () => void): void; + + /** + * 当设定的超时时间内无数据返回,则回调 + * @example + * jessibuca.on("timeout",function(error){console.log('timeout:',error)}) + */ + on(event: 'timeout', callback: (error: Jessibuca.TIMEOUT) => void): void; + + /** + * 当play()的时候,如果没有数据返回,则回调 + * @example + * jessibuca.on("loadingTimeout",function(){console.log('timeout')}) + */ + on(event: 'loadingTimeout', callback: () => void): void; + + /** + * 当播放过程中,如果超过timeout之后没有数据渲染,则抛出异常。 + * @example + * jessibuca.on("delayTimeout",function(){console.log('timeout')}) + */ + on(event: 'delayTimeout', callback: () => void): void; + + /** + * 当前是否全屏 + * @example + * jessibuca.on("fullscreen",function(flag){console.log('is fullscreen',flag)}) + */ + on(event: 'fullscreen', callback: () => void): void; + + /** + * 触发播放事件 + * @example + * jessibuca.on("play",function(flag){console.log('play')}) + */ + on(event: 'play', callback: () => void): void; + + /** + * 触发暂停事件 + * @example + * jessibuca.on("pause",function(flag){console.log('pause')}) + */ + on(event: 'pause', callback: () => void): void; + + /** + * 触发声音事件,返回boolean值 + * @example + * jessibuca.on("mute",function(flag){console.log('is mute',flag)}) + */ + on(event: 'mute', callback: () => void): void; + + /** + * 流状态统计,流开始播放后回调,每秒1次。 + * @example + * jessibuca.on("stats",function(s){console.log("stats is",s)}) + */ + on(event: 'stats', callback: (stats: { + /** 当前缓冲区时长,单位毫秒 */ + buf: number; + /** 当前视频帧率 */ + fps: number; + /** 当前音频码率,单位bit */ + abps: number; + /** 当前视频码率,单位bit */ + vbps: number; + /** 当前视频帧pts,单位毫秒 */ + ts: number; + }) => void): void; + + /** + * 渲染性能统计,流开始播放后回调,每秒1次。 + * @param performance 0: 表示卡顿,1: 表示流畅,2: 表示非常流程 + * @example + * jessibuca.on("performance",function(performance){console.log("performance is",performance)}) + */ + on(event: 'performance', callback: (performance: 0 | 1 | 2) => void): void; + + /** + * 录制开始的事件 + + * @example + * jessibuca.on("recordStart",function(){console.log("record start")}) + */ + on(event: 'recordStart', callback: () => void): void; + + /** + * 录制结束的事件 + + * @example + * jessibuca.on("recordEnd",function(){console.log("record end")}) + */ + on(event: 'recordEnd', callback: () => void): void; + + /** + * 录制的时候,返回的录制时长,1s一次 + + * @example + * jessibuca.on("recordingTimestamp",function(timestamp){console.log("recordingTimestamp is",timestamp)}) + */ + on(event: 'recordingTimestamp', callback: (timestamp: number) => void): void; + + /** + * 监听调用play方法 经过 初始化-> 网络请求-> 解封装 -> 解码 -> 渲染 一系列过程的时间消耗 + * @param event + * @param callback + */ + on(event: 'playToRenderTimes', callback: (times: { + playInitStart: number, // 1 初始化 + playStart: number, // 2 初始化 + streamStart: number, // 3 网络请求 + streamResponse: number, // 4 网络请求 + demuxStart: number, // 5 解封装 + decodeStart: number, // 6 解码 + videoStart: number, // 7 渲染 + playTimestamp: number,// playStart- playInitStart + streamTimestamp: number,// streamStart - playStart + streamResponseTimestamp: number,// streamResponse - streamStart + demuxTimestamp: number, // demuxStart - streamResponse + decodeTimestamp: number, // decodeStart - demuxStart + videoTimestamp: number,// videoStart - decodeStart + allTimestamp: number // videoStart - playInitStart + }) => void): void + + /** + * 监听方法 + * + @example + + jessibuca.on("load",function(){console.log('load')}) + */ + on(event: string, callback: Function): void; + +} + +export default Jessibuca; diff --git a/bin/jessibuca/jessibuca.js b/bin/jessibuca/jessibuca.js new file mode 100644 index 0000000..23071b1 --- /dev/null +++ b/bin/jessibuca/jessibuca.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).jessibuca=t()}(this,(function(){"use strict";const e=0,t=1,i="player",o="playbackTF",s="flv",r="m7s",a={url:"",playbackConfig:{},playType:i,playbackForwardMaxRateDecodeIFrame:4},n={playType:i,videoBuffer:1e3,isResize:!0,isFullResize:!1,isFlv:!1,debug:!1,hotKey:!1,loadingTimeout:10,heartTimeout:5,timeout:10,loadingTimeoutReplay:!1,heartTimeoutReplay:!1,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,supportDblclickFullscreen:!1,showBandwidth:!1,keepScreenOn:!1,isNotMute:!1,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1},controlAutoHide:!1,hasControl:!1,loadingText:"",background:"",decoder:"decoder.js",url:"",rotate:0,playbackConfig:{},forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:t,demuxType:s,useWCS:!1,wcsUseVideoRender:!1,useMSE:!1,useOffscreen:!1,autoWasm:!0,wasmDecodeErrorReplay:!0,openWebglAlignment:!1,playbackDelayTime:1e3,playbackFps:20,playbackForwardMaxRateDecodeIFrame:4,playbackCurrentTimeMove:!0},A="init",c="initVideo",l="render",d="playAudio",u="initAudio",h="audioCode",p="videoCode",m="wasmError",f="Invalid NAL unit size",g=1,b=2,y=8,v=9,w="init",k="decode",S="audioDecode",B="videoDecode",E="close",C="updateConfig",R={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",loadingTimeout:"loadingTimeout",stats:"stats",performance:"performance",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",buffer:"buffer",videoFrame:"videoFrame",start:"start",metadata:"metadata",resize:"resize",streamEnd:"streamEnd",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",volumechange:"volumechange",destroy:"destroy",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceBufferError:"mseSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes",playbackTime:"playbackTime",playbackTimestamp:"playbackTimestamp",playbackPrecision:"playbackPrecision",playbackStats:"playbackStats",playbackSeek:"playbackSeek"},T={load:R.load,timeUpdate:R.timeUpdate,videoInfo:R.videoInfo,audioInfo:R.audioInfo,error:R.error,kBps:R.kBps,log:R.log,start:R.start,timeout:R.timeout,loadingTimeout:R.loadingTimeout,delayTimeout:R.delayTimeout,fullscreen:"fullscreen",play:R.play,pause:R.pause,mute:R.mute,stats:R.stats,performance:R.performance,recordingTimestamp:R.recordingTimestamp,recordStart:R.recordStart,recordEnd:R.recordEnd,playToRenderTimes:R.playToRenderTimes,playbackSeek:R.playbackSeek,playbackStats:R.playbackStats,playbackTimestamp:R.playbackTimestamp},I={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",wasmDecodeError:"wasmDecodeError"},j="notConnect",x="open",D="close",L="error",M={download:"download",base64:"base64",blob:"blob"},F={7:"H264(AVC)",12:"H265(HEVC)"},O=7,U=12,V={10:"AAC",7:"ALAW",8:"MULAW"},P={vps:32,sps:33,pps:34},Q=0,W=1,N=2,J={mp4:"mp4",webm:"webm"},z="webcodecs",G="webgl",H="offscreen",q="key",Y="delta",X={avc:'video/mp4; codecs="avc1.64002A"',hev:'video/mp4; codecs="hev1.1.6.L123.b0"'},Z="ended",K="open",_="closed",$=1e3,ee=2e3,te=27,ie=38,oe=40,se="oneHour",re="halfHour",ae="tenMin",ne="fiveMin",Ae={oneHour:"one-hour",halfHour:"half-hour",tenMin:"ten-min",fiveMin:"five-min"},ce=["oneHour","halfHour","tenMin","fiveMin"];class le{constructor(e){this.log=function(t){if(e._opt.debug){for(var i=arguments.length,o=new Array(i>1?i-1:0),s=1;s1?i-1:0),s=1;s1?i-1:0),s=1;s3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,o)));e.addEventListener(t,i,o);const s=()=>e.removeEventListener(t,i,o);return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e()))}}var ue="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function he(e,t){return e(t={exports:{}},t.exports),t.exports}var pe=he((function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},i=e.exports,o=function(){for(var e,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],o=0,s=i.length,r={};o0&&void 0!==arguments[0]?arguments[0]:"").split(","),t=atob(e[1]),i=e[0].replace("data:","").replace(";base64","");let o=t.length,s=new Uint8Array(o);for(;o--;)s[o]=t.charCodeAt(o);return new File([s],"file",{type:i})}function ge(e,t){const i=document.createElement("a");i.download=t,i.href=URL.createObjectURL(e),i.click(),setTimeout((()=>{URL.revokeObjectURL(e)}),Ee()?1e3:0)}function be(){return(new Date).getTime()}function ye(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ve(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{ve(e,i,t[i])})),e.style[t]=i,e}function we(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const o=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(o):o}function ke(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function Se(e){let t=0,i=ke();return o=>{t+=o;const s=ke(),r=s-i;r>=1e3&&(e(t/r*1e3),i=s,t=0)}}function Be(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function Ee(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function Ce(e,t){if(0===arguments.length)return null;var i,o=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"==typeof e?i=e:(10===(""+e).length&&(e=1e3*parseInt(e)),e=+e,i=new Date(e));var s={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()};return o.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=s[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}))}function Re(e){if(null==e||""===e)return"0 KB/S";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/S"}function Te(e){return null==e}function Ie(e){return!Te(e)}function je(e,t){let i="";if(e>-1){const o=Math.floor(e/60)%60;let s=e%60;s=Math.round(s),i=o<10?"0"+o+":":o+":",s<10&&(i+="0"),i+=s,Te(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function xe(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let o=Math.floor(e/60)%60,s=e%60;o=Math.round(o),t=i<10?"0"+i+":":i+":",o<10&&(t+="0"),t+=o+":",s<10&&(t+="0"),t+=s}return t}function De(e,t){const i=Math.floor(t/60)%60,o=Math.floor(t%60);return new Date(e).setHours(i,o,0,0)}function Le(e,t){const i=Math.floor(t/60/60)%60,o=Math.floor(t/60)%60,s=t%60;return new Date(e).setHours(i,o,s,0)}function Me(e){return(""+e).length}function Fe(e){const t=e||window.event;return t.target||t.srcElement}pe.isEnabled,(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();class Oe{on(e,t,i){const o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const o=this;function s(){o.off(e,s);for(var r=arguments.length,a=new Array(r),n=0;n1?i-1:0),s=1;s{delete i[e]})),void delete this.e;const o=i[e],s=[];if(o&&t)for(let e=0,i=o.length;e{var i=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),o=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler, textureCoord).r;","highp float u = texture2D(uSampler, textureCoord).r;","highp float v = texture2D(vSampler, textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n");t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);var s=e.createShader(e.VERTEX_SHADER);e.shaderSource(s,i),e.compileShader(s),e.getShaderParameter(s,e.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+e.getShaderInfoLog(s));var r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(r,o),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+e.getShaderInfoLog(r));var a=e.createProgram();e.attachShader(a,s),e.attachShader(a,r),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)||console.log("Program failed to compile: "+e.getProgramInfoLog(a)),e.useProgram(a);var n=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),e.STATIC_DRAW);var A=e.getAttribLocation(a,"vertexPos");e.enableVertexAttribArray(A),e.vertexAttribPointer(A,2,e.FLOAT,!1,0,0);var c=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,c),e.bufferData(e.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),e.STATIC_DRAW);var l=e.getAttribLocation(a,"texturePos");function d(t,i){var o=e.createTexture();return e.bindTexture(e.TEXTURE_2D,o),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),e.uniform1i(e.getUniformLocation(a,t),i),o}e.enableVertexAttribArray(l),e.vertexAttribPointer(l,2,e.FLOAT,!1,0,0);var u=d("ySampler",0),h=d("uSampler",1),p=d("vSampler",2);return{render:function(t,i,o,s,r){e.viewport(0,0,t,i),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,u),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t,i,0,e.LUMINANCE,e.UNSIGNED_BYTE,o),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,h),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,s),e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,p),e.texImage2D(e.TEXTURE_2D,0,e.LUMINANCE,t/2,i/2,0,e.LUMINANCE,e.UNSIGNED_BYTE,r),e.drawArrays(e.TRIANGLE_STRIP,0,4)},destroy:function(){try{e.deleteProgram(a),e.deleteBuffer(n),e.deleteBuffer(c),e.deleteTexture(u),e.deleteTexture(h),e.deleteBuffer(p)}catch(e){}}}})(this.contextGl,this.player._opt.openWebglAlignment);this.contextGlRender=e.render,this.contextGlDestroy=e.destroy}updateVideoInfo(e){e.encTypeCode&&(this.videoInfo.encType=F[e.encTypeCode]),e.width&&(this.videoInfo.width=e.width),e.height&&(this.videoInfo.height=e.height),this.videoInfo.encType&&this.videoInfo.height&&this.videoInfo.width&&!this.init&&(this.player.emit(R.videoInfo,this.videoInfo),this.init=!0)}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,o){e=e||be(),o=o||M.download;const s={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"};let r=.92;!s[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(r=Number(i));const a=this.$videoElement.toDataURL(s[t]||s.png,r),n=fe(a);return o===M.base64?a:o===M.blob?n:void(o===M.download&&ge(n,e))}render(){}clearView(){}play(){}pause(){}resize(){this.player.debug.log("canvasVideo","resize");const e=this.player._opt;let t=this.player.width,i=this.player.height;if(e.hasControl&&!e.controlAutoHide){const e=this.controlHeight;Be()&&this.player.fullscreen?t-=e:i-=e}let o=this.$videoElement.width,s=this.$videoElement.height;const r=e.rotate;let a=(t-o)/2,n=(i-s)/2;270!==r&&90!==r||(o=this.$videoElement.height,s=this.$videoElement.width);const A=t/o,c=i/s;let l=A>c?c:A;e.isResize||A!==c&&(l=A+","+c),e.isFullResize&&(l=A>c?A:c);let d="scale("+l+")";r&&(d+=" rotate("+r+"deg)"),this.$videoElement.style.transform=d,this.$videoElement.style.left=a+"px",this.$videoElement.style.top=n+"px"}}class Pe extends Ve{constructor(e){super(e),this.controlHeight=38,this.player.debug.log("CanvasVideo","init")}destroy(){super.destroy(),this.player.debug.log("CanvasVideoLoader","destroy")}_initContext2D(){this.context2D=this.$videoElement.getContext("2d")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=z,this._initContext2D()):this._supportOffscreen()?(this.renderType=H,this._bindOffscreen()):(this.renderType=G,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}render(e){switch(this.player.videoTimestamp=e.ts,this.renderType){case H:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case G:this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e.output[0],e.output[1],e.output[2]);break;case z:this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height)}}clearView(){switch(this.renderType){case H:(function(e,t){const i=document.createElement("canvas");return i.width=e,i.height=t,createImageBitmap(i,0,0,e,t)})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case G:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case z:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}}class Qe extends Ue{constructor(e){super(),this.player=e;const t=document.createElement("video");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,e.$container.appendChild(t),this.$videoElement=t,this.videoInfo={width:"",height:"",encType:""};const i=this.player._opt;i.useWCS&&i.wcsUseVideoRender&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),t.srcObject=new MediaStream([this.trackGenerator]),this.vwriter=this.trackGenerator.writable.getWriter()),this.resize();const{proxy:o}=this.player.events;o(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay")})),o(this.$videoElement,"waiting",(()=>{this.player.emit(R.videoWaiting)})),o(this.$videoElement,"timeupdate",(e=>{})),this.player.debug.log("Video","init")}destroy(){this.player.$container.removeChild(this.$videoElement),this.$videoElement&&(this.$videoElement.src="",this.$videoElement=null),this.trackGenerator&&(this.trackGenerator=null),this.vwriter&&(this.trackGenerator=null),this.init=!1,this.off(),this.player.debug.log("Video","destroy")}play(){this.$videoElement.play()}clearView(){}screenshot(e,t,i,o){e=e||be(),o=o||M.download;let s=.92;!{png:"image/png",jpeg:"image/jpeg",webp:"image/webp"}[t]&&M[t]&&(o=t,t="png",i=void 0),"string"==typeof i&&(o=i,i=void 0),void 0!==i&&(s=Number(i));const r=this.$videoElement;let a=document.createElement("canvas");a.width=r.videoWidth,a.height=r.videoHeight;a.getContext("2d").drawImage(r,0,0,a.width,a.height);const n=a.toDataURL(M[t]||M.png,s),A=fe(n);return o===M.base64?n:o===M.blob?A:void(o===M.download&&ge(A,e))}initCanvasViewSize(){this.resize()}render(e){this.vwriter&&this.vwriter.write(e.videoFrame)}resize(){let e=this.player.width,t=this.player.height;const i=this.player._opt,s=i.rotate;if(i.hasControl&&!i.controlAutoHide){const s=i.playType===o?48:38;Be()&&this.player.fullscreen?e-=s:t-=s}this.$videoElement.width=e,this.$videoElement.height=t,270!==s&&90!==s||(this.$videoElement.width=t,this.$videoElement.height=e);let r=(e-this.$videoElement.width)/2,a=(t-this.$videoElement.height)/2,n="contain";i.isResize||(n="fill"),i.isFullResize&&(n="none"),this.$videoElement.style.objectFit=n,this.$videoElement.style.transform="rotate("+s+"deg)",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=a+"px"}}class We extends Ve{constructor(e){super(e),this.controlHeight=48,this.bufferList=[],this.playing=!1,this.playInterval=null,this.fps=1,this.preFps=1,this.playbackRate=1,this._firstTimestamp=null,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this.player.debug.log("CanvasPlaybackLoader","init")}destroy(){this._stopSync(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this.bufferList=[],this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,super.destroy(),this.player.debug.log("CanvasPlaybackLoader","destroy")}_initCanvasRender(){this.renderType=G,this._initContextGl()}_sync(){this._stopSync(),this._doPlay(),this.playInterval=setInterval((()=>{this._doPlay()}),this.fragDuration)}_doPlay(){if(this.bufferList.length>0&&!this.player.seeking){const e=this.bufferList.shift();e&&e.buffer&&(this.player.handleRender(),this._updateStats(e.ts),this._doRender(e.buffer))}}_stopSync(){this.playInterval&&(clearInterval(this.playInterval),this.playInterval=null)}_doRender(e){this.contextGlRender(this.$videoElement.width,this.$videoElement.height,e[0],e[1],e[2])}_updateStats(e){this.player.updateStats({fps:!0,ts:e}),this._startfpsTime||(this._startfpsTime=e,this._startFpsTimestamp=be());const t=e,i=be(),o=i-this._startFpsTimestamp;o<=1e3?this._renderFps+=1:(this.player.emit(R.playbackStats,{fps:this._renderFps,start:this._startfpsTime,end:t,timestamp:o,dataTimestamp:t-this._startfpsTime,audioBufferSize:this.player.audio.bufferSize,videoBufferSize:this.player.video.bufferSize,ts:e}),this._renderFps=0,this._startfpsTime=t,this._startFpsTimestamp=i)}get rate(){return this.playbackRate}get fragDuration(){return Math.ceil(1e3/(this.preFps*this.playbackRate))}get bufferSize(){return this.bufferList.length}initFps(){this.preFps=ye(this.player.playback.fps,1,100)}setFps(e){e!==this.fps&&(this.fps=ye(e,1,100),this._sync())}setRate(e){e!==this.playbackRate&&(this.player.debug.log("CanvasPlaybackLoader","setRate",e),this.playbackRate=e,this._sync())}pushData(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={ts:e.ts-this._firstTimestamp,buffer:e.output};this.bufferList.push(t)}initVideo(){this._sync(),this.playing=!0}initVideoDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initVideo()}),e):this.initVideo()}clearView(){this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT)}clear(){this.bufferList=[]}resume(){this._sync(),this.playing=!0}pause(){this._stopSync(),this.playing=!1}}class Ne{constructor(e){return new(Ne.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE||e.useWCS&&e.wcsUseVideoRender?Qe:e.playType===o?We:Pe}}class Je extends Oe{constructor(e){super(),this.bufferList=[],this.player=e,this.scriptNode=null,this.hasInitScriptNode=!1,this.audioContextChannel=null,this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.audioEnabled(!0),this.gainNode.gain.value=0,this.playing=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.init=!1,this.hasAudio=!1,this.on(R.videoSyncAudio,(e=>{this.audioSyncVideoOption=e}))}destroy(){this.closeAudio(),this.audioContext.close(),this.audioContext=null,this.gainNode=null,this.init=!1,this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.onaudioprocess=me,this.scriptNode=null),this.audioBufferSourceNode=null,this.mediaStreamAudioDestinationNode=null,this.hasInitScriptNode=!1,this.audioSyncVideoOption={diff:null},this.audioInfo={encType:"",channels:"",sampleRate:""},this.off()}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encType=V[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(R.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value||this.isStateSuspended()}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}initScriptNode(){}mute(e){e?(this.isMute||this.player.emit(R.mute,e),this.setVolume(0),this.audioEnabled(!1),this.clear()):(this.isMute&&this.player.emit(R.mute,e),this.setVolume(.5),this.audioEnabled(!0))}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(this.audioEnabled(!0),e=ye(e,0,1),this.gainNode.gain.value=e,this.gainNode.gain.setValueAtTime(e,this.audioContext.currentTime),this.player.emit(R.volumechange,this.player.volume))}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.gainNode&&this.gainNode.disconnect(this.audioContext.destination),this.gainNode&&this.gainNode.disconnect(this.mediaStreamAudioDestinationNode)),this.clear()}audioEnabled(e){e?"suspended"===this.audioContext.state&&this.audioContext.resume():"running"===this.audioContext.state&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContext.state}isStateSuspended(){return"suspended"===this.audioContext.state}clear(){this.bufferList=[]}play(e,t){}pause(){this.audioSyncVideoOption={diff:null},this.playing=!1,this.clear()}resume(){this.playing=!0}setRate(e){}}class ze extends Je{constructor(e){super(e),this.player.debug.log("AudioContext","init")}destroy(){super.destroy(),this.player.debug.log("AudioContext","destroy")}initScriptNode(){if(this.playing=!0,this.hasInitScriptNode)return;const e=this.audioInfo.channels,t=this.audioContext.createScriptProcessor(1024,0,e);t.onaudioprocess=t=>{const i=t.outputBuffer;if(this.bufferList.length&&this.playing){if(!this.player._opt.useWCS&&!this.player._opt.useMSE){if(this.audioSyncVideoOption.diff>$)return void this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${this.audioSyncVideoOption.diff}, waiting`);if(this.audioSyncVideoOption.diff<-1e3){this.player.debug.warn("AudioContext",`audioSyncVideoOption less than diff :${this.audioSyncVideoOption.diff}, dropping`);let e=this.bufferList.shift();for(;e.ts-this.player.videoTimestamp<-1e3&&this.bufferList.length>0;)e=this.bufferList.shift();if(0===this.bufferList.length)return}}if(0===this.bufferList.length)return;const t=this.bufferList.shift();t&&t.ts&&(this.player.audioTimestamp=t.ts);for(let o=0;o20&&(this.player.debug.warn("AudioContext",`bufferList is large: ${this.bufferList.length}`),this.bufferList.length>50&&this.bufferList.shift()))}}class Ge{constructor(e,t,i,o){this.player=e,this.audio=t,this.buffer=i,this.channel=o}extract(e,t){let i=this.provide(t);for(let t=0;ta){for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const o=2*(t=t||0);i>=0||(i=(e.length-o)/2);const s=2*i;this.ensureCapacity(i+this._frameCount);const r=this.endIndex;this.vector.set(e.subarray(o,o+s),r),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t=t||0,i>=0||(i=e.frameCount-t),this.putSamples(e.vector,e.position+t,i)}receive(e){e>=0&&!(e>this._frameCount)||(e=this.frameCount),this._frameCount-=e,this._position+=e}receiveSamples(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,o=this.startIndex;e.set(this._vector.subarray(o,o+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const o=this.startIndex+2*t,s=2*i;e.set(this._vector.subarray(o,o+s))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class qe{constructor(e){e?(this._inputBuffer=new He,this._outputBuffer=new He):this._inputBuffer=this._outputBuffer=null}get inputBuffer(){return this._inputBuffer}set inputBuffer(e){this._inputBuffer=e}get outputBuffer(){return this._outputBuffer}set outputBuffer(e){this._outputBuffer=e}clear(){this._inputBuffer.clear(),this._outputBuffer.clear()}}class Ye extends qe{constructor(e){super(e),this.reset(),this._rate=1}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new Ye;return e.rate=this._rate,e}process(){const e=this._inputBuffer.frameCount;this._outputBuffer.ensureAdditionalCapacity(e/this._rate+1);const t=this.transpose(e);this._inputBuffer.receive(),this._outputBuffer.put(t)}transpose(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,o=this._outputBuffer.vector,s=this._outputBuffer.endIndex;let r=0,a=0;for(;this.slopeCount<1;)o[s+2*a]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],o[s+2*a+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],a+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,r+=1,r>=e-1)break e;const n=i+2*r;o[s+2*a]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],o[s+2*a+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],a+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],a}}class Xe{constructor(e){this._pipe=e}get pipe(){return this._pipe}get inputBuffer(){return this._pipe.inputBuffer}get outputBuffer(){return this._pipe.outputBuffer}fillInputBuffer(){throw new Error("fillInputBuffer() not overridden")}fillOutputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:Ze;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._position)throw new RangeError("New position may not be greater than current position");const t=this.outputBufferPosition-(this._position-e);if(t<0)throw new RangeError("New position falls outside of history buffer");this.outputBufferPosition=t,this._position=e}get sourcePosition(){return this._sourcePosition}set sourcePosition(e){this.clear(),this._sourcePosition=e}onEnd(){this.callback()}fillInputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const t=new Float32Array(2*e),i=this.sourceSound.extract(t,e,this._sourcePosition);this._sourcePosition+=i,this.inputBuffer.putSamples(t,0,i)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const o=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,o),this.outputBuffer.receive(Math.max(o-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const _e=[[124,186,248,310,372,434,496,558,620,682,744,806,868,930,992,1054,1116,1178,1240,1302,1364,1426,1488,0],[-100,-75,-50,-25,25,50,75,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-20,-15,-10,-5,5,10,15,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-4,-3,-2,-1,1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],$e=-10/1.5;class et extends qe{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}clear(){super.clear(),this.clearMidBuffer()}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1,this.midBuffer=null)}setParameters(e,t,i,o){e>0&&(this.sampleRate=e),o>0&&(this.overlapMs=o),t>0?(this.sequenceMs=t,this.autoSeqSetting=!1):this.autoSeqSetting=!0,i>0?(this.seekWindowMs=i,this.autoSeekSetting=!1):this.autoSeekSetting=!0,this.calculateSequenceParameters(),this.calculateOverlapLength(this.overlapMs),this.tempo=this._tempo}set tempo(e){let t;this._tempo=e,this.calculateSequenceParameters(),this.nominalSkip=this._tempo*(this.seekWindowLength-this.overlapLength),this.skipFract=0,t=Math.floor(this.nominalSkip+.5),this.sampleReq=Math.max(t+this.overlapLength,this.seekWindowLength)+this.seekLength}get tempo(){return this._tempo}get inputChunkSize(){return this.sampleReq}get outputChunkSize(){return this.overlapLength+Math.max(0,this.seekWindowLength-2*this.overlapLength)}calculateOverlapLength(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,this.refMidBuffer=new Float32Array(2*this.overlapLength),this.midBuffer=new Float32Array(2*this.overlapLength)}checkLimits(e,t,i){return ei?i:e}calculateSequenceParameters(){let e,t;this.autoSeqSetting&&(e=150+-50*this._tempo,e=this.checkLimits(e,50,125),this.sequenceMs=Math.floor(e+.5)),this.autoSeekSetting&&(t=28.333333333333332+$e*this._tempo,t=this.checkLimits(t,15,25),this.seekWindowMs=Math.floor(t+.5)),this.seekWindowLength=Math.floor(this.sampleRate*this.sequenceMs/1e3),this.seekLength=Math.floor(this.sampleRate*this.seekWindowMs/1e3)}set quickSeek(e){this._quickSeek=e}clone(){const e=new et;return e.tempo=this._tempo,e.setParameters(this.sampleRate,this.sequenceMs,this.seekWindowMs,this.overlapMs),e}seekBestOverlapPosition(){return this._quickSeek?this.seekBestOverlapPositionStereoQuick():this.seekBestOverlapPositionStereo()}seekBestOverlapPositionStereo(){let e,t,i,o=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;ot&&(t=i,e=o);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,o,s,r=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,o=0,s=0;r<4;r+=1){let a=0;for(;_e[r][a]&&(s=o+_e[r][a],!(s>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*s,this.refMidBuffer),i>t&&(t=i,e=s),a+=1;o=e}return e}preCalculateCorrelationReferenceStereo(){let e,t,i=0;for(;i=this.sampleReq;){e=this.seekBestOverlapPosition(),this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),this.overlap(Math.floor(e)),this._outputBuffer.put(this.overlapLength),t=this.seekWindowLength-2*this.overlapLength,t>0&&this._outputBuffer.putBuffer(this._inputBuffer,e+this.overlapLength,t);const o=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(o,o+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const tt=function(e,t){return(e>t?e-t:t-e)>1e-10};class it{constructor(){this.transposer=new Ye(!1),this.stretch=new et(!1),this._inputBuffer=new He,this._intermediateBuffer=new He,this._outputBuffer=new He,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new it;return e.rate=this.rate,e.tempo=this.tempo,e}get rate(){return this._rate}set rate(e){this.virtualRate=e,this.calculateEffectiveRateAndTempo()}set rateChange(e){this._rate=1+.01*e}get tempo(){return this._tempo}set tempo(e){this.virtualTempo=e,this.calculateEffectiveRateAndTempo()}set tempoChange(e){this.tempo=1+.01*e}set pitch(e){this.virtualPitch=e,this.calculateEffectiveRateAndTempo()}set pitchOctaves(e){this.pitch=Math.exp(.69314718056*e),this.calculateEffectiveRateAndTempo()}set pitchSemitones(e){this.pitchOctaves=e/12}get inputBuffer(){return this._inputBuffer}get outputBuffer(){return this._outputBuffer}calculateEffectiveRateAndTempo(){const e=this._tempo,t=this._rate;this._tempo=this.virtualTempo/this.virtualPitch,this._rate=this.virtualRate*this.virtualPitch,tt(this._tempo,e)&&(this.stretch.tempo=this._tempo),tt(this._rate,t)&&(this.transposer.rate=this._rate),this._rate>1?this._outputBuffer!=this.transposer.outputBuffer&&(this.stretch.inputBuffer=this._inputBuffer,this.stretch.outputBuffer=this._intermediateBuffer,this.transposer.inputBuffer=this._intermediateBuffer,this.transposer.outputBuffer=this._outputBuffer):this._outputBuffer!=this.stretch.outputBuffer&&(this.transposer.inputBuffer=this._inputBuffer,this.transposer.outputBuffer=this._intermediateBuffer,this.stretch.inputBuffer=this._intermediateBuffer,this.stretch.outputBuffer=this._outputBuffer)}process(){this._rate>1?(this.stretch.process(),this.transposer.process()):(this.transposer.process(),this.stretch.process())}}class ot{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new it,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new Ke(i,this.soundTouch,1024)}setRate(e){this.soundTouch.tempo=e}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),o=new Float32Array(i),s=new Float32Array(i);for(let e=0;e{const i=e.outputBuffer;if(this.bufferList.length&&this.playing){if(this.audioSyncVideoOption.diff>$)return;if(this.audioSyncVideoOption.diff<-1e3){let e=this._provide(i.length);for(;e.ts-this.player.videoTimestamp<-1e3&&e.size>0;)e=this._provide(i.length);if(0===e.size)return}const e=this._provide(i.length);if(0===e.size)return;e&&e.ts&&(this.player.audioTimestamp=e.ts);for(let o=0;o0?setTimeout((()=>{this.initScriptNode(e)}),t):this.initScriptNode(e)}setRate(e){e!==this.playbackRate&&this.rateProcessor&&(this.player.debug.log("AudioPlaybackContext","setRate",e),this.playbackRate=e,this.rateProcessor.setRate(e))}play(e,t){this.isMute||(null===this.firstTimestamp&&(this.firstTimestamp=t),this.hasAudio=!0,this.bufferList.push({buffer:e,ts:t-this.firstTimestamp}))}_provide(e){return(1===this.playbackRate?this.processor:this.rateProcessor).provide(e)}}class rt{constructor(e){return new(rt.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===o?st:ze}}class at extends Oe{constructor(e){super(),this.player=e,this.playing=!1,this.abortController=new AbortController,this.streamRate=Se((t=>{e.emit(R.kBps,(t/1024).toFixed(2))})),e.debug.log("FetchStream","init")}destroy(){this.abort(),this.off(),this.streamRate=null,this.player.debug.log("FetchStream","destroy")}fetchStream(e){const{demux:t}=this.player;this.player._times.streamStart=be(),fetch(e,{signal:this.abortController.signal}).then((e=>{const i=e.body.getReader();this.emit(R.streamSuccess);const o=()=>{i.read().then((e=>{let{done:i,value:s}=e;i?t.close():(this.streamRate&&this.streamRate(s.byteLength),t.dispatch(s),o())})).catch((e=>{t.close(),this.emit(I.fetchError,e),this.player.emit(R.error,I.fetchError),this.abort()}))};o()})).catch((e=>{this.abort(),this.emit(I.fetchError,e),this.player.emit(R.error,I.fetchError)}))}abort(){this.abortController&&(this.abortController.abort(),this.abortController=null)}}class nt extends Oe{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=j,this.wsUrl=null,this.streamRate=Se((t=>{e.emit(R.kBps,(t/1024).toFixed(2))}))}destroy(){this.socket&&(this.socket.close(),this.socket=null),this.socketStatus=j,this.streamRate=null,this.wsUrl=null,this.off(),this.player.debug.log("websocketLoader","destroy")}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:o}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",i(this.socket,"open",(()=>{this.emit(R.streamSuccess),t.log("websocketLoader","socket open"),this.socketStatus=x})),i(this.socket,"message",(e=>{this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)})),i(this.socket,"close",(()=>{t.log("websocketLoader","socket close"),this.emit(R.streamEnd),this.socketStatus=D})),i(this.socket,"error",(e=>{t.log("websocketLoader","socket error"),this.emit(I.websocketError,e),this.player.emit(R.error,I.websocketError),this.socketStatus=L,o.close(),t.log("websocketLoader","socket error:",e)}))}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("websocketLoader","websocket handle message demux is null")}fetchStream(e){this.player._times.streamStart=be(),this.wsUrl=e,this._createWebSocket()}}class At{constructor(e){return new(At.getLoaderFactory(e._opt.protocol))(e)}static getLoaderFactory(i){return i===t?at:i===e?nt:void 0}}var ct=he((function(e){function t(e,s){if(!e)throw"First parameter is required.";s=new i(e,s=s||{type:"video"});var r=this;function a(t){t&&(s.initCallback=function(){t(),t=s.initCallback=null});var i=new o(e,s);(h=new i(e,s)).record(),u("recording"),s.disableLogs||console.log("Initialized recorderType:",h.constructor.name,"for output-type:",s.type)}function n(e){if(e=e||function(){},h){if("paused"===r.state)return r.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===r.state||s.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',r.state),s.disableLogs||console.log("Stopped recording "+s.type+" stream."),"gif"!==s.type?h.stop(t):(h.stop(),t()),u("stopped")}else m();function t(t){if(h){Object.keys(h).forEach((function(e){"function"!=typeof h[e]&&(r[e]=h[e])}));var i=h.blob;if(!i){if(!t)throw"Recording failed.";h.blob=i=t}if(i&&!s.disableLogs&&console.log(i.type,"->",g(i.size)),e){var o;try{o=l.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(r,o):e(o)}s.autoWriteToDisk&&c((function(e){var t={};t[s.type+"Blob"]=e,I.Store(t)}))}else"function"==typeof e.call?e.call(r,""):e("")}}function A(e){postMessage((new FileReaderSync).readAsDataURL(e))}function c(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(h||{}).blob;if(!i)return s.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){c(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var o=new FileReader;o.readAsDataURL(i),o.onload=function(t){e(t.target.result)}}else{var r=function(e){try{var t=l.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return l.revokeObjectURL(t),i}catch(e){}}(A);r.onmessage=function(t){e(t.data)},r.postMessage(i)}}function d(e){e=e||0,"paused"!==r.state?"stopped"!==r.state&&(e>=r.recordingDuration?n(r.onRecordingStopped):(e+=1e3,setTimeout((function(){d(e)}),1e3))):setTimeout((function(){d(e)}),1e3)}function u(e){r&&(r.state=e,"function"==typeof r.onStateChanged.call?r.onStateChanged.call(r,e):r.onStateChanged(e))}var h,p='It seems that recorder is destroyed or "startRecording" is not invoked for '+s.type+" recorder.";function m(){!0!==s.disableLogs&&console.warn(p)}var f={startRecording:function(t){return s.disableLogs||console.log("RecordRTC version: ",r.version),t&&(s=new i(e,t)),s.disableLogs||console.log("started recording "+s.type+" stream."),h?(h.clearRecordedData(),h.record(),u("recording"),r.recordingDuration&&d(),r):(a((function(){r.recordingDuration&&d()})),r)},stopRecording:n,pauseRecording:function(){h?"recording"===r.state?(u("paused"),h.pause(),s.disableLogs||console.log("Paused recording.")):s.disableLogs||console.warn("Unable to pause the recording. Recording state: ",r.state):m()},resumeRecording:function(){h?"paused"===r.state?(u("recording"),h.resume(),s.disableLogs||console.log("Resumed recording.")):s.disableLogs||console.warn("Unable to resume the recording. Recording state: ",r.state):m()},initRecorder:a,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return r.recordingDuration=e,r.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){r.onRecordingStopped=e}}},clearRecordedData:function(){h?(h.clearRecordedData(),s.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(h)return h.blob;m()},getDataURL:c,toURL:function(){if(h)return l.createObjectURL(h.blob);m()},getInternalRecorder:function(){return h},save:function(e){h?b(h.blob,e):m()},getFromDisk:function(e){h?t.getFromDisk(s.type,e):m()},setAdvertisementArray:function(e){s.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),p=!u&&!d&&!!navigator.webkitGetUserMedia||y()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),m=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);m&&!p&&-1!==navigator.userAgent.indexOf("CriOS")&&(m=!1,p=!0);var f=window.MediaStream;function g(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function b(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var o=t.split(".");t=o[0],i=o[1]}var s=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,s);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,s);var r=document.createElement("a");r.href=l.createObjectURL(e),r.download=s,r.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(r),"function"==typeof r.click?r.click():(r.target="_blank",r.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),l.revokeObjectURL(r.href)}function y(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function v(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function w(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===f&&"undefined"!=typeof webkitMediaStream&&(f=webkitMediaStream),void 0!==f&&void 0===f.prototype.stop&&(f.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),void 0!==t&&(t.invokeSaveAsDialog=b,t.getTracks=v,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,o=new EBML.Decoder,s=EBML.tools,r=new FileReader;r.onload=function(e){o.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var r=s.makeMetadataSeekable(i.metadatas,i.duration,i.cues),a=this.result.slice(i.metadataSize),n=new Blob([r,a],{type:"video/webm"});t(n)},r.readAsArrayBuffer(e)},t.bytesToSize=g,t.isElectron=y);var k={};function S(){if(h||m||d)return!0;var e,t,i=navigator.userAgent,o=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10);return(p||u)&&(e=i.indexOf("Chrome"),o=i.substring(e+7)),-1!==(t=o.indexOf(";"))&&(o=o.substring(0,t)),-1!==(t=o.indexOf(" "))&&(o=o.substring(0,t)),s=parseInt(""+o,10),isNaN(s)&&(o=""+parseFloat(navigator.appVersion),s=parseInt(navigator.appVersion,10)),s>=49}function B(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var o;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(o=new f).addTrack(v(e,"audio")[0]):o=new f(v(e,"audio")),e=o;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=p?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var s,r=[];function a(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return s&&s.mimeType?s.mimeType:e.mimeType||"video/webm"}function A(){r=[],s=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return r},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],c=[],r=[];var o=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",o),s&&(s=null),p&&!S()&&(o="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&o.mimeType&&(MediaRecorder.isTypeSupported(o.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType),o.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{s=new MediaRecorder(e,o),t.mimeType=o.mimeType}catch(t){s=new MediaRecorder(e)}o.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in s&&!1===s.canRecordMimeType(o.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",o.mimeType)),s.ondataavailable=function(e){if(e.data&&c.push("ondataavailable: "+g(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(o)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(r.push(e.data),a(),"function"==typeof t.ondataavailable)){var s=t.getNativeBlob?e.data:new Blob([e.data],{type:n(o)});t.ondataavailable(s)}},s.onstart=function(){c.push("started")},s.onpause=function(){c.push("paused")},s.onresume=function(){c.push("resumed")},s.onstop=function(){c.push("stopped")},s.onerror=function(e){e&&(e.name||(e.name="UnknownError"),c.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",o.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&s&&"inactive"===s.state)return delete t.timeslice,void s.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==s.state&&"stopped"!==s.state&&s.stop())},"number"==typeof t.timeSlice?(a(),s.start(t.timeSlice)):s.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,s&&(this.recordingCallback=e,"recording"===s.state&&s.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(r,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){s&&"recording"===s.state&&s.pause()},this.resume=function(){s&&"paused"===s.state&&s.resume()},this.clearRecordedData=function(){s&&"recording"===s.state&&i.stop(A),A()},this.getInternalRecorder=function(){return s},this.blob=null,this.getState=function(){return s&&s.state||"inactive"};var c=[];this.getAllStates=function(){return c},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function o(){if(s&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(o,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function E(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var o,s=this,r=[],a=[],n=!1,A=0,c=2,d=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function h(e,t){function i(e,t){var i,o=e.numberOfAudioChannels,s=e.leftBuffers.slice(0),r=e.rightBuffers.slice(0),a=e.sampleRate,n=e.internalInterleavedLength,A=e.desiredSampRate;function c(e,t,i){var o=Math.round(e.length*(t/i)),s=[],r=Number((e.length-1)/(o-1));s[0]=e[0];for(var a=1;a96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var y=!1;function w(){r=[],a=[],A=0,S=!1,n=!1,y=!1,p=null,s.leftchannel=r,s.rightchannel=a,s.numberOfAudioChannels=c,s.desiredSampRate=d,s.sampleRate=b,s.recordingLength=A,B={left:[],right:[],recordingLength:0}}function k(){o&&(o.onaudioprocess=null,o.disconnect(),o=null),m&&(m.disconnect(),m=null),w()}this.pause=function(){y=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();y=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(k),k()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var S=!1;o.onaudioprocess=function(e){if(!y)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),o.disconnect(),n=!1),n){S||(S=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),l=new Float32Array(t);if(r.push(l),2===c){var d=e.inputBuffer.getChannelData(1),h=new Float32Array(d);a.push(h)}A+=g,s.recordingLength=A,void 0!==i.timeSlice&&(B.recordingLength+=g,B.left.push(l),2===c&&B.right.push(h))}else m&&(m.disconnect(),m=null)},p.createMediaStreamDestination?o.connect(p.createMediaStreamDestination()):o.connect(p.destination),this.leftchannel=r,this.rightchannel=a,this.numberOfAudioChannels=c,this.desiredSampRate=d,this.sampleRate=b,s.recordingLength=A;var B={left:[],right:[],recordingLength:0};function E(){n&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(B.left.length?(h({desiredSampRate:d,sampleRate:b,numberOfAudioChannels:c,internalInterleavedLength:B.recordingLength,leftBuffers:B.left,rightBuffers:1===c?[]:B.right},(function(e,t){var o=new Blob([t],{type:"audio/wav"});i.ondataavailable(o),setTimeout(E,i.timeSlice)})),B={left:[],right:[],recordingLength:0}):setTimeout(E,i.timeSlice))}}function C(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var o,s,r,a=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,A=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(a&&A&&A[2]&&(n=parseInt(A[2],10)),a&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)o=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";o=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(r=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in o?e=o.captureStream(25):"mozCaptureStream"in o?e=o.mozCaptureStream(25):"webkitCaptureStream"in o&&(e=o.webkitCaptureStream(25));try{var a=new f;a.addTrack(v(e,"video")[0]),e=a}catch(e){}if(!e)throw"captureStream API are NOT available.";(s=new B(e,{mimeType:t.mimeType||"video/webm"})).record()}else h.frames=[],u=(new Date).getTime(),d();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var o=h.frames.length;h.frames.forEach((function(e,i){var s=o-i;t.disableLogs||console.log(s+"/"+o+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(s,o);var r=e.image.toDataURL("image/webp",1);h.frames[i].image=r})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){r=!1;var o=this;i&&s?s.stop(e):this.getWebPImages((function(){h.compile((function(i){t.disableLogs||console.log("Recording finished!"),o.blob=i,o.blob.forEach&&(o.blob=new Blob([],{type:"video/webm"})),e&&e(o.blob),h.frames=[]}))}))};var c=!1;function l(){h.frames=[],r=!1,c=!1}function d(){if(c)return u=(new Date).getTime(),setTimeout(d,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),h.frames.push({image:(o=document.createElement("canvas"),s=o.getContext("2d"),o.width=e.width,o.height=e.height,s.drawImage(e,0,0),o),duration:i}),void(r&&setTimeout(d,t.frameInterval))}var o,s;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(d,t.frameInterval);u=(new Date).getTime(),h.frames.push({image:e.toDataURL("image/webp",1),duration:i}),r&&setTimeout(d,t.frameInterval)}})}this.pause=function(){c=!0,s instanceof B&&s.pause()},this.resume=function(){c=!1,s instanceof B?s.resume():r||this.record()},this.clearRecordedData=function(){r&&this.stop(l),l()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),h=new T.Video(100)}function R(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-A;return t?r?(A=(new Date).getTime(),setTimeout(i,100)):(A=(new Date).getTime(),n.paused&&n.play(),d.drawImage(n,0,0,l.width,l.height),c.frames.push({duration:t,image:l.toDataURL("image/webp")}),void(s||setTimeout(i,e,e))):setTimeout(i,e,e)}function o(e,t,i,o,s){var r=document.createElement("canvas");r.width=l.width,r.height=l.height;var a,n,A,c=r.getContext("2d"),d=[],u=-1===t,h=t&&t>0&&t<=e.length?t:e.length,p=0,m=0,f=0,g=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),b=i&&i>=0&&i<=1?i:0,y=o&&o>=0&&o<=1?o:0,v=!1;n=-1,A=(a={length:h,functionToLoop:function(t,i){var o,s,r,a=function(){!v&&r-o<=r*y||(u&&(v=!0),d.push(e[i])),t()};if(v)a();else{var n=new Image;n.onload=function(){c.drawImage(n,0,0,l.width,l.height);var e=c.getImageData(0,0,l.width,l.height);o=0,s=e.data.length,r=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function o(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*i[0].width:i[0].width;var a=1;3!==e&&4!==e||(a=2),5!==e&&6!==e||(a=3),7!==e&&8!==e||(a=4),9!==e&&10!==e||(a=5),r.height=i[0].height*a}else r.width=n.width||360,r.height=n.height||240;t&&t instanceof HTMLVideoElement&&h(t),i.forEach((function(e,t){h(e,t)})),setTimeout(u,n.frameInterval)}}function h(e,t){if(!s){var i=0,o=0,r=e.width,n=e.height;1===t&&(i=e.width),2===t&&(o=e.height),3===t&&(i=e.width,o=e.height),4===t&&(o=2*e.height),5===t&&(i=e.width,o=2*e.height),6===t&&(o=3*e.height),7===t&&(i=e.width,o=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(o=e.stream.top),void 0!==e.stream.width&&(r=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),a.drawImage(e,i,o,r,n),"function"==typeof e.stream.onRender&&e.stream.onRender(a,i,o,r,n,t)}}function p(e){var t=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,t),t.className=i,t.muted=!0,t.volume=0,t.width=e.width||n.width||360,t.height=e.height||n.height||240,t.play(),t}function m(t){o=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,o.push(t)}}))}void 0!==A?d.AudioContext=A:"undefined"!=typeof webkitAudioContext&&(d.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){u()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var i=new l;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var s=p(t);s.stream=t,o.push(s),i.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var r=n.audioContext.createMediaStreamSource(t);n.audioDestination=n.audioContext.createMediaStreamDestination(),r.connect(n.audioDestination),i.addTrack(n.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(i)}))},this.releaseStreams=function(){o=[],s=!0,n.gainNode&&(n.gainNode.disconnect(),n.gainNode=null),n.audioSources.length&&(n.audioSources.forEach((function(e){e.disconnect()})),n.audioSources=[]),n.audioDestination&&(n.audioDestination.disconnect(),n.audioDestination=null),n.audioContext&&n.audioContext.close(),n.audioContext=null,a.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),m(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;m(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():n.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new l;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){d.AudioContextConstructor||(d.AudioContextConstructor=new d.AudioContext);n.audioContext=d.AudioContextConstructor,n.audioSources=[],!0===n.useGainNode&&(n.gainNode=n.audioContext.createGain(),n.gainNode.connect(n.audioContext.destination),n.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=n.audioContext.createMediaStreamSource(e);!0===n.useGainNode&&i.connect(n.gainNode),n.audioSources.push(i)}})),!t)return;return n.audioDestination=n.audioContext.createMediaStreamDestination(),n.audioSources.forEach((function(e){e.connect(n.audioDestination)})),n.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function D(e,t){e=e||[];var i,o,s=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var s;i=new x(e,t.elementClass||"multi-streams-mixer"),(s=[],e.forEach((function(e){v(e,"video").forEach((function(e){s.push(e)}))})),s).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(o=new B(i.getMixedStream(),t)).record()},this.stop=function(e){o&&o.stop((function(t){s.blob=t,e(t),s.clearRecordedData()}))},this.pause=function(){o&&o.pause()},this.resume=function(){o&&o.resume()},this.clearRecordedData=function(){o&&(o.clearRecordedData(),o=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(s){if(!s)throw"First parameter is required.";s instanceof Array||(s=[s]),e.concat(s),o&&i&&(i.appendStreams(s),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function L(e,t){var i,o,s;function r(){return new ReadableStream({start:function(o){var s=document.createElement("canvas"),r=document.createElement("video"),a=!0;r.srcObject=e,r.muted=!0,r.height=t.height,r.width=t.width,r.volume=0,r.onplaying=function(){s.width=t.width,s.height=t.height;var e=s.getContext("2d"),n=1e3/t.frameRate,A=setInterval((function(){if(i&&(clearInterval(A),o.close()),a&&(a=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(r,0,0),"closed"!==o._controlledReadableStream.state)try{o.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},r.play()}})}function a(e,A){if(!t.workerPath&&!A)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){a(e,t)}))}));if(!t.workerPath&&A instanceof ArrayBuffer){var c=new Blob([A],{type:"text/javascript"});t.workerPath=l.createObjectURL(c)}t.workerPath||console.error("workerPath parameter is missing."),(o=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),o.addEventListener("message",(function(e){"READY"===e.data?(o.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),r().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):o.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(s||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],s=!1,this.blob=null,a(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){s=!0},this.resume=function(){s=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){o?(o.addEventListener("message",(function(t){null===t.data&&(o.terminate(),o=null,e&&e())})),o.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],s=!1,this.blob=null},this.blob=null}void 0!==t&&(t.DiskStorage=I),void 0!==t&&(t.GifRecorder=j),void 0===t&&(e.exports=x),void 0!==t&&(t.MultiStreamRecorder=D),void 0!==t&&(t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var o=this;o.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{o.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{o.recordRTC.stopRecording((function(i){o.blob=o.recordRTC.getBlob(),o.blob&&o.blob.size?e(i):t("Empty blob.",o.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{o.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{o.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{o.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(o.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(o.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(o.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(o.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(o.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"}),void 0!==t&&(t.WebAssemblyRecorder=L)}));class lt extends Oe{constructor(e){super(),this.player=e,this.fileName="",this.fileType=J.webm,this.isRecording=!1,this.recordingTimestamp=0,this.recordingInterval=null,e.debug.log("Recorder","init")}destroy(){this._reset(),this.player.debug.log("Recorder","destroy")}setFileName(e,t){this.fileName=e,J.mp4!==t&&J.webm!==t||(this.fileType=t)}get recording(){return this.isRecording}get recordTime(){return this.recordingTimestamp}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",onTimeStamp:t=>{e.log("Recorder","record timestamp :"+t)},disableLogs:!this.player._opt.debug};try{const e=this.player.video.$videoElement.captureStream(25);if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const t=this.player.audio.mediaStreamAudioDestinationNode.stream;if(t.getAudioTracks().length>0){const i=t.getAudioTracks()[0];i&&i.enabled&&e.addTrack(i)}}this.recorder=ct(e,t)}catch(t){e.error("Recorder",t),this.emit(R.recordCreateError)}this.recorder&&(this.isRecording=!0,this.player.emit(R.recording,!0),this.recorder.startRecording(),e.log("Recorder","start recording"),this.player.emit(R.recordStart),this.recordingInterval=window.setInterval((()=>{this.recordingTimestamp+=1,this.player.emit(R.recordingTimestamp,this.recordingTimestamp)}),1e3))}stopRecordAndSave(){this.recorder&&this.isRecording&&this.recorder.stopRecording((()=>{this.player.debug.log("Recorder","stop recording"),this.player.emit(R.recordEnd),function(e,t,i){const o=window.URL.createObjectURL(e),s=document.createElement("a");s.href=o,s.download=(t||be())+"."+(i||J.webm),s.click(),setTimeout((()=>{window.URL.revokeObjectURL(o)}),Ee()?1e3:0)}(this.recorder.getBlob(),this.fileName,this.fileType),this._reset(),this.player.emit(R.recording,!1)}))}_reset(){this.isRecording=!1,this.recordingTimestamp=0,this.recorder&&(this.recorder.destroy(),this.recorder=null),this.fileName=null,this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}}class dt{constructor(e){return new(dt.getLoaderFactory())(e)}static getLoaderFactory(){return lt}}class ut{constructor(e){this.player=e,this.decoderWorker=new Worker(e._opt.decoder),this._initDecoderWorker(),e.debug.log("decoderWorker","init")}destroy(){this.decoderWorker.postMessage({cmd:E}),this.decoderWorker.terminate(),this.decoderWorker=null,this.player.debug.log("decoderWorker","destroy")}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onmessage=t=>{const s=t.data;switch(s.cmd){case A:e.log("decoderWorker","onmessage:",A),this.player.loaded||this.player.emit(R.load),this.player.emit(R.decoderWorkerInit),this._initWork();break;case p:e.log("decoderWorker","onmessage:",p,s.code),this.player._times.decodeStart||(this.player._times.decodeStart=be()),this.player.video.updateVideoInfo({encTypeCode:s.code});break;case h:e.log("decoderWorker","onmessage:",h,s.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:s.code});break;case c:e.log("decoderWorker","onmessage:",c,`width:${s.w},height:${s.h}`),this.player.video.updateVideoInfo({width:s.w,height:s.h}),this.player.video.initCanvasViewSize(),this.player._opt.playType===o&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case u:e.log("decoderWorker","onmessage:",u,`channels:${s.channels},sampleRate:${s.sampleRate}`),this.player.audio&&(this.player.audio.updateAudioInfo(s),this.player._opt.playType===i?this.player.audio.initScriptNode(s):this.player._opt.playType===o&&this.player.audio.initScriptNodeDelay(s));break;case l:this.player._opt.playType===i?(this.player.handleRender(),this.player.video.render(s),this.player.emit(R.timeUpdate,s.ts),this.player.updateStats({fps:!0,ts:s.ts,buf:s.delay}),this.player._times.videoStart||(this.player._times.videoStart=be(),this.player.handlePlayToRenderTimes())):this.player._opt.playType===o&&this.player.video.pushData(s);break;case d:this.player.playing&&this.player.audio&&(this.player._opt.playType===i||this.player._opt.playType===o)&&this.player.audio.play(s.buffer,s.ts);break;case m:s.message&&-1!==s.message.indexOf(f)&&(this.player.emit(R.error,I.wasmDecodeError),this.player.emit(I.wasmDecodeError));break;default:this.player[s.cmd]&&this.player[s.cmd](s)}}}_initWork(){const e={debug:this.player._opt.debug,forceNoOffscreen:this.player._opt.forceNoOffscreen,useWCS:this.player._opt.useWCS,videoBuffer:this.player._opt.videoBuffer,openWebglAlignment:this.player._opt.openWebglAlignment};this.decoderWorker.postMessage({cmd:w,opt:JSON.stringify(e),sampleRate:this.player.audio&&this.player.audio.audioContext.sampleRate||0})}decodeVideo(e,t,s){this.player._opt.playType===i?this._decodeVideo(e,t,s):this.player._opt.playType===o&&(this.player.video.rate>=this.player._opt.playbackForwardMaxRateDecodeIFrame?s&&this._decodeVideoNoDelay(e,t):this._decodeVideoNoDelay(e,t))}_decodeVideo(e,t,i){const o={type:b,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:k,buffer:e,options:o},[e.buffer])}_decodeVideoNoDelay(e,t){this.decoderWorker.postMessage({cmd:B,buffer:e,ts:Math.max(t,0)},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===i?this.player._opt.useWCS&&!this.player._opt.useOffscreen||this.player._opt.useMSE?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===o&&this._decodeAudioNoDelay(e,t)}_decodeAudio(e,t){const i={type:g,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:k,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:S,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker.postMessage({cmd:C,key:e.key,value:e.value})}}class ht extends Oe{constructor(e){super(),this.player=e,this.stopId=null,this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.initInterval()}destroy(){this.stopId&&(clearInterval(this.stopId),this.stopId=null),this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.bufferList=[],this.dropping=!1,this.off()}getDelay(e){return e?(this.firstTimestamp?e&&(this.delay=Date.now()-this.startTimestamp-(e-this.firstTimestamp)):(this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1),this.delay):-1}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}initInterval(){this.player.debug.log("common dumex","init Interval");let e=()=>{let e;const t=this.player._opt.videoBuffer;if(this.bufferList.length)if(this.dropping){for(e=this.bufferList.shift(),e.type===g&&0===e.payload[1]&&this._doDecoderDecode(e);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift(),e.type===g&&0===e.payload[1]&&this._doDecoderDecode(e);e.isIFrame&&(this.dropping=!1,this._doDecoderDecode(e))}else if(e=this.bufferList[0],-1===this.getDelay(e.ts))this.bufferList.shift(),this._doDecoderDecode(e);else if(this.delay>t+1e3)this.resetDelay(),this.dropping=!0;else for(;this.bufferList.length&&(e=this.bufferList[0],this.getDelay(e.ts)>t);)this.bufferList.shift(),this._doDecoderDecode(e)};e(),this.stopId=setInterval(e,10)}_doDecode(e,t,i,o){const s=this.player;let r={ts:i,type:t,isIFrame:!1};s._opt.useWCS&&!s._opt.useOffscreen||s._opt.useMSE?(t===b&&(r.isIFrame=o),this.pushBuffer(e,r)):t===b?s.decoderWorker&&s.decoderWorker.decodeVideo(e,i,o):t===g&&s._opt.hasAudio&&s.decoderWorker&&s.decoderWorker.decodeAudio(e,i)}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:o}=t;e.type===g?t._opt.hasAudio&&t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts):e.type===b&&(t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame):t._opt.useMSE&&o.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){t.type===g?this.bufferList.push({ts:t.ts,payload:e,type:g}):t.type===b&&this.bufferList.push({ts:t.ts,payload:e,type:b,isIFrame:t.isIFrame})}close(){}}class pt extends ht{constructor(e){super(e),this.input=this._inputFlv(),this.flvDemux=this.dispatchFlvData(this.input),e.debug.log("FlvDemux","init")}destroy(){super.destroy(),this.input=null,this.flvDemux=null,this.player.debug.log("FlvDemux","destroy")}dispatch(e){this.flvDemux(e)}*_inputFlv(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),o=this.player;for(;;){t[3]=0;const e=yield 15,s=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const r=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8];let a=i[0];16777215===a&&(t[3]=e[11],a=i[0]);const n=yield r;switch(s){case y:o._opt.hasAudio&&(o.updateStats({abps:n.byteLength}),n.byteLength>0&&this._doDecode(n,g,a));break;case v:if(o._times.demuxStart||(o._times.demuxStart=be()),o._opt.hasVideo){o.updateStats({vbps:n.byteLength});const e=n[0]>>4==1;n.byteLength>0&&this._doDecode(n,b,a,e)}}}}dispatchFlvData(e){let t=e.next(),i=null;return o=>{let s=new Uint8Array(o);if(i){let e=new Uint8Array(i.length+s.length);e.set(i),e.set(s,i.length),s=e,i=null}for(;s.length>=t.value;){let i=s.slice(t.value);t=e.next(s.slice(0,t.value)),s=i}s.length>0&&(i=s)}}close(){this.input&&this.input.return(null)}}class mt extends ht{constructor(e){super(e),e.debug.log("M7sDemux","init")}destroy(){super.destroy(),this.player.debug.log("M7sDemux","destroy")}dispatch(e){const t=this.player,i=new DataView(e),o=i.getUint8(0),s=i.getUint32(1,!1);switch(o){case g:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,o,s)}break;case b:if(t._opt.hasVideo&&(t._times.demuxStart||(t._times.demuxStart=be()),i.byteLength>5)){const r=new Uint8Array(e,5),a=i.getUint8(5)>>4==1;t.updateStats({vbps:r.byteLength}),r.byteLength>0&&this._doDecode(r,o,s,a)}}}}class ft{constructor(e){return new(ft.getLoaderFactory(e._opt.demuxType))(e)}static getLoaderFactory(e){return e===r?mt:e===s?pt:void 0}}class gt extends Oe{constructor(e){super(),this.player=e,this.hasInit=!1,this.isInitInfo=!1,this.decoder=null,this.initDecoder(),e.debug.log("Webcodecs","init")}destroy(){this.decoder&&(this.decoder.close(),this.decoder=null),this.hasInit=!1,this.isInitInfo=!1,this.off(),this.player.debug.log("Webcodecs","destroy")}initDecoder(){const e=this;this.decoder=new VideoDecoder({output(t){e.handleDecode(t)},error(t){e.handleError(t)}})}handleDecode(e){this.isInitInfo||(this.player.video.updateVideoInfo({width:e.codedWidth,height:e.codedHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player._times.videoStart||(this.player._times.videoStart=be(),this.player.handlePlayToRenderTimes()),this.player.handleRender(),this.player.video.render({videoFrame:e}),this.player.updateStats({fps:!0,ts:0,buf:this.player.demux.delay}),setTimeout((function(){e.close?e.close():e.destroy()}),100)}handleError(e){this.player.debug.log("Webcodecs","VideoDecoder handleError",e)}decodeVideo(e,t,i){if(this.hasInit){const o=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?q:Y});this.decoder.decode(o)}else if(i&&0===e[1]){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===U)return void this.emit(I.webcodecsH265NotSupport);this.player._times.decodeStart||(this.player._times.decodeStart=be());const i=function(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let o=t[e].toString(16);o.length<2&&(o="0"+o),i+=o}return{codec:i,description:e}}(e.slice(5));this.decoder.configure(i),this.hasInit=!0}}}const bt={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"加载",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制",narrow:"缩小",expand:"放大"};var yt=Object.keys(bt).reduce(((e,t)=>(e[t]=`\n \n ${bt[t]?`${bt[t]}`:""}\n`,e)),{});function vt(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function wt(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const o=e.length,s=t.length,r=Math.max(o,s),a=ee,n=Math.ceil(r/a);let A=0,c=0;!function s(){let r="",l="";for(let i=0;i\n ${i.title}\n \n `);const s=t[c];s&&(l+=`\n
${s.title}
\n `),c+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),l&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",l),A+=1,A0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let o=0;o<1440;o++){const s=o%60==0;let r=!1;i&&(r=vt(e,De(i,o))),t.push({title:je(o),timestamp:o,dataType:"min",hasRecord:r,isStart:s})}return t}(e);wt(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function St(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let o=0;o<1440;o++){let s=60*o,r=s%1800==0,a=!1;i&&(a=vt(e,Le(i,s))),t.push({title:xe(s),timestamp:s,dataType:"second",hasRecord:a,isStart:r});let n=60*o+30;r=n%1800==0,i&&(a=vt(e,Le(i,n))),t.push({title:xe(n),timestamp:n,dataType:"second",hasRecord:a,isStart:r})}return t}(e);wt(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",o=t+":30";t<10&&(i="0"+i,o="0"+o),e.push({title:i,hour:t,min:0,second:0}),e.push({title:o,hour:t,min:30,second:0})}return e}(),t)}function Bt(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let o=0;o<144;o++)for(let s=0;s<60;s++){let r=10*s+600*o,a=r%600==0,n=!1;i&&(n=vt(e,Le(i,r))),t.push({title:xe(r),timestamp:r,dataType:"second",isStart:a,hasRecord:n})}return t}(e);wt(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let o=1;o<6;o++){let s=o+"0";e.push({title:i.replace(":00",":"+s),hour:t,min:10*o,second:0})}}return e}(),t)}function Et(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let o=0;o<288;o++)for(let s=0;s<60;s++){let r=5*s+300*o,a=r%300==0,n=!1;i&&(n=vt(e,Le(i,r))),t.push({title:xe(r),timestamp:r,dataType:"second",isStart:a,hasRecord:n})}return t}(e);wt(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let o=1;o<6;o++){let s=o+"0",r=o+"5";e.push({title:i.replace(":00",":"+s),hour:t,min:10*o,second:0}),e.push({title:i.replace(":00",":"+r),hour:t,min:10*o+5,second:0})}}return e}(),t)}var Ct=(e,t)=>{const{events:{proxy:i}}=e,s=document.createElement("object");s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.type="text/html",s.data="about:blank",ve(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let r=e.width,a=e.height;i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{e.width===r&&e.height===a||(r=e.width,a=e.height,e.emit(R.resize))}))})),e.$container.appendChild(s),e.on(R.destroy,(()=>{e.$container.removeChild(s)})),e.on(R.volumechange,(()=>{!function(e){if(0===e)ve(t.$volumeOn,"display","none"),ve(t.$volumeOff,"display","flex"),ve(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=we(t.$volumePanel,"height")||60,o=we(t.$volumeHandle,"height"),s=i-(i-o)*e-o;ve(t.$volumeHandle,"top",`${s}px`),ve(t.$volumeOn,"display","flex"),ve(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(R.loading,(e=>{ve(t.$loading,"display",e?"flex":"none"),ve(t.$poster,"display","none"),e&&ve(t.$playBig,"display","none")}));const n=i=>{let o=!0===(s=i)||!1===s?i:e.fullscreen;var s;ve(t.$fullscreenExit,"display",o?"flex":"none"),ve(t.$fullscreen,"display",o?"none":"flex")};try{pe.on("change",n),e.events.destroys.push((()=>{pe.off("change",n)}))}catch(e){}e.on(R.webFullscreen,(e=>{n(e)})),e.on(R.recording,(()=>{ve(t.$record,"display",e.recording?"none":"flex"),ve(t.$recordStop,"display",e.recording?"flex":"none")})),e.on(R.recordingTimestamp,(e=>{})),e.on(R.playing,(e=>{ve(t.$play,"display",e?"none":"flex"),ve(t.$playBig,"display",e?"none":"block"),ve(t.$pause,"display",e?"flex":"none"),ve(t.$screenshot,"display",e?"flex":"none"),ve(t.$record,"display",e?"flex":"none"),ve(t.$fullscreen,"display",e?"flex":"none"),e||t.$speed&&(t.$speed.innerHTML=Re("")),A()})),e.on(R.kBps,(i=>{if(e._opt.showBandwidth){const e=Re(i);t.$speed&&(t.$speed.innerHTML=e),A()}}));const A=()=>{if(e._opt.playType===o){const e=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;t.$playbackTimeInner.style.width=e+"px"}};if(e._opt.playType===o){const i=()=>{if(e._opt.playType===o){let i=0;const o=e.playback&&e.playback.playingTimestamp;if(o){const s=new Date(o),r=s.getHours(),a=s.getMinutes(),n=s.getSeconds();e.playback.is60Min?i=60*r+a:e.playback.is30Min?i=2*(60*r+a)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*r+a)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*r+a)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*r+a)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===se&&t.$playbackNarrow.classList.add("disabled"),e===ne&&t.$playbackExpand.classList.add("disabled")},r=()=>{const e=t.$playbackCurrentTime.style.left;let i=parseInt(e,10);const o=t.controlsPlaybackTimeInner.width;i=i-o/2>0?parseInt(i-o/2,10):0,console.log("_playbackTimeOffset",i),t.$playbackTimeInner.scrollLeft=i};e._opt.showBandwidth&&(t.$controlsLeft.style.width="90px"),e.on(R.playbackTime,(e=>{t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerHTML=Ce(e,"{h}:{i}:{s}")),i()})),e.on(R.playbackPrecision,((e,o)=>{t.$playbackTimeScroll.classList.remove(Ae.oneHour,Ae.halfHour,Ae.fiveMin,Ae.tenMin),t.$playbackTimeScroll.classList.add(Ae[e]),t.rafId&&(window.cancelAnimationFrame(t.rafId),t.rafId=null),t.changePercisitionInterval&&(clearTimeout(t.changePercisitionInterval),t.changePercisitionInterval=null),t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",t.changePercisitionInterval=setTimeout((()=>{switch(t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",e){case se:kt(o,t);break;case re:St(o,t);break;case ae:Bt(o,t);break;case ne:Et(o,t)}i(),s(e),r()}),16)})),e.on(R.resize,(()=>{A()})),A()}};function Rt(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var o=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css","top"===i&&o.firstChild?o.insertBefore(s,o.firstChild):o.appendChild(s),s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e))}}Rt('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.jessibuca-container .jessibuca-icon{cursor:pointer;width:16px;height:16px}.jessibuca-container .jessibuca-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jessibuca-container .jessibuca-play-big{position:absolute;display:none;height:100%;width:100%;background:rgba(0,0,0,.4)}.jessibuca-container .jessibuca-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jessibuca-container .jessibuca-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC")}.jessibuca-container .jessibuca-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jessibuca-container .jessibuca-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jessibuca-container .jessibuca-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;user-select:none;transition:width .5s ease-in}.jessibuca-container .jessibuca-controls .jessibuca-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jessibuca-container .jessibuca-controls .jessibuca-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jessibuca-container .jessibuca-controls .jessibuca-fullscreen,.jessibuca-container .jessibuca-controls .jessibuca-fullscreen-exit,.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-microphone-close,.jessibuca-container .jessibuca-controls .jessibuca-pause,.jessibuca-container .jessibuca-controls .jessibuca-play,.jessibuca-container .jessibuca-controls .jessibuca-record,.jessibuca-container .jessibuca-controls .jessibuca-record-stop,.jessibuca-container .jessibuca-controls .jessibuca-screenshot{display:none}.jessibuca-container .jessibuca-controls .jessibuca-icon-audio,.jessibuca-container .jessibuca-controls .jessibuca-icon-mute{z-index:1}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom{display:flex;justify-content:space-between;height:100%}.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-left,.jessibuca-container .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-right{display:flex;align-items:center}.jessibuca-container.jessibuca-controls-show .jessibuca-controls{opacity:1;visibility:visible}.jessibuca-container.jessibuca-controls-show-auto-hide .jessibuca-controls{opacity:.8;visibility:visible;display:none}.jessibuca-container.jessibuca-hide-cursor *{cursor:none!important}.jessibuca-container .jessibuca-icon-loading{width:50px;height:50px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;animation:rotation 1s linear infinite}.jessibuca-container .jessibuca-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAE5UlEQVRoQ+1YW2sdVRT+1s7JxbsoVkEUrIIX0ouz15zYNA+N1RdtQfCltlUfvLbqL/BCwZ8grbHtizQqPojgBSr0JkiMmT2nxgapqBURtPVCq7HxJCeZJVPmxDlzZubMmXOSEsnAvOy917fXt9e39tp7E5b4R0vcfywTuNgRbBgBx3HuJqLVzPzmYjprjHkcwAlmLqXNm4XAISLaSESPaq2HF4OE67rbRGRYRA7btn1fbgLGmKsA/Azg0gBkGzO/vZAkHMd5hIiqc5wHcCMz/5k0Z2oExsfHV1QqldPAf8lORNu11m8tBAljzFYAYWxRSl1vWdZvuQj4RsYYF4AVBlgIOVVlE55HRIxt23ZuCfmGjuOsJ6LPoiAistW27XfaEYmIbOYhPc9bXywWR1oiEJDYQkR1zrYjEjGyqfqbKd8a7kJVtLgQ+30i8pht2wfyRKIdmJkJBPkQTbILfudJ7CTZNBvVpggEcgpvc/ML38zESbLJsxBNE/A9biX0rdjGyTQXgbxyapdsarb0PMlXtWnGoXbKpm0Essqp3bJpK4E0OXmed3+hUBDP8w5FI91M0rdcyLLILElOCbaZilSWeXMncRx4klTCY1spfG3dhZJWx3GcDUR0EEB3ZMw0ET2gtT6SZWWzjmlrBIJCl0hAKfWgZVmHszqXZVxbCSxpCS2JJA6umIhe8ZKKVLPbaBJ+S9toqVRa53nedgAbAKwIwH4FcAzAa0R0l4i8F7PPz189k6RFRA+LyNcAXojDV0oNW5b1eW4Cxpg9AHZkSaaa6hhzb065uDSCH2LmRB8Sk9gY4293g43Qo/1pV80m8yQMfZSZ781cB1zXHRKRZ2IMpgD8A+DamL4ZItqitX4/jbQx5iEA7wLoihn3V/ACckWMJN/QWj9b1x5tGBsbW6uUOh5pPy0iL3Z2dn6ilJqanp5ep5TaJSLhF4NppdRNaU8gPmapVLrO87yfIoXuWyJ6uVKp+HmFjo6OQSJ6FcBtYT+UUmstyxqvkWuUgDFmP4AnQu2/e563qlgs+u9DNZ8xZhRAX7VRRPbath0XuXk7Y8xeAE+FgL6fnJzsHRwcLIfBR0ZGLunq6poAsDLUvp+Zw7b1r9PGmJMAbg8Z7WDmoThZuK67WkS+DD18fcPMdzSQUBR/EzN/nIC/SUQ+DPXV4dclsTHmHAD/SfHCNzc3t7Kvr++HJKeMMacA3BL0nyuXyzcPDAxMxo0fHR29slAo/Ajg6qD/fE9Pzw29vb1/x42fmJi4vFwu+5G/LOg/y8zXNJLQ2dAES5JANMQ7mfn1jBI6ycx3NiMhItqstf4oAX+ziHwQ6qvDj5NQNIn/ALCKmX+JSeIvABRD7fuY+ekGBPYBeDI05tTMzExvf3+/vz2Hk91/ET8RSeI6/DoCpVJpjed5fmKGvzMAXpqdnT3oed5Ud3d3v4jsAqBr9Ei0Rmv9VRqBBPzvROQVETnq2xJRdRu9tRF+bCVOKWT+Kvl/TSIFk6SW/LAjKfjV5K8rZABi8dOOEv7FI7Z8x6zwEWbemLbyMfJr5qiSiJ96oclymBOR3bZtP9+M89WxxpjdAHY2sN3DzM8ljWl4I3Nd9x7/OE1ENcdpETnmH3e11n41zv0l4J8RkU+J6AAz+xtF4teQQG7PFslwmcAiLfSyhC72Qv9/I/Avns2OT7QJskoAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAED0lEQVRoQ+2ZycsdRRTFf2ejqHFAMQqiYBTUoElUHLNx3GgCgpuYRF2o0UT9CxwQ/BMkMSbZSKLiQgQHUDCJgjiAxiEiESdEcJbEedgcKaj3UV+/6q7u/jovPPkK3qbr1ql76p5bt6qemPKmKfefeQKHOoLFCNg+H1gi6fFJOmv7VmCvpD1N87Yh8ApwNXCzpB2TIGF7DRDm2inpmt4EbB8LfAMcGUHWSHryYJKwfRMwmuMP4BRJv9TN2RgB2wuB72BWsq+V9MTBIGF7NZBiGzhJ0o+9CIRBtt8FLqgADC6nRDbpVO9Iuqi3hCKB5cDrGZDVkp4aIhIV2aSQyyW9MScCkcQqIOfsnCORkc3I31b5VtyFRmg1IQ7dt0ja3icSQ2C2JhAjUU2ykd+dE7tBNp2i2olAJJFuc+nCt564QTadF6IzgUhiVGiqyinKaQjZpJP2ItBXTkPJZhACXeU0pGwGI9BWTkPLZlACBTldG4o5EA6E1dY66edcyNrs8Q36zg1vVaTazNs7iXPgDVJJzYs7VRvHRzaDEohyugJ4CTi84sg/wHWSdnVxsGQ7aQLXS9pZcqpL/6AEplpCU5HE8YpJ9YrXUKQ6baN1+HPaRm1fBqwFQnKGK2ZoPwCvAo8Ai4FnMpPMHMwapHUj8DFwbw3+Dklv9iZgexOwvktSRduxU2VDlErwmyXV+lCbxLbDdndlCT3TX3vV7JgnKfRuSVflfMkSsL0ZuDMz4E/gL+CETN+/wCpJzzaRtn0D8DRwWMbu1/gCcnSm7zFJd1W/jxGwvQx4r2IYnlbuA14GAomQFw8B6YtBKFSnNj2BxEJ3IvB1pdB9CjwQ8yqYhcg/DJxZ8WOZpA/SbzkC24DbEqOfgPMkBRKzmu23gEuSj1sk5SI3Y2J7C3BHMuZz4FxJf6fgto8APgIWJd+3SUrHjr9O294HnJUMWi8pSGqs2V4CvJ88fH0i6eyChKr4KyS9WIO/Ang+6RvDz0XgABCeFEdtkaQv65yy/QVweuwPY0+T9FuNQ8cAXwHHxf7wdHiypN9r7BfEl8GjYv9+SceXJLQ/mSDYTh2Baog3SHq0pYT2STqno4RWSnqhBn8l8FzSN4bfJol/jkn8bXUS228DFyfft0paVyCwFbg9sQkSDEkctueZZju8iO+tJPEYfo7A0piYKd73wP3xnB+20cvjNnphxdmlkj4sEMjhfwY8COyOY0fb6Bkl/K6FLKxS+M1KpDhJY8mvrG5doRwlf66QZfGbjhLh4pEt35kV3iUp/IvTunU8qtTil/7gaHOY2yjpntaez9b5RmBDYewmSXfX2RRvZLYvbThOh+NuqMa9Ww1+yLnXgO2SwkZR24oEens2oYHzBCa00PMSOtQL/f+NwH+Hg8hAnbrYgQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACgklEQVRoQ+3ZPYsTQRjA8eeZZCFlWttAwCIkZOaZJt8hlvkeHrlccuAFT6wEG0FQOeQQLCIWih6chQgKgkkKIyqKCVYip54IWmiQkTmyYhFvd3Zn3yDb7szu/7cv7GaDkPEFM94PK0DSZ9DzDAyHw7uI2HRDlVJX5/N5r9FoHCYdr/fvCRiNRmpJ6AEidoUQ15NG+AH8BgD2n9AHANAmohdJQfwAfgGA4xF4bjabnW21Whob62ILoKNfAsAGEd2PU2ATcNSNiDf0/cE5/xAHxDpgEf0NADaJ6HLUiKgAbvcjpdSGlPJZVJCoAUfdSqkLxWLxTLlc/mkbEgtgET1TSnWklLdtIuIEuN23crlcp16vv7cBSQKgu38AwBYRXQyLSArg3hsjRDxNRE+CQhIF/BN9qVAobFYqle+mkLQAdLd+8K0T0U0TRJoAbvc9fVkJId75gaQRoLv1C2STiPTb7rFLWgE6+g0RncwyYEJEtawCvjDGmpzzp5kD6NfxfD7frtVqB17xen2a7oG3ALBm+oMoFQBEPD+dTvtBfpImDXjIGFvjnD/3c7ksG5MU4HDxWeZa0HB3XhKAXcdxOn5vUi9gnIDXSqm2lHLPK8pkfVyAbSLqm4T5HRs1YB8RO0KIid8g03FRAT4rpbpSyh3TINPxUQB2GGM9zvkn05gg420CJovLZT9ISNA5tgB9ItoOGhFmnh/AcZ/X9xhj65zzV2Eiwsz1A1j2B8dHAOgS0W6YnduY6wkYj8d3lFKn/j66Ea84jtOrVqtfbQSE3YYnYDAY5Eql0hYAnNDv6kKIx2F3anO+J8DmzqLY1goQxVE12ebqDJgcrSjGrs5AFEfVZJt/AF0m+jHzUTtnAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACEElEQVRoQ+2ZXStEQRjH/3/yIXwDdz7J+i7kvdisXCk3SiFJW27kglBcSFFKbqwQSa4krykuKB09Naf2Yndn5jgzc06d53Znd36/mWfeniVyHsw5PwqB0DOonYEoijYBlOpAFwCMkHwLDS/9mwhEDUCfAAyTXA4tYSLwC6CtCegegH6S56FETAR+AHRoACcBTJAUWa+RloBAXwAYIrnt0yBNgZi7qtbHgw8RFwLC/QFglOScawlXAjH3gUqrE1cirgVi7mkAYyS/0xbxJSDcdwAGSa6nKeFTIOZeUyL3aYiEEBDuLwDjJGf+KxFKIOY+BdBL8iipSGiBmHtWbbuftiJZERBuOfgGSK7aSGRJIObeUml1ayKSRQHhlgtkiaTcdltGVgUE+ppkV54FaiS78yrwqlLoOI8Cch2XV548W7WRpTVwA6DP9kGUFYEpAOUkT9LQAvtq1M+0udKkQSgBqSlJWWYxKXj8vRACK+o6bbRIdYI+Ba7U7rKjg7L53JdAhWTZBsy0rWuBXZUuNVMg23auBF7UIl2yBbJt70JAoKV6/WwLk6R9mgKSJlJ1kLTxFmkJyCla8UZd15GJQKvyumyJ8gy8DAEvfZoINPqD41EtUjmUgoaJwAaAnjrKebVI34OSq85NBNqlCAWgE0CV5GEWwI3vQlmCbcSinYFCwPEIFDPgeIC1P1/MgHaIHDf4Aydx2TF7wnKeAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABA0lEQVRoQ+1YwQqCUBAcfWXXsLr2AXWTPXno8yVB8AP6Aa3oHI+kCDqYaawJljSe133uzO44bx0M/HEG/v1gAd9mkAyQgY4I/F8LJUlyrQFtD2AtIkcNoFEU+Z7n7QD4DfFHEVlocrVmgAUAIAOl3mILPcDgEFcUhyrUKMGUUcroc3NQRimj9XJBGaWMvvPydKN0o6/9QTdKN6rZANxj6EbpRulGuZnjYqs8BbyR8Ub2Izeys+u6yyAIDpo/ehzHM2NMDsA0xFsRmWhyfTIDWSXxCEBmrd2EYXjSHJqm6bQoii2AOYBL5Z0xgFxEVppcrQvQJO0zhgX0iXbdWWSADHRE4AZQ731AhEUeNwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAA7klEQVRoQ+2YSwrCQBBEX6HiVvxsPYDewfN7By/gD9ciQkvERQwJdBSiYs0mEDo96aruombEjy/9+P/jAj7NoBkwA28i8H8tFBFRA9oeWEo6ZgCNiDGwAYpn3TpKmmVytWbABQBmoNRbbqEHGB7iiuJYhRol2DJqGX1uDsuoZdRmLuNZSzGWUcuoZdRHSp/IylNgK2ErYSthK3FHwLcSvpXIjoLt9Jfa6TMwl3TIMBkRE2AH9BriL5KGmVyvWIltJXEfKN6tJJ0ym0bECFgDU+Ba+WZQFCdpkcnVuoBM0i5jXECXaNftZQbMwJsI3AAPN3dAQflHegAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC+UlEQVRoQ+1ZS2sTURT+zlDJYE3XSq219QHVuEjnJDT+Bff9Abqw2voAEfGxqygUqWhVFHGl/yMLu9BwByxk5SNI66ML6U7axjhHbmhgWiftncxoOiV3FcI53z3f/e65594zhIQPSnj86BBot4IdBToKRFyBnbeFlFIScVEiuYvIWC6Xe2YK8pcC7SYA4CMzH4mDQBXAqilQBDsLQLfPf9FxnF4i8kwwmypARI+Wl5dvmIBEsUmlUkNE9NaHsVCpVAZGR0d/m+A2JSAid3K53E0TkCg2pVKpz7KseR/GfKVSGYxMAMA0M1+JEpyJb6lUOm5ZVnkrAsVisaunp+esiByr1Wp3R0ZGvmifzZK4XQQWHMc52MgBpdQuAOcAXABwuB400ZTjONdaIjA7O5u2bVsnWU1EujzP+5nP5xdMVjvIJkCBD8x8VCm1G8AYgAkAAxt8Z5j5YmgCSqlTAJ4D2OcD/AXgATNfbYVEAIFPIvKKiE4D6GuCea8xX6gtpJT6DmBvECgRFRzHeROWRAABE4iWCbwHEFhkPM/L5vP5dyaz+23+KwHXdR3P854S0YG1ILSCuthNMfNM2OC1/RYENLY+ygcBnPfht6ZAA6BYLNr6dyqVokKhsGpaNQ2TWJstreXaE2aed133sojcj41AKyvdzCdAgSXLsk4MDw9/a/i4rntbRPxFNZoC/5jAV2be759DKTUJ4FZSFFi0bbs/k8noy2R9dAjEuWU2YgXkQOK3kD6BMsysi2Z9JC2Jdcw/ALzwPO+xvmcl7Rj177JVEbkO4BARjSflFDJJuW1dBxJPoCIiL4noDIB1BS0pW6j+oJmbm+uuVqvjRKQfLr0bZHnIzJf0f6HeAybahrUJqAPruhLlcnnPysqKfpXp11n/Gv62zoHAroS+AafT6QkiGrIsazKbzX7eVIHEt1US39gCkOzWYthkjNE+tuZujDGZQ8XRXn8N4KT5lLFZ6uaYPt+nwyDuvC80YdhvB9uOAu1WoaNAR4GIK/AHvdr+QAexB7EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACfUlEQVRoQ+2ZSYsUQRCFvycK4nJXXEbHBdwO4kn/gv9CD467ICIutxEFkREdFUU86T/xojcPntyQcT2INw+uISFVkD1Wd2dWlU7nUHlqisiX+fJFZGREi8yHMt8/HYG5VrBToFOg4QnMPxcyM2t4KE2nT0i6EwvylwIjQOCFpE1tEPgGfI0FamC3AFgazP8IrJL0KwZzkAI3gLMxIA1ttgCPA4w3wHpJP2NwBxG4KOlcDEgTGzNbA8wEGP57vA0CU5JONtlczFwz2wY8HUbAzBYCB4CtwCVJb33OIAXmioC70LoyBsxsEXAQOApsLIhelnS6FgEzW+5BBvwA/FS+SPJFa40KBZ5L2mxmS4AJ4IjHxCzwaUnHkgmY2V7gLrAyAPwOXJN0qg6DCgIvgQfAPsDjo2pcKddLciEz+wCs6AO6W9KjVBIVBGIgahN4BvRLMjslPYlZPbT53wR2AbeBtcUmXEFPdh5U06mbd/shBBzbr/Jx4FCAX0+BEsDMFocEYrNmFcE+BD4XsXZL0oyZnQCutkagzkn3m1NBwDe/Q9L74MAuFEqUn5op8I8JvJO0elacTALnc1HAH3Njkvwx+WeYWUegTa/pwaqIgexdyIN4uyRPmqULZRXEvulPwD3gpr+zcrtGQxfzRHYG2AAczuUWiom3kc4D2RN4BdwH9gM9CS0XFyoLGu9UuN974eIFVDiuSzruH5LqgRhtU20q8kBPV8LMlhVVmVdnYwX+SMdAZVeieAF7eeltmElJr4cpkH1bJfvGVvatxdR4bMu+teZuWxtKxWncXn8I7EldtQV7vz79fp9KwZp//9CksB8F206BuVahU6BToOEJ/Ab7+KdABdTt8AAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-recordStop:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreen:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAADd0lEQVRoQ+2Zz2sdVRTHv+fJBDW6anDVXen6wZszYxYBiYgtFGst3VSDunKjpS0GpUlqfjVpsVVs6aaL0or4YxMVFCJZ2ZLdPUP+gq5bQnTxtNAkfTnlhnnlkmQy9yV9780rudt77tzv5/y4v4bQ4Y06XD/2ANodwec/AiJygJnvtdvTWfPnRkBEJAiCN8rl8kMfiPn5+Ve7u7v3rays0Orq6lJfX99/PuN2auMDoAD+BvA2M6/mTWSMOUtE48D6AjHGzN/kjdlNvy+AnWOOmQ/lTSYiEwDOWzsimgrDcCRvzG76GwGw8/zJzO9sN6GInAMwbW1UdSSKoqndCMwb6wNwGsB39Q+p6h/M/C4R2dTa1AoHYBWKyCkA1+pqiWi2Wq0e7e/vf7yRoJAAKcQggMtuJKIoOtoxACnE0/xOi/SXMAxPuhCFjUBdpIjYVWXSEf0TM3/g9BeriDMKdSPEz8z8vrU1xgwT0YXCrEJZy1iSJKOqOub0/8jMA0mSfKKqNwoPkHp7ioiGHIhRIvpHVa93BEBa2JcAfOlALAHo6RgAKzRJkk9V1S6xL7kpV4idOM31taxaIKJHqmpPnMMA9hcOQES2PDJkAT1XAAC+ZebPfWB3auNzmLObVsNRUNUXVHUujuM7OxXnMy4XwOcj29mIyOuq+lapVGrYCelKpkEQ3CyXy4tbzdN0AGPMxr2iYZ+sra3FcRybtgCIiK2BKw2rdgaUSqWoUqlIkQAepFDdAF7cBq5ERI9rtdr1OI7tmE2t6SmUEYFHAEaexYW/1QC2EF+ru5GIvg7D0D2GNJxprQY4o6qv1I/b6SpzOYqiLxpWng5oOQAzXxWRWwA+dkRfYOb1p5hGW6sBJpn5KytSRG4D+KguWFXHoyhy7xdeLC0F2ChSRL4H8OFuINoKYIUbY34gogHH3eeZef1K6tPaDpCm068A3nMEDzHzxY4BUNWSiPxORO6z5aDPPlGICNQ9bYyZIaLjjudzIQoFkKbTbwCO+UI0HcB9J/LdeY0xs0R02IGYYObRrWqiFQCfEZEtSHsfmGZm+4qxbbM/hQD8BeBNa0hEM2EYnmgLgP3lFARBT1dXly4vL//b29tbzQNIU+llAHeJaLFSqRzJes5vegR8xGbZLCwsHKzVav8z8/0sm0ID+MDvAfh4qZk2exFopnd9vv0ELrXBQO7fD10AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAC/ElEQVRoQ+2Zy49NQRCHvx+ReK6IlZ34E7CUiCAR4xEbTLCyQRATYswwb2IQZDYWgojHZpCQECts+ResiQwLj0RClNSkb9Lu3HtPz7mZc8+V6eXt6tP1VVV3VdcVbT7U5vozC9BqD/7/HjCzlZLet9rS9fbP9ICZvQPWSfqRAmFmS4ClMHm+JiR9S1mXVyYFwIBXwEZJv7I2MrPjQH8A6JN0OWtNM/OpAL7HS0mbsjYzswGgN8gNS+rJWtPM/HQAfJ9nkrY22tDMTgMjQaZH0nAzCmatTQE4ClyNPvQU2CbJQ2vKKB2Aa2hmR4DrkbbPgQ5Jv6sJSgkQILqA0dgTkjraBiBAxPHtPz2UtDuGKK0HKkqamd8qg5HS9yXtjebLdYjrHNRqiAeS9gQvnQGGSnML1bvGzOwc0BfN35PUaWYHgRulBwjW9ju+O4JwqM/AWFsABIgLwKkIYgJY1jYAAeJQuGIXVIVcKTKxh8WfBin9J+AVpx/eFWUEqFkyNACKp0rhgWYArkg6kQibSyylmPOklQdibijBX+fSLHFRJkDid+qKmdlaYENOI0zeEcBNSZ9qbVIEQHWuyGOTNZLetgrAz8ClPFpHa1ZL8rf5lFGEB2oBfAxQi4D5DeDmAP7mGJPka0oD4LnDr9imH/xFe8AP4vLIjBclxWXItCOtaIBjwOKo3HaFRyWdnLbmYUHhAJKumdkt4ECk9JCkSitmWixFAwxKOjt5uZvdBvZH2vZLit8XSSBFA/yjpJndAfY1A9FSgOCJu0BnBNErqfIkzfRCywECxCNgR6Rtt6TzmdqHBmyKXG4ZM4sTWc04NzNPWE+AuG3ZlZInSuGBinXMbBzYGVkrE6JUACGcHgPbUyGKAIj7REmZ18y897o5ghiQ5E/bltRChwE/kF7Xj0jyLkbDYWbzgBfA+iA4LmlXqwD8LydvszjAF0lfswBCKC0E3gBeP22p186f8RBKUbaejJmtAr5L+lBPptQAKfCzAClWmkmZWQ/MpHVTvv0X9iFAQGQyevIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACrUlEQVRoQ+2ZPYgTURCAZzbBXJnCeL2Cnb87b9MEtPBUrrMQFAtrtT5/ClGs9LBWWz0RtbBUFCF4oJDsbO68wsLA2YqQSmLlvpEHu7IuMdlLcus+yUKKhJfZ+ebnvZl5CJY/aLn+MAP41x7M1QPMfFtr/crzvHfTAs8FoNPp1LTWzwHgqIg0lFLvrQHwfX8BER8DwC6jNCIecF13wwoA3/dvIuKNpLJa60Oe560XGoCZd4rICiKeTCtaeABmPg4AJmRqg6xcaABmvg4At4aFRyEBhoVM4UMoCplHADCfJTEL5YEsIVNID5iQAYCHALCYxeq5b6PMfF5EBAAEESthGK7W6/XPRpFWq7W3VCqtZg2ZcT3g+/6i4zjzIlLSWn/yPO/DIGMNLCWY2Sj/+xGRK0qpZfNDEASnROTFVi0fr8+aA8z8Ld6KEfGt67oLYwMAwEUium8EREn7OgeAjwCwPyo/nrque3YSgAtE9GDaAM1mc65arc4Zuf1+P2w0Gt9jJZl5DQAORt+fENG5wgEw8zUAMB/zbBBRwyqAIAjuiMjlSOlNItpjFUCqWl0josMzgChR/9hGAWBbknjmAdPhDdqa0gfZzAMJKyVP4v8hhJYRcSni+0JEu63ahZj5anyQici6UuqIVQDdbrfS6/UqRulyufyTiH5sF8AlIro37VpoWEHIzGZ2tM+sEZFnSqkzk9RCS0R01wjIsZz+mug53hDRia0AnI4bGgDYISItz/M2jYC8Gpp2u30MEWuO4zha665Sqp0ZYFStX/iWchRAItFGzoHSsrJ2ZFl1mHg6bfVYJeGJv85CC++BpIJZ5kSFC6G0ha0e7mYJqcJ7IOkRay84UhD2XjHFIFZf8iW9YcYoYRi+tO6aNeupOs66iU/icV46zf/MAKZpzXFk/QL+JG1PUPhRiQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACSElEQVRoQ+2Zu4sUQRCHf5+C+gf4yBXMfMYHGvjCzEBQDIzV+HwEohipGKupD0QNDE8UEwUFTe68wEDhTMVUMFJ+0tArzbjs9u3Ojt0wBR0M9MzUV1XdXVWNKhcq1189wP/2YKcesH1d0nPgdVvgnQDY3iTpqaT9kuaAt9UA2D4o6aGkzVHpXcByFQC2r0q60lB2D7BUNIDtjZIeSDoyRNGyAWwfiiET4n6YlAtg+7Kka2PCozyAMSHT5CkLIIbMfUlbMhdmOQCZIVOeB2LI3JN0NNPq6bTZe8D2aUmOY72kN8DnoIXt7eF5FSEzkQdsB+OEsFwr6RPwbpixhqYStoPyqVwAbkaAY5KeTWD5wStZHrD9XdJgK34FhBP9H8kFOAvciQBhn3/RAcBHSTvjfx4DJ6cBOAPcbRvA9gZJYQT5DfwYKGl7UdLu+PwIOFUiwCVJYQRZBuZqA7gh6XxUegXYVhtAmq0uAnt7gLhQm9vorBZx74Hcc6D3QLKH/z2JGyVnlYs4pCfzEe4rsLW2XehicpAtAftqAwiZbhhBfgE/ZwVwDrjddi40KiG0HXpHO+KcJ8CJaXKheeBWBOgqnf6W1BwvgcOrATieFDTrJL0HViJAVwXNgVgPrJH0BfiQDTDKtREiNK7KLSnHASQLLacP1PxcVkWWq8PU3emq2yqJJ0b1Qsv2QKpdZp+orBBqmrfq5m5mSJXtgUZI1XnB0YCo94opCal6L/ka3ghtlIXqrllzT9VJ5k19Ek/y0zbf6QHatOYk3/oDujC8QMWgjf4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-mute:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container .jessibuca-icon-text{font-size:14px;width:30px}.jessibuca-container .jessibuca-speed{font-size:14px;color:#fff}.jessibuca-container .jessibuca-quality-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .jessibuca-quality-menu-list.jessibuca-quality-menu-shown{visibility:visible;opacity:1}.jessibuca-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jessibuca-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container .jessibuca-quality-menu{padding:8px 0}.jessibuca-container .jessibuca-quality-menu-item{display:block;height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jessibuca-container .jessibuca-quality-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-quality-menu-item:focus{outline:none}.jessibuca-container .jessibuca-quality-menu-item.jessibuca-quality-menu-item-active{color:#2298fc}.jessibuca-container .jessibuca-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-wrap.jessibuca-volume-panel-wrap-show{visibility:visible;opacity:1}.jessibuca-container .jessibuca-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jessibuca-container .jessibuca-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jessibuca-container .jessibuca-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:before{bottom:-54px;background:#fff}.jessibuca-container .jessibuca-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jessibuca-container .jessibuca-volume-panel-handle:after,.jessibuca-container .jessibuca-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-controls{width:100vh;transform:translateX(-13vw) translateY(-47.8vh) rotate(270deg);transition:width .5s ease-in}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-play-big:after{transform:rotate(270deg)}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading{flex-direction:row}.jessibuca-container.jessibuca-fullscreen-web .jessibuca-loading-text{transform:rotate(270deg)}.jessibuca-container-playback .jessibuca-controls{height:48px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-current-time-text{position:absolute;box-sizing:border-box;padding:0 5px;width:60px;left:-25px;top:15px;border:1px solid red;height:15px;line-height:15px;cursor:move;background-color:#fff;color:#000;-webkit-user-select:none;user-select:none}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-scroll.one-hour{width:1440px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-scroll.half-hour{width:2880px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-scroll.ten-min{width:8640px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-scroll.five-min{width:17280px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-scroll.one-min{width:86400px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-day{height:100%;overflow:hidden}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-one-wrap{height:8px;z-index:1}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-second-wrap{height:25px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-controls-playback-btns{display:flex;align-items:center}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute-one,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute-one.active,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-second-one.active{background-color:green;cursor:pointer}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute-one.start,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-second-one.start{background-color:#999}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute-one:hover .jessibuca-playback-time-title-tips,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-second-one:hover .jessibuca-playback-time-title-tips{visibility:visible;opacity:1}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-title-tips{pointer-events:none;position:absolute;left:0;top:100%;visibility:hidden;opacity:0;transform:translateX(13%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:#000;border-radius:4px;z-index:3}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-title-tips.jessibuca-playback-time-title-tips-left{transform:translateX(-100%)}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-title-tips .jessibuca-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-hour,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute{float:left;position:relative;width:60px;box-sizing:border-box;border-top:1px solid #999;-webkit-user-select:none;user-select:none;text-align:left;height:25px;line-height:25px}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-hour:first-child,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute:first-child{border-left:0}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-hour:first-child .jessibuca-playback-time-hour-text,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute:first-child .jessibuca-playback-time-hour-text{left:0}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-hour:after,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-hour-text,.jessibuca-container-playback .jessibuca-controls .jessibuca-controls-bottom .jessibuca-controls-center .jessibuca-playback-time-minute-text{position:absolute;left:-13px}.jessibuca-container-playback .jessibuca-icon-narrow{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABNlJREFUaEPtmWmolVUUhp+XaJ5LpKQif0RkQpNE4B8bKKJBtEGlogFEi8AGG6gQ+lEWJZUQhkQWlA0alvWjsoIgApGgICusKKzIBiMaqag3lnzKOefu79v7fOdE90ILLpd7v7Xevd49rLX22mKMi8a4//xP4L9ewb5WwPYc4DZg0hAcfwhYJOnbQbCKCNg+AHgYmDHIYAnb74H5kla1xc0SsD0FWAsc3HaQArslkhYW6I1QaSRg+1Tg1ULgL4FPgfj9J7APcAhwFLB7AcZKSRcV6HWp1BKwfTzwdgbwG+Ax4Hlgg6Q/evVtx8pNBWYB52fwVki6oh8SSQK29wK+APatAXN1mJdK+rl0QNuTgduBmQ02CyUtKcWsI7AOOK0G5D1gjqT43UpszwWWNxhPlrSxBHwEAdvnAatrjN8ETpEUe3wgsT0NeB2SyXSjpFitrKQIfAUclLD8EDha0t9Z1EIF26cDL9eoz5L0TA4qRSD2d0omSvosB9jvd9uLqnPRa7pJ0pE5vFICt0hanANr+932JuCIhP1USW814ZYQ2CppXFvnSuxsn1uF4l71ByVdPSiBOyXdWuLIIDq2P68SXydMdhuVrMCxkt4dxLkSW9sR+69L6B4mKcglJUdgi6RkDWQ7ttVZwH5V6ZBb6Z2BTyS9kFK0PR14LvHtTEkvtSXwmqQRCa0qM6JG2r9kdnt0wpmzJf3V+X/bUTO9n8CbKykq4VYr8LikS3otba8HTmzh/HaTeZK6MnG1opsThd8Nku5tSyBZXNn+DjhwAAIjoovtqLuCQFSxnXKzpLvbElgl6cLECsTsRT3TVqZJeqNnC00AIlHGWemUBZKWtiWwXtJJCQK7ASuAiN+7ArnyIoJFZPivgTskxXWyS6qL04aEo7MlPd2WwC/AeEm/pgBsjwf26IeApN9rsC4HHkl8myKp9l6SC6OB1xjG2u6hxArELPdu1x/jKls3gYFRQiB5DobleODY3hOIwBBbs1PWSYqKtVZKCITxBElRZv8r0lCRXpk6L51OlBJYKyky5dDFdmTyONy79IBHohsn6YdhrEBgXCzpiWEzsB23spMTuMslzcuNl1qBR4FLawyz9XluwM7vtu8DrknYRLcu7sXR9WiUFIG9ga2JhBJAEe8jKr2SA859tx3lwfU1esskXZXDiO91XYloezzbAHCjpHtKBujVsX0osKyqZOsgYgKjXmryYZttU2PrfmBBg5ORNSOrRlMrK1XSmw9ECzFWuURmSlrTpJhrLT5VddSaMKJbETV+3F0/qCJKlA1RYhwee7k6pOc0NMqa8BtJlDR3o+a5rGS6Kp3InkEgirIoM4YhtSSyBGJ02zcBdw3DkwEwkiSKCFQkoip9YMCLTKf/0VONd4Eo4kplhqSua2cxge0j2I4ccS1wTOmoPXo/AZEQF0vabDsKuNpyOTHGdEnxXrFN+ibQQeQMIA5mZNHck1MUahG1IqKskRR/75Dq6WplHxMySVIEjPYEehyIrtrE6ieuhjsBvwFbgI+A6O/EzNeK7dnAk4UkVku6YGgECgfNqtmOR5AI3Tn5WNK2VmTrLZQboe33wjPxjqTjRiWBcKqAxI5XnFG3Ah1BIvZ46n2gq9k2aglUKxEPjdEvPaGqkF+U1JVQRzWBknM05gn8A3BFtUAnWz1iAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jessibuca-container-playback .jessibuca-icon-narrow:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container-playback .jessibuca-icon-expand{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container-playback .jessibuca-icon-expand:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jessibuca-container-playback .jessibuca-playback-expand.disabled .jessibuca-icon-expand,.jessibuca-container-playback .jessibuca-playback-narrow.disabled .jessibuca-icon-narrow{cursor:no-drop}');class Tt{constructor(e){var t;this.player=e,((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jessibuca-controls-show-auto-hide"):e.$container.classList.add("jessibuca-controls-show");const i=e._opt,s=i.operateBtns,r=`\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
00:00:00
\n
\n
\n
\n
\n
\n
${yt.narrow}
\n
${yt.expand}
\n
\n
\n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n ${yt.loading}\n ${i.loadingText?`
${i.loadingText}
`:""}\n
\n ${i.hasControl&&s.play?'
':""}\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n ${i.playType===o?r:""}\n\n
\n ${s.audio?`\n
\n ${yt.audio}\n ${yt.mute}\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${s.play?`
${yt.play}
${yt.pause}
`:""}\n ${s.screenshot?`
${yt.screenshot}
`:""}\n ${s.record?`
${yt.record}
${yt.recordStop}
`:""}\n ${s.fullscreen?`
${yt.fullscreen}
${yt.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jessibuca-poster")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jessibuca-loading")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jessibuca-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jessibuca-play-big")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jessibuca-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jessibuca-controls")}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jessibuca-controls-bottom")}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jessibuca-controls-left")}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jessibuca-controls-right")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jessibuca-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jessibuca-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jessibuca-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jessibuca-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jessibuca-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jessibuca-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jessibuca-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jessibuca-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jessibuca-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jessibuca-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jessibuca-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jessibuca-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jessibuca-speed")}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jessibuca-controls-playback-time")}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jessibuca-controls-playback-time-inner")}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jessibuca-controls-playback-time-scroll")}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jessibuca-controls-playback-time-list")}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jessibuca-playback-time-one-wrap")}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jessibuca-playback-time-second-wrap")}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jessibuca-controls-playback-current-time")}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jessibuca-controls-playback-current-time-text")}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jessibuca-controls-playback-btns")}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jessibuca-playback-narrow")}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jessibuca-playback-expand")})})(e,this),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner.getBoundingClientRect()}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft.getBoundingClientRect()}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight.getBoundingClientRect()}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{}}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0}}),Ct(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e;function r(e){const{bottom:i,height:o}=t.$volumePanel.getBoundingClientRect(),{height:s}=t.$volumeHandle.getBoundingClientRect();return ye(i-e.y-s/2,0,o-s/2)/(o-s)}i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(window,"orientationchange",(()=>{setTimeout((()=>{e.resize()}),300)})),i(t.$controls,"click",(e=>{e.stopPropagation()})),i(t.$pause,"click",(t=>{e.pause()})),i(t.$play,"click",(t=>{e.play()})),i(t.$playBig,"click",(t=>{e.play()})),i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jessibuca-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jessibuca-volume-panel-wrap-show")})),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),ve(t.$volumeOn,"display","none"),ve(t.$volumeOff,"display","block"),e.lastVolume=e.volume,e.volume=0})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),ve(t.$volumeOn,"display","block"),ve(t.$volumeOff,"display","none"),e.volume=e.lastVolume||.5})),i(t.$screenshot,"click",(t=>{t.stopPropagation(),e.video.screenshot()})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=r(t)})),i(t.$volumeHandle,"mousedown",(()=>{t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=r(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)})),i(t.$record,"click",(t=>{t.stopPropagation(),e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),e.recording=!1})),i(t.$fullscreen,"click",(t=>{t.stopPropagation(),e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),e.fullscreen=!1})),e._opt.hasControl&&e._opt.controlAutoHide&&(i(e.$container,"mouseover",(()=>{e.fullscreen||ve(t.$controls,"display","block")})),i(e.$container,"mouseout",(()=>{ve(t.$controls,"display","none")}))),e._opt.playType===o&&(i(t.$playbackNarrow,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.narrowPrecision()})),i(t.$playbackExpand,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.expandPrecision()})),i(t.$playbackTimeList,"click",(t=>{const i=Fe(t);i.matches("div.jessibuca-playback-time-minute-one")&&e.playback&&e.playback.seek(i.dataset)})))})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,o={};function s(e,t){o[e]?o[e].push(t):o[e]=[t]}s(te,(()=>{e.fullscreen&&(e.fullscreen=!1)})),s(ie,(()=>{e.volume+=.05})),s(oe,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=o[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.player.debug.log("Control","init")}destroy(){this.$poster&&this.player.$container.removeChild(this.$poster),this.$loading&&this.player.$container.removeChild(this.$loading),this.$controls&&this.player.$container.removeChild(this.$controls),this.$playBig&&this.player.$container.removeChild(this.$playBig),this.player.debug.log("control","destroy")}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,o=t/i,s=e.video.$videoElement.width/e.video.$videoElement.height;if(o>s){const o=(t-i*s)/2;e.$container.style.padding=`0 ${o}px`}else{const o=(i-t/s)/2;e.$container.style.padding=`${o}px 0`}}}Rt(".jessibuca-container{position:relative;width:100%;height:100%;overflow:hidden}.jessibuca-container.jessibuca-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}");class It{static init(){It.types={avc1:[],avcC:[],hvc1:[],hvcC:[],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:[]};for(let e in It.types)It.types.hasOwnProperty(e)&&(It.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=It.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,o=Array.prototype.slice.call(arguments,1),s=o.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 r=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 It.box(It.types.trak,It.tkhd(e),It.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,o=e.presentWidth,s=e.presentHeight;return It.box(It.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,o>>>8&255,255&o,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return It.box(It.types.mdia,It.mdhd(e),It.hdlr(e),It.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return It.box(It.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?It.constants.HDLR_AUDIO:It.constants.HDLR_VIDEO,It.box(It.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?It.box(It.types.smhd,It.constants.SMHD):It.box(It.types.vmhd,It.constants.VMHD),It.box(It.types.minf,t,It.dinf(),It.stbl(e))}static dinf(){return It.box(It.types.dinf,It.box(It.types.dref,It.constants.DREF))}static stbl(e){return It.box(It.types.stbl,It.stsd(e),It.box(It.types.stts,It.constants.STTS),It.box(It.types.stsc,It.constants.STSC),It.box(It.types.stsz,It.constants.STSZ),It.box(It.types.stco,It.constants.STCO))}static stsd(e){return"audio"===e.type?It.box(It.types.stsd,It.constants.STSD_PREFIX,It.mp4a(e)):"avc"===e.videoType?It.box(It.types.stsd,It.constants.STSD_PREFIX,It.avc1(e)):It.box(It.types.stsd,It.constants.STSD_PREFIX,It.hvc1(e))}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,o=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 It.box(It.types.mp4a,o,It.esds(e))}static esds(e){let t=e.config||[],i=t.length,o=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 It.box(It.types.esds,o)}static avc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let s=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,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return It.box(It.types.avc1,s,It.box(It.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,o=e.codecHeight;let s=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,o>>>8&255,255&o,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return It.box(It.types.hvc1,s,It.box(It.types.hvcC,t))}static mvex(e){return It.box(It.types.mvex,It.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 It.box(It.types.trex,i)}static moof(e,t){return It.box(It.types.moof,It.mfhd(e.sequenceNumber),It.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 It.box(It.types.mfhd,t)}static traf(e,t){let i=e.id,o=It.box(It.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=It.box(It.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),r=It.sdtp(e),a=It.trun(e,r.byteLength+16+16+8+16+8+8);return It.box(It.types.traf,o,s,a,r)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,It.box(It.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let o=e.duration,s=e.size,r=e.flags,a=e.cts;return i.set([o>>>24&255,o>>>16&255,o>>>8&255,255&o,s>>>24&255,s>>>16&255,s>>>8&255,255&s,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),It.box(It.types.trun,i)}static mdat(e){return It.box(It.types.mdat,e)}}It.init();class jt{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index,t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}readBits(e){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 o=Math.min(i,this._current_word_bits_left),s=this._current_word>>>32-o;return this._current_word<<=o,this._current_word_bits_left-=o,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 xt{static _ebsp2rbsp(e){let t=e,i=t.byteLength,o=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(o[s]=t[e],s++);return new Uint8Array(o.buffer,0,s)}static parseSPS(e){let t=xt._ebsp2rbsp(e),i=new jt(t);i.readByte();let o=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let r=xt.getProfileString(o),a=xt.getLevelString(s),n=1,A=420,c=[0,420,422,444],l=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(A=c[n]),l=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][e-1],w=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),w=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);S=i.readBool(),B=t,E=2*e,k=B/E}}let C=1;1===v&&1===w||(C=v/w);let R=0,T=0;if(0===n)R=1,T=2-m;else{R=3===n?1:2,T=(1===n?2:1)*(2-m)}let I=16*(h+1),j=16*(p+1)*(2-m);I-=(f+g)*R,j-=(b+y)*T;let x=Math.ceil(I*C);return i.destroy(),i=null,{profile_string:r,level_string:a,bit_depth:l,ref_frames:u,chroma_format:A,chroma_format_string:xt.getChromaFormatString(A),frame_rate:{fixed:S,fps:k,fps_den:E,fps_num:B},sar_ratio:{width:v,height:w},codec_size:{width:I,height:j},present_size:{width:x,height:j}}}static _skipScalingList(e,t){let i=8,o=8,s=0;for(let r=0;r{this.mediaSourceOpen=!0,this.player.emit(R.mseSourceOpen)})),i(this.mediaSource,"sourceclose",(()=>{this.player.emit(R.mseSourceClose)})),e.debug.log("MediaSource","init")}destroy(){this.stop(),this.bufferList=[],this.mediaSource=null,this.mediaSourceOpen=!1,this.sourceBuffer=null,this.hasInit=!1,this.isInitInfo=!1,this.sequenceNumber=0,this.cacheTrack=null,this.timeInit=!1,this.off(),this.player.debug.log("MediaSource","destroy")}get state(){return this.mediaSource.readyState}get isStateOpen(){return this.state===K}get isStateClosed(){return this.state===_}get isStateEnded(){return this.state===Z}get duration(){return this.mediaSource.duration}set duration(e){this.mediaSource.duration=e}decodeVideo(e,t,i){const o=this.player;if(this.hasInit)this._decodeVideo(e,t,i);else if(i&&0===e[1]){const s=15&e[0];if(o.video.updateVideoInfo({encTypeCode:s}),s===U)return void this.emit(I.mediaSourceH265NotSupport);o._times.decodeStart||(o._times.decodeStart=be()),this._decodeConfigurationRecord(e,t,i,s),this.hasInit=!0}}_doDecode(){const e=this.bufferList.shift();e&&this._decodeVideo(e.payload,e.ts,e.isIframe)}_decodeConfigurationRecord(e,t,i,o){let s=e.slice(5),r={};o===O?r=function(e){const t={},i=new DataView(e.buffer);let o=i.getUint8(0),s=i.getUint8(1);if(i.getUint8(2),i.getUint8(3),1!==o||0===s)return;const r=1+(3&i.getUint8(4));if(3!==r&&4!==r)return;let a=31&i.getUint8(5);if(0===a)return;let n=6;for(let o=0;o1&&(this.removeBuffer(n.buffered.start(0),n.buffered.end(0)),this.timeInit=!1),this.dropping&&a-this.cacheTrack.dts>1e3)this.dropping=!1,this.cacheTrack={};else if(this.cacheTrack&&a>this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(It.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=a-this.cacheTrack.dts;let s=It.moof(this.cacheTrack,this.cacheTrack.dts),r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendBuffer(r.buffer),o.handleRender(),o.updateStats({fps:!0,ts:t,buf:o.demux.delay}),o._times.videoStart||(o._times.videoStart=be(),o.handlePlayToRenderTimes())}else o.debug.log("MediaSource","timeInit set false , cacheTrack = {}"),this.timeInit=!1,this.cacheTrack={};this.cacheTrack.id=1,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=r,this.cacheTrack.dts=a,this.cacheTrack.cts=0,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=s,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},this.timeInit||1!==n.buffered.length||(o.debug.log("MediaSource","timeInit set true"),this.timeInit=!0,n.currentTime=n.buffered.end(0)),!this.isInitInfo&&n.videoWidth>0&&n.videoHeight>0&&(o.debug.log("MediaSource",`updateVideoInfo: ${n.videoWidth},${n.videoHeight}`),o.video.updateVideoInfo({width:n.videoWidth,height:n.videoHeight}),o.video.initCanvasViewSize(),this.isInitInfo=!0)}appendBuffer(e){const{debug:t,events:{proxy:i}}=this.player;null===this.sourceBuffer&&(this.sourceBuffer=this.mediaSource.addSourceBuffer(X.avc),i(this.sourceBuffer,"error",(e=>{this.player.emit(R.mseSourceBufferError,e)}))),!1===this.sourceBuffer.updating&&this.isStateOpen?this.sourceBuffer.appendBuffer(e):this.isStateClosed?this.player.emit(R.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed"):this.isStateEnded?this.player.emit(R.mseSourceBufferError,"mediaSource is closed"):!0===this.sourceBuffer.updating&&this.player.emit(R.mseSourceBufferBusy)}stop(){this.isStateOpen&&this.sourceBuffer&&this.sourceBuffer.abort(),this.endOfStream()}dropSourceBuffer(e){const t=this.player.video.$videoElement;this.dropping=e,t.buffered.length>0&&t.buffered.end(0)-t.currentTime>1&&(t.currentTime=t.buffered.end(0))}removeBuffer(e,t){if(this.isStateOpen&&!1===this.sourceBuffer.updating)try{this.sourceBuffer.remove(e,t)}catch(e){console.error(e)}}endOfStream(){this.isStateOpen&&this.mediaSource.endOfStream()}}const Mt=()=>"undefined"!=typeof navigator&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,Ft=()=>"wakeLock"in navigator;class Ot{constructor(e){if(this.player=e,this.enabled=!1,Ft()){this._wakeLock=null;const e=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else Mt()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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"),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,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"),this.noSleepVideo.addEventListener("loadedmetadata",(()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",(()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())}))})))}_addSourceToVideo(e,t,i){var o=document.createElement("source");o.src=i,o.type=`video/${t}`,e.appendChild(o)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(Ft())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.error("wakeLock",`${t.name}, ${t.message}`),t}));if(Mt())return this.disable(),this.noSleepTimer=window.setInterval((()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))}),15e3),this.enabled=!0,Promise.resolve();return this.noSleepVideo.play().then((e=>(this.enabled=!0,e))).catch((e=>{throw this.enabled=!1,e}))}disable(){const e=this.player.debug;Ft()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):Mt()?this.noSleepTimer&&(e.warn("wakeLock","NoSleep now disabled for older iOS devices."),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}}class Ut extends Oe{constructor(e,t){super(),this.player=e,this._showPrecision=null,this._startTime=null,this._playStartTime=null,this._playingTimestamp=null,this._fps=parseInt(t.fps,10)||e._opt.playbackFps,this._audioTimestamp=0,this._videoTimestamp=0,this._listen(),this.playbackList=[],this._totalDuration=0,this.initPlaybackList(t.playList),e.debug.log("Playback","init")}_listen(){this.player.on(R.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t);let i=t-this._playStartTime;this.setPlayingTimestamp(i)}))}destroy(){this._startTime=null,this._showPrecision=null,this._playStartTime=null,this._playingTimestamp=null,this._totalDuration=0,this._audioTimestamp=0,this._videoTimestamp=0,this.playbackList=[],this.off(),this.player.debug.log("Playback","destroy")}initPlaybackList(e){this.playbackList=e||[];let t=0;this.playbackList.forEach(((e,i)=>{10===Me(e.start)&&(e.startTimestamp=1e3*e.start,e.startTime=Ce(e.startTimestamp)),10===Me(e.end)&&(e.endTimestamp=1e3*e.end,e.endTime=Ce(e.endTimestamp)),e.duration=e.end-e.start,t+=e.duration})),this._totalDuration=t,this.player.debug.log("Playback",this.playbackList),this.playbackList.length>0&&this.setStartTime(this.playbackList[0].startTimestamp),this.setShowPrecision(se)}get startTime(){return this._startTime||0}setStartTime(e){this._startTime=e,this._playStartTime=null,this.player._opt.playbackCurrentTimeMove||(this._playingTimestamp=this.startTime,this.player.emit(R.playbackTime,this.startTime))}get fps(){return this._fps}get showPrecision(){return this._showPrecision}get is60Min(){return this.showPrecision===se}get is30Min(){return this.showPrecision===re}get is10Min(){return this.showPrecision===ae}get is5Min(){return this.showPrecision===ne}get is1Min(){return this.showPrecision===ne}setShowPrecision(e){this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(R.playbackPrecision,this._showPrecision,this.playbackList))}setPlayingTimestamp(e){const t=this.startTime+e;this.player._opt.playbackCurrentTimeMove&&(this._playingTimestamp=t,this.player.emit(R.playbackTime,t));const i=new Date(t);this.player.emit(R.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=ce.indexOf(this.showPrecision)-1;if(e>=0){const t=ce[e];this.setShowPrecision(t)}}expandPrecision(){const e=ce.indexOf(this.showPrecision)+1;if(e<=ce.length-1){const t=ce[e];this.setShowPrecision(t)}}seek(e){if(console.log(e),"true"===e.hasRecord){let t=e.time;"min"===e.type&&(t=60*e.time),this.player.emit(R.playbackSeek,function(e){let t={};e>-1&&(t={hour:Math.floor(e/60/60)%60,min:Math.floor(e/60)%60,second:e%60});return t}(t))}}}class Vt extends Oe{constructor(e,t){var i;super(),this.$container=e,this._opt=Object.assign({},n,t),this.debug=new le(this),this._opt.useWCS&&(this._opt.useWCS="VideoEncoder"in window),this._opt.useMSE&&(this._opt.useMSE=window.MediaSource&&window.MediaSource.isTypeSupported(X.avc)),this._opt.useMSE?(this._opt.useWCS&&this.debug.log("Player","useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.log("Player","forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.hasAudio||(this._opt.operateBtns.audio=!1),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0},this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,this._isPlayback()&&(this._opt.useMSE=!1,this._opt.useWCS=!1),i=this,Object.defineProperty(i,"rect",{get:()=>{const e=i.$container.getBoundingClientRect();return e.width=Math.max(e.width,i.$container.clientWidth),e.height=Math.max(e.height,i.$container.clientHeight),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(i,e,{get:()=>i.rect[e]})})),this.events=new de(this),this.video=new Ne(this),this._opt.hasAudio&&(this.audio=new rt(this)),this.recorder=new dt(this),this._onlyMseOrWcsVideo()?this.loaded=!0:this.decoderWorker=new ut(this),this.stream=null,this.demux=null,this._opt.useWCS&&(this.webcodecsDecoder=new gt(this)),this._opt.useMSE&&(this.mseDecoder=new Lt(this)),this.control=new Tt(this),this._isPlayback()&&(this.playback=new Ut(this,this._opt.playbackConfig||{}),this.$container.classList.add("jessibuca-container-playback")),this.keepScreenOn=new Ot(this),(e=>{try{const t=()=>{e.emit(T.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize()};pe.on("change",t),e.events.destroys.push((()=>{pe.off("change",t)}))}catch(e){}if(e.on(R.decoderWorkerInit,(()=>{e.debug.log("player","has loaded"),e.loaded=!0})),e.on(R.play,(()=>{e.loading=!1})),e.on(R.fullscreen,(t=>{if(t)try{pe.request(e.$container).then((()=>{})).catch((t=>{e.webFullscreen=!0}))}catch(t){e.webFullscreen=!0}else try{pe.exit().then((()=>{})).catch((()=>{e.webFullscreen=!1}))}catch(t){e.webFullscreen=!1}})),e.on(R.webFullscreen,(t=>{t?e.$container.classList.add("jessibuca-fullscreen-web"):e.$container.classList.remove("jessibuca-fullscreen-web")})),e.on(R.resize,(()=>{e.video.resize()})),e._opt.debug){const t=[R.timeUpdate];Object.keys(R).forEach((i=>{e.on(R[i],(o=>{t.includes(i)||e.debug.log("player events",R[i],o)}))})),Object.keys(I).forEach((t=>{e.on(I[t],(i=>{e.debug.log("player event error",I[t],i)}))}))}})(this),(e=>{const{_opt:t,debug:i,events:{proxy:o}}=e;t.supportDblclickFullscreen&&o(e.$container,"dblclick",(t=>{const i=Fe(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),o(document,"visibilitychange",(()=>{t.hiddenAutoPause&&(i.log("visibilitychange",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),o(window,"fullscreenchange",(()=>{null!==e.keepScreenOn&&"visible"===document.visibilityState&&e.enableWakeLock()}))})(this),this._opt.useWCS&&this.debug.log("Player","use WCS"),this._opt.useMSE&&this.debug.log("Player","use MSE"),this._opt.useOffscreen&&this.debug.log("Player","use offscreen"),this._isPlayback()&&this.debug.log("Player","use playback"),this.debug.log("Player options",this._opt)}destroy(){this._loading=!1,this._playing=!1,this._hasLoaded=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.video&&(this.video.destroy(),this.video=null),this.audio&&(this.audio.destroy(),this.audio=null),this.stream&&(this.stream.destroy(),this.stream=null),this.recorder&&(this.recorder.destroy(),this.recorder=null),this.control&&(this.control.destroy(),this.control=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.demux&&(this.demux.destroy(),this.demux=null),this.events&&(this.events.destroy(),this.events=null),this.playback&&(this.playback.destroy(),this.playback=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.releaseWakeLock(),this.keepScreenOn=null,this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this.emit("destroy"),this.off(),this.debug.log("play","destroy end")}set fullscreen(e){Be()?(this.emit(R.webFullscreen,e),setTimeout((()=>{this.updateOption({rotate:e?270:0}),this.resize()}),10)):this.emit(R.fullscreen,e)}get fullscreen(){return document.isFullScreen||document.mozIsFullScreen||document.webkitIsFullScreen||this.webFullscreen}set webFullscreen(e){this.emit(R.webFullscreen,e)}get webFullscreen(){return this.$container.classList.contains("jessibuca-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded}set playing(e){e&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(R.playing,e),this.emit(R.volumechange,this.volume),e?this.emit(R.play):this.emit(R.pause))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){this.audio&&this.audio.setVolume(e)}set loading(e){this.loading!==e&&(this._loading=e,this.emit(R.loading,this._loading))}get loading(){return this._loading}set recording(e){e?this.playing&&this.recorder.startRecord():this.recorder.stopRecordAndSave()}get recording(){return this.recorder&&this.recorder.recording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set videoTimestamp(e){null!==e&&(this._videoTimestamp=e,this._opt.useWCS||this._opt.useMSE||this.audioTimestamp&&this.videoTimestamp&&this.audio&&this.audio.emit(R.videoSyncAudio,{audioTimestamp:this.audioTimestamp,videoTimestamp:this.videoTimestamp,diff:this.audioTimestamp-this.videoTimestamp}))}get videoTimestamp(){return this._videoTimestamp}updateOption(e){this._opt=Object.assign({},this._opt,e)}init(){return new Promise(((e,t)=>{this.stream||(this.stream=new At(this)),this.demux||(this.demux=new ft(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new gt(this))),this._opt.useMSE&&(this.mseDecoder||(this.mseDecoder=new Lt(this))),this.decoderWorker||this._onlyMseOrWcsVideo()?e():(this.decoderWorker=new ut(this),this.once(R.decoderWorkerInit,(()=>{e()})))}))}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return i();this.loading=!0,this.playing=!1,this._times.playInitStart=be(),e||(e=this._opt.url),this._opt.url=e,this.clearCheckHeartTimeout(),this.init().then((()=>{this._times.playStart=be(),this._opt.isNotMute&&this.mute(!1),this.webcodecsDecoder&&this.webcodecsDecoder.once(I.webcodecsH265NotSupport,(()=>{this.emit(I.webcodecsH265NotSupport),this._opt.autoWasm||this.emit(R.error,I.webcodecsH265NotSupport)})),this.mseDecoder&&this.mseDecoder.once(I.mediaSourceH265NotSupport,(()=>{this.emit(I.mediaSourceH265NotSupport),this._opt.autoWasm||this.emit(R.error,I.mediaSourceH265NotSupport)})),this.enableWakeLock(),this.stream.fetchStream(e),this.checkLoadingTimeout(),this.stream.once(I.fetchError,(e=>{i(e)})),this.stream.once(I.websocketError,(e=>{i(e)})),this.stream.once(R.streamSuccess,(()=>{t(),this._times.streamResponse=be(),this.video.play()}))})).catch((e=>{i(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video.clearView(),e()}))}))}_close(){return new Promise(((e,t)=>{this.stream&&(this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.decoderWorker&&(this.decoderWorker.destroy(),this.decoderWorker=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.clearCheckHeartTimeout(),this.clearCheckLoadingTimeout(),this.playing=!1,this.loading=!1,this.recording=!1,this.audio&&this.audio.pause(),this.video&&this.video.pause(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},setTimeout((()=>{e()}),0)}))}pause(e){return e?this.close():this._close()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(){this.recording&&(this.recording=!1)}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&(t=!0)})),(this._opt.showBandwidth||this._opt.text||t)&&(e=!0),this._isPlayback()&&(e=!0),e}_isPlayback(){return this._opt.playType===o}_onlyMseOrWcsVideo(){return!1===this._opt.hasAudio&&(this._opt.useMSE||this._opt.useWCS&&!this._opt.useOffscreen)}checkHeart(){this.clearCheckHeartTimeout(),this.checkHeartTimeout()}checkHeartTimeout(){this._checkHeartTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(R.timeout,R.delayTimeout),this.emit(R.delayTimeout)}))}),1e3*this._opt.heartTimeout)}clearCheckHeartTimeout(){this._checkHeartTimeout&&(clearTimeout(this._checkHeartTimeout),this._checkHeartTimeout=null)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.pause(!1).then((()=>{this.emit(R.timeout,R.loadingTimeout),this.emit(R.loadingTimeout)}))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}handleRender(){this.loading&&(this.emit(R.start),this.loading=!1,this.clearCheckLoadingTimeout()),this.playing||(this.playing=!0),this.checkHeart()}updateStats(e){e=e||{},this._startBpsTime||(this._startBpsTime=be()),Ie(e.ts)&&(this._stats.ts=e.ts),Ie(e.buf)&&(this._stats.buf=e.buf),e.fps&&(this._stats.fps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps);const t=be();t-this._startBpsTime<1e3||(this.emit(R.stats,this._stats),this.emit(R.performance,function(e){let t=0;return e>=24?t=2:e>=15&&(t=1),t}(this._stats.fps)),this._stats.fps=0,this._stats.abps=0,this._stats.vbps=0,this._startBpsTime=t)}resetStats(){this._startBpsTime=null,this._stats={buf:0,fps:0,abps:0,vbps:0,ts:0}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn.disable()}handlePlayToRenderTimes(){const e=this._times;e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart,e.demuxTimestamp=e.demuxStart-e.streamResponse,e.decodeTimestamp=e.decodeStart-e.demuxStart,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,this.emit(R.playToRenderTimes,e)}}class Pt extends Oe{constructor(e){super();let t=e,i=e.container;if("string"==typeof e.container&&(i=document.querySelector(e.container)),!i)throw new Error("Jessibuca need container option");i.classList.add("jessibuca-container"),delete t.container,Ie(t.videoBuffer)&&(t.videoBuffer=1e3*Number(t.videoBuffer)),Ie(t.timeout)&&(Te(t.loadingTimeout)&&(t.loadingTimeout=t.timeout),Te(t.heartTimeout)&&(t.heartTimeout=t.timeout)),this._opt=t,this.$container=i,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.events=new de(this)}destroy(){this.events&&(this.events.destroy(),this.events=null),this.player&&(this.player.destroy(),this.player=null),this.$container=null,this._resetOpt(),this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this.off()}_resetOpt(){this._opt=a}_initPlayer(e,t){this.player=new Vt(e,t),this._bindEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.player&&(this.player.destroy(),this.player=null),this._opt=Object.assign(this._opt,e)}_bindEvents(){Object.keys(T).forEach((e=>{this.player.on(T[e],(t=>{this.emit(e,t)}))}))}setDebug(e){this.player.updateOption({isDebug:!!e})}mute(){this.player.mute(!0)}cancelMute(){this.player.mute(!1)}setVolume(e){this.player.volume=e}audioResume(){this.player.audio&&this.player.audio.audioEnabled(!0)}setTimeout(e){e=Number(e),this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e})}setScaleMode(e){let t={isFullResize:!1,isResize:!1};switch(e=Number(e)){case Q:t.isFullResize=!1,t.isResize=!1;break;case W:t.isFullResize=!1,t.isResize=!0;break;case N:t.isFullResize=!0,t.isResize=!0}this.player.updateOption(t),this.resize()}pause(){return this.player.pause()}close(){return this._resetOpt(),this.player.close()}clearView(){this.player.video.clearView()}play(e){return new Promise(((t,i)=>{if(!e&&!this._opt.url)return this.emit(R.error,I.playError),void i();if(!this.player)return e?this._play(e):this._play(this._opt.url);if(e){if(!this._opt.url)return this._play(e);e===this._opt.url?this.player.playing?t():(this.clearView(),this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))):this.player.pause().then((()=>(this.clearView(),this._play(e)))).catch((()=>{i()}))}else this.player.play(this._opt.url).then((()=>{t()})).catch((()=>{this.player.pause().then((()=>{i()}))}))}))}playback(e,t){return this._resetPlayer({playbackConfig:t,playType:o}),this.play(e)}forward(e){return new Promise(((t,i)=>{this.player.playing?(e=ye(Number(e),.1,8),this.player.video.setRate(e),this.player.audio.setRate(e),t()):i()}))}normal(){return new Promise(((e,t)=>{this.player.playing?(this.player.video.setRate(1),this.player.audio.setRate(1),e()):t()}))}updatePlaybackForwardMaxRateDecodeIFrame(e){e=ye(Number(e),1,8),this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e}):this._opt.playbackForwardMaxRateDecodeIFrame=e}setPlaybackStartTime(e){const t=Me(e);t<10||this.player.playing&&(10===t&&(e*=1e3),this.player.video.clear(),this.player.audio.clear(),this.player.playback.setStartTime(e))}_play(i){return new Promise(((o,a)=>{this._opt.url=i;const n=0===i.indexOf("http"),A=n?t:e,c=n||-1!==i.indexOf(".flv")||this._opt.isFlv?s:r;this._initPlayer(this.$container,Object.assign(this._opt,{protocol:A,demuxType:c})),this.player.once(I.mediaSourceH265NotSupport,(()=>{this.close().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play"),this._resetPlayer({useMSE:!1}),this.play(i).then((()=>{this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","auto wasm [mse-> wasm] reset player and play error")})))}))})),this.player.once(I.webcodecsH265NotSupport,(()=>{this.close().then((()=>{this.player._opt.autoWasm&&(this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play"),this._resetPlayer({useWCS:!1}),this.play(i).then((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","auto wasm [wcs-> wasm] reset player and play error")})))}))})),this.player.once(I.wasmDecodeError,(()=>{this.player._opt.wasmDecodeErrorReplay&&this.close().then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play"),this._resetPlayer({useWCS:!1}),this.play(i).then((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play success")})).catch((()=>{this.player.debug.log("Jessibuca","wasm decode error and reset player and play error")}))}))})),this.player.once(R.delayTimeout,(()=>{this.player._opt.heartTimeoutReplay&&this._heartTimeoutReplayTimes{this._heartTimeoutReplayTimes=0})).catch((()=>{})))})),this.player.once(R.loadingTimeout,(()=>{this.player._opt.loadingTimeoutReplay&&this._loadingTimeoutReplayTimes{this._loadingTimeoutReplayTimes=0})).catch((()=>{})))})),this.hasLoaded()?this.player.play(i).then((()=>{o()})).catch((()=>{this.player.pause().then((()=>{a()}))})):this.player.once(R.decoderWorkerInit,(()=>{this.player.play(i).then((()=>{o()})).catch((()=>{this.player.pause().then((()=>{a()}))}))}))}))}resize(){this.player.resize()}setBufferTime(e){e=Number(e),this.player.updateOption({videoBuffer:1e3*e}),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"videoBuffer",value:1e3*e})}setRotate(e){e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,270].indexOf(e)&&(this.player.updateOption({rotate:e}),this.resize())}hasLoaded(){return this.player.loaded}setKeepScreenOn(){this.player.updateOption({keepScreenOn:!0})}setFullscreen(e){const t=!!e;this.player.fullscreen!==t&&(this.player.fullscreen=t)}screenshot(e,t,i,o){return this.player.video.screenshot(e,t,i,o)}startRecord(e,t){return new Promise(((i,o)=>{this.player.playing?(this.player.startRecord(e,t),i()):o()}))}stopRecordAndSave(){this.player.recording&&this.player.stopRecordAndSave()}isPlaying(){return this.player.playing}isMute(){return!this.player.audio||this.player.audio.isMute}isRecording(){return this.player.recorder.recording}}return window.Jessibuca=Pt,Pt})); diff --git a/bin/package.bat b/bin/package.bat new file mode 100644 index 0000000..0e5bc0f --- /dev/null +++ b/bin/package.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [Ϣ] װWeḅnode_modulesļ +echo. + +%~d0 +cd %~dp0 + +cd .. +npm install --registry=https://registry.npmmirror.com + +pause \ No newline at end of file diff --git a/bin/run-web.bat b/bin/run-web.bat new file mode 100644 index 0000000..d30deae --- /dev/null +++ b/bin/run-web.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [Ϣ] ʹ Vue CLI Web ̡ +echo. + +%~d0 +cd %~dp0 + +cd .. +npm run dev + +pause \ No newline at end of file diff --git a/build/index.js b/build/index.js new file mode 100644 index 0000000..0c57de2 --- /dev/null +++ b/build/index.js @@ -0,0 +1,35 @@ +const { run } = require('runjs') +const chalk = require('chalk') +const config = require('../vue.config.js') +const rawArgv = process.argv.slice(2) +const args = rawArgv.join(' ') + +if (process.env.npm_config_preview || rawArgv.includes('--preview')) { + const report = rawArgv.includes('--report') + + run(`vue-cli-service build ${args}`) + + const port = 9526 + const publicPath = config.publicPath + + var connect = require('connect') + var serveStatic = require('serve-static') + const app = connect() + + app.use( + publicPath, + serveStatic('./dist', { + index: ['index.html', '/'] + }) + ) + + app.listen(port, function () { + console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) + if (report) { + console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) + } + + }) +} else { + run(`vue-cli-service build ${args}`) +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..d406bcb --- /dev/null +++ b/package.json @@ -0,0 +1,107 @@ +{ + "name": "cdht", + "version": "3.8.5", + "description": "大气污染实时监测平台", + "author": "MiMeng", + "license": "AGPL3.0", + "scripts": { + "dev": "vue-cli-service serve", + "build:prod": "vue-cli-service build", + "build:stage": "vue-cli-service build --mode staging", + "preview": "node build/index.js --preview", + "lint": "eslint --ext .js,.vue src" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "keywords": [ + "vue", + "admin", + "dashboard", + "element-ui", + "boilerplate", + "admin-template", + "management-system" + ], + "repository": { + "type": "git", + "url": "https://gitee.com/y_project/RuoYi-Vue.git" + }, + "dependencies": { + "@easydarwin/easywasmplayer": "^4.0.7", + "@jiaminghi/data-view": "^2.10.0", + "@riophae/vue-treeselect": "0.4.0", + "axios": "0.24.0", + "clipboard": "2.0.8", + "codemirror": "^5.65.2", + "core-js": "3.25.3", + "echarts": "4.9.0", + "element-china-area-data": "^4.1.1", + "element-ui": "2.15.10", + "file-saver": "^2.0.5", + "fuse.js": "6.4.3", + "highlight.js": "9.18.5", + "js-beautify": "1.13.0", + "js-cookie": "3.0.1", + "jsencrypt": "3.0.0-rc.1", + "jshint": "^2.13.4", + "jsonlint": "^1.6.3", + "moment": "^2.29.4", + "mqtt": "^4.3.3", + "nprogress": "0.2.0", + "quill": "1.3.7", + "screenfull": "5.0.2", + "script-loader": "^0.7.2", + "sortablejs": "1.10.2", + "sql-formatter": "^4.0.2", + "vue": "2.6.12", + "vue-clipboard2": "^0.3.3", + "vue-codemirror": "^4.0.6", + "vue-count-to": "1.0.13", + "vue-cropper": "0.5.5", + "vue-easytable": "^2.14.0", + "vue-json-viewer": "^2.2.21", + "vue-meta": "2.4.0", + "vue-qr": "^4.0.9", + "vue-router": "3.4.9", + "vue-seamless-scroll": "^1.1.23", + "vue2-ace-editor": "^0.0.15", + "vuedraggable": "2.24.3", + "vuex": "3.6.2" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "4.4.6", + "@vue/cli-plugin-eslint": "4.4.6", + "@vue/cli-service": "4.4.6", + "babel-eslint": "10.1.0", + "babel-plugin-dynamic-import-node": "^2.3.3", + "chalk": "4.1.0", + "compression-webpack-plugin": "5.0.2", + "connect": "3.6.6", + "eslint": "^7.28.0", + "eslint-plugin-vue": "7.2.0", + "lint-staged": "10.5.3", + "runjs": "4.4.2", + "sass": "1.32.13", + "sass-loader": "10.1.1", + "script-ext-html-webpack-plugin": "2.1.5", + "svg-sprite-loader": "5.1.1", + "vue-template-compiler": "2.6.12" + }, + "engines": { + "node": ">=8.9", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..c820c3a Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/html/ie.html b/public/html/ie.html new file mode 100644 index 0000000..052ffcd --- /dev/null +++ b/public/html/ie.html @@ -0,0 +1,46 @@ + + + + + + 请升级您的浏览器 + + + + + + +

请升级您的浏览器,以便我们更好的为您提供服务!

+

您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。

+
+

请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束

+

自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明

+
+

您可以选择更先进的浏览器

+

推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。

+ +
+ + \ No newline at end of file diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..02dd679 --- /dev/null +++ b/public/index.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + <%= webpackConfig.name %> + + + + + + +
+
+
+
+
+
正在加载系统资源,请耐心等待
+
+
+ + diff --git a/public/js/EasyPlayer.swf b/public/js/EasyPlayer.swf new file mode 100644 index 0000000..eaa53fb Binary files /dev/null and b/public/js/EasyPlayer.swf differ diff --git a/public/js/EasyWasmPlayer.js b/public/js/EasyWasmPlayer.js new file mode 100644 index 0000000..f7b0bac --- /dev/null +++ b/public/js/EasyWasmPlayer.js @@ -0,0 +1,19 @@ +!function(A,M){"object"==typeof exports&&"object"==typeof module?module.exports=M():"function"==typeof define&&define.amd?define([],M):"object"==typeof exports?exports.WasmPlayer=M():A.WasmPlayer=M()}(this,(function(){return function(A){var M={};function t(g){if(M[g])return M[g].exports;var I=M[g]={i:g,l:!1,exports:{}};return A[g].call(I.exports,I,I.exports,t),I.l=!0,I.exports}return t.m=A,t.c=M,t.d=function(A,M,g){t.o(A,M)||Object.defineProperty(A,M,{enumerable:!0,get:g})},t.r=function(A){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})},t.t=function(A,M){if(1&M&&(A=t(A)),8&M)return A;if(4&M&&"object"==typeof A&&A&&A.__esModule)return A;var g=Object.create(null);if(t.r(g),Object.defineProperty(g,"default",{enumerable:!0,value:A}),2&M&&"string"!=typeof A)for(var I in A)t.d(g,I,function(M){return A[M]}.bind(null,I));return g},t.n=function(A){var M=A&&A.__esModule?function(){return A.default}:function(){return A};return t.d(M,"a",M),M},t.o=function(A,M){return Object.prototype.hasOwnProperty.call(A,M)},t.p="",t(t.s=222)}([function(A,M,t){"use strict";t.d(M,"D",(function(){return g})),t.d(M,"B",(function(){return I})),t.d(M,"C",(function(){return e})),t.d(M,"u",(function(){return i})),t.d(M,"k",(function(){return T})),t.d(M,"o",(function(){return E})),t.d(M,"w",(function(){return N})),t.d(M,"t",(function(){return n})),t.d(M,"j",(function(){return D})),t.d(M,"q",(function(){return C})),t.d(M,"r",(function(){return r})),t.d(M,"l",(function(){return c})),t.d(M,"A",(function(){return o})),t.d(M,"v",(function(){return B})),t.d(M,"y",(function(){return Q})),t.d(M,"z",(function(){return a})),t.d(M,"s",(function(){return h})),t.d(M,"p",(function(){return s})),t.d(M,"n",(function(){return y})),t.d(M,"x",(function(){return w})),t.d(M,"m",(function(){return j})),t.d(M,"b",(function(){return L})),t.d(M,"a",(function(){return d})),t.d(M,"e",(function(){return x})),t.d(M,"h",(function(){return u})),t.d(M,"c",(function(){return S})),t.d(M,"g",(function(){return l})),t.d(M,"i",(function(){return z})),t.d(M,"d",(function(){return U})),t.d(M,"f",(function(){return f}));var g=1,I=2,e=3,i=1,T=2,E=3,N=4,n=6,D=7,C=10,r=11,c=12,o=13,B=14,Q=15,a=16,h=20,s=21,y=102,w=103,j=200,L=1,d=2,x=3,Y=!0;function u(A){Y=A}function S(){return Y}function l(A){A}function z(A){return new Promise((function(M){return setTimeout(M,A)}))}function U(A){var M,t=new Date,g=t.getFullYear(),I=t.getMonth()+1,e=t.getDate();t.getDay();M=g+"-"+I+"-"+e+" "+t.getHours()+":"+t.getMinutes()+":"+t.getSeconds(),console.log("["+M+"]: "+A)}function f(){for(var A=window.location.href.split("/"),M="",t=0;t<3;t++)M+=A[t],M+="/";return M}},function(A,M,t){"use strict";var g=t(7),I=t.n(g),e=function(){function A(){}return A.e=function(M,t){M&&!A.FORCE_GLOBAL_TAG||(M=A.GLOBAL_TAG);var g="["+M+"] > "+t;A.ENABLE_CALLBACK&&A.emitter.emit("log","error",g),A.ENABLE_ERROR&&(console.error?console.error(g):console.warn?console.warn(g):console.log(g))},A.i=function(M,t){M&&!A.FORCE_GLOBAL_TAG||(M=A.GLOBAL_TAG);var g="["+M+"] > "+t;A.ENABLE_CALLBACK&&A.emitter.emit("log","info",g),A.ENABLE_INFO&&(console.info?console.info(g):console.log(g))},A.w=function(M,t){M&&!A.FORCE_GLOBAL_TAG||(M=A.GLOBAL_TAG);var g="["+M+"] > "+t;A.ENABLE_CALLBACK&&A.emitter.emit("log","warn",g),A.ENABLE_WARN&&(console.warn?console.warn(g):console.log(g))},A.d=function(M,t){M&&!A.FORCE_GLOBAL_TAG||(M=A.GLOBAL_TAG);var g="["+M+"] > "+t;A.ENABLE_CALLBACK&&A.emitter.emit("log","debug",g),A.ENABLE_DEBUG&&(console.debug?console.debug(g):console.log(g))},A.v=function(M,t){M&&!A.FORCE_GLOBAL_TAG||(M=A.GLOBAL_TAG);var g="["+M+"] > "+t;A.ENABLE_CALLBACK&&A.emitter.emit("log","verbose",g),A.ENABLE_VERBOSE&&console.log(g)},A}();e.GLOBAL_TAG="EasyPlayer.js",e.FORCE_GLOBAL_TAG=!1,e.ENABLE_ERROR=!0,e.ENABLE_INFO=!0,e.ENABLE_WARN=!0,e.ENABLE_DEBUG=!0,e.ENABLE_VERBOSE=!0,e.ENABLE_CALLBACK=!1,e.emitter=new I.a,M.a=e},function(A,M,t){"use strict";function g(A,M){A.prototype=Object.create(M.prototype),A.prototype.constructor=A,A.__proto__=M}function I(A,M){for(var t=0;t */ +var g=t(9),I=g.Buffer;function e(A,M){for(var t in A)M[t]=A[t]}function i(A,M,t){return I(A,M,t)}I.from&&I.alloc&&I.allocUnsafe&&I.allocUnsafeSlow?A.exports=g:(e(g,M),M.Buffer=i),i.prototype=Object.create(I.prototype),e(I,i),i.from=function(A,M,t){if("number"==typeof A)throw new TypeError("Argument must not be a number");return I(A,M,t)},i.alloc=function(A,M,t){if("number"!=typeof A)throw new TypeError("Argument must be a number");var g=I(A);return void 0!==M?"string"==typeof t?g.fill(M,t):g.fill(M):g.fill(0),g},i.allocUnsafe=function(A){if("number"!=typeof A)throw new TypeError("Argument must be a number");return I(A)},i.allocUnsafeSlow=function(A){if("number"!=typeof A)throw new TypeError("Argument must be a number");return g.SlowBuffer(A)}},function(A,M,t){"use strict";M.a={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"}},function(A,M,t){(function(A){!function(A,M){"use strict";function g(A,M){if(!A)throw new Error(M||"Assertion failed")}function I(A,M){A.super_=M;var t=function(){};t.prototype=M.prototype,A.prototype=new t,A.prototype.constructor=A}function e(A,M,t){if(e.isBN(A))return A;this.negative=0,this.words=null,this.length=0,this.red=null,null!==A&&("le"!==M&&"be"!==M||(t=M,M=10),this._init(A||0,M||10,t||"be"))}var i;"object"==typeof A?A.exports=e:M.BN=e,e.BN=e,e.wordSize=26;try{i=t(165).Buffer}catch(A){}function T(A,M,t){for(var g=0,I=Math.min(A.length,t),e=M;e=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return g}function E(A,M,t,g){for(var I=0,e=Math.min(A.length,t),i=M;i=49?T-49+10:T>=17?T-17+10:T}return I}e.isBN=function(A){return A instanceof e||null!==A&&"object"==typeof A&&A.constructor.wordSize===e.wordSize&&Array.isArray(A.words)},e.max=function(A,M){return A.cmp(M)>0?A:M},e.min=function(A,M){return A.cmp(M)<0?A:M},e.prototype._init=function(A,M,t){if("number"==typeof A)return this._initNumber(A,M,t);if("object"==typeof A)return this._initArray(A,M,t);"hex"===M&&(M=16),g(M===(0|M)&&M>=2&&M<=36);var I=0;"-"===(A=A.toString().replace(/\s+/g,""))[0]&&I++,16===M?this._parseHex(A,I):this._parseBase(A,M,I),"-"===A[0]&&(this.negative=1),this.strip(),"le"===t&&this._initArray(this.toArray(),M,t)},e.prototype._initNumber=function(A,M,t){A<0&&(this.negative=1,A=-A),A<67108864?(this.words=[67108863&A],this.length=1):A<4503599627370496?(this.words=[67108863&A,A/67108864&67108863],this.length=2):(g(A<9007199254740992),this.words=[67108863&A,A/67108864&67108863,1],this.length=3),"le"===t&&this._initArray(this.toArray(),M,t)},e.prototype._initArray=function(A,M,t){if(g("number"==typeof A.length),A.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(A.length/3),this.words=new Array(this.length);for(var I=0;I=0;I-=3)i=A[I]|A[I-1]<<8|A[I-2]<<16,this.words[e]|=i<>>26-T&67108863,(T+=24)>=26&&(T-=26,e++);else if("le"===t)for(I=0,e=0;I>>26-T&67108863,(T+=24)>=26&&(T-=26,e++);return this.strip()},e.prototype._parseHex=function(A,M){this.length=Math.ceil((A.length-M)/6),this.words=new Array(this.length);for(var t=0;t=M;t-=6)I=T(A,t,t+6),this.words[g]|=I<>>26-e&4194303,(e+=24)>=26&&(e-=26,g++);t+6!==M&&(I=T(A,M,t+6),this.words[g]|=I<>>26-e&4194303),this.strip()},e.prototype._parseBase=function(A,M,t){this.words=[0],this.length=1;for(var g=0,I=1;I<=67108863;I*=M)g++;g--,I=I/M|0;for(var e=A.length-t,i=e%g,T=Math.min(e,e-i)+t,N=0,n=t;n1&&0===this.words[this.length-1];)this.length--;return this._normSign()},e.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},e.prototype.inspect=function(){return(this.red?""};var N=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],n=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function C(A,M,t){t.negative=M.negative^A.negative;var g=A.length+M.length|0;t.length=g,g=g-1|0;var I=0|A.words[0],e=0|M.words[0],i=I*e,T=67108863&i,E=i/67108864|0;t.words[0]=T;for(var N=1;N>>26,D=67108863&E,C=Math.min(N,M.length-1),r=Math.max(0,N-A.length+1);r<=C;r++){var c=N-r|0;n+=(i=(I=0|A.words[c])*(e=0|M.words[r])+D)/67108864|0,D=67108863&i}t.words[N]=0|D,E=0|n}return 0!==E?t.words[N]=0|E:t.length--,t.strip()}e.prototype.toString=function(A,M){var t;if(M=0|M||1,16===(A=A||10)||"hex"===A){t="";for(var I=0,e=0,i=0;i>>24-I&16777215)||i!==this.length-1?N[6-E.length]+E+t:E+t,(I+=2)>=26&&(I-=26,i--)}for(0!==e&&(t=e.toString(16)+t);t.length%M!=0;)t="0"+t;return 0!==this.negative&&(t="-"+t),t}if(A===(0|A)&&A>=2&&A<=36){var C=n[A],r=D[A];t="";var c=this.clone();for(c.negative=0;!c.isZero();){var o=c.modn(r).toString(A);t=(c=c.idivn(r)).isZero()?o+t:N[C-o.length]+o+t}for(this.isZero()&&(t="0"+t);t.length%M!=0;)t="0"+t;return 0!==this.negative&&(t="-"+t),t}g(!1,"Base should be between 2 and 36")},e.prototype.toNumber=function(){var A=this.words[0];return 2===this.length?A+=67108864*this.words[1]:3===this.length&&1===this.words[2]?A+=4503599627370496+67108864*this.words[1]:this.length>2&&g(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-A:A},e.prototype.toJSON=function(){return this.toString(16)},e.prototype.toBuffer=function(A,M){return g(void 0!==i),this.toArrayLike(i,A,M)},e.prototype.toArray=function(A,M){return this.toArrayLike(Array,A,M)},e.prototype.toArrayLike=function(A,M,t){var I=this.byteLength(),e=t||Math.max(1,I);g(I<=e,"byte array longer than desired length"),g(e>0,"Requested array length <= 0"),this.strip();var i,T,E="le"===M,N=new A(e),n=this.clone();if(E){for(T=0;!n.isZero();T++)i=n.andln(255),n.iushrn(8),N[T]=i;for(;T=4096&&(t+=13,M>>>=13),M>=64&&(t+=7,M>>>=7),M>=8&&(t+=4,M>>>=4),M>=2&&(t+=2,M>>>=2),t+M},e.prototype._zeroBits=function(A){if(0===A)return 26;var M=A,t=0;return 0==(8191&M)&&(t+=13,M>>>=13),0==(127&M)&&(t+=7,M>>>=7),0==(15&M)&&(t+=4,M>>>=4),0==(3&M)&&(t+=2,M>>>=2),0==(1&M)&&t++,t},e.prototype.bitLength=function(){var A=this.words[this.length-1],M=this._countBits(A);return 26*(this.length-1)+M},e.prototype.zeroBits=function(){if(this.isZero())return 0;for(var A=0,M=0;MA.length?this.clone().ior(A):A.clone().ior(this)},e.prototype.uor=function(A){return this.length>A.length?this.clone().iuor(A):A.clone().iuor(this)},e.prototype.iuand=function(A){var M;M=this.length>A.length?A:this;for(var t=0;tA.length?this.clone().iand(A):A.clone().iand(this)},e.prototype.uand=function(A){return this.length>A.length?this.clone().iuand(A):A.clone().iuand(this)},e.prototype.iuxor=function(A){var M,t;this.length>A.length?(M=this,t=A):(M=A,t=this);for(var g=0;gA.length?this.clone().ixor(A):A.clone().ixor(this)},e.prototype.uxor=function(A){return this.length>A.length?this.clone().iuxor(A):A.clone().iuxor(this)},e.prototype.inotn=function(A){g("number"==typeof A&&A>=0);var M=0|Math.ceil(A/26),t=A%26;this._expand(M),t>0&&M--;for(var I=0;I0&&(this.words[I]=~this.words[I]&67108863>>26-t),this.strip()},e.prototype.notn=function(A){return this.clone().inotn(A)},e.prototype.setn=function(A,M){g("number"==typeof A&&A>=0);var t=A/26|0,I=A%26;return this._expand(t+1),this.words[t]=M?this.words[t]|1<A.length?(t=this,g=A):(t=A,g=this);for(var I=0,e=0;e>>26;for(;0!==I&&e>>26;if(this.length=t.length,0!==I)this.words[this.length]=I,this.length++;else if(t!==this)for(;eA.length?this.clone().iadd(A):A.clone().iadd(this)},e.prototype.isub=function(A){if(0!==A.negative){A.negative=0;var M=this.iadd(A);return A.negative=1,M._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(A),this.negative=1,this._normSign();var t,g,I=this.cmp(A);if(0===I)return this.negative=0,this.length=1,this.words[0]=0,this;I>0?(t=this,g=A):(t=A,g=this);for(var e=0,i=0;i>26,this.words[i]=67108863&M;for(;0!==e&&i>26,this.words[i]=67108863&M;if(0===e&&i>>13,r=0|i[1],c=8191&r,o=r>>>13,B=0|i[2],Q=8191&B,a=B>>>13,h=0|i[3],s=8191&h,y=h>>>13,w=0|i[4],j=8191&w,L=w>>>13,d=0|i[5],x=8191&d,Y=d>>>13,u=0|i[6],S=8191&u,l=u>>>13,z=0|i[7],U=8191&z,f=z>>>13,O=0|i[8],F=8191&O,m=O>>>13,R=0|i[9],k=8191&R,p=R>>>13,b=0|T[0],G=8191&b,J=b>>>13,H=0|T[1],X=8191&H,v=H>>>13,V=0|T[2],W=8191&V,P=V>>>13,Z=0|T[3],K=8191&Z,q=Z>>>13,_=0|T[4],$=8191&_,AA=_>>>13,MA=0|T[5],tA=8191&MA,gA=MA>>>13,IA=0|T[6],eA=8191&IA,iA=IA>>>13,TA=0|T[7],EA=8191&TA,NA=TA>>>13,nA=0|T[8],DA=8191&nA,CA=nA>>>13,rA=0|T[9],cA=8191&rA,oA=rA>>>13;t.negative=A.negative^M.negative,t.length=19;var BA=(N+(g=Math.imul(D,G))|0)+((8191&(I=(I=Math.imul(D,J))+Math.imul(C,G)|0))<<13)|0;N=((e=Math.imul(C,J))+(I>>>13)|0)+(BA>>>26)|0,BA&=67108863,g=Math.imul(c,G),I=(I=Math.imul(c,J))+Math.imul(o,G)|0,e=Math.imul(o,J);var QA=(N+(g=g+Math.imul(D,X)|0)|0)+((8191&(I=(I=I+Math.imul(D,v)|0)+Math.imul(C,X)|0))<<13)|0;N=((e=e+Math.imul(C,v)|0)+(I>>>13)|0)+(QA>>>26)|0,QA&=67108863,g=Math.imul(Q,G),I=(I=Math.imul(Q,J))+Math.imul(a,G)|0,e=Math.imul(a,J),g=g+Math.imul(c,X)|0,I=(I=I+Math.imul(c,v)|0)+Math.imul(o,X)|0,e=e+Math.imul(o,v)|0;var aA=(N+(g=g+Math.imul(D,W)|0)|0)+((8191&(I=(I=I+Math.imul(D,P)|0)+Math.imul(C,W)|0))<<13)|0;N=((e=e+Math.imul(C,P)|0)+(I>>>13)|0)+(aA>>>26)|0,aA&=67108863,g=Math.imul(s,G),I=(I=Math.imul(s,J))+Math.imul(y,G)|0,e=Math.imul(y,J),g=g+Math.imul(Q,X)|0,I=(I=I+Math.imul(Q,v)|0)+Math.imul(a,X)|0,e=e+Math.imul(a,v)|0,g=g+Math.imul(c,W)|0,I=(I=I+Math.imul(c,P)|0)+Math.imul(o,W)|0,e=e+Math.imul(o,P)|0;var hA=(N+(g=g+Math.imul(D,K)|0)|0)+((8191&(I=(I=I+Math.imul(D,q)|0)+Math.imul(C,K)|0))<<13)|0;N=((e=e+Math.imul(C,q)|0)+(I>>>13)|0)+(hA>>>26)|0,hA&=67108863,g=Math.imul(j,G),I=(I=Math.imul(j,J))+Math.imul(L,G)|0,e=Math.imul(L,J),g=g+Math.imul(s,X)|0,I=(I=I+Math.imul(s,v)|0)+Math.imul(y,X)|0,e=e+Math.imul(y,v)|0,g=g+Math.imul(Q,W)|0,I=(I=I+Math.imul(Q,P)|0)+Math.imul(a,W)|0,e=e+Math.imul(a,P)|0,g=g+Math.imul(c,K)|0,I=(I=I+Math.imul(c,q)|0)+Math.imul(o,K)|0,e=e+Math.imul(o,q)|0;var sA=(N+(g=g+Math.imul(D,$)|0)|0)+((8191&(I=(I=I+Math.imul(D,AA)|0)+Math.imul(C,$)|0))<<13)|0;N=((e=e+Math.imul(C,AA)|0)+(I>>>13)|0)+(sA>>>26)|0,sA&=67108863,g=Math.imul(x,G),I=(I=Math.imul(x,J))+Math.imul(Y,G)|0,e=Math.imul(Y,J),g=g+Math.imul(j,X)|0,I=(I=I+Math.imul(j,v)|0)+Math.imul(L,X)|0,e=e+Math.imul(L,v)|0,g=g+Math.imul(s,W)|0,I=(I=I+Math.imul(s,P)|0)+Math.imul(y,W)|0,e=e+Math.imul(y,P)|0,g=g+Math.imul(Q,K)|0,I=(I=I+Math.imul(Q,q)|0)+Math.imul(a,K)|0,e=e+Math.imul(a,q)|0,g=g+Math.imul(c,$)|0,I=(I=I+Math.imul(c,AA)|0)+Math.imul(o,$)|0,e=e+Math.imul(o,AA)|0;var yA=(N+(g=g+Math.imul(D,tA)|0)|0)+((8191&(I=(I=I+Math.imul(D,gA)|0)+Math.imul(C,tA)|0))<<13)|0;N=((e=e+Math.imul(C,gA)|0)+(I>>>13)|0)+(yA>>>26)|0,yA&=67108863,g=Math.imul(S,G),I=(I=Math.imul(S,J))+Math.imul(l,G)|0,e=Math.imul(l,J),g=g+Math.imul(x,X)|0,I=(I=I+Math.imul(x,v)|0)+Math.imul(Y,X)|0,e=e+Math.imul(Y,v)|0,g=g+Math.imul(j,W)|0,I=(I=I+Math.imul(j,P)|0)+Math.imul(L,W)|0,e=e+Math.imul(L,P)|0,g=g+Math.imul(s,K)|0,I=(I=I+Math.imul(s,q)|0)+Math.imul(y,K)|0,e=e+Math.imul(y,q)|0,g=g+Math.imul(Q,$)|0,I=(I=I+Math.imul(Q,AA)|0)+Math.imul(a,$)|0,e=e+Math.imul(a,AA)|0,g=g+Math.imul(c,tA)|0,I=(I=I+Math.imul(c,gA)|0)+Math.imul(o,tA)|0,e=e+Math.imul(o,gA)|0;var wA=(N+(g=g+Math.imul(D,eA)|0)|0)+((8191&(I=(I=I+Math.imul(D,iA)|0)+Math.imul(C,eA)|0))<<13)|0;N=((e=e+Math.imul(C,iA)|0)+(I>>>13)|0)+(wA>>>26)|0,wA&=67108863,g=Math.imul(U,G),I=(I=Math.imul(U,J))+Math.imul(f,G)|0,e=Math.imul(f,J),g=g+Math.imul(S,X)|0,I=(I=I+Math.imul(S,v)|0)+Math.imul(l,X)|0,e=e+Math.imul(l,v)|0,g=g+Math.imul(x,W)|0,I=(I=I+Math.imul(x,P)|0)+Math.imul(Y,W)|0,e=e+Math.imul(Y,P)|0,g=g+Math.imul(j,K)|0,I=(I=I+Math.imul(j,q)|0)+Math.imul(L,K)|0,e=e+Math.imul(L,q)|0,g=g+Math.imul(s,$)|0,I=(I=I+Math.imul(s,AA)|0)+Math.imul(y,$)|0,e=e+Math.imul(y,AA)|0,g=g+Math.imul(Q,tA)|0,I=(I=I+Math.imul(Q,gA)|0)+Math.imul(a,tA)|0,e=e+Math.imul(a,gA)|0,g=g+Math.imul(c,eA)|0,I=(I=I+Math.imul(c,iA)|0)+Math.imul(o,eA)|0,e=e+Math.imul(o,iA)|0;var jA=(N+(g=g+Math.imul(D,EA)|0)|0)+((8191&(I=(I=I+Math.imul(D,NA)|0)+Math.imul(C,EA)|0))<<13)|0;N=((e=e+Math.imul(C,NA)|0)+(I>>>13)|0)+(jA>>>26)|0,jA&=67108863,g=Math.imul(F,G),I=(I=Math.imul(F,J))+Math.imul(m,G)|0,e=Math.imul(m,J),g=g+Math.imul(U,X)|0,I=(I=I+Math.imul(U,v)|0)+Math.imul(f,X)|0,e=e+Math.imul(f,v)|0,g=g+Math.imul(S,W)|0,I=(I=I+Math.imul(S,P)|0)+Math.imul(l,W)|0,e=e+Math.imul(l,P)|0,g=g+Math.imul(x,K)|0,I=(I=I+Math.imul(x,q)|0)+Math.imul(Y,K)|0,e=e+Math.imul(Y,q)|0,g=g+Math.imul(j,$)|0,I=(I=I+Math.imul(j,AA)|0)+Math.imul(L,$)|0,e=e+Math.imul(L,AA)|0,g=g+Math.imul(s,tA)|0,I=(I=I+Math.imul(s,gA)|0)+Math.imul(y,tA)|0,e=e+Math.imul(y,gA)|0,g=g+Math.imul(Q,eA)|0,I=(I=I+Math.imul(Q,iA)|0)+Math.imul(a,eA)|0,e=e+Math.imul(a,iA)|0,g=g+Math.imul(c,EA)|0,I=(I=I+Math.imul(c,NA)|0)+Math.imul(o,EA)|0,e=e+Math.imul(o,NA)|0;var LA=(N+(g=g+Math.imul(D,DA)|0)|0)+((8191&(I=(I=I+Math.imul(D,CA)|0)+Math.imul(C,DA)|0))<<13)|0;N=((e=e+Math.imul(C,CA)|0)+(I>>>13)|0)+(LA>>>26)|0,LA&=67108863,g=Math.imul(k,G),I=(I=Math.imul(k,J))+Math.imul(p,G)|0,e=Math.imul(p,J),g=g+Math.imul(F,X)|0,I=(I=I+Math.imul(F,v)|0)+Math.imul(m,X)|0,e=e+Math.imul(m,v)|0,g=g+Math.imul(U,W)|0,I=(I=I+Math.imul(U,P)|0)+Math.imul(f,W)|0,e=e+Math.imul(f,P)|0,g=g+Math.imul(S,K)|0,I=(I=I+Math.imul(S,q)|0)+Math.imul(l,K)|0,e=e+Math.imul(l,q)|0,g=g+Math.imul(x,$)|0,I=(I=I+Math.imul(x,AA)|0)+Math.imul(Y,$)|0,e=e+Math.imul(Y,AA)|0,g=g+Math.imul(j,tA)|0,I=(I=I+Math.imul(j,gA)|0)+Math.imul(L,tA)|0,e=e+Math.imul(L,gA)|0,g=g+Math.imul(s,eA)|0,I=(I=I+Math.imul(s,iA)|0)+Math.imul(y,eA)|0,e=e+Math.imul(y,iA)|0,g=g+Math.imul(Q,EA)|0,I=(I=I+Math.imul(Q,NA)|0)+Math.imul(a,EA)|0,e=e+Math.imul(a,NA)|0,g=g+Math.imul(c,DA)|0,I=(I=I+Math.imul(c,CA)|0)+Math.imul(o,DA)|0,e=e+Math.imul(o,CA)|0;var dA=(N+(g=g+Math.imul(D,cA)|0)|0)+((8191&(I=(I=I+Math.imul(D,oA)|0)+Math.imul(C,cA)|0))<<13)|0;N=((e=e+Math.imul(C,oA)|0)+(I>>>13)|0)+(dA>>>26)|0,dA&=67108863,g=Math.imul(k,X),I=(I=Math.imul(k,v))+Math.imul(p,X)|0,e=Math.imul(p,v),g=g+Math.imul(F,W)|0,I=(I=I+Math.imul(F,P)|0)+Math.imul(m,W)|0,e=e+Math.imul(m,P)|0,g=g+Math.imul(U,K)|0,I=(I=I+Math.imul(U,q)|0)+Math.imul(f,K)|0,e=e+Math.imul(f,q)|0,g=g+Math.imul(S,$)|0,I=(I=I+Math.imul(S,AA)|0)+Math.imul(l,$)|0,e=e+Math.imul(l,AA)|0,g=g+Math.imul(x,tA)|0,I=(I=I+Math.imul(x,gA)|0)+Math.imul(Y,tA)|0,e=e+Math.imul(Y,gA)|0,g=g+Math.imul(j,eA)|0,I=(I=I+Math.imul(j,iA)|0)+Math.imul(L,eA)|0,e=e+Math.imul(L,iA)|0,g=g+Math.imul(s,EA)|0,I=(I=I+Math.imul(s,NA)|0)+Math.imul(y,EA)|0,e=e+Math.imul(y,NA)|0,g=g+Math.imul(Q,DA)|0,I=(I=I+Math.imul(Q,CA)|0)+Math.imul(a,DA)|0,e=e+Math.imul(a,CA)|0;var xA=(N+(g=g+Math.imul(c,cA)|0)|0)+((8191&(I=(I=I+Math.imul(c,oA)|0)+Math.imul(o,cA)|0))<<13)|0;N=((e=e+Math.imul(o,oA)|0)+(I>>>13)|0)+(xA>>>26)|0,xA&=67108863,g=Math.imul(k,W),I=(I=Math.imul(k,P))+Math.imul(p,W)|0,e=Math.imul(p,P),g=g+Math.imul(F,K)|0,I=(I=I+Math.imul(F,q)|0)+Math.imul(m,K)|0,e=e+Math.imul(m,q)|0,g=g+Math.imul(U,$)|0,I=(I=I+Math.imul(U,AA)|0)+Math.imul(f,$)|0,e=e+Math.imul(f,AA)|0,g=g+Math.imul(S,tA)|0,I=(I=I+Math.imul(S,gA)|0)+Math.imul(l,tA)|0,e=e+Math.imul(l,gA)|0,g=g+Math.imul(x,eA)|0,I=(I=I+Math.imul(x,iA)|0)+Math.imul(Y,eA)|0,e=e+Math.imul(Y,iA)|0,g=g+Math.imul(j,EA)|0,I=(I=I+Math.imul(j,NA)|0)+Math.imul(L,EA)|0,e=e+Math.imul(L,NA)|0,g=g+Math.imul(s,DA)|0,I=(I=I+Math.imul(s,CA)|0)+Math.imul(y,DA)|0,e=e+Math.imul(y,CA)|0;var YA=(N+(g=g+Math.imul(Q,cA)|0)|0)+((8191&(I=(I=I+Math.imul(Q,oA)|0)+Math.imul(a,cA)|0))<<13)|0;N=((e=e+Math.imul(a,oA)|0)+(I>>>13)|0)+(YA>>>26)|0,YA&=67108863,g=Math.imul(k,K),I=(I=Math.imul(k,q))+Math.imul(p,K)|0,e=Math.imul(p,q),g=g+Math.imul(F,$)|0,I=(I=I+Math.imul(F,AA)|0)+Math.imul(m,$)|0,e=e+Math.imul(m,AA)|0,g=g+Math.imul(U,tA)|0,I=(I=I+Math.imul(U,gA)|0)+Math.imul(f,tA)|0,e=e+Math.imul(f,gA)|0,g=g+Math.imul(S,eA)|0,I=(I=I+Math.imul(S,iA)|0)+Math.imul(l,eA)|0,e=e+Math.imul(l,iA)|0,g=g+Math.imul(x,EA)|0,I=(I=I+Math.imul(x,NA)|0)+Math.imul(Y,EA)|0,e=e+Math.imul(Y,NA)|0,g=g+Math.imul(j,DA)|0,I=(I=I+Math.imul(j,CA)|0)+Math.imul(L,DA)|0,e=e+Math.imul(L,CA)|0;var uA=(N+(g=g+Math.imul(s,cA)|0)|0)+((8191&(I=(I=I+Math.imul(s,oA)|0)+Math.imul(y,cA)|0))<<13)|0;N=((e=e+Math.imul(y,oA)|0)+(I>>>13)|0)+(uA>>>26)|0,uA&=67108863,g=Math.imul(k,$),I=(I=Math.imul(k,AA))+Math.imul(p,$)|0,e=Math.imul(p,AA),g=g+Math.imul(F,tA)|0,I=(I=I+Math.imul(F,gA)|0)+Math.imul(m,tA)|0,e=e+Math.imul(m,gA)|0,g=g+Math.imul(U,eA)|0,I=(I=I+Math.imul(U,iA)|0)+Math.imul(f,eA)|0,e=e+Math.imul(f,iA)|0,g=g+Math.imul(S,EA)|0,I=(I=I+Math.imul(S,NA)|0)+Math.imul(l,EA)|0,e=e+Math.imul(l,NA)|0,g=g+Math.imul(x,DA)|0,I=(I=I+Math.imul(x,CA)|0)+Math.imul(Y,DA)|0,e=e+Math.imul(Y,CA)|0;var SA=(N+(g=g+Math.imul(j,cA)|0)|0)+((8191&(I=(I=I+Math.imul(j,oA)|0)+Math.imul(L,cA)|0))<<13)|0;N=((e=e+Math.imul(L,oA)|0)+(I>>>13)|0)+(SA>>>26)|0,SA&=67108863,g=Math.imul(k,tA),I=(I=Math.imul(k,gA))+Math.imul(p,tA)|0,e=Math.imul(p,gA),g=g+Math.imul(F,eA)|0,I=(I=I+Math.imul(F,iA)|0)+Math.imul(m,eA)|0,e=e+Math.imul(m,iA)|0,g=g+Math.imul(U,EA)|0,I=(I=I+Math.imul(U,NA)|0)+Math.imul(f,EA)|0,e=e+Math.imul(f,NA)|0,g=g+Math.imul(S,DA)|0,I=(I=I+Math.imul(S,CA)|0)+Math.imul(l,DA)|0,e=e+Math.imul(l,CA)|0;var lA=(N+(g=g+Math.imul(x,cA)|0)|0)+((8191&(I=(I=I+Math.imul(x,oA)|0)+Math.imul(Y,cA)|0))<<13)|0;N=((e=e+Math.imul(Y,oA)|0)+(I>>>13)|0)+(lA>>>26)|0,lA&=67108863,g=Math.imul(k,eA),I=(I=Math.imul(k,iA))+Math.imul(p,eA)|0,e=Math.imul(p,iA),g=g+Math.imul(F,EA)|0,I=(I=I+Math.imul(F,NA)|0)+Math.imul(m,EA)|0,e=e+Math.imul(m,NA)|0,g=g+Math.imul(U,DA)|0,I=(I=I+Math.imul(U,CA)|0)+Math.imul(f,DA)|0,e=e+Math.imul(f,CA)|0;var zA=(N+(g=g+Math.imul(S,cA)|0)|0)+((8191&(I=(I=I+Math.imul(S,oA)|0)+Math.imul(l,cA)|0))<<13)|0;N=((e=e+Math.imul(l,oA)|0)+(I>>>13)|0)+(zA>>>26)|0,zA&=67108863,g=Math.imul(k,EA),I=(I=Math.imul(k,NA))+Math.imul(p,EA)|0,e=Math.imul(p,NA),g=g+Math.imul(F,DA)|0,I=(I=I+Math.imul(F,CA)|0)+Math.imul(m,DA)|0,e=e+Math.imul(m,CA)|0;var UA=(N+(g=g+Math.imul(U,cA)|0)|0)+((8191&(I=(I=I+Math.imul(U,oA)|0)+Math.imul(f,cA)|0))<<13)|0;N=((e=e+Math.imul(f,oA)|0)+(I>>>13)|0)+(UA>>>26)|0,UA&=67108863,g=Math.imul(k,DA),I=(I=Math.imul(k,CA))+Math.imul(p,DA)|0,e=Math.imul(p,CA);var fA=(N+(g=g+Math.imul(F,cA)|0)|0)+((8191&(I=(I=I+Math.imul(F,oA)|0)+Math.imul(m,cA)|0))<<13)|0;N=((e=e+Math.imul(m,oA)|0)+(I>>>13)|0)+(fA>>>26)|0,fA&=67108863;var OA=(N+(g=Math.imul(k,cA))|0)+((8191&(I=(I=Math.imul(k,oA))+Math.imul(p,cA)|0))<<13)|0;return N=((e=Math.imul(p,oA))+(I>>>13)|0)+(OA>>>26)|0,OA&=67108863,E[0]=BA,E[1]=QA,E[2]=aA,E[3]=hA,E[4]=sA,E[5]=yA,E[6]=wA,E[7]=jA,E[8]=LA,E[9]=dA,E[10]=xA,E[11]=YA,E[12]=uA,E[13]=SA,E[14]=lA,E[15]=zA,E[16]=UA,E[17]=fA,E[18]=OA,0!==N&&(E[19]=N,t.length++),t};function c(A,M,t){return(new o).mulp(A,M,t)}function o(A,M){this.x=A,this.y=M}Math.imul||(r=C),e.prototype.mulTo=function(A,M){var t=this.length+A.length;return 10===this.length&&10===A.length?r(this,A,M):t<63?C(this,A,M):t<1024?function(A,M,t){t.negative=M.negative^A.negative,t.length=A.length+M.length;for(var g=0,I=0,e=0;e>>26)|0)>>>26,i&=67108863}t.words[e]=T,g=i,i=I}return 0!==g?t.words[e]=g:t.length--,t.strip()}(this,A,M):c(this,A,M)},o.prototype.makeRBT=function(A){for(var M=new Array(A),t=e.prototype._countBits(A)-1,g=0;g>=1;return g},o.prototype.permute=function(A,M,t,g,I,e){for(var i=0;i>>=1)I++;return 1<>>=13,t[2*i+1]=8191&e,e>>>=13;for(i=2*M;i>=26,M+=I/67108864|0,M+=e>>>26,this.words[t]=67108863&e}return 0!==M&&(this.words[t]=M,this.length++),this},e.prototype.muln=function(A){return this.clone().imuln(A)},e.prototype.sqr=function(){return this.mul(this)},e.prototype.isqr=function(){return this.imul(this.clone())},e.prototype.pow=function(A){var M=function(A){for(var M=new Array(A.bitLength()),t=0;t>>I}return M}(A);if(0===M.length)return new e(1);for(var t=this,g=0;g=0);var M,t=A%26,I=(A-t)/26,e=67108863>>>26-t<<26-t;if(0!==t){var i=0;for(M=0;M>>26-t}i&&(this.words[M]=i,this.length++)}if(0!==I){for(M=this.length-1;M>=0;M--)this.words[M+I]=this.words[M];for(M=0;M=0),I=M?(M-M%26)/26:0;var e=A%26,i=Math.min((A-e)/26,this.length),T=67108863^67108863>>>e<i)for(this.length-=i,N=0;N=0&&(0!==n||N>=I);N--){var D=0|this.words[N];this.words[N]=n<<26-e|D>>>e,n=D&T}return E&&0!==n&&(E.words[E.length++]=n),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},e.prototype.ishrn=function(A,M,t){return g(0===this.negative),this.iushrn(A,M,t)},e.prototype.shln=function(A){return this.clone().ishln(A)},e.prototype.ushln=function(A){return this.clone().iushln(A)},e.prototype.shrn=function(A){return this.clone().ishrn(A)},e.prototype.ushrn=function(A){return this.clone().iushrn(A)},e.prototype.testn=function(A){g("number"==typeof A&&A>=0);var M=A%26,t=(A-M)/26,I=1<=0);var M=A%26,t=(A-M)/26;if(g(0===this.negative,"imaskn works only with positive numbers"),this.length<=t)return this;if(0!==M&&t++,this.length=Math.min(t,this.length),0!==M){var I=67108863^67108863>>>M<=67108864;M++)this.words[M]-=67108864,M===this.length-1?this.words[M+1]=1:this.words[M+1]++;return this.length=Math.max(this.length,M+1),this},e.prototype.isubn=function(A){if(g("number"==typeof A),g(A<67108864),A<0)return this.iaddn(-A);if(0!==this.negative)return this.negative=0,this.iaddn(A),this.negative=1,this;if(this.words[0]-=A,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var M=0;M>26)-(E/67108864|0),this.words[I+t]=67108863&e}for(;I>26,this.words[I+t]=67108863&e;if(0===T)return this.strip();for(g(-1===T),T=0,I=0;I>26,this.words[I]=67108863&e;return this.negative=1,this.strip()},e.prototype._wordDiv=function(A,M){var t=(this.length,A.length),g=this.clone(),I=A,i=0|I.words[I.length-1];0!==(t=26-this._countBits(i))&&(I=I.ushln(t),g.iushln(t),i=0|I.words[I.length-1]);var T,E=g.length-I.length;if("mod"!==M){(T=new e(null)).length=E+1,T.words=new Array(T.length);for(var N=0;N=0;D--){var C=67108864*(0|g.words[I.length+D])+(0|g.words[I.length+D-1]);for(C=Math.min(C/i|0,67108863),g._ishlnsubmul(I,C,D);0!==g.negative;)C--,g.negative=0,g._ishlnsubmul(I,1,D),g.isZero()||(g.negative^=1);T&&(T.words[D]=C)}return T&&T.strip(),g.strip(),"div"!==M&&0!==t&&g.iushrn(t),{div:T||null,mod:g}},e.prototype.divmod=function(A,M,t){return g(!A.isZero()),this.isZero()?{div:new e(0),mod:new e(0)}:0!==this.negative&&0===A.negative?(T=this.neg().divmod(A,M),"mod"!==M&&(I=T.div.neg()),"div"!==M&&(i=T.mod.neg(),t&&0!==i.negative&&i.iadd(A)),{div:I,mod:i}):0===this.negative&&0!==A.negative?(T=this.divmod(A.neg(),M),"mod"!==M&&(I=T.div.neg()),{div:I,mod:T.mod}):0!=(this.negative&A.negative)?(T=this.neg().divmod(A.neg(),M),"div"!==M&&(i=T.mod.neg(),t&&0!==i.negative&&i.isub(A)),{div:T.div,mod:i}):A.length>this.length||this.cmp(A)<0?{div:new e(0),mod:this}:1===A.length?"div"===M?{div:this.divn(A.words[0]),mod:null}:"mod"===M?{div:null,mod:new e(this.modn(A.words[0]))}:{div:this.divn(A.words[0]),mod:new e(this.modn(A.words[0]))}:this._wordDiv(A,M);var I,i,T},e.prototype.div=function(A){return this.divmod(A,"div",!1).div},e.prototype.mod=function(A){return this.divmod(A,"mod",!1).mod},e.prototype.umod=function(A){return this.divmod(A,"mod",!0).mod},e.prototype.divRound=function(A){var M=this.divmod(A);if(M.mod.isZero())return M.div;var t=0!==M.div.negative?M.mod.isub(A):M.mod,g=A.ushrn(1),I=A.andln(1),e=t.cmp(g);return e<0||1===I&&0===e?M.div:0!==M.div.negative?M.div.isubn(1):M.div.iaddn(1)},e.prototype.modn=function(A){g(A<=67108863);for(var M=(1<<26)%A,t=0,I=this.length-1;I>=0;I--)t=(M*t+(0|this.words[I]))%A;return t},e.prototype.idivn=function(A){g(A<=67108863);for(var M=0,t=this.length-1;t>=0;t--){var I=(0|this.words[t])+67108864*M;this.words[t]=I/A|0,M=I%A}return this.strip()},e.prototype.divn=function(A){return this.clone().idivn(A)},e.prototype.egcd=function(A){g(0===A.negative),g(!A.isZero());var M=this,t=A.clone();M=0!==M.negative?M.umod(A):M.clone();for(var I=new e(1),i=new e(0),T=new e(0),E=new e(1),N=0;M.isEven()&&t.isEven();)M.iushrn(1),t.iushrn(1),++N;for(var n=t.clone(),D=M.clone();!M.isZero();){for(var C=0,r=1;0==(M.words[0]&r)&&C<26;++C,r<<=1);if(C>0)for(M.iushrn(C);C-- >0;)(I.isOdd()||i.isOdd())&&(I.iadd(n),i.isub(D)),I.iushrn(1),i.iushrn(1);for(var c=0,o=1;0==(t.words[0]&o)&&c<26;++c,o<<=1);if(c>0)for(t.iushrn(c);c-- >0;)(T.isOdd()||E.isOdd())&&(T.iadd(n),E.isub(D)),T.iushrn(1),E.iushrn(1);M.cmp(t)>=0?(M.isub(t),I.isub(T),i.isub(E)):(t.isub(M),T.isub(I),E.isub(i))}return{a:T,b:E,gcd:t.iushln(N)}},e.prototype._invmp=function(A){g(0===A.negative),g(!A.isZero());var M=this,t=A.clone();M=0!==M.negative?M.umod(A):M.clone();for(var I,i=new e(1),T=new e(0),E=t.clone();M.cmpn(1)>0&&t.cmpn(1)>0;){for(var N=0,n=1;0==(M.words[0]&n)&&N<26;++N,n<<=1);if(N>0)for(M.iushrn(N);N-- >0;)i.isOdd()&&i.iadd(E),i.iushrn(1);for(var D=0,C=1;0==(t.words[0]&C)&&D<26;++D,C<<=1);if(D>0)for(t.iushrn(D);D-- >0;)T.isOdd()&&T.iadd(E),T.iushrn(1);M.cmp(t)>=0?(M.isub(t),i.isub(T)):(t.isub(M),T.isub(i))}return(I=0===M.cmpn(1)?i:T).cmpn(0)<0&&I.iadd(A),I},e.prototype.gcd=function(A){if(this.isZero())return A.abs();if(A.isZero())return this.abs();var M=this.clone(),t=A.clone();M.negative=0,t.negative=0;for(var g=0;M.isEven()&&t.isEven();g++)M.iushrn(1),t.iushrn(1);for(;;){for(;M.isEven();)M.iushrn(1);for(;t.isEven();)t.iushrn(1);var I=M.cmp(t);if(I<0){var e=M;M=t,t=e}else if(0===I||0===t.cmpn(1))break;M.isub(t)}return t.iushln(g)},e.prototype.invm=function(A){return this.egcd(A).a.umod(A)},e.prototype.isEven=function(){return 0==(1&this.words[0])},e.prototype.isOdd=function(){return 1==(1&this.words[0])},e.prototype.andln=function(A){return this.words[0]&A},e.prototype.bincn=function(A){g("number"==typeof A);var M=A%26,t=(A-M)/26,I=1<>>26,T&=67108863,this.words[i]=T}return 0!==e&&(this.words[i]=e,this.length++),this},e.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},e.prototype.cmpn=function(A){var M,t=A<0;if(0!==this.negative&&!t)return-1;if(0===this.negative&&t)return 1;if(this.strip(),this.length>1)M=1;else{t&&(A=-A),g(A<=67108863,"Number is too big");var I=0|this.words[0];M=I===A?0:IA.length)return 1;if(this.length=0;t--){var g=0|this.words[t],I=0|A.words[t];if(g!==I){gI&&(M=1);break}}return M},e.prototype.gtn=function(A){return 1===this.cmpn(A)},e.prototype.gt=function(A){return 1===this.cmp(A)},e.prototype.gten=function(A){return this.cmpn(A)>=0},e.prototype.gte=function(A){return this.cmp(A)>=0},e.prototype.ltn=function(A){return-1===this.cmpn(A)},e.prototype.lt=function(A){return-1===this.cmp(A)},e.prototype.lten=function(A){return this.cmpn(A)<=0},e.prototype.lte=function(A){return this.cmp(A)<=0},e.prototype.eqn=function(A){return 0===this.cmpn(A)},e.prototype.eq=function(A){return 0===this.cmp(A)},e.red=function(A){return new w(A)},e.prototype.toRed=function(A){return g(!this.red,"Already a number in reduction context"),g(0===this.negative,"red works only with positives"),A.convertTo(this)._forceRed(A)},e.prototype.fromRed=function(){return g(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},e.prototype._forceRed=function(A){return this.red=A,this},e.prototype.forceRed=function(A){return g(!this.red,"Already a number in reduction context"),this._forceRed(A)},e.prototype.redAdd=function(A){return g(this.red,"redAdd works only with red numbers"),this.red.add(this,A)},e.prototype.redIAdd=function(A){return g(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,A)},e.prototype.redSub=function(A){return g(this.red,"redSub works only with red numbers"),this.red.sub(this,A)},e.prototype.redISub=function(A){return g(this.red,"redISub works only with red numbers"),this.red.isub(this,A)},e.prototype.redShl=function(A){return g(this.red,"redShl works only with red numbers"),this.red.shl(this,A)},e.prototype.redMul=function(A){return g(this.red,"redMul works only with red numbers"),this.red._verify2(this,A),this.red.mul(this,A)},e.prototype.redIMul=function(A){return g(this.red,"redMul works only with red numbers"),this.red._verify2(this,A),this.red.imul(this,A)},e.prototype.redSqr=function(){return g(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},e.prototype.redISqr=function(){return g(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},e.prototype.redSqrt=function(){return g(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},e.prototype.redInvm=function(){return g(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},e.prototype.redNeg=function(){return g(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},e.prototype.redPow=function(A){return g(this.red&&!A.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,A)};var B={k256:null,p224:null,p192:null,p25519:null};function Q(A,M){this.name=A,this.p=new e(M,16),this.n=this.p.bitLength(),this.k=new e(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function a(){Q.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function h(){Q.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function s(){Q.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){Q.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function w(A){if("string"==typeof A){var M=e._prime(A);this.m=M.p,this.prime=M}else g(A.gtn(1),"modulus must be greater than 1"),this.m=A,this.prime=null}function j(A){w.call(this,A),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new e(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}Q.prototype._tmp=function(){var A=new e(null);return A.words=new Array(Math.ceil(this.n/13)),A},Q.prototype.ireduce=function(A){var M,t=A;do{this.split(t,this.tmp),M=(t=(t=this.imulK(t)).iadd(this.tmp)).bitLength()}while(M>this.n);var g=M0?t.isub(this.p):void 0!==t.strip?t.strip():t._strip(),t},Q.prototype.split=function(A,M){A.iushrn(this.n,0,M)},Q.prototype.imulK=function(A){return A.imul(this.k)},I(a,Q),a.prototype.split=function(A,M){for(var t=Math.min(A.length,9),g=0;g>>22,I=e}I>>>=22,A.words[g-10]=I,0===I&&A.length>10?A.length-=10:A.length-=9},a.prototype.imulK=function(A){A.words[A.length]=0,A.words[A.length+1]=0,A.length+=2;for(var M=0,t=0;t>>=26,A.words[t]=I,M=g}return 0!==M&&(A.words[A.length++]=M),A},e._prime=function(A){if(B[A])return B[A];var M;if("k256"===A)M=new a;else if("p224"===A)M=new h;else if("p192"===A)M=new s;else{if("p25519"!==A)throw new Error("Unknown prime "+A);M=new y}return B[A]=M,M},w.prototype._verify1=function(A){g(0===A.negative,"red works only with positives"),g(A.red,"red works only with red numbers")},w.prototype._verify2=function(A,M){g(0==(A.negative|M.negative),"red works only with positives"),g(A.red&&A.red===M.red,"red works only with red numbers")},w.prototype.imod=function(A){return this.prime?this.prime.ireduce(A)._forceRed(this):A.umod(this.m)._forceRed(this)},w.prototype.neg=function(A){return A.isZero()?A.clone():this.m.sub(A)._forceRed(this)},w.prototype.add=function(A,M){this._verify2(A,M);var t=A.add(M);return t.cmp(this.m)>=0&&t.isub(this.m),t._forceRed(this)},w.prototype.iadd=function(A,M){this._verify2(A,M);var t=A.iadd(M);return t.cmp(this.m)>=0&&t.isub(this.m),t},w.prototype.sub=function(A,M){this._verify2(A,M);var t=A.sub(M);return t.cmpn(0)<0&&t.iadd(this.m),t._forceRed(this)},w.prototype.isub=function(A,M){this._verify2(A,M);var t=A.isub(M);return t.cmpn(0)<0&&t.iadd(this.m),t},w.prototype.shl=function(A,M){return this._verify1(A),this.imod(A.ushln(M))},w.prototype.imul=function(A,M){return this._verify2(A,M),this.imod(A.imul(M))},w.prototype.mul=function(A,M){return this._verify2(A,M),this.imod(A.mul(M))},w.prototype.isqr=function(A){return this.imul(A,A.clone())},w.prototype.sqr=function(A){return this.mul(A,A)},w.prototype.sqrt=function(A){if(A.isZero())return A.clone();var M=this.m.andln(3);if(g(M%2==1),3===M){var t=this.m.add(new e(1)).iushrn(2);return this.pow(A,t)}for(var I=this.m.subn(1),i=0;!I.isZero()&&0===I.andln(1);)i++,I.iushrn(1);g(!I.isZero());var T=new e(1).toRed(this),E=T.redNeg(),N=this.m.subn(1).iushrn(1),n=this.m.bitLength();for(n=new e(2*n*n).toRed(this);0!==this.pow(n,N).cmp(E);)n.redIAdd(E);for(var D=this.pow(n,I),C=this.pow(A,I.addn(1).iushrn(1)),r=this.pow(A,I),c=i;0!==r.cmp(T);){for(var o=r,B=0;0!==o.cmp(T);B++)o=o.redSqr();g(B=0;g--){for(var N=M.words[g],n=E-1;n>=0;n--){var D=N>>n&1;I!==t[0]&&(I=this.sqr(I)),0!==D||0!==i?(i<<=1,i|=D,(4===++T||0===g&&0===n)&&(I=this.mul(I,t[i]),T=0,i=0)):T=0}E=26}return I},w.prototype.convertTo=function(A){var M=A.umod(this.m);return M===A?M.clone():M},w.prototype.convertFrom=function(A){var M=A.clone();return M.red=null,M},e.mont=function(A){return new j(A)},I(j,w),j.prototype.convertTo=function(A){return this.imod(A.ushln(this.shift))},j.prototype.convertFrom=function(A){var M=this.imod(A.mul(this.rinv));return M.red=null,M},j.prototype.imul=function(A,M){if(A.isZero()||M.isZero())return A.words[0]=0,A.length=1,A;var t=A.imul(M),g=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),I=t.isub(g).iushrn(this.shift),e=I;return I.cmp(this.m)>=0?e=I.isub(this.m):I.cmpn(0)<0&&(e=I.iadd(this.m)),e._forceRed(this)},j.prototype.mul=function(A,M){if(A.isZero()||M.isZero())return new e(0)._forceRed(this);var t=A.mul(M),g=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),I=t.isub(g).iushrn(this.shift),i=I;return I.cmp(this.m)>=0?i=I.isub(this.m):I.cmpn(0)<0&&(i=I.iadd(this.m)),i._forceRed(this)},j.prototype.invm=function(A){return this.imod(A._invmp(this.m).mul(this.r2))._forceRed(this)}}(A,this)}).call(this,t(92)(A))},function(A,M,t){"use strict";var g,I="object"==typeof Reflect?Reflect:null,e=I&&"function"==typeof I.apply?I.apply:function(A,M,t){return Function.prototype.apply.call(A,M,t)};g=I&&"function"==typeof I.ownKeys?I.ownKeys:Object.getOwnPropertySymbols?function(A){return Object.getOwnPropertyNames(A).concat(Object.getOwnPropertySymbols(A))}:function(A){return Object.getOwnPropertyNames(A)};var i=Number.isNaN||function(A){return A!=A};function T(){T.init.call(this)}A.exports=T,A.exports.once=function(A,M){return new Promise((function(t,g){function I(){void 0!==e&&A.removeListener("error",e),t([].slice.call(arguments))}var e;"error"!==M&&(e=function(t){A.removeListener(M,I),g(t)},A.once("error",e)),A.once(M,I)}))},T.EventEmitter=T,T.prototype._events=void 0,T.prototype._eventsCount=0,T.prototype._maxListeners=void 0;var E=10;function N(A){if("function"!=typeof A)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof A)}function n(A){return void 0===A._maxListeners?T.defaultMaxListeners:A._maxListeners}function D(A,M,t,g){var I,e,i,T;if(N(t),void 0===(e=A._events)?(e=A._events=Object.create(null),A._eventsCount=0):(void 0!==e.newListener&&(A.emit("newListener",M,t.listener?t.listener:t),e=A._events),i=e[M]),void 0===i)i=e[M]=t,++A._eventsCount;else if("function"==typeof i?i=e[M]=g?[t,i]:[i,t]:g?i.unshift(t):i.push(t),(I=n(A))>0&&i.length>I&&!i.warned){i.warned=!0;var E=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(M)+" listeners added. Use emitter.setMaxListeners() to increase limit");E.name="MaxListenersExceededWarning",E.emitter=A,E.type=M,E.count=i.length,T=E,console&&console.warn&&console.warn(T)}return A}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 r(A,M,t){var g={fired:!1,wrapFn:void 0,target:A,type:M,listener:t},I=C.bind(g);return I.listener=t,g.wrapFn=I,I}function c(A,M,t){var g=A._events;if(void 0===g)return[];var I=g[M];return void 0===I?[]:"function"==typeof I?t?[I.listener||I]:[I]:t?function(A){for(var M=new Array(A.length),t=0;t0&&(i=M[0]),i instanceof Error)throw i;var T=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw T.context=i,T}var E=I[A];if(void 0===E)return!1;if("function"==typeof E)e(E,this,M);else{var N=E.length,n=B(E,N);for(t=0;t=0;e--)if(t[e]===M||t[e].listener===M){i=t[e].listener,I=e;break}if(I<0)return this;0===I?t.shift():function(A,M){for(;M+1=0;g--)this.removeListener(A,M[g]);return this},T.prototype.listeners=function(A){return c(this,A,!0)},T.prototype.rawListeners=function(A){return c(this,A,!1)},T.listenerCount=function(A,M){return"function"==typeof A.listenerCount?A.listenerCount(M):o.call(A,M)},T.prototype.listenerCount=o,T.prototype.eventNames=function(){return this._eventsCount>0?g(this._events):[]}},function(A,M){var t,g,I=A.exports={};function e(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function T(A){if(t===setTimeout)return setTimeout(A,0);if((t===e||!t)&&setTimeout)return t=setTimeout,setTimeout(A,0);try{return t(A,0)}catch(M){try{return t.call(null,A,0)}catch(M){return t.call(this,A,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:e}catch(A){t=e}try{g="function"==typeof clearTimeout?clearTimeout:i}catch(A){g=i}}();var E,N=[],n=!1,D=-1;function C(){n&&E&&(n=!1,E.length?N=E.concat(N):D=-1,N.length&&r())}function r(){if(!n){var A=T(C);n=!0;for(var M=N.length;M;){for(E=N,N=[];++D1)for(var t=1;t + * @license MIT + */ +var g=t(111),I=t(112),e=t(59);function i(){return E.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function T(A,M){if(i()=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|A}function c(A,M){if(E.isBuffer(A))return A.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(A)||A instanceof ArrayBuffer))return A.byteLength;"string"!=typeof A&&(A=""+A);var t=A.length;if(0===t)return 0;for(var g=!1;;)switch(M){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":case void 0:return b(A).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*t;case"hex":return t>>>1;case"base64":return G(A).length;default:if(g)return b(A).length;M=(""+M).toLowerCase(),g=!0}}function o(A,M,t){var g=!1;if((void 0===M||M<0)&&(M=0),M>this.length)return"";if((void 0===t||t>this.length)&&(t=this.length),t<=0)return"";if((t>>>=0)<=(M>>>=0))return"";for(A||(A="utf8");;)switch(A){case"hex":return S(this,M,t);case"utf8":case"utf-8":return x(this,M,t);case"ascii":return Y(this,M,t);case"latin1":case"binary":return u(this,M,t);case"base64":return d(this,M,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return l(this,M,t);default:if(g)throw new TypeError("Unknown encoding: "+A);A=(A+"").toLowerCase(),g=!0}}function B(A,M,t){var g=A[M];A[M]=A[t],A[t]=g}function Q(A,M,t,g,I){if(0===A.length)return-1;if("string"==typeof t?(g=t,t=0):t>2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,isNaN(t)&&(t=I?0:A.length-1),t<0&&(t=A.length+t),t>=A.length){if(I)return-1;t=A.length-1}else if(t<0){if(!I)return-1;t=0}if("string"==typeof M&&(M=E.from(M,g)),E.isBuffer(M))return 0===M.length?-1:a(A,M,t,g,I);if("number"==typeof M)return M&=255,E.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?I?Uint8Array.prototype.indexOf.call(A,M,t):Uint8Array.prototype.lastIndexOf.call(A,M,t):a(A,[M],t,g,I);throw new TypeError("val must be string, number or Buffer")}function a(A,M,t,g,I){var e,i=1,T=A.length,E=M.length;if(void 0!==g&&("ucs2"===(g=String(g).toLowerCase())||"ucs-2"===g||"utf16le"===g||"utf-16le"===g)){if(A.length<2||M.length<2)return-1;i=2,T/=2,E/=2,t/=2}function N(A,M){return 1===i?A[M]:A.readUInt16BE(M*i)}if(I){var n=-1;for(e=t;eT&&(t=T-E),e=t;e>=0;e--){for(var D=!0,C=0;CI&&(g=I):g=I;var e=M.length;if(e%2!=0)throw new TypeError("Invalid hex string");g>e/2&&(g=e/2);for(var i=0;i>8,I=t%256,e.push(I),e.push(g);return e}(M,A.length-t),A,t,g)}function d(A,M,t){return 0===M&&t===A.length?g.fromByteArray(A):g.fromByteArray(A.slice(M,t))}function x(A,M,t){t=Math.min(A.length,t);for(var g=[],I=M;I239?4:N>223?3:N>191?2:1;if(I+D<=t)switch(D){case 1:N<128&&(n=N);break;case 2:128==(192&(e=A[I+1]))&&(E=(31&N)<<6|63&e)>127&&(n=E);break;case 3:e=A[I+1],i=A[I+2],128==(192&e)&&128==(192&i)&&(E=(15&N)<<12|(63&e)<<6|63&i)>2047&&(E<55296||E>57343)&&(n=E);break;case 4:e=A[I+1],i=A[I+2],T=A[I+3],128==(192&e)&&128==(192&i)&&128==(192&T)&&(E=(15&N)<<18|(63&e)<<12|(63&i)<<6|63&T)>65535&&E<1114112&&(n=E)}null===n?(n=65533,D=1):n>65535&&(n-=65536,g.push(n>>>10&1023|55296),n=56320|1023&n),g.push(n),I+=D}return function(A){var M=A.length;if(M<=4096)return String.fromCharCode.apply(String,A);var t="",g=0;for(;g0&&(A=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(A+=" ... ")),""},E.prototype.compare=function(A,M,t,g,I){if(!E.isBuffer(A))throw new TypeError("Argument must be a Buffer");if(void 0===M&&(M=0),void 0===t&&(t=A?A.length:0),void 0===g&&(g=0),void 0===I&&(I=this.length),M<0||t>A.length||g<0||I>this.length)throw new RangeError("out of range index");if(g>=I&&M>=t)return 0;if(g>=I)return-1;if(M>=t)return 1;if(this===A)return 0;for(var e=(I>>>=0)-(g>>>=0),i=(t>>>=0)-(M>>>=0),T=Math.min(e,i),N=this.slice(g,I),n=A.slice(M,t),D=0;DI)&&(t=I),A.length>0&&(t<0||M<0)||M>this.length)throw new RangeError("Attempt to write outside buffer bounds");g||(g="utf8");for(var e=!1;;)switch(g){case"hex":return h(this,A,M,t);case"utf8":case"utf-8":return s(this,A,M,t);case"ascii":return y(this,A,M,t);case"latin1":case"binary":return w(this,A,M,t);case"base64":return j(this,A,M,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,A,M,t);default:if(e)throw new TypeError("Unknown encoding: "+g);g=(""+g).toLowerCase(),e=!0}},E.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Y(A,M,t){var g="";t=Math.min(A.length,t);for(var I=M;Ig)&&(t=g);for(var I="",e=M;et)throw new RangeError("Trying to access beyond buffer length")}function U(A,M,t,g,I,e){if(!E.isBuffer(A))throw new TypeError('"buffer" argument must be a Buffer instance');if(M>I||MA.length)throw new RangeError("Index out of range")}function f(A,M,t,g){M<0&&(M=65535+M+1);for(var I=0,e=Math.min(A.length-t,2);I>>8*(g?I:1-I)}function O(A,M,t,g){M<0&&(M=4294967295+M+1);for(var I=0,e=Math.min(A.length-t,4);I>>8*(g?I:3-I)&255}function F(A,M,t,g,I,e){if(t+g>A.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function m(A,M,t,g,e){return e||F(A,0,t,4),I.write(A,M,t,g,23,4),t+4}function R(A,M,t,g,e){return e||F(A,0,t,8),I.write(A,M,t,g,52,8),t+8}E.prototype.slice=function(A,M){var t,g=this.length;if((A=~~A)<0?(A+=g)<0&&(A=0):A>g&&(A=g),(M=void 0===M?g:~~M)<0?(M+=g)<0&&(M=0):M>g&&(M=g),M0&&(I*=256);)g+=this[A+--M]*I;return g},E.prototype.readUInt8=function(A,M){return M||z(A,1,this.length),this[A]},E.prototype.readUInt16LE=function(A,M){return M||z(A,2,this.length),this[A]|this[A+1]<<8},E.prototype.readUInt16BE=function(A,M){return M||z(A,2,this.length),this[A]<<8|this[A+1]},E.prototype.readUInt32LE=function(A,M){return M||z(A,4,this.length),(this[A]|this[A+1]<<8|this[A+2]<<16)+16777216*this[A+3]},E.prototype.readUInt32BE=function(A,M){return M||z(A,4,this.length),16777216*this[A]+(this[A+1]<<16|this[A+2]<<8|this[A+3])},E.prototype.readIntLE=function(A,M,t){A|=0,M|=0,t||z(A,M,this.length);for(var g=this[A],I=1,e=0;++e=(I*=128)&&(g-=Math.pow(2,8*M)),g},E.prototype.readIntBE=function(A,M,t){A|=0,M|=0,t||z(A,M,this.length);for(var g=M,I=1,e=this[A+--g];g>0&&(I*=256);)e+=this[A+--g]*I;return e>=(I*=128)&&(e-=Math.pow(2,8*M)),e},E.prototype.readInt8=function(A,M){return M||z(A,1,this.length),128&this[A]?-1*(255-this[A]+1):this[A]},E.prototype.readInt16LE=function(A,M){M||z(A,2,this.length);var t=this[A]|this[A+1]<<8;return 32768&t?4294901760|t:t},E.prototype.readInt16BE=function(A,M){M||z(A,2,this.length);var t=this[A+1]|this[A]<<8;return 32768&t?4294901760|t:t},E.prototype.readInt32LE=function(A,M){return M||z(A,4,this.length),this[A]|this[A+1]<<8|this[A+2]<<16|this[A+3]<<24},E.prototype.readInt32BE=function(A,M){return M||z(A,4,this.length),this[A]<<24|this[A+1]<<16|this[A+2]<<8|this[A+3]},E.prototype.readFloatLE=function(A,M){return M||z(A,4,this.length),I.read(this,A,!0,23,4)},E.prototype.readFloatBE=function(A,M){return M||z(A,4,this.length),I.read(this,A,!1,23,4)},E.prototype.readDoubleLE=function(A,M){return M||z(A,8,this.length),I.read(this,A,!0,52,8)},E.prototype.readDoubleBE=function(A,M){return M||z(A,8,this.length),I.read(this,A,!1,52,8)},E.prototype.writeUIntLE=function(A,M,t,g){(A=+A,M|=0,t|=0,g)||U(this,A,M,t,Math.pow(2,8*t)-1,0);var I=1,e=0;for(this[M]=255&A;++e=0&&(e*=256);)this[M+I]=A/e&255;return M+t},E.prototype.writeUInt8=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,1,255,0),E.TYPED_ARRAY_SUPPORT||(A=Math.floor(A)),this[M]=255&A,M+1},E.prototype.writeUInt16LE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,2,65535,0),E.TYPED_ARRAY_SUPPORT?(this[M]=255&A,this[M+1]=A>>>8):f(this,A,M,!0),M+2},E.prototype.writeUInt16BE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,2,65535,0),E.TYPED_ARRAY_SUPPORT?(this[M]=A>>>8,this[M+1]=255&A):f(this,A,M,!1),M+2},E.prototype.writeUInt32LE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,4,4294967295,0),E.TYPED_ARRAY_SUPPORT?(this[M+3]=A>>>24,this[M+2]=A>>>16,this[M+1]=A>>>8,this[M]=255&A):O(this,A,M,!0),M+4},E.prototype.writeUInt32BE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,4,4294967295,0),E.TYPED_ARRAY_SUPPORT?(this[M]=A>>>24,this[M+1]=A>>>16,this[M+2]=A>>>8,this[M+3]=255&A):O(this,A,M,!1),M+4},E.prototype.writeIntLE=function(A,M,t,g){if(A=+A,M|=0,!g){var I=Math.pow(2,8*t-1);U(this,A,M,t,I-1,-I)}var e=0,i=1,T=0;for(this[M]=255&A;++e>0)-T&255;return M+t},E.prototype.writeIntBE=function(A,M,t,g){if(A=+A,M|=0,!g){var I=Math.pow(2,8*t-1);U(this,A,M,t,I-1,-I)}var e=t-1,i=1,T=0;for(this[M+e]=255&A;--e>=0&&(i*=256);)A<0&&0===T&&0!==this[M+e+1]&&(T=1),this[M+e]=(A/i>>0)-T&255;return M+t},E.prototype.writeInt8=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,1,127,-128),E.TYPED_ARRAY_SUPPORT||(A=Math.floor(A)),A<0&&(A=255+A+1),this[M]=255&A,M+1},E.prototype.writeInt16LE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,2,32767,-32768),E.TYPED_ARRAY_SUPPORT?(this[M]=255&A,this[M+1]=A>>>8):f(this,A,M,!0),M+2},E.prototype.writeInt16BE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,2,32767,-32768),E.TYPED_ARRAY_SUPPORT?(this[M]=A>>>8,this[M+1]=255&A):f(this,A,M,!1),M+2},E.prototype.writeInt32LE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,4,2147483647,-2147483648),E.TYPED_ARRAY_SUPPORT?(this[M]=255&A,this[M+1]=A>>>8,this[M+2]=A>>>16,this[M+3]=A>>>24):O(this,A,M,!0),M+4},E.prototype.writeInt32BE=function(A,M,t){return A=+A,M|=0,t||U(this,A,M,4,2147483647,-2147483648),A<0&&(A=4294967295+A+1),E.TYPED_ARRAY_SUPPORT?(this[M]=A>>>24,this[M+1]=A>>>16,this[M+2]=A>>>8,this[M+3]=255&A):O(this,A,M,!1),M+4},E.prototype.writeFloatLE=function(A,M,t){return m(this,A,M,!0,t)},E.prototype.writeFloatBE=function(A,M,t){return m(this,A,M,!1,t)},E.prototype.writeDoubleLE=function(A,M,t){return R(this,A,M,!0,t)},E.prototype.writeDoubleBE=function(A,M,t){return R(this,A,M,!1,t)},E.prototype.copy=function(A,M,t,g){if(t||(t=0),g||0===g||(g=this.length),M>=A.length&&(M=A.length),M||(M=0),g>0&&g=this.length)throw new RangeError("sourceStart out of bounds");if(g<0)throw new RangeError("sourceEnd out of bounds");g>this.length&&(g=this.length),A.length-M=0;--I)A[I+M]=this[I+t];else if(e<1e3||!E.TYPED_ARRAY_SUPPORT)for(I=0;I>>=0,t=void 0===t?this.length:t>>>0,A||(A=0),"number"==typeof A)for(e=M;e55295&&t<57344){if(!I){if(t>56319){(M-=3)>-1&&e.push(239,191,189);continue}if(i+1===g){(M-=3)>-1&&e.push(239,191,189);continue}I=t;continue}if(t<56320){(M-=3)>-1&&e.push(239,191,189),I=t;continue}t=65536+(I-55296<<10|t-56320)}else I&&(M-=3)>-1&&e.push(239,191,189);if(I=null,t<128){if((M-=1)<0)break;e.push(t)}else if(t<2048){if((M-=2)<0)break;e.push(t>>6|192,63&t|128)}else if(t<65536){if((M-=3)<0)break;e.push(t>>12|224,t>>6&63|128,63&t|128)}else{if(!(t<1114112))throw new Error("Invalid code point");if((M-=4)<0)break;e.push(t>>18|240,t>>12&63|128,t>>6&63|128,63&t|128)}}return e}function G(A){return g.toByteArray(function(A){if((A=function(A){return A.trim?A.trim():A.replace(/^\s+|\s+$/g,"")}(A).replace(k,"")).length<2)return"";for(;A.length%4!=0;)A+="=";return A}(A))}function J(A,M,t,g){for(var I=0;I=M.length||I>=A.length);++I)M[I+t]=A[I];return I}}).call(this,t(10))},function(A,M){var t;t=function(){return this}();try{t=t||new Function("return this")()}catch(A){"object"==typeof window&&(t=window)}A.exports=t},function(A,M){function t(A,M){if(!A)throw new Error(M||"Assertion failed")}A.exports=t,t.equal=function(A,M,t){if(A!=M)throw new Error(t||"Assertion failed: "+A+" != "+M)}},function(A,M,t){"use strict";var g=M,I=t(6),e=t(11),i=t(94);g.assert=e,g.toArray=i.toArray,g.zero2=i.zero2,g.toHex=i.toHex,g.encode=i.encode,g.getNAF=function(A,M,t){var g=new Array(Math.max(A.bitLength(),t)+1);g.fill(0);for(var I=1<(I>>1)-1?(I>>1)-E:E,e.isubn(T)):T=0,g[i]=T,e.iushrn(1)}return g},g.getJSF=function(A,M){var t=[[],[]];A=A.clone(),M=M.clone();for(var g=0,I=0;A.cmpn(-g)>0||M.cmpn(-I)>0;){var e,i,T,E=A.andln(3)+g&3,N=M.andln(3)+I&3;if(3===E&&(E=-1),3===N&&(N=-1),0==(1&E))e=0;else e=3!==(T=A.andln(7)+g&7)&&5!==T||2!==N?E:-E;if(t[0].push(e),0==(1&N))i=0;else i=3!==(T=M.andln(7)+I&7)&&5!==T||2!==E?N:-N;t[1].push(i),2*g===e+1&&(g=1-g),2*I===i+1&&(I=1-I),A.iushrn(1),M.iushrn(1)}return t},g.cachedProperty=function(A,M,t){var g="_"+M;A.prototype[M]=function(){return void 0!==this[g]?this[g]:this[g]=t.call(this)}},g.parseBytes=function(A){return"string"==typeof A?g.toArray(A,"hex"):A},g.intFromLE=function(A){return new I(A,"hex","le")}},function(A,M,t){"use strict";var g=function(){function A(){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}var M=A.prototype;return M.isComplete=function(){var A=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,M=!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&&M},M.isSeekable=function(){return!0===this.hasKeyframesIndex},M.getNearestKeyframe=function(A){if(null==this.keyframesIndex)return null;var M=this.keyframesIndex,t=this._search(M.times,A);return{index:t,milliseconds:M.times[t],fileposition:M.filepositions[t]}},M._search=function(A,M){var t=0,g=A.length-1,I=0,e=0,i=g;for(M=A[I]&&M=A.length)&&56320==(64512&A.charCodeAt(M+1)))}function i(A){return(A>>>24|A>>>8&65280|A<<8&16711680|(255&A)<<24)>>>0}function T(A){return 1===A.length?"0"+A:A}function E(A){return 7===A.length?"0"+A:6===A.length?"00"+A:5===A.length?"000"+A:4===A.length?"0000"+A:3===A.length?"00000"+A:2===A.length?"000000"+A:1===A.length?"0000000"+A:A}M.inherits=I,M.toArray=function(A,M){if(Array.isArray(A))return A.slice();if(!A)return[];var t=[];if("string"==typeof A)if(M){if("hex"===M)for((A=A.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(A="0"+A),I=0;I>6|192,t[g++]=63&i|128):e(A,I)?(i=65536+((1023&i)<<10)+(1023&A.charCodeAt(++I)),t[g++]=i>>18|240,t[g++]=i>>12&63|128,t[g++]=i>>6&63|128,t[g++]=63&i|128):(t[g++]=i>>12|224,t[g++]=i>>6&63|128,t[g++]=63&i|128)}else for(I=0;I>>0}return i},M.split32=function(A,M){for(var t=new Array(4*A.length),g=0,I=0;g>>24,t[I+1]=e>>>16&255,t[I+2]=e>>>8&255,t[I+3]=255&e):(t[I+3]=e>>>24,t[I+2]=e>>>16&255,t[I+1]=e>>>8&255,t[I]=255&e)}return t},M.rotr32=function(A,M){return A>>>M|A<<32-M},M.rotl32=function(A,M){return A<>>32-M},M.sum32=function(A,M){return A+M>>>0},M.sum32_3=function(A,M,t){return A+M+t>>>0},M.sum32_4=function(A,M,t,g){return A+M+t+g>>>0},M.sum32_5=function(A,M,t,g,I){return A+M+t+g+I>>>0},M.sum64=function(A,M,t,g){var I=A[M],e=g+A[M+1]>>>0,i=(e>>0,A[M+1]=e},M.sum64_hi=function(A,M,t,g){return(M+g>>>0>>0},M.sum64_lo=function(A,M,t,g){return M+g>>>0},M.sum64_4_hi=function(A,M,t,g,I,e,i,T){var E=0,N=M;return E+=(N=N+g>>>0)>>0)>>0)>>0},M.sum64_4_lo=function(A,M,t,g,I,e,i,T){return M+g+e+T>>>0},M.sum64_5_hi=function(A,M,t,g,I,e,i,T,E,N){var n=0,D=M;return n+=(D=D+g>>>0)>>0)>>0)>>0)>>0},M.sum64_5_lo=function(A,M,t,g,I,e,i,T,E,N){return M+g+e+T+N>>>0},M.rotr64_hi=function(A,M,t){return(M<<32-t|A>>>t)>>>0},M.rotr64_lo=function(A,M,t){return(A<<32-t|M>>>t)>>>0},M.shr64_hi=function(A,M,t){return A>>>t},M.shr64_lo=function(A,M,t){return(A<<32-t|M>>>t)>>>0}},function(A,M,t){var g=t(4).Buffer,I=t(135).Transform,e=t(24).StringDecoder;function i(A){I.call(this),this.hashMode="string"==typeof A,this.hashMode?this[A]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}t(3)(i,I),i.prototype.update=function(A,M,t){"string"==typeof A&&(A=g.from(A,M));var I=this._update(A);return this.hashMode?this:(t&&(I=this._toString(I,t)),I)},i.prototype.setAutoPadding=function(){},i.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},i.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},i.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},i.prototype._transform=function(A,M,t){var g;try{this.hashMode?this._update(A):this.push(this._update(A))}catch(A){g=A}finally{t(g)}},i.prototype._flush=function(A){var M;try{this.push(this.__final())}catch(A){M=A}A(M)},i.prototype._finalOrDigest=function(A){var M=this.__final()||g.alloc(0);return A&&(M=this._toString(M,A,!0)),M},i.prototype._toString=function(A,M,t){if(this._decoder||(this._decoder=new e(M),this._encoding=M),this._encoding!==M)throw new Error("can't switch encodings");var g=this._decoder.write(A);return t&&(g+=this._decoder.end()),g},A.exports=i},function(A,M,t){"use strict";var g=t(31),I=Object.keys||function(A){var M=[];for(var t in A)M.push(t);return M};A.exports=D;var e=Object.create(t(25));e.inherits=t(3);var i=t(72),T=t(43);e.inherits(D,i);for(var E=I(T.prototype),N=0;N0}),!1)}A.exports=function(A,M){M=M||{};var I={main:t.m},T=M.all?{main:Object.keys(I.main)}:function(A,M){for(var t={main:[M]},g={main:[]},I={main:{}};i(t);)for(var T=Object.keys(t),E=0;E4294967295)throw new RangeError("requested too many random bytes");var t=I.allocUnsafe(A);if(A>0)if(A>65536)for(var i=0;i2?"one of ".concat(M," ").concat(A.slice(0,t-1).join(", "),", or ")+A[t-1]:2===t?"one of ".concat(M," ").concat(A[0]," or ").concat(A[1]):"of ".concat(M," ").concat(A[0])}return"of ".concat(M," ").concat(String(A))}I("ERR_INVALID_OPT_VALUE",(function(A,M){return'The value "'+M+'" is invalid for option "'+A+'"'}),TypeError),I("ERR_INVALID_ARG_TYPE",(function(A,M,t){var g,I,i,T;if("string"==typeof M&&(I="not ",M.substr(!i||i<0?0:+i,I.length)===I)?(g="must not be",M=M.replace(/^not /,"")):g="must be",function(A,M,t){return(void 0===t||t>A.length)&&(t=A.length),A.substring(t-M.length,t)===M}(A," argument"))T="The ".concat(A," ").concat(g," ").concat(e(M,"type"));else{var E=function(A,M,t){return"number"!=typeof t&&(t=0),!(t+M.length>A.length)&&-1!==A.indexOf(M,t)}(A,".")?"property":"argument";T='The "'.concat(A,'" ').concat(E," ").concat(g," ").concat(e(M,"type"))}return T+=". Received type ".concat(typeof t)}),TypeError),I("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),I("ERR_METHOD_NOT_IMPLEMENTED",(function(A){return"The "+A+" method is not implemented"})),I("ERR_STREAM_PREMATURE_CLOSE","Premature close"),I("ERR_STREAM_DESTROYED",(function(A){return"Cannot call "+A+" after a stream was destroyed"})),I("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),I("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),I("ERR_STREAM_WRITE_AFTER_END","write after end"),I("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),I("ERR_UNKNOWN_ENCODING",(function(A){return"Unknown encoding: "+A}),TypeError),I("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),A.exports.codes=g},function(A,M,t){"use strict";(function(M){var g=Object.keys||function(A){var M=[];for(var t in A)M.push(t);return M};A.exports=N;var I=t(63),e=t(67);t(3)(N,I);for(var i=g(e.prototype),T=0;T=this._finalSize&&(this._update(this._block),this._block.fill(0));var t=8*this._len;if(t<=4294967295)this._block.writeUInt32BE(t,this._blockSize-4);else{var g=(4294967295&t)>>>0,I=(t-g)/4294967296;this._block.writeUInt32BE(I,this._blockSize-8),this._block.writeUInt32BE(g,this._blockSize-4)}this._update(this._block);var e=this._hash();return A?e.toString(A):e},I.prototype._update=function(){throw new Error("_update must be implemented by subclass")},A.exports=I},function(A,M,t){"use strict"; +/*! @name @videojs/vhs-utils @version 1.3.0 @license MIT */var g=function(){function A(){this.listeners={}}var M=A.prototype;return M.on=function(A,M){this.listeners[A]||(this.listeners[A]=[]),this.listeners[A].push(M)},M.off=function(A,M){if(!this.listeners[A])return!1;var t=this.listeners[A].indexOf(M);return this.listeners[A]=this.listeners[A].slice(0),this.listeners[A].splice(t,1),t>-1},M.trigger=function(A){var M=this.listeners[A];if(M)if(2===arguments.length)for(var t=M.length,g=0;g>5==6?2:A>>4==14?3:A>>3==30?4:A>>6==2?-1:-2}function T(A){var M=this.lastTotal-this.lastNeed,t=function(A,M,t){if(128!=(192&M[0]))return A.lastNeed=0,"�";if(A.lastNeed>1&&M.length>1){if(128!=(192&M[1]))return A.lastNeed=1,"�";if(A.lastNeed>2&&M.length>2&&128!=(192&M[2]))return A.lastNeed=2,"�"}}(this,A);return void 0!==t?t:this.lastNeed<=A.length?(A.copy(this.lastChar,M,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(A.copy(this.lastChar,M,0,A.length),void(this.lastNeed-=A.length))}function E(A,M){if((A.length-M)%2==0){var t=A.toString("utf16le",M);if(t){var g=t.charCodeAt(t.length-1);if(g>=55296&&g<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=A[A.length-2],this.lastChar[1]=A[A.length-1],t.slice(0,-1)}return t}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=A[A.length-1],A.toString("utf16le",M,A.length-1)}function N(A){var M=A&&A.length?this.write(A):"";if(this.lastNeed){var t=this.lastTotal-this.lastNeed;return M+this.lastChar.toString("utf16le",0,t)}return M}function n(A,M){var t=(A.length-M)%3;return 0===t?A.toString("base64",M):(this.lastNeed=3-t,this.lastTotal=3,1===t?this.lastChar[0]=A[A.length-1]:(this.lastChar[0]=A[A.length-2],this.lastChar[1]=A[A.length-1]),A.toString("base64",M,A.length-t))}function D(A){var M=A&&A.length?this.write(A):"";return this.lastNeed?M+this.lastChar.toString("base64",0,3-this.lastNeed):M}function C(A){return A.toString(this.encoding)}function r(A){return A&&A.length?this.write(A):""}M.StringDecoder=e,e.prototype.write=function(A){if(0===A.length)return"";var M,t;if(this.lastNeed){if(void 0===(M=this.fillLast(A)))return"";t=this.lastNeed,this.lastNeed=0}else t=0;return t=0)return I>0&&(A.lastNeed=I-1),I;if(--g=0)return I>0&&(A.lastNeed=I-2),I;if(--g=0)return I>0&&(2===I?I=0:A.lastNeed=I-3),I;return 0}(this,A,M);if(!this.lastNeed)return A.toString("utf8",M);this.lastTotal=t;var g=A.length-(t-this.lastNeed);return A.copy(this.lastChar,0,g),A.toString("utf8",M,g)},e.prototype.fillLast=function(A){if(this.lastNeed<=A.length)return A.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);A.copy(this.lastChar,this.lastTotal-this.lastNeed,0,A.length),this.lastNeed-=A.length}},function(A,M,t){(function(A){function t(A){return Object.prototype.toString.call(A)}M.isArray=function(A){return Array.isArray?Array.isArray(A):"[object Array]"===t(A)},M.isBoolean=function(A){return"boolean"==typeof A},M.isNull=function(A){return null===A},M.isNullOrUndefined=function(A){return null==A},M.isNumber=function(A){return"number"==typeof A},M.isString=function(A){return"string"==typeof A},M.isSymbol=function(A){return"symbol"==typeof A},M.isUndefined=function(A){return void 0===A},M.isRegExp=function(A){return"[object RegExp]"===t(A)},M.isObject=function(A){return"object"==typeof A&&null!==A},M.isDate=function(A){return"[object Date]"===t(A)},M.isError=function(A){return"[object Error]"===t(A)||A instanceof Error},M.isFunction=function(A){return"function"==typeof A},M.isPrimitive=function(A){return null===A||"boolean"==typeof A||"number"==typeof A||"string"==typeof A||"symbol"==typeof A||void 0===A},M.isBuffer=A.isBuffer}).call(this,t(9).Buffer)},function(A,M,t){(function(M){A.exports=function(A,t){for(var g=Math.min(A.length,t.length),I=new M(g),e=0;e=this._delta8){var t=(A=this.pending).length%this._delta8;this.pending=A.slice(A.length-t,A.length),0===this.pending.length&&(this.pending=null),A=g.join32(A,0,A.length-t,this.endian);for(var I=0;I>>24&255,g[I++]=A>>>16&255,g[I++]=A>>>8&255,g[I++]=255&A}else for(g[I++]=255&A,g[I++]=A>>>8&255,g[I++]=A>>>16&255,g[I++]=A>>>24&255,g[I++]=0,g[I++]=0,g[I++]=0,g[I++]=0,e=8;e=i-51&&(A[g]=A[g]*I--/50),t+=this.option.channels;this.startTime=E-51&&(t[e]=t[e]*i--/50),I+=this.option.channels;this.startTime32)throw new g.b("ExpGolomb: readBits() bits exceeded max 32bits!");if(A<=this._current_word_bits_left){var M=this._current_word>>>32-A;return this._current_word<<=A,this._current_word_bits_left-=A,M}var t=this._current_word_bits_left?this._current_word:0;t>>>=32-this._current_word_bits_left;var I=A-this._current_word_bits_left;this._fillCurrentWord();var e=Math.min(I,this._current_word_bits_left),i=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t=t<>>A))return this._current_word<<=A,this._current_word_bits_left-=A,A;return this._fillCurrentWord(),A+this._skipLeadingZero()},M.readUEG=function(){var A=this._skipLeadingZero();return this.readBits(A+1)-1},M.readSEG=function(){var A=this.readUEG();return 1&A?A+1>>>1:-1*(A>>>1)},A}(),e=function(){function A(){}return A._ebsp2rbsp=function(A){for(var M=A,t=M.byteLength,g=new Uint8Array(t),I=0,e=0;e=2&&3===M[e]&&0===M[e-1]&&0===M[e-2]||(g[I]=M[e],I++);return new Uint8Array(g.buffer,0,I)},A.parseSPS=function(M){var t=A._ebsp2rbsp(M),g=new I(t);g.readByte();var e=g.readByte();g.readByte();var i=g.readByte();g.readUEG();var T=A.getProfileString(e),E=A.getLevelString(i),N=1,n=420,D=8;if((100===e||110===e||122===e||244===e||44===e||83===e||86===e||118===e||128===e||138===e||144===e)&&(3===(N=g.readUEG())&&g.readBits(1),N<=3&&(n=[0,420,422,444][N]),D=g.readUEG()+8,g.readUEG(),g.readBits(1),g.readBool()))for(var C=3!==N?8:12,r=0;r0&&z<16?(d=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][z-1],x=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][z-1]):255===z&&(d=g.readByte()<<8|g.readByte(),x=g.readByte()<<8|g.readByte())}if(g.readBool()&&g.readBool(),g.readBool()&&(g.readBits(4),g.readBool()&&g.readBits(24)),g.readBool()&&(g.readUEG(),g.readUEG()),g.readBool()){var U=g.readBits(32),f=g.readBits(32);u=g.readBool(),Y=(S=f)/(l=2*U)}}var O=1;1===d&&1===x||(O=d/x);var F=0,m=0;0===N?(F=1,m=2-s):(F=3===N?1:2,m=(1===N?2:1)*(2-s));var R=16*(a+1),k=16*(h+1)*(2-s);R-=(y+w)*F,k-=(j+L)*m;var p=Math.ceil(R*O);return g.destroy(),g=null,{avc_profile:e,profile_string:T,avc_level:i,level_string:E,bit_depth:D,ref_frames:Q,chroma_format:n,chroma_format_string:A.getChromaFormatString(n),frame_rate:{fixed:u,fps:Y,fps_den:l,fps_num:S},sar_ratio:{width:d,height:x},codec_size:{width:R,height:k},present_size:{width:p,height:k}}},A._skipScalingList=function(A,M){for(var t=8,g=8,I=0;I>>24]^n[c>>>16&255]^D[o>>>8&255]^C[255&B]^M[Q++],i=N[c>>>24]^n[o>>>16&255]^D[B>>>8&255]^C[255&r]^M[Q++],T=N[o>>>24]^n[B>>>16&255]^D[r>>>8&255]^C[255&c]^M[Q++],E=N[B>>>24]^n[r>>>16&255]^D[c>>>8&255]^C[255&o]^M[Q++],r=e,c=i,o=T,B=E;return e=(g[r>>>24]<<24|g[c>>>16&255]<<16|g[o>>>8&255]<<8|g[255&B])^M[Q++],i=(g[c>>>24]<<24|g[o>>>16&255]<<16|g[B>>>8&255]<<8|g[255&r])^M[Q++],T=(g[o>>>24]<<24|g[B>>>16&255]<<16|g[r>>>8&255]<<8|g[255&c])^M[Q++],E=(g[B>>>24]<<24|g[r>>>16&255]<<16|g[c>>>8&255]<<8|g[255&o])^M[Q++],[e>>>=0,i>>>=0,T>>>=0,E>>>=0]}var T=[0,1,2,4,8,16,32,64,128,27,54],E=function(){for(var A=new Array(256),M=0;M<256;M++)A[M]=M<128?M<<1:M<<1^283;for(var t=[],g=[],I=[[],[],[],[]],e=[[],[],[],[]],i=0,T=0,E=0;E<256;++E){var N=T^T<<1^T<<2^T<<3^T<<4;N=N>>>8^255&N^99,t[i]=N,g[N]=i;var n=A[i],D=A[n],C=A[D],r=257*A[N]^16843008*N;I[0][i]=r<<24|r>>>8,I[1][i]=r<<16|r>>>16,I[2][i]=r<<8|r>>>24,I[3][i]=r,r=16843009*C^65537*D^257*n^16843008*i,e[0][N]=r<<24|r>>>8,e[1][N]=r<<16|r>>>16,e[2][N]=r<<8|r>>>24,e[3][N]=r,0===i?i=T=1:(i=n^A[A[A[C^n]]],T^=A[A[T]])}return{SBOX:t,INV_SBOX:g,SUB_MIX:I,INV_SUB_MIX:e}}();function N(A){this._key=I(A),this._reset()}N.blockSize=16,N.keySize=32,N.prototype.blockSize=N.blockSize,N.prototype.keySize=N.keySize,N.prototype._reset=function(){for(var A=this._key,M=A.length,t=M+6,g=4*(t+1),I=[],e=0;e>>24,i=E.SBOX[i>>>24]<<24|E.SBOX[i>>>16&255]<<16|E.SBOX[i>>>8&255]<<8|E.SBOX[255&i],i^=T[e/M|0]<<24):M>6&&e%M==4&&(i=E.SBOX[i>>>24]<<24|E.SBOX[i>>>16&255]<<16|E.SBOX[i>>>8&255]<<8|E.SBOX[255&i]),I[e]=I[e-M]^i}for(var N=[],n=0;n>>24]]^E.INV_SUB_MIX[1][E.SBOX[C>>>16&255]]^E.INV_SUB_MIX[2][E.SBOX[C>>>8&255]]^E.INV_SUB_MIX[3][E.SBOX[255&C]]}this._nRounds=t,this._keySchedule=I,this._invKeySchedule=N},N.prototype.encryptBlockRaw=function(A){return i(A=I(A),this._keySchedule,E.SUB_MIX,E.SBOX,this._nRounds)},N.prototype.encryptBlock=function(A){var M=this.encryptBlockRaw(A),t=g.allocUnsafe(16);return t.writeUInt32BE(M[0],0),t.writeUInt32BE(M[1],4),t.writeUInt32BE(M[2],8),t.writeUInt32BE(M[3],12),t},N.prototype.decryptBlock=function(A){var M=(A=I(A))[1];A[1]=A[3],A[3]=M;var t=i(A,this._invKeySchedule,E.INV_SUB_MIX,E.INV_SBOX,this._nRounds),e=g.allocUnsafe(16);return e.writeUInt32BE(t[0],0),e.writeUInt32BE(t[3],4),e.writeUInt32BE(t[2],8),e.writeUInt32BE(t[1],12),e},N.prototype.scrub=function(){e(this._keySchedule),e(this._invKeySchedule),e(this._key)},A.exports.AES=N},function(A,M,t){var g=t(4).Buffer,I=t(37);A.exports=function(A,M,t,e){if(g.isBuffer(A)||(A=g.from(A,"binary")),M&&(g.isBuffer(M)||(M=g.from(M,"binary")),8!==M.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var i=t/8,T=g.alloc(i),E=g.alloc(e||0),N=g.alloc(0);i>0||e>0;){var n=new I;n.update(N),n.update(A),M&&n.update(M),N=n.digest();var D=0;if(i>0){var C=T.length-i;D=Math.min(i,N.length),N.copy(T,C,0,D),i-=D}if(D0){var r=E.length-e,c=Math.min(e,N.length-D);N.copy(E,r,D,D+c),e-=c}}return N.fill(0),{key:T,iv:E}}},function(A,M,t){"use strict";var g=t(6),I=t(12),e=I.getNAF,i=I.getJSF,T=I.assert;function E(A,M){this.type=A,this.p=new g(M.p,16),this.red=M.prime?g.red(M.prime):g.mont(this.p),this.zero=new g(0).toRed(this.red),this.one=new g(1).toRed(this.red),this.two=new g(2).toRed(this.red),this.n=M.n&&new g(M.n,16),this.g=M.g&&this.pointFromJSON(M.g,M.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var t=this.n&&this.p.div(this.n);!t||t.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function N(A,M){this.curve=A,this.type=M,this.precomputed=null}A.exports=E,E.prototype.point=function(){throw new Error("Not implemented")},E.prototype.validate=function(){throw new Error("Not implemented")},E.prototype._fixedNafMul=function(A,M){T(A.precomputed);var t=A._getDoubles(),g=e(M,1,this._bitLength),I=(1<=E;M--)N=(N<<1)+g[M];i.push(N)}for(var n=this.jpoint(null,null,null),D=this.jpoint(null,null,null),C=I;C>0;C--){for(E=0;E=0;N--){for(M=0;N>=0&&0===i[N];N--)M++;if(N>=0&&M++,E=E.dblp(M),N<0)break;var n=i[N];T(0!==n),E="affine"===A.type?n>0?E.mixedAdd(I[n-1>>1]):E.mixedAdd(I[-n-1>>1].neg()):n>0?E.add(I[n-1>>1]):E.add(I[-n-1>>1].neg())}return"affine"===A.type?E.toP():E},E.prototype._wnafMulAdd=function(A,M,t,g,I){for(var T=this._wnafT1,E=this._wnafT2,N=this._wnafT3,n=0,D=0;D=1;D-=2){var r=D-1,c=D;if(1===T[r]&&1===T[c]){var o=[M[r],null,null,M[c]];0===M[r].y.cmp(M[c].y)?(o[1]=M[r].add(M[c]),o[2]=M[r].toJ().mixedAdd(M[c].neg())):0===M[r].y.cmp(M[c].y.redNeg())?(o[1]=M[r].toJ().mixedAdd(M[c]),o[2]=M[r].add(M[c].neg())):(o[1]=M[r].toJ().mixedAdd(M[c]),o[2]=M[r].toJ().mixedAdd(M[c].neg()));var B=[-3,-1,-5,-7,0,7,5,1,3],Q=i(t[r],t[c]);n=Math.max(Q[0].length,n),N[r]=new Array(n),N[c]=new Array(n);for(var a=0;a=0;D--){for(var j=0;D>=0;){var L=!0;for(a=0;a=0&&j++,y=y.dblp(j),D<0)break;for(a=0;a0?d=E[a][x-1>>1]:x<0&&(d=E[a][-x-1>>1].neg()),y="affine"===d.type?y.mixedAdd(d):y.add(d))}}for(D=0;D=Math.ceil((A.bitLength()+1)/M.step)},N.prototype._getDoubles=function(A,M){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var t=[this],g=this,I=0;I=128){M.push(String.fromCharCode(65535&i)),g+=2;continue}}}else if(t[g]<240){if(I(t,g,2)){var T=(15&t[g])<<12|(63&t[g+1])<<6|63&t[g+2];if(T>=2048&&55296!=(63488&T)){M.push(String.fromCharCode(65535&T)),g+=3;continue}}}else if(t[g]<248&&I(t,g,3)){var E=(7&t[g])<<18|(63&t[g+1])<<12|(63&t[g+2])<<6|63&t[g+3];if(E>65536&&E<1114112){E-=65536,M.push(String.fromCharCode(E>>>10|55296)),M.push(String.fromCharCode(1023&E|56320)),g+=4;continue}}M.push(String.fromCharCode(65533)),++g}return M.join("")},T=t(2),E=(e=new ArrayBuffer(2),new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]),N=function(){function A(){}return A.parseScriptData=function(M,t,I){var e={};try{var i=A.parseValue(M,t,I);if(I-i.size<1)return e;var T=A.parseValue(M,t+i.size,I-i.size);e[i.data]=T.data}catch(A){g.a.e("AMF",A.toString())}return e},A.parseObject=function(M,t,g){if(g<3)throw new T.a("Data not enough when parse ScriptDataObject");var I=A.parseString(M,t,g),e=A.parseValue(M,t+I.size,g-I.size),i=e.objectEnd;return{data:{name:I.data,value:e.data},size:I.size+e.size,objectEnd:i}},A.parseVariable=function(M,t,g){return A.parseObject(M,t,g)},A.parseString=function(A,M,t){if(t<2)throw new T.a("Data not enough when parse String");var g=new DataView(A,M,t).getUint16(0,!E);return{data:g>0?i(new Uint8Array(A,M+2,g)):"",size:2+g}},A.parseLongString=function(A,M,t){if(t<4)throw new T.a("Data not enough when parse LongString");var g=new DataView(A,M,t).getUint32(0,!E);return{data:g>0?i(new Uint8Array(A,M+4,g)):"",size:4+g}},A.parseDate=function(A,M,t){if(t<10)throw new T.a("Data size invalid when parse Date");var g=new DataView(A,M,t),I=g.getFloat64(0,!E),e=g.getInt16(8,!E);return{data:new Date(I+=60*e*1e3),size:10}},A.parseValue=function(M,t,I){if(I<1)throw new T.a("Data not enough when parse Value");var e,i=new DataView(M,t,I),N=1,n=i.getUint8(0),D=!1;try{switch(n){case 0:e=i.getFloat64(1,!E),N+=8;break;case 1:e=!!i.getUint8(1),N+=1;break;case 2:var C=A.parseString(M,t+1,I-1);e=C.data,N+=C.size;break;case 3:e={};var r=0;for(9==(16777215&i.getUint32(I-4,!E))&&(r=3);N>>2!=0,i=0!=(1&M[4]),T=(g=M)[I=5]<<24|g[I+1]<<16|g[I+2]<<8|g[I+3];return T<9?t:{match:!0,consumed:T,dataOffset:T,hasAudioTrack:e,hasVideoTrack:i}},e.bindDataSource=function(A){return A.onDataArrival=this.parseChunks.bind(this),this},e.resetMediaInfo=function(){this._mediaInfo=new C.a},e.pause=function(){this._pause=!0},e.resume=function(){this._pause=!1},e._onDataAvailableToSoftwareDecodeVideo=function(A,M){var t=M.samples,g=-1;for(t.length>1&&(g=0);t.length;){for(var I=t.shift(),e=0,i=0;i=0&&g++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,1,A,I.isKeyframe,E,e,I.pts,0,0))}},e._onDataAvailableToSoftwareDecodeAudio=function(A,M){var t=M.samples,g=-1;for(t.length>1&&(g=0);t.length;){var I=t.shift();this._callbackMediaDataFunc&&(g>=0&&g++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,2,A,0,I.unit,I.length,this._SampleRate,this._ChannelNum,this._SampleRate>=44100?32:16))}},e._isInitialMetadataDispatched=function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched},e.parseChunks=function(M,t){if(null!==M){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new T.a("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var I=0,e=this._littleEndian;if(0===t){if(!(M.byteLength>13))return 0;I=A.probe(M).dataOffset}if(this._firstParse)this._firstParse=!1,t+I!==this._dataOffset&&g.a.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==new DataView(M,I).getUint32(0,!e)&&g.a.w(this.TAG,"PrevTagSize0 !== 0 !!!"),I+=4;for(;IM.byteLength)break;var E=i.getUint8(0),N=16777215&i.getUint32(0,!e);if(I+11+N+4>M.byteLength)break;if(8===E||9===E||18===E){var n=i.getUint8(4),D=i.getUint8(5),C=i.getUint8(6)|D<<8|n<<16|i.getUint8(7)<<24;0!==(16777215&i.getUint32(7,!e))&&g.a.w(this.TAG,"Meet tag which has StreamID != 0!");var r=I+11;if(!this._pause)switch(E){case 8:this.audioCodecId=this._parseAudioData(M,r,N,C);break;case 9:this.videoCodecId=this._parseVideoData(M,r,N,C,t+I);break;case 18:this._parseScriptData(M,r,N)}var c=i.getUint32(11+N,!e);c!==11+N&&g.a.w(this.TAG,"Invalid PrevTagSize "+c),I+=11+N+4}else g.a.w(this.TAG,"Unsupported tag type "+E+", skipped"),I+=11+N+4}return this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&(7==this.videoCodecId?"auto"===this._config.decodeType||"hard"===this._config.decodeType?(this._onDataAvailable(this._audioTrack,this._videoTrack),this._callbackInitFlag||(this._callbackInitFlag=!0,this._callbackMediaDataFunc&&this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!1,1,0,0,null,0,0,0,0))):(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(27,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(10==this.audioCodecId?86018:0,this._audioTrack)):12==this.videoCodecId&&(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(173,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(10==this.audioCodecId?86018:0,this._audioTrack))):(this._debugProcCount++,this._debugProcCount>=60&&(console.log("InitialMetadataDispatched fail."),this._debugProcCount=0)),I}},e._parseScriptData=function(A,M,t){var I=N.parseScriptData(A,M,t);if(I.hasOwnProperty("onMetaData")){if(null==I.onMetaData||"object"!=typeof I.onMetaData)return void g.a.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&g.a.w(this.TAG,"Found another onMetaData tag!"),this._metadata=I;var 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){var i=Math.floor(e.duration*this._timescale);this._duration=i,this._mediaInfo.duration=i}}else this._mediaInfo.duration=0;if("number"==typeof e.framerate){var T=Math.floor(1e3*e.framerate);if(T>0){var 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;var n=e.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(n),e.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=e,g.a.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(I).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},I))},e._parseKeyframesIndex=function(A){for(var M=[],t=[],g=1;g>>4;if(2!==i&&10!==i)return this._onError(D.a.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+i),0;var T=0,E=(12&e)>>>2;if(!(E>=0&&E<=4))return this._onError(D.a.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+E),0;T=this._flvSoundRateTable[E];var N=1&e,n=this._audioMetadata,C=this._audioTrack;if(n||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),(n=this._audioMetadata={}).type="audio",n.id=C.id,n.timescale=this._timescale,n.duration=this._duration,n.audioSampleRate=T,n.channelCount=0===N?1:2),10===i){var r=this._parseAACAudioData(A,M+1,t-1);if(null==r)return 0;if(0===r.packetType){n.config&&g.a.w(this.TAG,"Found another AudioSpecificConfig!");var c=r.data;n.audioSampleRate=c.samplingRate,n.channelCount=c.channelCount,n.codec=c.codec,n.originalCodec=c.originalCodec,n.config=c.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale,g.a.v(this.TAG,"Parsed AudioSpecificConfig"),this._SampleRate=c.samplingRate,this._ChannelNum=c.channelCount,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",n);var o=this._mediaInfo;o.audioCodec=n.originalCodec,o.audioSampleRate=n.audioSampleRate,o.audioChannelCount=n.channelCount,o.hasVideo?null!=o.videoCodec&&(o.mimeType='video/x-flv; codecs="'+o.videoCodec+","+o.audioCodec+'"'):o.mimeType='video/x-flv; codecs="'+o.audioCodec+'"',o.isComplete()&&this._onMediaInfo(o)}else if(1===r.packetType){var B=this._timestampBase+I,Q={unit:r.data,length:r.data.byteLength,dts:B,pts:B};C.samples.push(Q),C.length+=r.data.length}else g.a.e(this.TAG,"Flv: Unsupported AAC data type "+r.packetType)}else if(2===i){if(!n.codec){var a=this._parseMP3AudioData(A,M+1,t-1,!0);if(null==a)return 0;n.audioSampleRate=a.samplingRate,n.channelCount=a.channelCount,n.codec=a.codec,n.originalCodec=a.originalCodec,n.refSampleDuration=1152/n.audioSampleRate*n.timescale,g.a.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",n);var h=this._mediaInfo;h.audioCodec=n.codec,h.audioSampleRate=n.audioSampleRate,h.audioChannelCount=n.channelCount,h.audioDataRate=a.bitRate,h.hasVideo?null!=h.videoCodec&&(h.mimeType='video/x-flv; codecs="'+h.videoCodec+","+h.audioCodec+'"'):h.mimeType='video/x-flv; codecs="'+h.audioCodec+'"',h.isComplete()&&this._onMediaInfo(h)}var s=this._parseMP3AudioData(A,M+1,t-1,!1);if(null==s)return 0;var y=this._timestampBase+I,w={unit:s,length:s.byteLength,dts:y,pts:y};C.samples.push(w),C.length+=s.length}return i},e._parseAACAudioData=function(A,M,t){if(!(t<=1)){var I={},e=new Uint8Array(A,M,t);return I.packetType=e[0],0===e[0]?I.data=this._parseAACAudioSpecificConfig(A,M+1,t-1):I.data=e.subarray(1),I}g.a.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!")},e._parseAACAudioSpecificConfig=function(A,M,t){var g,I,e=new Uint8Array(A,M,t),i=null,T=0,E=null;if(T=g=e[0]>>>3,(I=(7&e[0])<<1|e[1]>>>7)<0||I>=this._mpegSamplingRates.length)this._onError(D.a.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");else{var N=this._mpegSamplingRates[I],n=(120&e[1])>>>3;if(!(n<0||n>=8)){5===T&&(E=(7&e[1])<<1|e[2]>>>7,(124&e[2])>>>2);var C=self.navigator.userAgent.toLowerCase();return-1!==C.indexOf("firefox")?I>=6?(T=5,i=new Array(4),E=I-3):(T=2,i=new Array(2),E=I):-1!==C.indexOf("android")?(T=2,i=new Array(2),E=I):(T=5,E=I,i=new Array(4),I>=6?E=I-3:1===n&&(T=2,i=new Array(2),E=I)),i[0]=T<<3,i[0]|=(15&I)>>>1,i[1]=(15&I)<<7,i[1]|=(15&n)<<3,5===T&&(i[1]|=(15&E)>>>1,i[2]=(1&E)<<7,i[2]|=8,i[3]=0),{config:i,samplingRate:N,channelCount:n,codec:"mp4a.40."+T,originalCodec:"mp4a.40."+g}}this._onError(D.a.FORMAT_ERROR,"Flv: AAC invalid channel configuration")}},e._parseMP3AudioData=function(A,M,t,I){if(!(t<4)){this._littleEndian;var e=new Uint8Array(A,M,t),i=null;if(I){if(255!==e[0])return;var T=e[1]>>>3&3,E=(6&e[1])>>1,N=(240&e[2])>>>4,n=(12&e[2])>>>2,D=3!==(e[3]>>>6&3)?2:1,C=0,r=0;switch(T){case 0:C=this._mpegAudioV25SampleRateTable[n];break;case 2:C=this._mpegAudioV20SampleRateTable[n];break;case 3:C=this._mpegAudioV10SampleRateTable[n]}switch(E){case 1:34,N>>4,E=15&i;if(7===E||12===E)return this._parseAVCAndHEVCVideoPacket(E,A,M+1,t-1,I,e,T),E;this._onError(D.a.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+E)}},e._parseAVCAndHEVCVideoPacket=function(A,M,t,I,e,i,T){if(I<4)g.a.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");else{var E=this._littleEndian,N=new DataView(M,t,I),n=N.getUint8(0),C=(16777215&N.getUint32(0,!E))<<8>>8;if(0===n)7==A?(r.g("H264"),this._parseAVCDecoderConfigurationRecord(M,t+4,I-4)):(r.g("H265"),this._parseHEVCDecoderConfigurationRecord(M,t+4,I-4));else if(1===n)7==A?this._parseAVCVideoData(M,t+4,I-4,e,i,T,C):this._parseHEVCVideoData(M,t+4,I-4,e,i,T,C);else if(2!==n)return void this._onError(D.a.FORMAT_ERROR,"Flv: Invalid video packet type "+n)}},e._parseAVCDecoderConfigurationRecord=function(A,M,t){if(t<7)g.a.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var I=this._videoMetadata,e=this._videoTrack,i=this._littleEndian,T=new DataView(A,M,t);I?void 0!==I.avcc&&g.a.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(I=this._videoMetadata={}).type="video",I.id=e.id,I.timescale=this._timescale,I.duration=this._duration);var E=T.getUint8(0),N=T.getUint8(1);T.getUint8(2),T.getUint8(3);if(1===E&&0!==N)if(this._naluLengthSize=1+(3&T.getUint8(4)),3===this._naluLengthSize||4===this._naluLengthSize){var C=31&T.getUint8(5);if(0!==C){C>1&&g.a.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+C);for(var r=6,c=0;c1&&g.a.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+d),r++;for(var x=0;x=t){g.a.w(this.TAG,"Malformed Nalu near timestamp "+c+", offset = "+C+", dataSize = "+t);break}var Q=N.getUint32(C,!E);if(3===r&&(Q>>>=8),Q>t-r)return void g.a.w(this.TAG,"Malformed Nalus near timestamp "+c+", NaluSize > DataSize!");var a=31&N.getUint8(C+r);if(5===a&&(o=!0,n.length<1&&this._AVC_SPS&&this._AVC_SPS.length>0))if(B){var h={type:7,data:this._AVC_SPS};n.push(h),D+=h.data.length;var s={type:8,data:this._AVC_PPS};n.push(s),D+=s.data.length}else{var y=this._AVC_SPS.subarray(0,this._AVC_SPS.length),w=y.length-4;y[0]=w>>24,y[1]=w>>16,y[2]=w>>8,y[3]=255&w;var j={type:7,data:y};n.push(j),D+=j.data.length;var L=this._AVC_PPS.subarray(0,this._AVC_PPS.length),d=L.length-4;L[0]=d>>24,L[1]=d>>16,L[2]=d>>8,L[3]=255&d;var x={type:8,data:L};n.push(x),D+=x.data.length}var Y=new Uint8Array(A,M+C,r+Q),u={type:a,data:Y};n.push(u),D+=Y.byteLength,C+=r+Q}if(n.length){var S=this._videoTrack,l={units:n,length:D,isKeyframe:o,dts:c,cts:T,pts:c+T};o&&(l.fileposition=e),S.samples.push(l),S.length+=D}},e._parseHEVCDecoderConfigurationRecord=function(A,M,t){if(t<7)g.a.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var I=this._videoMetadata,e=this._videoTrack,i=this._littleEndian,T=new DataView(A,M,t);I?void 0!==I.avcc&&g.a.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(I=this._videoMetadata={}).type="video",I.id=e.id,I.timescale=this._timescale,I.duration=this._duration);var E=T.getUint8(0),N=T.getUint8(1),n=T.getUint8(2),D=T.getUint8(3);if(0===E&&0===N&&0===n&&1===D)console.log("H265 1");else{var C=22,r=T.getUint8(C);C+=1;for(var c=0;c=t){g.a.w(this.TAG,"Malformed Nalu near timestamp "+n+", offset = "+c+", dataSize = "+t);break}var o=N.getUint8(c),B=N.getUint8(c+1),Q=N.getUint8(c+2),a=N.getUint8(c+3);if(0===o&&0===B&&0===Q&&1===a)console.log("memcpy.....");else{var h=N.getUint32(c,!E);c+=4;N.getUint8(c);if(c+=1,h>t-4)return void g.a.w(this.TAG,"Malformed Nalus near timestamp "+n+", NaluSize > DataSize!");if(h+c-1>t)break;var s=N.getUint8(c-1),y=this._makeH265Header(s);if((32===s||34===s||36===s||38===s||40===s||42===s)&&C.length<1){if(this._HEVC_VPS){var w={type:5,data:this._HEVC_VPS};C.push(w),r+=this._HEVC_VPS.length}if(this._HEVC_SPS){var j={type:6,data:this._HEVC_SPS};C.push(j),r+=this._HEVC_SPS.length}if(this._HEVC_PPS){var L={type:7,data:this._HEVC_PPS};C.push(L),r+=this._HEVC_PPS.length}}if(1===y&&this._HEVC_VPS&&this._HEVC_VPS[0],M+c-1-4>=0&&h>0){var d=new Uint8Array(A,M+c-1-4,h+4);d[0]=0,d[1]=0,d[2]=0,d[3]=1;var x={type:5,data:d};C.push(x),r+=d.length}c+=h-1}}if(this._DebugBuf&&(this._DebugBufPos<1048576?(this._DebugBuf.set(data2,this._DebugBufPos),this._DebugBufPos+=data2.length):(console.log("DebugBuf: "+this._DebugBuf),this._DebugBufPos=0)),C.length){var Y=this._videoTrack,u={units:C,length:r,isKeyframe:D,dts:n,cts:T,pts:n+T};D&&(u.fileposition=e),Y.samples.push(u),Y.length+=r}},M=A,(t=[{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(A){this._onTrackMetadata=A}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(A){this._onMediaInfo=A}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(A){this._onMetaDataArrived=A}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(A){this._onScriptDataArrived=A}},{key:"onError",get:function(){return this._onError},set:function(A){this._onError=A}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(A){this._onDataAvailable=A}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(A){this._timestampBase=A}},{key:"overridedDuration",get:function(){return this._duration},set:function(A){this._durationOverrided=!0,this._duration=A,this._mediaInfo.duration=A}},{key:"overridedHasAudio",set:function(A){this._hasAudioFlagOverrided=!0,this._hasAudio=A,this._mediaInfo.hasAudio=A}},{key:"overridedHasVideo",set:function(A){this._hasVideoFlagOverrided=!0,this._hasVideo=A,this._mediaInfo.hasVideo=A}}])&&c(M.prototype,t),I&&c(M,I),A}();M.a=o},function(A,M,t){"use strict";var g=t(3),I=t(61),e=t(4).Buffer,i=new Array(16);function T(){I.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function E(A,M){return A<>>32-M}function N(A,M,t,g,I,e,i){return E(A+(M&t|~M&g)+I+e|0,i)+M|0}function n(A,M,t,g,I,e,i){return E(A+(M&g|t&~g)+I+e|0,i)+M|0}function D(A,M,t,g,I,e,i){return E(A+(M^t^g)+I+e|0,i)+M|0}function C(A,M,t,g,I,e,i){return E(A+(t^(M|~g))+I+e|0,i)+M|0}g(T,I),T.prototype._update=function(){for(var A=i,M=0;M<16;++M)A[M]=this._block.readInt32LE(4*M);var t=this._a,g=this._b,I=this._c,e=this._d;t=N(t,g,I,e,A[0],3614090360,7),e=N(e,t,g,I,A[1],3905402710,12),I=N(I,e,t,g,A[2],606105819,17),g=N(g,I,e,t,A[3],3250441966,22),t=N(t,g,I,e,A[4],4118548399,7),e=N(e,t,g,I,A[5],1200080426,12),I=N(I,e,t,g,A[6],2821735955,17),g=N(g,I,e,t,A[7],4249261313,22),t=N(t,g,I,e,A[8],1770035416,7),e=N(e,t,g,I,A[9],2336552879,12),I=N(I,e,t,g,A[10],4294925233,17),g=N(g,I,e,t,A[11],2304563134,22),t=N(t,g,I,e,A[12],1804603682,7),e=N(e,t,g,I,A[13],4254626195,12),I=N(I,e,t,g,A[14],2792965006,17),t=n(t,g=N(g,I,e,t,A[15],1236535329,22),I,e,A[1],4129170786,5),e=n(e,t,g,I,A[6],3225465664,9),I=n(I,e,t,g,A[11],643717713,14),g=n(g,I,e,t,A[0],3921069994,20),t=n(t,g,I,e,A[5],3593408605,5),e=n(e,t,g,I,A[10],38016083,9),I=n(I,e,t,g,A[15],3634488961,14),g=n(g,I,e,t,A[4],3889429448,20),t=n(t,g,I,e,A[9],568446438,5),e=n(e,t,g,I,A[14],3275163606,9),I=n(I,e,t,g,A[3],4107603335,14),g=n(g,I,e,t,A[8],1163531501,20),t=n(t,g,I,e,A[13],2850285829,5),e=n(e,t,g,I,A[2],4243563512,9),I=n(I,e,t,g,A[7],1735328473,14),t=D(t,g=n(g,I,e,t,A[12],2368359562,20),I,e,A[5],4294588738,4),e=D(e,t,g,I,A[8],2272392833,11),I=D(I,e,t,g,A[11],1839030562,16),g=D(g,I,e,t,A[14],4259657740,23),t=D(t,g,I,e,A[1],2763975236,4),e=D(e,t,g,I,A[4],1272893353,11),I=D(I,e,t,g,A[7],4139469664,16),g=D(g,I,e,t,A[10],3200236656,23),t=D(t,g,I,e,A[13],681279174,4),e=D(e,t,g,I,A[0],3936430074,11),I=D(I,e,t,g,A[3],3572445317,16),g=D(g,I,e,t,A[6],76029189,23),t=D(t,g,I,e,A[9],3654602809,4),e=D(e,t,g,I,A[12],3873151461,11),I=D(I,e,t,g,A[15],530742520,16),t=C(t,g=D(g,I,e,t,A[2],3299628645,23),I,e,A[0],4096336452,6),e=C(e,t,g,I,A[7],1126891415,10),I=C(I,e,t,g,A[14],2878612391,15),g=C(g,I,e,t,A[5],4237533241,21),t=C(t,g,I,e,A[12],1700485571,6),e=C(e,t,g,I,A[3],2399980690,10),I=C(I,e,t,g,A[10],4293915773,15),g=C(g,I,e,t,A[1],2240044497,21),t=C(t,g,I,e,A[8],1873313359,6),e=C(e,t,g,I,A[15],4264355552,10),I=C(I,e,t,g,A[6],2734768916,15),g=C(g,I,e,t,A[13],1309151649,21),t=C(t,g,I,e,A[4],4149444226,6),e=C(e,t,g,I,A[11],3174756917,10),I=C(I,e,t,g,A[2],718787259,15),g=C(g,I,e,t,A[9],3951481745,21),this._a=this._a+t|0,this._b=this._b+g|0,this._c=this._c+I|0,this._d=this._d+e|0},T.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var A=e.allocUnsafe(16);return A.writeInt32LE(this._a,0),A.writeInt32LE(this._b,4),A.writeInt32LE(this._c,8),A.writeInt32LE(this._d,12),A},A.exports=T},function(A,M,t){"use strict";var g=t(19).codes.ERR_STREAM_PREMATURE_CLOSE;function I(){}A.exports=function A(M,t,e){if("function"==typeof t)return A(M,null,t);t||(t={}),e=function(A){var M=!1;return function(){if(!M){M=!0;for(var t=arguments.length,g=new Array(t),I=0;I>>32-M}function o(A,M,t,g,I,e,i,T){return c(A+(M^t^g)+e+i|0,T)+I|0}function B(A,M,t,g,I,e,i,T){return c(A+(M&t|~M&g)+e+i|0,T)+I|0}function Q(A,M,t,g,I,e,i,T){return c(A+((M|~t)^g)+e+i|0,T)+I|0}function a(A,M,t,g,I,e,i,T){return c(A+(M&g|t&~g)+e+i|0,T)+I|0}function h(A,M,t,g,I,e,i,T){return c(A+(M^(t|~g))+e+i|0,T)+I|0}I(r,e),r.prototype._update=function(){for(var A=i,M=0;M<16;++M)A[M]=this._block.readInt32LE(4*M);for(var t=0|this._a,g=0|this._b,I=0|this._c,e=0|this._d,r=0|this._e,s=0|this._a,y=0|this._b,w=0|this._c,j=0|this._d,L=0|this._e,d=0;d<80;d+=1){var x,Y;d<16?(x=o(t,g,I,e,r,A[T[d]],D[0],N[d]),Y=h(s,y,w,j,L,A[E[d]],C[0],n[d])):d<32?(x=B(t,g,I,e,r,A[T[d]],D[1],N[d]),Y=a(s,y,w,j,L,A[E[d]],C[1],n[d])):d<48?(x=Q(t,g,I,e,r,A[T[d]],D[2],N[d]),Y=Q(s,y,w,j,L,A[E[d]],C[2],n[d])):d<64?(x=a(t,g,I,e,r,A[T[d]],D[3],N[d]),Y=B(s,y,w,j,L,A[E[d]],C[3],n[d])):(x=h(t,g,I,e,r,A[T[d]],D[4],N[d]),Y=o(s,y,w,j,L,A[E[d]],C[4],n[d])),t=r,r=e,e=c(I,10),I=g,g=x,s=L,L=j,j=c(w,10),w=y,y=Y}var u=this._b+I+j|0;this._b=this._c+e+L|0,this._c=this._d+r+s|0,this._d=this._e+t+y|0,this._e=this._a+g+w|0,this._a=u},r.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var A=g.alloc?g.alloc(20):new g(20);return A.writeInt32LE(this._a,0),A.writeInt32LE(this._b,4),A.writeInt32LE(this._c,8),A.writeInt32LE(this._d,12),A.writeInt32LE(this._e,16),A},A.exports=r},function(A,M,t){(M=A.exports=function(A){A=A.toLowerCase();var t=M[A];if(!t)throw new Error(A+" is not supported (we accept pull requests)");return new t}).sha=t(131),M.sha1=t(132),M.sha224=t(133),M.sha256=t(70),M.sha384=t(134),M.sha512=t(71)},function(A,M,t){(M=A.exports=t(72)).Stream=M,M.Readable=M,M.Writable=t(43),M.Duplex=t(16),M.Transform=t(75),M.PassThrough=t(141)},function(A,M,t){var g=t(9),I=g.Buffer;function e(A,M){for(var t in A)M[t]=A[t]}function i(A,M,t){return I(A,M,t)}I.from&&I.alloc&&I.allocUnsafe&&I.allocUnsafeSlow?A.exports=g:(e(g,M),M.Buffer=i),e(I,i),i.from=function(A,M,t){if("number"==typeof A)throw new TypeError("Argument must not be a number");return I(A,M,t)},i.alloc=function(A,M,t){if("number"!=typeof A)throw new TypeError("Argument must be a number");var g=I(A);return void 0!==M?"string"==typeof t?g.fill(M,t):g.fill(M):g.fill(0),g},i.allocUnsafe=function(A){if("number"!=typeof A)throw new TypeError("Argument must be a number");return I(A)},i.allocUnsafeSlow=function(A){if("number"!=typeof A)throw new TypeError("Argument must be a number");return g.SlowBuffer(A)}},function(A,M,t){"use strict";(function(M,g,I){var e=t(31);function i(A){var M=this;this.next=null,this.entry=null,this.finish=function(){!function(A,M,t){var g=A.entry;A.entry=null;for(;g;){var I=g.callback;M.pendingcb--,I(t),g=g.next}M.corkedRequestsFree?M.corkedRequestsFree.next=A:M.corkedRequestsFree=A}(M,A)}}A.exports=a;var T,E=!M.browser&&["v0.10","v0.9."].indexOf(M.version.slice(0,5))>-1?g:e.nextTick;a.WritableState=Q;var N=Object.create(t(25));N.inherits=t(3);var n={deprecate:t(68)},D=t(73),C=t(42).Buffer,r=I.Uint8Array||function(){};var c,o=t(74);function B(){}function Q(A,M){T=T||t(16),A=A||{};var g=M instanceof T;this.objectMode=!!A.objectMode,g&&(this.objectMode=this.objectMode||!!A.writableObjectMode);var I=A.highWaterMark,N=A.writableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=I||0===I?I:g&&(N||0===N)?N:n,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var D=!1===A.decodeStrings;this.decodeStrings=!D,this.defaultEncoding=A.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(A){!function(A,M){var t=A._writableState,g=t.sync,I=t.writecb;if(function(A){A.writing=!1,A.writecb=null,A.length-=A.writelen,A.writelen=0}(t),M)!function(A,M,t,g,I){--M.pendingcb,t?(e.nextTick(I,g),e.nextTick(L,A,M),A._writableState.errorEmitted=!0,A.emit("error",g)):(I(g),A._writableState.errorEmitted=!0,A.emit("error",g),L(A,M))}(A,t,g,M,I);else{var i=w(t);i||t.corked||t.bufferProcessing||!t.bufferedRequest||y(A,t),g?E(s,A,t,i,I):s(A,t,i,I)}}(M,A)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new i(this)}function a(A){if(T=T||t(16),!(c.call(a,this)||this instanceof T))return new a(A);this._writableState=new Q(A,this),this.writable=!0,A&&("function"==typeof A.write&&(this._write=A.write),"function"==typeof A.writev&&(this._writev=A.writev),"function"==typeof A.destroy&&(this._destroy=A.destroy),"function"==typeof A.final&&(this._final=A.final)),D.call(this)}function h(A,M,t,g,I,e,i){M.writelen=g,M.writecb=i,M.writing=!0,M.sync=!0,t?A._writev(I,M.onwrite):A._write(I,e,M.onwrite),M.sync=!1}function s(A,M,t,g){t||function(A,M){0===M.length&&M.needDrain&&(M.needDrain=!1,A.emit("drain"))}(A,M),M.pendingcb--,g(),L(A,M)}function y(A,M){M.bufferProcessing=!0;var t=M.bufferedRequest;if(A._writev&&t&&t.next){var g=M.bufferedRequestCount,I=new Array(g),e=M.corkedRequestsFree;e.entry=t;for(var T=0,E=!0;t;)I[T]=t,t.isBuf||(E=!1),t=t.next,T+=1;I.allBuffers=E,h(A,M,!0,M.length,I,"",e.finish),M.pendingcb++,M.lastBufferedRequest=null,e.next?(M.corkedRequestsFree=e.next,e.next=null):M.corkedRequestsFree=new i(M),M.bufferedRequestCount=0}else{for(;t;){var N=t.chunk,n=t.encoding,D=t.callback;if(h(A,M,!1,M.objectMode?1:N.length,N,n,D),t=t.next,M.bufferedRequestCount--,M.writing)break}null===t&&(M.lastBufferedRequest=null)}M.bufferedRequest=t,M.bufferProcessing=!1}function w(A){return A.ending&&0===A.length&&null===A.bufferedRequest&&!A.finished&&!A.writing}function j(A,M){A._final((function(t){M.pendingcb--,t&&A.emit("error",t),M.prefinished=!0,A.emit("prefinish"),L(A,M)}))}function L(A,M){var t=w(M);return t&&(!function(A,M){M.prefinished||M.finalCalled||("function"==typeof A._final?(M.pendingcb++,M.finalCalled=!0,e.nextTick(j,A,M)):(M.prefinished=!0,A.emit("prefinish")))}(A,M),0===M.pendingcb&&(M.finished=!0,A.emit("finish"))),t}N.inherits(a,D),Q.prototype.getBuffer=function(){for(var A=this.bufferedRequest,M=[];A;)M.push(A),A=A.next;return M},function(){try{Object.defineProperty(Q.prototype,"buffer",{get:n.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(A){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(c=Function.prototype[Symbol.hasInstance],Object.defineProperty(a,Symbol.hasInstance,{value:function(A){return!!c.call(this,A)||this===a&&(A&&A._writableState instanceof Q)}})):c=function(A){return A instanceof this},a.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},a.prototype.write=function(A,M,t){var g,I=this._writableState,i=!1,T=!I.objectMode&&(g=A,C.isBuffer(g)||g instanceof r);return T&&!C.isBuffer(A)&&(A=function(A){return C.from(A)}(A)),"function"==typeof M&&(t=M,M=null),T?M="buffer":M||(M=I.defaultEncoding),"function"!=typeof t&&(t=B),I.ended?function(A,M){var t=new Error("write after end");A.emit("error",t),e.nextTick(M,t)}(this,t):(T||function(A,M,t,g){var I=!0,i=!1;return null===t?i=new TypeError("May not write null values to stream"):"string"==typeof t||void 0===t||M.objectMode||(i=new TypeError("Invalid non-string/buffer chunk")),i&&(A.emit("error",i),e.nextTick(g,i),I=!1),I}(this,I,A,t))&&(I.pendingcb++,i=function(A,M,t,g,I,e){if(!t){var i=function(A,M,t){A.objectMode||!1===A.decodeStrings||"string"!=typeof M||(M=C.from(M,t));return M}(M,g,I);g!==i&&(t=!0,I="buffer",g=i)}var T=M.objectMode?1:g.length;M.length+=T;var E=M.length-1))throw new TypeError("Unknown encoding: "+A);return this._writableState.defaultEncoding=A,this},Object.defineProperty(a.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),a.prototype._write=function(A,M,t){t(new Error("_write() is not implemented"))},a.prototype._writev=null,a.prototype.end=function(A,M,t){var g=this._writableState;"function"==typeof A?(t=A,A=null,M=null):"function"==typeof M&&(t=M,M=null),null!=A&&this.write(A,M),g.corked&&(g.corked=1,this.uncork()),g.ending||g.finished||function(A,M,t){M.ending=!0,L(A,M),t&&(M.finished?e.nextTick(t):A.once("finish",t));M.ended=!0,A.writable=!1}(this,g,t)},Object.defineProperty(a.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(A){this._writableState&&(this._writableState.destroyed=A)}}),a.prototype.destroy=o.destroy,a.prototype._undestroy=o.undestroy,a.prototype._destroy=function(A,M){this.end(),M(A)}}).call(this,t(8),t(139).setImmediate,t(10))},function(A,M,t){"use strict";var g=t(11);function I(A){this.options=A,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}A.exports=I,I.prototype._init=function(){},I.prototype.update=function(A){return 0===A.length?[]:"decrypt"===this.type?this._updateDecrypt(A):this._updateEncrypt(A)},I.prototype._buffer=function(A,M){for(var t=Math.min(this.buffer.length-this.bufferOff,A.length-M),g=0;g0;g--)M+=this._buffer(A,M),t+=this._flushBuffer(I,t);return M+=this._buffer(A,M),I},I.prototype.final=function(A){var M,t;return A&&(M=this.update(A)),t="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),M?M.concat(t):t},I.prototype._pad=function(A,M){if(0===M)return!1;for(;M=0||!t.umod(A.prime1)||!t.umod(A.prime2);)t=new g(I(M));return t}A.exports=e,e.getr=i}).call(this,t(9).Buffer)},function(A,M,t){"use strict";var g=M;g.version=t(171).version,g.utils=t(12),g.rand=t(47),g.curve=t(95),g.curves=t(50),g.ec=t(182),g.eddsa=t(186)},function(A,M,t){"use strict";var g,I=M,e=t(51),i=t(95),T=t(12).assert;function E(A){"short"===A.type?this.curve=new i.short(A):"edwards"===A.type?this.curve=new i.edwards(A):this.curve=new i.mont(A),this.g=this.curve.g,this.n=this.curve.n,this.hash=A.hash,T(this.g.validate(),"Invalid curve"),T(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function N(A,M){Object.defineProperty(I,A,{configurable:!0,enumerable:!0,get:function(){var t=new E(M);return Object.defineProperty(I,A,{configurable:!0,enumerable:!0,value:t}),t}})}I.PresetCurve=E,N("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:e.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),N("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:e.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),N("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:e.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),N("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:e.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),N("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:e.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),N("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:e.sha256,gRed:!1,g:["9"]}),N("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:e.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{g=t(181)}catch(A){g=void 0}N("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:e.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",g]})},function(A,M,t){var g=M;g.utils=t(14),g.common=t(27),g.sha=t(175),g.ripemd=t(179),g.hmac=t(180),g.sha1=g.sha.sha1,g.sha256=g.sha.sha256,g.sha224=g.sha.sha224,g.sha384=g.sha.sha384,g.sha512=g.sha.sha512,g.ripemd160=g.ripemd.ripemd160},function(A,M,t){"use strict";(function(M){var g,I=t(9),e=I.Buffer,i={};for(g in I)I.hasOwnProperty(g)&&"SlowBuffer"!==g&&"Buffer"!==g&&(i[g]=I[g]);var T=i.Buffer={};for(g in e)e.hasOwnProperty(g)&&"allocUnsafe"!==g&&"allocUnsafeSlow"!==g&&(T[g]=e[g]);if(i.Buffer.prototype=e.prototype,T.from&&T.from!==Uint8Array.from||(T.from=function(A,M,t){if("number"==typeof A)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof A);if(A&&void 0===A.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof A);return e(A,M,t)}),T.alloc||(T.alloc=function(A,M,t){if("number"!=typeof A)throw new TypeError('The "size" argument must be of type number. Received type '+typeof A);if(A<0||A>=2*(1<<30))throw new RangeError('The value "'+A+'" is invalid for option "size"');var g=e(A);return M&&0!==M.length?"string"==typeof t?g.fill(M,t):g.fill(M):g.fill(0),g}),!i.kStringMaxLength)try{i.kStringMaxLength=M.binding("buffer").kStringMaxLength}catch(A){}i.constants||(i.constants={MAX_LENGTH:i.kMaxLength},i.kStringMaxLength&&(i.constants.MAX_STRING_LENGTH=i.kStringMaxLength)),A.exports=i}).call(this,t(8))},function(A,M,t){"use strict";var g=t(54).Reporter,I=t(28).EncoderBuffer,e=t(28).DecoderBuffer,i=t(11),T=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],E=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(T);function N(A,M,t){var g={};this._baseState=g,g.name=t,g.enc=A,g.parent=M||null,g.children=null,g.tag=null,g.args=null,g.reverseArgs=null,g.choice=null,g.optional=!1,g.any=!1,g.obj=!1,g.use=null,g.useDecoder=null,g.key=null,g.default=null,g.explicit=null,g.implicit=null,g.contains=null,g.parent||(g.children=[],this._wrap())}A.exports=N;var n=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];N.prototype.clone=function(){var A=this._baseState,M={};n.forEach((function(t){M[t]=A[t]}));var t=new this.constructor(M.parent);return t._baseState=M,t},N.prototype._wrap=function(){var A=this._baseState;E.forEach((function(M){this[M]=function(){var t=new this.constructor(this);return A.children.push(t),t[M].apply(t,arguments)}}),this)},N.prototype._init=function(A){var M=this._baseState;i(null===M.parent),A.call(this),M.children=M.children.filter((function(A){return A._baseState.parent===this}),this),i.equal(M.children.length,1,"Root node can have only one child")},N.prototype._useArgs=function(A){var M=this._baseState,t=A.filter((function(A){return A instanceof this.constructor}),this);A=A.filter((function(A){return!(A instanceof this.constructor)}),this),0!==t.length&&(i(null===M.children),M.children=t,t.forEach((function(A){A._baseState.parent=this}),this)),0!==A.length&&(i(null===M.args),M.args=A,M.reverseArgs=A.map((function(A){if("object"!=typeof A||A.constructor!==Object)return A;var M={};return Object.keys(A).forEach((function(t){t==(0|t)&&(t|=0);var g=A[t];M[g]=t})),M})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(A){N.prototype[A]=function(){var M=this._baseState;throw new Error(A+" not implemented for encoding: "+M.enc)}})),T.forEach((function(A){N.prototype[A]=function(){var M=this._baseState,t=Array.prototype.slice.call(arguments);return i(null===M.tag),M.tag=A,this._useArgs(t),this}})),N.prototype.use=function(A){i(A);var M=this._baseState;return i(null===M.use),M.use=A,this},N.prototype.optional=function(){return this._baseState.optional=!0,this},N.prototype.def=function(A){var M=this._baseState;return i(null===M.default),M.default=A,M.optional=!0,this},N.prototype.explicit=function(A){var M=this._baseState;return i(null===M.explicit&&null===M.implicit),M.explicit=A,this},N.prototype.implicit=function(A){var M=this._baseState;return i(null===M.explicit&&null===M.implicit),M.implicit=A,this},N.prototype.obj=function(){var A=this._baseState,M=Array.prototype.slice.call(arguments);return A.obj=!0,0!==M.length&&this._useArgs(M),this},N.prototype.key=function(A){var M=this._baseState;return i(null===M.key),M.key=A,this},N.prototype.any=function(){return this._baseState.any=!0,this},N.prototype.choice=function(A){var M=this._baseState;return i(null===M.choice),M.choice=A,this._useArgs(Object.keys(A).map((function(M){return A[M]}))),this},N.prototype.contains=function(A){var M=this._baseState;return i(null===M.use),M.contains=A,this},N.prototype._decode=function(A,M){var t=this._baseState;if(null===t.parent)return A.wrapResult(t.children[0]._decode(A,M));var g,I=t.default,i=!0,T=null;if(null!==t.key&&(T=A.enterKey(t.key)),t.optional){var E=null;if(null!==t.explicit?E=t.explicit:null!==t.implicit?E=t.implicit:null!==t.tag&&(E=t.tag),null!==E||t.any){if(i=this._peekTag(A,E,t.any),A.isError(i))return i}else{var N=A.save();try{null===t.choice?this._decodeGeneric(t.tag,A,M):this._decodeChoice(A,M),i=!0}catch(A){i=!1}A.restore(N)}}if(t.obj&&i&&(g=A.enterObject()),i){if(null!==t.explicit){var n=this._decodeTag(A,t.explicit);if(A.isError(n))return n;A=n}var D=A.offset;if(null===t.use&&null===t.choice){var C;t.any&&(C=A.save());var r=this._decodeTag(A,null!==t.implicit?t.implicit:t.tag,t.any);if(A.isError(r))return r;t.any?I=A.raw(C):A=r}if(M&&M.track&&null!==t.tag&&M.track(A.path(),D,A.length,"tagged"),M&&M.track&&null!==t.tag&&M.track(A.path(),A.offset,A.length,"content"),t.any||(I=null===t.choice?this._decodeGeneric(t.tag,A,M):this._decodeChoice(A,M)),A.isError(I))return I;if(t.any||null!==t.choice||null===t.children||t.children.forEach((function(t){t._decode(A,M)})),t.contains&&("octstr"===t.tag||"bitstr"===t.tag)){var c=new e(I);I=this._getUse(t.contains,A._reporterState.obj)._decode(c,M)}}return t.obj&&i&&(I=A.leaveObject(g)),null===t.key||null===I&&!0!==i?null!==T&&A.exitKey(T):A.leaveKey(T,t.key,I),I},N.prototype._decodeGeneric=function(A,M,t){var g=this._baseState;return"seq"===A||"set"===A?null:"seqof"===A||"setof"===A?this._decodeList(M,A,g.args[0],t):/str$/.test(A)?this._decodeStr(M,A,t):"objid"===A&&g.args?this._decodeObjid(M,g.args[0],g.args[1],t):"objid"===A?this._decodeObjid(M,null,null,t):"gentime"===A||"utctime"===A?this._decodeTime(M,A,t):"null_"===A?this._decodeNull(M,t):"bool"===A?this._decodeBool(M,t):"objDesc"===A?this._decodeStr(M,A,t):"int"===A||"enum"===A?this._decodeInt(M,g.args&&g.args[0],t):null!==g.use?this._getUse(g.use,M._reporterState.obj)._decode(M,t):M.error("unknown tag: "+A)},N.prototype._getUse=function(A,M){var t=this._baseState;return t.useDecoder=this._use(A,M),i(null===t.useDecoder._baseState.parent),t.useDecoder=t.useDecoder._baseState.children[0],t.implicit!==t.useDecoder._baseState.implicit&&(t.useDecoder=t.useDecoder.clone(),t.useDecoder._baseState.implicit=t.implicit),t.useDecoder},N.prototype._decodeChoice=function(A,M){var t=this._baseState,g=null,I=!1;return Object.keys(t.choice).some((function(e){var i=A.save(),T=t.choice[e];try{var E=T._decode(A,M);if(A.isError(E))return!1;g={type:e,value:E},I=!0}catch(M){return A.restore(i),!1}return!0}),this),I?g:A.error("Choice not matched")},N.prototype._createEncoderBuffer=function(A){return new I(A,this.reporter)},N.prototype._encode=function(A,M,t){var g=this._baseState;if(null===g.default||g.default!==A){var I=this._encodeValue(A,M,t);if(void 0!==I&&!this._skipDefault(I,M,t))return I}},N.prototype._encodeValue=function(A,M,t){var I=this._baseState;if(null===I.parent)return I.children[0]._encode(A,M||new g);var e=null;if(this.reporter=M,I.optional&&void 0===A){if(null===I.default)return;A=I.default}var i=null,T=!1;if(I.any)e=this._createEncoderBuffer(A);else if(I.choice)e=this._encodeChoice(A,M);else if(I.contains)i=this._getUse(I.contains,t)._encode(A,M),T=!0;else if(I.children)i=I.children.map((function(t){if("null_"===t._baseState.tag)return t._encode(null,M,A);if(null===t._baseState.key)return M.error("Child should have a key");var g=M.enterKey(t._baseState.key);if("object"!=typeof A)return M.error("Child expected, but input is not object");var I=t._encode(A[t._baseState.key],M,A);return M.leaveKey(g),I}),this).filter((function(A){return A})),i=this._createEncoderBuffer(i);else if("seqof"===I.tag||"setof"===I.tag){if(!I.args||1!==I.args.length)return M.error("Too many args for : "+I.tag);if(!Array.isArray(A))return M.error("seqof/setof, but data is not Array");var E=this.clone();E._baseState.implicit=null,i=this._createEncoderBuffer(A.map((function(t){var g=this._baseState;return this._getUse(g.args[0],A)._encode(t,M)}),E))}else null!==I.use?e=this._getUse(I.use,t)._encode(A,M):(i=this._encodePrimitive(I.tag,A),T=!0);if(!I.any&&null===I.choice){var N=null!==I.implicit?I.implicit:I.tag,n=null===I.implicit?"universal":"context";null===N?null===I.use&&M.error("Tag could be omitted only for .use()"):null===I.use&&(e=this._encodeComposite(N,T,n,i))}return null!==I.explicit&&(e=this._encodeComposite(I.explicit,!1,"context",e)),e},N.prototype._encodeChoice=function(A,M){var t=this._baseState,g=t.choice[A.type];return g||i(!1,A.type+" not found in "+JSON.stringify(Object.keys(t.choice))),g._encode(A.value,M)},N.prototype._encodePrimitive=function(A,M){var t=this._baseState;if(/str$/.test(A))return this._encodeStr(M,A);if("objid"===A&&t.args)return this._encodeObjid(M,t.reverseArgs[0],t.args[1]);if("objid"===A)return this._encodeObjid(M,null,null);if("gentime"===A||"utctime"===A)return this._encodeTime(M,A);if("null_"===A)return this._encodeNull();if("int"===A||"enum"===A)return this._encodeInt(M,t.args&&t.reverseArgs[0]);if("bool"===A)return this._encodeBool(M);if("objDesc"===A)return this._encodeStr(M,A);throw new Error("Unsupported tag: "+A)},N.prototype._isNumstr=function(A){return/^[0-9 ]*$/.test(A)},N.prototype._isPrintstr=function(A){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(A)}},function(A,M,t){"use strict";var g=t(3);function I(A){this._reporterState={obj:null,path:[],options:A||{},errors:[]}}function e(A,M){this.path=A,this.rethrow(M)}M.Reporter=I,I.prototype.isError=function(A){return A instanceof e},I.prototype.save=function(){var A=this._reporterState;return{obj:A.obj,pathLen:A.path.length}},I.prototype.restore=function(A){var M=this._reporterState;M.obj=A.obj,M.path=M.path.slice(0,A.pathLen)},I.prototype.enterKey=function(A){return this._reporterState.path.push(A)},I.prototype.exitKey=function(A){var M=this._reporterState;M.path=M.path.slice(0,A-1)},I.prototype.leaveKey=function(A,M,t){var g=this._reporterState;this.exitKey(A),null!==g.obj&&(g.obj[M]=t)},I.prototype.path=function(){return this._reporterState.path.join("/")},I.prototype.enterObject=function(){var A=this._reporterState,M=A.obj;return A.obj={},M},I.prototype.leaveObject=function(A){var M=this._reporterState,t=M.obj;return M.obj=A,t},I.prototype.error=function(A){var M,t=this._reporterState,g=A instanceof e;if(M=g?A:new e(t.path.map((function(A){return"["+JSON.stringify(A)+"]"})).join(""),A.message||A,A.stack),!t.options.partial)throw M;return g||t.errors.push(M),M},I.prototype.wrapResult=function(A){var M=this._reporterState;return M.options.partial?{result:this.isError(A)?null:A,errors:M.errors}:A},g(e,Error),e.prototype.rethrow=function(A){if(this.message=A+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,e),!this.stack)try{throw new Error(this.message)}catch(A){this.stack=A.stack}return this}},function(A,M,t){"use strict";function g(A){var M={};return Object.keys(A).forEach((function(t){(0|t)==t&&(t|=0);var g=A[t];M[g]=t})),M}M.tagClass={0:"universal",1:"application",2:"context",3:"private"},M.tagClassByName=g(M.tagClass),M.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},M.tagByName=g(M.tag)},function(A,M,t){"use strict";var g,I=function(){return void 0===g&&(g=Boolean(window&&document&&document.all&&!window.atob)),g},e=function(){var A={};return function(M){if(void 0===A[M]){var t=document.querySelector(M);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(A){t=null}A[M]=t}return A[M]}}(),i=[];function T(A){for(var M=-1,t=0;t>>6),!((I=(60&A[M+2])>>>2)>n.length-1))return i=(1&A[M+2])<<2,i|=(192&A[M+3])>>>6,/firefox/i.test(E)?I>=6?(g=5,T=new Array(4),e=I-3):(g=2,T=new Array(2),e=I):-1!==E.indexOf("android")?(g=2,T=new Array(2),e=I):(g=5,T=new Array(4),t&&(-1!==t.indexOf("mp4a.40.29")||-1!==t.indexOf("mp4a.40.5"))||!t&&I>=6?e=I-3:((t&&-1!==t.indexOf("mp4a.40.2")&&(I>=6&&1===i||/vivaldi/i.test(E))||!t&&1===i)&&(g=2,T=new Array(2)),e=I)),T[0]=g<<3,T[0]|=(14&I)>>1,T[1]|=(1&I)<<7,T[1]|=i<<3,5===g&&(T[1]|=(14&e)>>1,T[2]=(1&e)<<7,T[2]|=8,T[3]=0),{config:T,samplerate:n[I],channelCount:i,codec:"mp4a.40."+g,manifestCodec:N};console.log("ADTS parse fail. reason: 'invalid ADTS sampling index:${adtsSampleingIndex}'")}function e(A,M){return 255===A[M]&&240==(246&A[M+1])}function T(A,M){return 1&A[M+1]?7:9}function E(A,M){return(3&A[M+3])<<11|A[M+4]<<3|(224&A[M+5])>>>5}function N(A,M){return!!(M+10&&M+e+i<=N)return{headerLength:e,frameLength:i,stamp:t+g*I}}(M,t,g,I,D(A));if(e){var i=e.stamp,N=e.headerLength,n=e.frameLength;return{sample:{unit:M.subarray(t+N,t+N+n),pts:i,dts:i},length:n+N}}}var r=function(){function A(A){this.data=A,this.bytesAvailable=A.byteLength,this.word=0,this.bitsAvailable=0}var M=A.prototype;return M.loadWord=function(){var A=this.data,M=this.bytesAvailable,t=A.byteLength-M,g=new Uint8Array(4),I=Math.min(4,M);if(0===I)throw new Error("no bytes available");g.set(A.subarray(t,t+I)),this.word=new DataView(g.buffer).getUint32(0),this.bitsAvailable=8*I,this.bytesAvailable-=I},M.skipBits=function(A){var M;this.bitsAvailable>A?(this.word<<=A,this.bitsAvailable-=A):(A-=this.bitsAvailable,A-=(M=A>>3)>>3,this.bytesAvailable-=M,this.loadWord(),this.word<<=A,this.bitsAvailable-=A)},M.readBits=function(A){var M=Math.min(this.bitsAvailable,A),t=this.word>>>32-M;return A>32&&logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=M,this.bitsAvailable>0?this.word<<=M:this.bytesAvailable>0&&this.loadWord(),(M=A-M)>0&&this.bitsAvailable?t<>>A))return this.word<<=A,this.bitsAvailable-=A,A;return this.loadWord(),A+this.skipLZ()},M.skipUEG=function(){this.skipBits(1+this.skipLZ())},M.skipEG=function(){this.skipBits(1+this.skipLZ())},M.readUEG=function(){var A=this.skipLZ();return this.readBits(A+1)-1},M.readEG=function(){var A=this.readUEG();return 1&A?1+A>>>1:-1*(A>>>1)},M.readBoolean=function(){return 1===this.readBits(1)},M.readUByte=function(){return this.readBits(8)},M.readUShort=function(){return this.readBits(16)},M.readUInt=function(){return this.readBits(32)},M.skipScalingList=function(A){var M,t=8,g=8;for(M=0;M0)console.log("EXCEPTION:: No used...");else{var g=-1;for(t.length>1&&(g=0);t.length;){for(var I=t.shift(),e=0,i=0;i=0&&g++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,1,A,I.isKeyframe,E,e,I.pts,0,0))}}},e._onDataAvailableToSoftwareDecodeAudio=function(A,M){var t=M.samples,g=-1;for(t.length>1&&(g=0);t.length;){var I=t.shift();this._callbackMediaDataFunc&&(g>=0&&g++,this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!0,2,A,0,I.unit,I.length,this._SampleRate,this._ChannelNum,this._SampleRate>=44100?32:16))}},A.createTrack=function(A,M){return{container:"video"===A||"audio"===A?"video/mp2t":void 0,type:A,id:RemuxerTrackIdConfig[A],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:"video"===A?0:void 0,isAAC:"audio"===A||void 0,duration:"audio"===A?M:void 0,isHEVC:0}},A._syncOffset=function(A){for(var M=Math.min(1e3,A.length-564),t=0;t1;){var D=new Uint8Array(n[0].length+n[1].length);D.set(n[0]),D.set(n[1],n[0].length),n[0]=D,n.splice(1,1)}if(1===((M=n[0])[0]<<16)+(M[1]<<8)+M[2]){if((g=(M[4]<<8)+M[5])&&g>A.size-6)return null;if(192&(t=M[7])&&((i=536870912*(14&M[9])+4194304*(255&M[10])+16384*(254&M[11])+128*(255&M[12])+(254&M[13])/2)>4294967295&&(i-=4294967295),64&t?((T=536870912*(14&M[14])+4194304*(255&M[15])+16384*(254&M[16])+128*(255&M[17])+(254&M[18])/2)>4294967295&&(T-=4294967295),i-T>54e5&&(logger.warn(Math.round((i-T)/9e4)+"s delta between PTS and DTS, align them"),i=T)):T=i),E=(I=M[8])+9,A.size<=E)return null;A.size-=E,e=new Uint8Array(A.size);for(var C=0,r=n.length;Cc){E-=c;continue}M=M.subarray(E),c-=E,E=0}e.set(M,N),N+=c}return g&&(g-=I+3),{data:e,pts:i,dts:T,len:g}}return null}},e.pushAccesUnit=function(A,M){if(A.units.length&&A.frame){var t=M.samples,g=t.length;if(isNaN(A.pts)){if(!g)return void M.dropped++;var I=t[g-1];A.pts=I.pts,A.dts=I.dts}!this.config.forceKeyFrameOnDiscontinuity||!0===A.key||M.sps&&(g||this.contiguous)?(A.id=g,t.push(A)):M.dropped++}A.debug.length&&logger.log(A.pts+"/"+A.dts+":"+A.debug)},e.parseAVCPES=function(A,M,t){var g=this,I=0;(0===this.startVideoPts||A.pts>24&255,I[1]=t>>16&255,I[2]=t>>8&255,I[3]=255&t,I.set(M.data,4);var e={type:M.type,data:I};switch(E+=I.length,T.push(e),M.type){case 1:!0;var D=M.data;if(n&&D.length>4){var C=new r(D).readSliceType();2!==C&&4!==C&&7!==C&&9!==C||console.log("key = true")}break;case 5:!0,g.findKeyframe=!1,N=!0;break;case 6:!0;var o=new r(g.discardEPB(M.data));o.readUByte();for(var B=0,Q=0,a=!1,h=0;!a&&o.bytesAvailable>1;){B=0;do{B+=h=o.readUByte()}while(255===h);Q=0;do{Q+=h=o.readUByte()}while(255===h);if(4===B&&0!==o.bytesAvailable){if(a=!0,181===o.readUByte())if(49===o.readUShort())if(1195456820===o.readUInt())if(3===o.readUByte()){var s=o.readUByte(),y=31&s,w=[s,o.readUByte()];for(i=0;i16){var j=[];for(i=0;i<16;i++)j.push(o.readUByte().toString(16)),3!==i&&5!==i&&7!==i&&9!==i||j.push("-");var L=Q-16,d=new Uint8Array(L);for(i=0;i>8,m.avcc[R++]=g._AVC_SPS.length-4&255;var p=g._AVC_SPS.subarray(4,g._AVC_SPS.length);m.avcc.set(p,R),R+=p.length,m.avcc[R++]=1,m.avcc[R++]=g._AVC_PPS.length-4>>8,m.avcc[R++]=g._AVC_PPS.length-4&255;var b=g._AVC_PPS.subarray(4,g._AVC_PPS.length);m.avcc.set(b,R),R+=b.length,m.avcc[k]=1}g._onTrackMetadata("video",m)}break;case 9:case 12:default:!1}}));var D=(A.pts-this.startVideoPts)/90;N&&this.syncVideoPts<1&&(this.syncVideoPts=this.startVideoPts);var C=this._videoTrack,o={units:T,length:E,isKeyframe:N,dts:D,cts:0,pts:D};N&&(o.fileposition=this.tagPosition),0!==this.reset||this.findKeyframe||(C.samples.push(o),C.length+=E),this.filePosition+=E,this.accurateTimeOffset=o.pts,this.lastVideoPts=A.pts,1===I&&(this.seekVideoHistoryPts=D),M&&0===this.reset&&("auto"===this._config.decodeType||"hard"===this._config.decodeType?this._onDataAvailable(this._audioTrack,this._videoTrack):(this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(27,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(86018,this._audioTrack)))},e.parseHEVCPES=function(A,M,t){(0===this.startVideoPts||A.pts32){var T=0;for(T=0;T<32;T++)if(0===A.data[T]&&0===A.data[T+1]&&0===A.data[T+2]&&1===A.data[T+3]&&64===A.data[T+4]){i=1,this.findKeyframe=!1;break}}g.push(e);var E=(A.pts-this.startVideoPts)/90;i&&this.syncVideoPts<1&&(this.syncVideoPts=this.startVideoPts);var N=this._videoTrack,n={units:g,length:I,isKeyframe:i,dts:E,cts:0,pts:E};i&&(n.fileposition=this.tagPosition),N.samples.push(n),N.length+=I,this._videoTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeVideo(173,this._videoTrack),this._audioTrack.samples.length>0&&this._onDataAvailableToSoftwareDecodeAudio(86018,this._audioTrack)},e._insertSampleInOrder=function(A,M){var t=A.length;if(t>0){if(M.pts>=A[t-1].pts)A.push(M);else for(var g=t-1;g>=0;g--)if(M.pts=0)9!=(t={data:A.subarray(E,I-i-1),type:g}).type&&T.push(t);else;I=0&&i>=0&&(t={data:A.subarray(E,e),type:g,state:i},T.push(t)),0===T.length){var N=this._getLastNalUnit();if(N){var n=new Uint8Array(N.data.byteLength+A.byteLength);n.set(N.data,0),n.set(A,N.data.byteLength),N.data=n}}return T},e.discardEPB=function(A){for(var M,t,g=A.byteLength,I=[],e=1;e1&&(console.log("AAC: align PTS for overlapping frames by "+Math.round((j-o)/90)),o=j)}for(;I0&&(this.syncAudioPts=this.syncVideoPts),this.syncAudioPts>0&&(r.samples.push(x),r.length+=L.length)),I+=L.length,e=L.sample.pts,g++}else I++;B=I>4>1){if((T=I+5+M[I+4])===I+188)continue}else T=I+4;switch(i){case C:e&&(o&&(E=this.parsePES(o))&&(1==this.isHEVC?this.parseHEVCPES(E,!1,g):this.parseAVCPES(E,!1,g)),o={data:[],size:0}),o&&(o.data.push(M.subarray(T,I+188)),o.size+=I+188-T);break;case r:e&&(B&&(E=this.parsePES(B))&&(this.isAAC?this.parseAACPES(E,!1):this.parseMPEGPES(E)),B={data:[],size:0}),B&&(B.data.push(M.subarray(T,I+188)),B.size+=I+188-T);break;case c:e&&(Q&&(E=this.parsePES(Q))&&parseID3PES(E),Q={data:[],size:0}),Q&&(Q.data.push(M.subarray(T,I+188)),Q.size+=I+188-T);break;case 0:e&&(T+=M[T]+1),N=this.parsePAT(M,T);break;case N:e&&(T+=M[T]+1);var s=this.parsePMT(M,T,!1,!1);C=s.avc,s.hevc>0&&(C=s.hevc,this.isHEVC=1),C>0&&(this.avcTrackPid=C),!this._callbackInitFlag&&this._callbackMediaDataFunc&&(this._callbackInitFlag=!0,1===this.isHEVC||"auto"!==this._config.decodeType&&"hard"!==this._config.decodeType||this._callbackMediaDataFunc(this._callbackMediaDataUserPtr,!1,1,0,0,null,0,0,0,0)),(r=s.audio)>0&&(this.audioTrackPid=r,this.isAAC=s.isAAC),(c=s.id3)>0&&(this.id3TrackPid=c),D&&!a&&(logger.log("reparse from beginning"),D=!1,I=h-188),a=!0;break;case 17:case 8191:break;default:D=!0}}else console.log("parse error... reason: 'TS packet did not start with 0x47'");o&&(E=this.parsePES(o))?(1==this.isHEVC?this.parseHEVCPES(E,!0,g):this.parseAVCPES(E,!0,g),this.avcTrackPesData=null):this.avcTrackPesData=o,B&&(E=this.parsePES(B))?(this.isAAC?this.parseAACPES(E,!0):this.parseMPEGPES(E),this.audioTrackPesData=null):(B&&B.size&&logger.log("last AAC PES packet truncated,might overlap between fragments"),this.audioTrackPesData=B),Q&&(E=this.parsePES(Q))?(parseID3PES(E),this.id3TrackPesData=null):this.id3TrackPesData=Q}},M=A,(t=[{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(A){this._onTrackMetadata=A}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(A){this._onMediaInfo=A}},{key:"onMetaDataArrived",get:function(){return this._onMetaDataArrived},set:function(A){this._onMetaDataArrived=A}},{key:"onScriptDataArrived",get:function(){return this._onScriptDataArrived},set:function(A){this._onScriptDataArrived=A}},{key:"onError",get:function(){return this._onError},set:function(A){this._onError=A}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(A){this._onDataAvailable=A}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(A){this._timestampBase=A}},{key:"overridedDuration",get:function(){return this._duration},set:function(A){this._durationOverrided=!0,this._duration=A,this._mediaInfo.duration=A}},{key:"overridedHasAudio",set:function(A){this._hasAudioFlagOverrided=!0,this._hasAudio=A,this._mediaInfo.hasAudio=A}},{key:"overridedHasVideo",set:function(A){this._hasVideoFlagOverrided=!0,this._hasVideo=A,this._mediaInfo.hasVideo=A}}])&&B(M.prototype,t),I&&B(M,I),A}();M.a=Q},function(A,M){var t={}.toString;A.exports=Array.isArray||function(A){return"[object Array]"==t.call(A)}},function(A,M,t){"use strict";t.r(M),function(A,g,I,e){var i=t(0),T=(t(117),""),E=void 0!==E?E:{};function N(){var M,i={};for(M in E)E.hasOwnProperty(M)&&(i[M]=E[M]);var N=[],n="./this.program",D=function(A,M){throw M},C=!1,r=!1,c=!1,o=!1,B=!1;if(C="object"==typeof window,r="function"==typeof importScripts,o="object"==typeof A&&"object"==typeof A.versions&&"string"==typeof A.versions.node,c=o&&!C&&!r,B=!C&&!c&&!r,E.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var Q,a,h,s,y="";function w(A){return E.locateFile?E.locateFile(A,y):y+A}if(c)y=g+"/",Q=function(A,M){var g;return h||(h=t(121)),s||(s=t(122)),A=s.normalize(A),g=h.readFileSync(A),M?g:g.toString()},a=function(A){var M=Q(A,!0);return M.buffer||(M=new Uint8Array(M)),F(M.buffer),M},A.argv.length>1&&(n=A.argv[1].replace(/\\/g,"/")),N=A.argv.slice(2),I.exports=E,A.on("uncaughtException",(function(A){if(!(A instanceof Wt))throw A})),A.on("unhandledRejection",mA),D=function(M){A.exit(M)},E.inspect=function(){return"[Emscripten Module object]"};else if(B)"undefined"!=typeof read&&(Q=function(A){return read(A)}),a=function(A){var M;return"function"==typeof readbuffer?new Uint8Array(readbuffer(A)):(F("object"==typeof(M=read(A,"binary"))),M)},"undefined"!=typeof scriptArgs?N=scriptArgs:void 0!==arguments&&(N=arguments),"function"==typeof quit&&(D=function(A){quit(A)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print);else{if(!C&&!r)throw new Error("environment detection error");r?y=self.location.href:document.currentScript&&(y=document.currentScript.src),y=0!==y.indexOf("blob:")?y.substr(0,y.lastIndexOf("/")+1):"",Q=function(A){var M=new XMLHttpRequest;return M.open("GET",A,!1),M.send(null),M.responseText},r&&(a=function(A){var M=new XMLHttpRequest;return M.open("GET",A,!1),M.responseType="arraybuffer",M.send(null),new Uint8Array(M.response)}),function(A,M,t){var g=new XMLHttpRequest;g.open("GET",A,!0),g.responseType="arraybuffer",g.onload=function(){200==g.status||0==g.status&&g.response?M(g.response):t()},g.onerror=t,g.send(null)},function(A){document.title=A}}var j=E.print||console.log.bind(console),L=E.printErr||console.warn.bind(console);for(M in i)i.hasOwnProperty(M)&&(E[M]=i[M]);function d(A){d.shown||(d.shown={}),d.shown[A]||(d.shown[A]=1,L(A))}function x(A,M){var t=[1,0,1,96],g=M.slice(0,1),I=M.slice(1),e={i:127,j:126,f:125,d:124};t.push(I.length);for(var i=0;i=g);)++I;if(I-M>16&&A.subarray&&p)return p.decode(A.subarray(M,I));for(var e="";M>10,56320|1023&N)}}else e+=String.fromCharCode((31&i)<<6|T)}else e+=String.fromCharCode(i)}return e}function G(A,M){return A?b(Z,A,M):""}function J(A,M,t,g){if(!(g>0))return 0;for(var I=t,e=t+g-1,i=0;i=55296&&T<=57343)T=65536+((1023&T)<<10)|1023&A.charCodeAt(++i);if(T<=127){if(t>=e)break;M[t++]=T}else if(T<=2047){if(t+1>=e)break;M[t++]=192|T>>6,M[t++]=128|63&T}else if(T<=65535){if(t+2>=e)break;M[t++]=224|T>>12,M[t++]=128|T>>6&63,M[t++]=128|63&T}else{if(t+3>=e)break;T>=2097152&&d("Invalid Unicode code point 0x"+T.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),M[t++]=240|T>>18,M[t++]=128|T>>12&63,M[t++]=128|T>>6&63,M[t++]=128|63&T}}return M[t]=0,t-I}function H(A,M,t){return F("number"==typeof t,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),J(A,Z,M,t)}function X(A){for(var M=0,t=0;t=55296&&g<=57343&&(g=65536+((1023&g)<<10)|1023&A.charCodeAt(++t)),g<=127?++M:M+=g<=2047?2:g<=65535?3:4}return M}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");function v(A,M){F(A.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),P.set(A,M)}function V(A,M,t){for(var g=0;g>0]=A.charCodeAt(g);t||(P[M>>0]=0)}var W,P,Z,K,q,_,$=65536;function AA(A,M){return A%M>0&&(A+=M-A%M),A}function MA(A){W=A,E.HEAP8=P=new Int8Array(A),E.HEAP16=K=new Int16Array(A),E.HEAP32=q=new Int32Array(A),E.HEAPU8=Z=new Uint8Array(A),E.HEAPU16=new Uint16Array(A),E.HEAPU32=_=new Uint32Array(A),E.HEAPF32=new Float32Array(A),E.HEAPF64=new Float64Array(A)}var tA=6415696,gA=1172816,IA=6415696,eA=1172656;F(tA%16==0,"stack must start aligned"),F(IA%16==0,"heap must start aligned");var iA=5242880;E.TOTAL_STACK&&F(iA===E.TOTAL_STACK,"the stack size can no longer be determined at runtime");var TA=E.TOTAL_MEMORY||67108864;function EA(){F(0==(3&gA)),_[1+(gA>>2)]=34821223,_[2+(gA>>2)]=2310721022,q[0]=1668509029}function NA(){var A=_[1+(gA>>2)],M=_[2+(gA>>2)];34821223==A&&2310721022==M||mA("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+M.toString(16)+" "+A.toString(16)),1668509029!==q[0]&&mA("Runtime error: The application has corrupted its heap memory area (address zero)!")}function nA(A){mA("Stack overflow! Attempted to allocate "+A+" bytes on the stack, but stack has only "+(gA-Xt()+A)+" bytes available!")}function DA(A){for(;A.length>0;){var M=A.shift();if("function"!=typeof M){var t=M.func;"number"==typeof t?void 0===M.arg?E.dynCall_v(t):E.dynCall_vi(t,M.arg):t(void 0===M.arg?null:M.arg)}else M()}}Object.getOwnPropertyDescriptor(E,"TOTAL_MEMORY")||Object.defineProperty(E,"TOTAL_MEMORY",{configurable:!0,get:function(){mA("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),F(TA>=iA,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+TA+"! (TOTAL_STACK="+iA+")"),F("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),(z=E.wasmMemory?E.wasmMemory:new WebAssembly.Memory({initial:TA/$}))&&(W=z.buffer),F((TA=W.byteLength)%$==0),MA(W),q[eA>>2]=IA,function(){var A=new Int16Array(1),M=new Int8Array(A.buffer);if(A[0]=25459,115!==M[0]||99!==M[1])throw"Runtime error: expected the system to be little-endian!"}();var CA=[],rA=[],cA=[],oA=[],BA=!1,QA=!1;function aA(){if(E.preRun)for("function"==typeof E.preRun&&(E.preRun=[E.preRun]);E.preRun.length;)jA(E.preRun.shift());DA(CA)}function hA(){NA(),F(!BA),BA=!0,E.noFSInit||iM.init.initialized||iM.init(),tM.init(),DA(rA)}function sA(){NA(),iM.ignorePermissions=!1,DA(cA)}function yA(){NA(),QA=!0}function wA(){if(NA(),E.postRun)for("function"==typeof E.postRun&&(E.postRun=[E.postRun]);E.postRun.length;)LA(E.postRun.shift());DA(oA)}function jA(A){CA.unshift(A)}function LA(A){oA.unshift(A)}F(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),F(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var dA=Math.abs,xA=Math.ceil,YA=Math.floor,uA=Math.min,SA=0,lA=null,zA=null,UA={};function fA(A){for(var M=A;;){if(!UA[A])return A;A=M+Math.random()}return A}function OA(A){SA++,E.monitorRunDependencies&&E.monitorRunDependencies(SA),A?(F(!UA[A]),UA[A]=1,null===lA&&"undefined"!=typeof setInterval&&(lA=setInterval((function(){if(O)return clearInterval(lA),void(lA=null);var A=!1;for(var M in UA)A||(A=!0,L("still waiting on run dependencies:")),L("dependency: "+M);A&&L("(end of list)")}),1e4))):L("warning: run dependency added without ID")}function FA(A){if(SA--,E.monitorRunDependencies&&E.monitorRunDependencies(SA),A?(F(UA[A]),delete UA[A]):L("warning: run dependency removed without ID"),0==SA&&(null!==lA&&(clearInterval(lA),lA=null),zA)){var M=zA;zA=null,M()}}function mA(A){throw E.onAbort&&E.onAbort(A),j(A+=""),L(A),O=!0,1,A="abort("+A+") at "+PA(),new WebAssembly.RuntimeError(A)}E.preloadedImages={},E.preloadedAudios={};var RA="data:application/octet-stream;base64,";function kA(A){return String.prototype.startsWith?A.startsWith(RA):0===A.indexOf(RA)}var pA,bA,GA=T+"static/libDecoder.wasm";function JA(){try{if(S)return new Uint8Array(S);if(a)return a(GA);throw"both async and sync fetching of the wasm failed"}catch(A){mA(A)}}function HA(){return S||!C&&!r||"function"!=typeof fetch?new Promise((function(A,M){A(JA())})):fetch(GA,{credentials:"same-origin"}).then((function(A){if(!A.ok)throw"failed to load wasm binary file at '"+GA+"'";return A.arrayBuffer()})).catch((function(){return JA()}))}function XA(){var A={env:zM,wasi_unstable:zM};function M(A,M){var t=A.exports;E.asm=t,FA("wasm-instantiate")}OA("wasm-instantiate");var t=E;function g(A){F(E===t,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),t=null,M(A.instance)}function I(M){return HA().then((function(M){return WebAssembly.instantiate(M,A)})).then(M,(function(A){L("failed to asynchronously prepare wasm: "+A),mA(A)}))}if(E.instantiateWasm)try{return E.instantiateWasm(A,M)}catch(A){return L("Module.instantiateWasm callback failed with error: "+A),!1}return function(){if(S||"function"!=typeof WebAssembly.instantiateStreaming||kA(GA)||"function"!=typeof fetch)return I(g);fetch(GA,{credentials:"same-origin"}).then((function(M){return WebAssembly.instantiateStreaming(M,A).then(g,(function(A){L("wasm streaming compile failed: "+A),L("falling back to ArrayBuffer instantiation"),I(g)}))}))}(),{}}function vA(A){return d("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),A}function VA(A){return A.replace(/\b_Z[\w\d_]+/g,(function(A){var M=vA(A);return A===M?A:M+" ["+A+"]"}))}function WA(){var A=new Error;if(!A.stack){try{throw new Error(0)}catch(M){A=M}if(!A.stack)return"(no stack trace available)"}return A.stack.toString()}function PA(){var A=WA();return E.extraStackTrace&&(A+="\n"+E.extraStackTrace()),VA(A)}function ZA(A){return Jt(A)}kA(GA)||(GA=w(GA)),rA.push({func:function(){Gt()}});var KA={};function qA(A,M,t){throw KA[A]={ptr:A,adjusted:[A],type:M,destructor:t,refcount:0,caught:!1,rethrown:!1},A,"uncaught_exception"in Ht?Ht.uncaught_exceptions++:Ht.uncaught_exceptions=1,A+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function _A(){}function $A(A){return E.___errno_location?q[E.___errno_location()>>2]=A:L("failed to set errno from JS"),A}var AM={splitPath:function(A){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(A).slice(1)},normalizeArray:function(A,M){for(var t=0,g=A.length-1;g>=0;g--){var I=A[g];"."===I?A.splice(g,1):".."===I?(A.splice(g,1),t++):t&&(A.splice(g,1),t--)}if(M)for(;t;t--)A.unshift("..");return A},normalize:function(A){var M="/"===A.charAt(0),t="/"===A.substr(-1);return(A=AM.normalizeArray(A.split("/").filter((function(A){return!!A})),!M).join("/"))||M||(A="."),A&&t&&(A+="/"),(M?"/":"")+A},dirname:function(A){var M=AM.splitPath(A),t=M[0],g=M[1];return t||g?(g&&(g=g.substr(0,g.length-1)),t+g):"."},basename:function(A){if("/"===A)return"/";var M=A.lastIndexOf("/");return-1===M?A:A.substr(M+1)},extname:function(A){return AM.splitPath(A)[3]},join:function(){var A=Array.prototype.slice.call(arguments,0);return AM.normalize(A.join("/"))},join2:function(A,M){return AM.normalize(A+"/"+M)}},MM={resolve:function(){for(var A="",M=!1,t=arguments.length-1;t>=-1&&!M;t--){var g=t>=0?arguments[t]:iM.cwd();if("string"!=typeof g)throw new TypeError("Arguments to path.resolve must be strings");if(!g)return"";A=g+"/"+A,M="/"===g.charAt(0)}return(M?"/":"")+(A=AM.normalizeArray(A.split("/").filter((function(A){return!!A})),!M).join("/"))||"."},relative:function(A,M){function t(A){for(var M=0;M=0&&""===A[t];t--);return M>t?[]:A.slice(M,t-M+1)}A=MM.resolve(A).substr(1),M=MM.resolve(M).substr(1);for(var g=t(A.split("/")),I=t(M.split("/")),e=Math.min(g.length,I.length),i=e,T=0;T0?g.slice(0,I).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;M.input=lM(t,!0)}return M.input.shift()},put_char:function(A,M){null===M||10===M?(j(b(A.output,0)),A.output=[]):0!=M&&A.output.push(M)},flush:function(A){A.output&&A.output.length>0&&(j(b(A.output,0)),A.output=[])}},default_tty1_ops:{put_char:function(A,M){null===M||10===M?(L(b(A.output,0)),A.output=[]):0!=M&&A.output.push(M)},flush:function(A){A.output&&A.output.length>0&&(L(b(A.output,0)),A.output=[])}}},gM={ops_table:null,mount:function(A){return gM.createNode(null,"/",16895,0)},createNode:function(A,M,t,g){if(iM.isBlkdev(t)||iM.isFIFO(t))throw new iM.ErrnoError(63);gM.ops_table||(gM.ops_table={dir:{node:{getattr:gM.node_ops.getattr,setattr:gM.node_ops.setattr,lookup:gM.node_ops.lookup,mknod:gM.node_ops.mknod,rename:gM.node_ops.rename,unlink:gM.node_ops.unlink,rmdir:gM.node_ops.rmdir,readdir:gM.node_ops.readdir,symlink:gM.node_ops.symlink},stream:{llseek:gM.stream_ops.llseek}},file:{node:{getattr:gM.node_ops.getattr,setattr:gM.node_ops.setattr},stream:{llseek:gM.stream_ops.llseek,read:gM.stream_ops.read,write:gM.stream_ops.write,allocate:gM.stream_ops.allocate,mmap:gM.stream_ops.mmap,msync:gM.stream_ops.msync}},link:{node:{getattr:gM.node_ops.getattr,setattr:gM.node_ops.setattr,readlink:gM.node_ops.readlink},stream:{}},chrdev:{node:{getattr:gM.node_ops.getattr,setattr:gM.node_ops.setattr},stream:iM.chrdev_stream_ops}});var I=iM.createNode(A,M,t,g);return iM.isDir(I.mode)?(I.node_ops=gM.ops_table.dir.node,I.stream_ops=gM.ops_table.dir.stream,I.contents={}):iM.isFile(I.mode)?(I.node_ops=gM.ops_table.file.node,I.stream_ops=gM.ops_table.file.stream,I.usedBytes=0,I.contents=null):iM.isLink(I.mode)?(I.node_ops=gM.ops_table.link.node,I.stream_ops=gM.ops_table.link.stream):iM.isChrdev(I.mode)&&(I.node_ops=gM.ops_table.chrdev.node,I.stream_ops=gM.ops_table.chrdev.stream),I.timestamp=Date.now(),A&&(A.contents[M]=I),I},getFileDataAsRegularArray:function(A){if(A.contents&&A.contents.subarray){for(var M=[],t=0;t=M)){M=Math.max(M,t*(t<1048576?2:1.125)|0),0!=t&&(M=Math.max(M,256));var g=A.contents;A.contents=new Uint8Array(M),A.usedBytes>0&&A.contents.set(g.subarray(0,A.usedBytes),0)}},resizeFileStorage:function(A,M){if(A.usedBytes!=M){if(0==M)return A.contents=null,void(A.usedBytes=0);if(!A.contents||A.contents.subarray){var t=A.contents;return A.contents=new Uint8Array(new ArrayBuffer(M)),t&&A.contents.set(t.subarray(0,Math.min(M,A.usedBytes))),void(A.usedBytes=M)}if(A.contents||(A.contents=[]),A.contents.length>M)A.contents.length=M;else for(;A.contents.length=A.node.usedBytes)return 0;var i=Math.min(A.node.usedBytes-I,g);if(F(i>=0),i>8&&e.subarray)M.set(e.subarray(I,I+i),t);else for(var T=0;T0||I+g8)throw new iM.ErrnoError(32);for(var I=AM.normalizeArray(A.split("/").filter((function(A){return!!A})),!1),e=iM.root,i="/",T=0;T40)throw new iM.ErrnoError(32)}}return{path:i,node:e}},getPath:function(A){for(var M;;){if(iM.isRoot(A)){var t=A.mount.mountpoint;return M?"/"!==t[t.length-1]?t+"/"+M:t+M:t}M=M?A.name+"/"+M:A.name,A=A.parent}},hashName:function(A,M){for(var t=0,g=0;g>>0)%iM.nameTable.length},hashAddNode:function(A){var M=iM.hashName(A.parent.id,A.name);A.name_next=iM.nameTable[M],iM.nameTable[M]=A},hashRemoveNode:function(A){var M=iM.hashName(A.parent.id,A.name);if(iM.nameTable[M]===A)iM.nameTable[M]=A.name_next;else for(var t=iM.nameTable[M];t;){if(t.name_next===A){t.name_next=A.name_next;break}t=t.name_next}},lookupNode:function(A,M){var t=iM.mayLookup(A);if(t)throw new iM.ErrnoError(t,A);for(var g=iM.hashName(A.id,M),I=iM.nameTable[g];I;I=I.name_next){var e=I.name;if(I.parent.id===A.id&&e===M)return I}return iM.lookup(A,M)},createNode:function(A,M,t,g){if(!iM.FSNode){iM.FSNode=function(A,M,t,g){A||(A=this),this.parent=A,this.mount=A.mount,this.mounted=null,this.id=iM.nextInode++,this.name=M,this.mode=t,this.node_ops={},this.stream_ops={},this.rdev=g},iM.FSNode.prototype={};Object.defineProperties(iM.FSNode.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(A){A?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(A){A?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return iM.isDir(this.mode)}},isDevice:{get:function(){return iM.isChrdev(this.mode)}}})}var I=new iM.FSNode(A,M,t,g);return iM.hashAddNode(I),I},destroyNode:function(A){iM.hashRemoveNode(A)},isRoot:function(A){return A===A.parent},isMountpoint:function(A){return!!A.mounted},isFile:function(A){return 32768==(61440&A)},isDir:function(A){return 16384==(61440&A)},isLink:function(A){return 40960==(61440&A)},isChrdev:function(A){return 8192==(61440&A)},isBlkdev:function(A){return 24576==(61440&A)},isFIFO:function(A){return 4096==(61440&A)},isSocket:function(A){return 49152==(49152&A)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(A){var M=iM.flagModes[A];if(void 0===M)throw new Error("Unknown file open mode: "+A);return M},flagsToPermissionString:function(A){var M=["r","w","rw"][3&A];return 512&A&&(M+="w"),M},nodePermissions:function(A,M){return iM.ignorePermissions||(-1===M.indexOf("r")||292&A.mode)&&(-1===M.indexOf("w")||146&A.mode)&&(-1===M.indexOf("x")||73&A.mode)?0:2},mayLookup:function(A){var M=iM.nodePermissions(A,"x");return M||(A.node_ops.lookup?0:2)},mayCreate:function(A,M){try{iM.lookupNode(A,M);return 20}catch(A){}return iM.nodePermissions(A,"wx")},mayDelete:function(A,M,t){var g;try{g=iM.lookupNode(A,M)}catch(A){return A.errno}var I=iM.nodePermissions(A,"wx");if(I)return I;if(t){if(!iM.isDir(g.mode))return 54;if(iM.isRoot(g)||iM.getPath(g)===iM.cwd())return 10}else if(iM.isDir(g.mode))return 31;return 0},mayOpen:function(A,M){return A?iM.isLink(A.mode)?32:iM.isDir(A.mode)&&("r"!==iM.flagsToPermissionString(M)||512&M)?31:iM.nodePermissions(A,iM.flagsToPermissionString(M)):44},MAX_OPEN_FDS:4096,nextfd:function(A,M){A=A||0,M=M||iM.MAX_OPEN_FDS;for(var t=A;t<=M;t++)if(!iM.streams[t])return t;throw new iM.ErrnoError(33)},getStream:function(A){return iM.streams[A]},createStream:function(A,M,t){iM.FSStream||(iM.FSStream=function(){},iM.FSStream.prototype={},Object.defineProperties(iM.FSStream.prototype,{object:{get:function(){return this.node},set:function(A){this.node=A}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}}));var g=new iM.FSStream;for(var I in A)g[I]=A[I];A=g;var e=iM.nextfd(M,t);return A.fd=e,iM.streams[e]=A,A},closeStream:function(A){iM.streams[A]=null},chrdev_stream_ops:{open:function(A){var M=iM.getDevice(A.node.rdev);A.stream_ops=M.stream_ops,A.stream_ops.open&&A.stream_ops.open(A)},llseek:function(){throw new iM.ErrnoError(70)}},major:function(A){return A>>8},minor:function(A){return 255&A},makedev:function(A,M){return A<<8|M},registerDevice:function(A,M){iM.devices[A]={stream_ops:M}},getDevice:function(A){return iM.devices[A]},getMounts:function(A){for(var M=[],t=[A];t.length;){var g=t.pop();M.push(g),t.push.apply(t,g.mounts)}return M},syncfs:function(A,M){"function"==typeof A&&(M=A,A=!1),iM.syncFSRequests++,iM.syncFSRequests>1&&console.log("warning: "+iM.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var t=iM.getMounts(iM.root.mount),g=0;function I(A){return F(iM.syncFSRequests>0),iM.syncFSRequests--,M(A)}function e(A){if(A)return e.errored?void 0:(e.errored=!0,I(A));++g>=t.length&&I(null)}t.forEach((function(M){if(!M.type.syncfs)return e(null);M.type.syncfs(M,A,e)}))},mount:function(A,M,t){if("string"==typeof A)throw A;var g,I="/"===t,e=!t;if(I&&iM.root)throw new iM.ErrnoError(10);if(!I&&!e){var i=iM.lookupPath(t,{follow_mount:!1});if(t=i.path,g=i.node,iM.isMountpoint(g))throw new iM.ErrnoError(10);if(!iM.isDir(g.mode))throw new iM.ErrnoError(54)}var T={type:A,opts:M,mountpoint:t,mounts:[]},E=A.mount(T);return E.mount=T,T.root=E,I?iM.root=E:g&&(g.mounted=T,g.mount&&g.mount.mounts.push(T)),E},unmount:function(A){var M=iM.lookupPath(A,{follow_mount:!1});if(!iM.isMountpoint(M.node))throw new iM.ErrnoError(28);var t=M.node,g=t.mounted,I=iM.getMounts(g);Object.keys(iM.nameTable).forEach((function(A){for(var M=iM.nameTable[A];M;){var t=M.name_next;-1!==I.indexOf(M.mount)&&iM.destroyNode(M),M=t}})),t.mounted=null;var e=t.mount.mounts.indexOf(g);F(-1!==e),t.mount.mounts.splice(e,1)},lookup:function(A,M){return A.node_ops.lookup(A,M)},mknod:function(A,M,t){var g=iM.lookupPath(A,{parent:!0}).node,I=AM.basename(A);if(!I||"."===I||".."===I)throw new iM.ErrnoError(28);var e=iM.mayCreate(g,I);if(e)throw new iM.ErrnoError(e);if(!g.node_ops.mknod)throw new iM.ErrnoError(63);return g.node_ops.mknod(g,I,M,t)},create:function(A,M){return M=void 0!==M?M:438,M&=4095,M|=32768,iM.mknod(A,M,0)},mkdir:function(A,M){return M=void 0!==M?M:511,M&=1023,M|=16384,iM.mknod(A,M,0)},mkdirTree:function(A,M){for(var t=A.split("/"),g="",I=0;Ithis.length-1||A<0)){var M=A%this.chunkSize,t=A/this.chunkSize|0;return this.getter(t)[M]}},e.prototype.setDataGetter=function(A){this.getter=A},e.prototype.cacheLength=function(){var A=new XMLHttpRequest;if(A.open("HEAD",t,!1),A.send(null),!(A.status>=200&&A.status<300||304===A.status))throw new Error("Couldn't load "+t+". Status: "+A.status);var M,g=Number(A.getResponseHeader("Content-length")),I=(M=A.getResponseHeader("Accept-Ranges"))&&"bytes"===M,e=(M=A.getResponseHeader("Content-Encoding"))&&"gzip"===M,i=1048576;I||(i=g);var T=this;T.setDataGetter((function(A){var M=A*i,I=(A+1)*i-1;if(I=Math.min(I,g-1),void 0===T.chunks[A]&&(T.chunks[A]=function(A,M){if(A>M)throw new Error("invalid range ("+A+", "+M+") or no bytes requested!");if(M>g-1)throw new Error("only "+g+" bytes available! programmer error!");var I=new XMLHttpRequest;if(I.open("GET",t,!1),g!==i&&I.setRequestHeader("Range","bytes="+A+"-"+M),"undefined"!=typeof Uint8Array&&(I.responseType="arraybuffer"),I.overrideMimeType&&I.overrideMimeType("text/plain; charset=x-user-defined"),I.send(null),!(I.status>=200&&I.status<300||304===I.status))throw new Error("Couldn't load "+t+". Status: "+I.status);return void 0!==I.response?new Uint8Array(I.response||[]):lM(I.responseText||"",!0)}(M,I)),void 0===T.chunks[A])throw new Error("doXHR failed!");return T.chunks[A]})),!e&&g||(i=g=1,g=this.getter(0).length,i=g,console.log("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=g,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!r)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i=new e;Object.defineProperties(i,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var T={isDevice:!1,contents:i}}else T={isDevice:!1,url:t};var E=iM.createFile(A,M,T,g,I);T.contents?E.contents=T.contents:T.url&&(E.contents=null,E.url=T.url),Object.defineProperties(E,{usedBytes:{get:function(){return this.contents.length}}});var N={};return Object.keys(E.stream_ops).forEach((function(A){var M=E.stream_ops[A];N[A]=function(){if(!iM.forceLoadFile(E))throw new iM.ErrnoError(29);return M.apply(null,arguments)}})),N.read=function(A,M,t,g,I){if(!iM.forceLoadFile(E))throw new iM.ErrnoError(29);var e=A.node.contents;if(I>=e.length)return 0;var i=Math.min(e.length-I,g);if(F(i>=0),e.slice)for(var T=0;T>2]=g.dev,q[t+4>>2]=0,q[t+8>>2]=g.ino,q[t+12>>2]=g.mode,q[t+16>>2]=g.nlink,q[t+20>>2]=g.uid,q[t+24>>2]=g.gid,q[t+28>>2]=g.rdev,q[t+32>>2]=0,bA=[g.size>>>0,(pA=g.size,+dA(pA)>=1?pA>0?(0|uA(+YA(pA/4294967296),4294967295))>>>0:~~+xA((pA-+(~~pA>>>0))/4294967296)>>>0:0)],q[t+40>>2]=bA[0],q[t+44>>2]=bA[1],q[t+48>>2]=4096,q[t+52>>2]=g.blocks,q[t+56>>2]=g.atime.getTime()/1e3|0,q[t+60>>2]=0,q[t+64>>2]=g.mtime.getTime()/1e3|0,q[t+68>>2]=0,q[t+72>>2]=g.ctime.getTime()/1e3|0,q[t+76>>2]=0,bA=[g.ino>>>0,(pA=g.ino,+dA(pA)>=1?pA>0?(0|uA(+YA(pA/4294967296),4294967295))>>>0:~~+xA((pA-+(~~pA>>>0))/4294967296)>>>0:0)],q[t+80>>2]=bA[0],q[t+84>>2]=bA[1],0},doMsync:function(A,M,t,g){var I=new Uint8Array(Z.subarray(A,A+t));iM.msync(M,I,0,t,g)},doMkdir:function(A,M){return"/"===(A=AM.normalize(A))[A.length-1]&&(A=A.substr(0,A.length-1)),iM.mkdir(A,M,0),0},doMknod:function(A,M,t){switch(61440&M){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return iM.mknod(A,M,t),0},doReadlink:function(A,M,t){if(t<=0)return-28;var g=iM.readlink(A),I=Math.min(t,X(g)),e=P[M+I];return H(g,M,t+1),P[M+I]=e,I},doAccess:function(A,M){if(-8&M)return-28;var t;if(!(t=iM.lookupPath(A,{follow:!0}).node))return-44;var g="";return 4&M&&(g+="r"),2&M&&(g+="w"),1&M&&(g+="x"),g&&iM.nodePermissions(t,g)?-2:0},doDup:function(A,M,t){var g=iM.getStream(t);return g&&iM.close(g),iM.open(A,M,0,t,t).fd},doReadv:function(A,M,t,g){for(var I=0,e=0;e>2],T=q[M+(8*e+4)>>2],E=iM.read(A,P,i,T,g);if(E<0)return-1;if(I+=E,E>2],T=q[M+(8*e+4)>>2],E=iM.write(A,P,i,T,g);if(E<0)return-1;I+=E}return I},varargs:0,get:function(A){return TM.varargs+=4,q[TM.varargs-4>>2]},getStr:function(){return G(TM.get())},getStreamFromFD:function(A){void 0===A&&(A=TM.get());var M=iM.getStream(A);if(!M)throw new iM.ErrnoError(8);return M},get64:function(){var A=TM.get(),M=TM.get();return F(A>=0?0===M:-1===M),A},getZero:function(){F(0===TM.get())}};function EM(A,M){TM.varargs=M;try{var t=TM.getStreamFromFD();switch(TM.get()){case 0:return(g=TM.get())<0?-28:iM.open(t.path,t.flags,0,g).fd;case 1:case 2:return 0;case 3:return t.flags;case 4:var g=TM.get();return t.flags|=g,0;case 12:g=TM.get();return K[g+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return $A(28),-1;default:return-28}}catch(A){return void 0!==iM&&A instanceof iM.ErrnoError||mA(A),-A.errno}}function NM(A,M){TM.varargs=M;try{var t=TM.getStreamFromFD(),g=TM.get(),I=TM.get();return iM.read(t,P,g,I)}catch(A){return void 0!==iM&&A instanceof iM.ErrnoError||mA(A),-A.errno}}function nM(A,M){TM.varargs=M;try{var t=TM.getStr(),g=TM.get(),I=TM.get();return iM.open(t,g,I).fd}catch(A){return void 0!==iM&&A instanceof iM.ErrnoError||mA(A),-A.errno}}function DM(){}function CM(){mA()}function rM(){return void 0===rM.start&&(rM.start=Date.now()),1e3*(Date.now()-rM.start)|0}function cM(){return P.length}function oM(A,M,t){Z.set(Z.subarray(M,M+t),A)}function BM(A){try{return z.grow(A-W.byteLength+65535>>16),MA(z.buffer),1}catch(M){console.error("emscripten_realloc_buffer: Attempted to grow heap from "+W.byteLength+" bytes to "+A+" bytes, but got error: "+M)}}function QM(A){var M=cM();F(A>M);if(A>2147418112)return L("Cannot enlarge memory, asked to go up to "+A+" bytes, but the limit is 2147418112 bytes!"),!1;for(var t=Math.max(M,16777216);t=0?+YA(A+.5):+xA(A-.5)}function uM(A){U(0|A)}function SM(A){var M=Date.now()/1e3|0;return A&&(q[A>>2]=M),M}function lM(A,M,t){var g=t>0?t:X(A)+1,I=new Array(g),e=J(A,I,0,I.length);return M&&(I.length=e),I}iM.staticInit();var zM={__cxa_allocate_exception:ZA,__cxa_throw:qA,__lock:_A,__syscall221:EM,__syscall3:NM,__syscall5:nM,__unlock:DM,abort:CM,clock:rM,emscripten_memcpy_big:oM,emscripten_resize_heap:QM,environ_get:sM,environ_sizes_get:yM,fd_close:wM,fd_fdstat_get:jM,fd_seek:LM,fd_write:dM,gettimeofday:xM,memory:z,round:YM,setTempRet0:uM,table:f,time:SM},UM=XA(),fM=UM.__wasm_call_ctors;UM.__wasm_call_ctors=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),fM.apply(null,arguments)};var OM=UM.WasmDecoder_Check;UM.WasmDecoder_Check=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),OM.apply(null,arguments)};var FM=UM.WasmDecoder_Init;UM.WasmDecoder_Init=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),FM.apply(null,arguments)};var mM=UM.WasmDecoder_Deinit;UM.WasmDecoder_Deinit=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),mM.apply(null,arguments)};var RM=UM.WasmDecoder_OpenChannel;UM.WasmDecoder_OpenChannel=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),RM.apply(null,arguments)};var kM=UM.WasmDecoder_InputFlvStream;UM.WasmDecoder_InputFlvStream=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),kM.apply(null,arguments)};var pM=UM.WasmDecoder_GetFlvDecodeData;UM.WasmDecoder_GetFlvDecodeData=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),pM.apply(null,arguments)};var bM=UM.WasmDecoder_InputFlvStreamAndDecode;UM.WasmDecoder_InputFlvStreamAndDecode=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),bM.apply(null,arguments)};var GM=UM.WasmDecoder_OpenVideoDecoder;UM.WasmDecoder_OpenVideoDecoder=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),GM.apply(null,arguments)};var JM=UM.WasmDecoder_OpenAudioDecoder;UM.WasmDecoder_OpenAudioDecoder=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),JM.apply(null,arguments)};var HM=UM.WasmDecoder_DecodeVideoFrame;UM.WasmDecoder_DecodeVideoFrame=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),HM.apply(null,arguments)};var XM=UM.WasmDecoder_DecodeAudioFrame;UM.WasmDecoder_DecodeAudioFrame=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),XM.apply(null,arguments)};var vM=UM.WasmDecoder_CloseChannel;UM.WasmDecoder_CloseChannel=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),vM.apply(null,arguments)};var VM=UM.main;UM.main=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),VM.apply(null,arguments)};var WM=UM.malloc;UM.malloc=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),WM.apply(null,arguments)};var PM=UM.free;UM.free=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),PM.apply(null,arguments)};var ZM=UM.__errno_location;UM.__errno_location=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ZM.apply(null,arguments)};var KM=UM.fflush;UM.fflush=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),KM.apply(null,arguments)};var qM=UM._get_tzname;UM._get_tzname=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),qM.apply(null,arguments)};var _M=UM._get_daylight;UM._get_daylight=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),_M.apply(null,arguments)};var $M=UM._get_timezone;UM._get_timezone=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),$M.apply(null,arguments)};var At=UM.setThrew;UM.setThrew=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),At.apply(null,arguments)};var Mt=UM._ZSt18uncaught_exceptionv;UM._ZSt18uncaught_exceptionv=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Mt.apply(null,arguments)};var tt=UM.stackSave;UM.stackSave=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),tt.apply(null,arguments)};var gt=UM.stackAlloc;UM.stackAlloc=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),gt.apply(null,arguments)};var It=UM.stackRestore;UM.stackRestore=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),It.apply(null,arguments)};var et=UM.__growWasmMemory;UM.__growWasmMemory=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),et.apply(null,arguments)};var it=UM.dynCall_ii;UM.dynCall_ii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),it.apply(null,arguments)};var Tt=UM.dynCall_viiiii;UM.dynCall_viiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Tt.apply(null,arguments)};var Et=UM.dynCall_viiiiiifi;UM.dynCall_viiiiiifi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Et.apply(null,arguments)};var Nt=UM.dynCall_viiii;UM.dynCall_viiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Nt.apply(null,arguments)};var nt=UM.dynCall_viii;UM.dynCall_viii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),nt.apply(null,arguments)};var Dt=UM.dynCall_iiiiiii;UM.dynCall_iiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Dt.apply(null,arguments)};var Ct=UM.dynCall_iiiiii;UM.dynCall_iiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ct.apply(null,arguments)};var rt=UM.dynCall_vii;UM.dynCall_vii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),rt.apply(null,arguments)};var ct=UM.dynCall_iii;UM.dynCall_iii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ct.apply(null,arguments)};var ot=UM.dynCall_viiiiii;UM.dynCall_viiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ot.apply(null,arguments)};var Bt=UM.dynCall_viiiiiiiii;UM.dynCall_viiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Bt.apply(null,arguments)};var Qt=UM.dynCall_viiiiiiii;UM.dynCall_viiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Qt.apply(null,arguments)};var at=UM.dynCall_iiiii;UM.dynCall_iiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),at.apply(null,arguments)};var ht=UM.dynCall_viiiiiiiiiiiiii;UM.dynCall_viiiiiiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ht.apply(null,arguments)};var st=UM.dynCall_viiiiiiiiiii;UM.dynCall_viiiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),st.apply(null,arguments)};var yt=UM.dynCall_viiiiiii;UM.dynCall_viiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),yt.apply(null,arguments)};var wt=UM.dynCall_viiiiiiiiiiii;UM.dynCall_viiiiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),wt.apply(null,arguments)};var jt=UM.dynCall_vi;UM.dynCall_vi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),jt.apply(null,arguments)};var Lt=UM.dynCall_iiii;UM.dynCall_iiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Lt.apply(null,arguments)};var dt=UM.dynCall_viiiifii;UM.dynCall_viiiifii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),dt.apply(null,arguments)};var xt=UM.dynCall_fii;UM.dynCall_fii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),xt.apply(null,arguments)};var Yt=UM.dynCall_viiiiiiiiii;UM.dynCall_viiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Yt.apply(null,arguments)};var ut=UM.dynCall_dd;UM.dynCall_dd=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ut.apply(null,arguments)};var St=UM.dynCall_viifi;UM.dynCall_viifi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),St.apply(null,arguments)};var lt=UM.dynCall_fiii;UM.dynCall_fiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),lt.apply(null,arguments)};var zt=UM.dynCall_viidi;UM.dynCall_viidi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),zt.apply(null,arguments)};var Ut=UM.dynCall_iiiiiiii;UM.dynCall_iiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ut.apply(null,arguments)};var ft=UM.dynCall_viiijj;UM.dynCall_viiijj=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ft.apply(null,arguments)};var Ot=UM.dynCall_iiiiiiidiiddii;UM.dynCall_iiiiiiidiiddii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ot.apply(null,arguments)};var Ft=UM.dynCall_jij;UM.dynCall_jij=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Ft.apply(null,arguments)};var mt=UM.dynCall_jii;UM.dynCall_jii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),mt.apply(null,arguments)};var Rt=UM.dynCall_v;UM.dynCall_v=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Rt.apply(null,arguments)};var kt=UM.dynCall_iidiiii;UM.dynCall_iidiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),kt.apply(null,arguments)};var pt=UM.dynCall_jiji;UM.dynCall_jiji=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),pt.apply(null,arguments)},E.asm=UM;var bt,Gt=E.___wasm_call_ctors=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.__wasm_call_ctors.apply(null,arguments)},Jt=(E._WasmDecoder_Check=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_Check.apply(null,arguments)},E._WasmDecoder_Init=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_Init.apply(null,arguments)},E._WasmDecoder_Deinit=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_Deinit.apply(null,arguments)},E._WasmDecoder_OpenChannel=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_OpenChannel.apply(null,arguments)},E._WasmDecoder_InputFlvStream=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_InputFlvStream.apply(null,arguments)},E._WasmDecoder_GetFlvDecodeData=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_GetFlvDecodeData.apply(null,arguments)},E._WasmDecoder_InputFlvStreamAndDecode=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_InputFlvStreamAndDecode.apply(null,arguments)},E._WasmDecoder_OpenVideoDecoder=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_OpenVideoDecoder.apply(null,arguments)},E._WasmDecoder_OpenAudioDecoder=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_OpenAudioDecoder.apply(null,arguments)},E._WasmDecoder_DecodeVideoFrame=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_DecodeVideoFrame.apply(null,arguments)},E._WasmDecoder_DecodeAudioFrame=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_DecodeAudioFrame.apply(null,arguments)},E._WasmDecoder_CloseChannel=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.WasmDecoder_CloseChannel.apply(null,arguments)},E._main=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.main.apply(null,arguments)},E._malloc=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.malloc.apply(null,arguments)}),Ht=(E._free=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.free.apply(null,arguments)},E.___errno_location=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.__errno_location.apply(null,arguments)},E._fflush=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.fflush.apply(null,arguments)},E.__get_tzname=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._get_tzname.apply(null,arguments)},E.__get_daylight=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._get_daylight.apply(null,arguments)},E.__get_timezone=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._get_timezone.apply(null,arguments)},E._setThrew=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.setThrew.apply(null,arguments)},E.__ZSt18uncaught_exceptionv=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm._ZSt18uncaught_exceptionv.apply(null,arguments)}),Xt=E.stackSave=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.stackSave.apply(null,arguments)},vt=E.stackAlloc=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.stackAlloc.apply(null,arguments)},Vt=E.stackRestore=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.stackRestore.apply(null,arguments)};E.__growWasmMemory=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.__growWasmMemory.apply(null,arguments)},E.dynCall_ii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_ii.apply(null,arguments)},E.dynCall_viiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiii.apply(null,arguments)},E.dynCall_viiiiiifi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiifi.apply(null,arguments)},E.dynCall_viiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiii.apply(null,arguments)},E.dynCall_viii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viii.apply(null,arguments)},E.dynCall_iiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiiii.apply(null,arguments)},E.dynCall_iiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiii.apply(null,arguments)},E.dynCall_vii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_vii.apply(null,arguments)},E.dynCall_iii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iii.apply(null,arguments)},E.dynCall_viiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiii.apply(null,arguments)},E.dynCall_viiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiiii.apply(null,arguments)},E.dynCall_viiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiii.apply(null,arguments)},E.dynCall_iiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiii.apply(null,arguments)},E.dynCall_viiiiiiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiiiiiiiii.apply(null,arguments)},E.dynCall_viiiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiiiiii.apply(null,arguments)},E.dynCall_viiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiii.apply(null,arguments)},E.dynCall_viiiiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiiiiiii.apply(null,arguments)},E.dynCall_vi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_vi.apply(null,arguments)},E.dynCall_iiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiii.apply(null,arguments)},E.dynCall_viiiifii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiifii.apply(null,arguments)},E.dynCall_fii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_fii.apply(null,arguments)},E.dynCall_viiiiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiiiiiiiii.apply(null,arguments)},E.dynCall_dd=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_dd.apply(null,arguments)},E.dynCall_viifi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viifi.apply(null,arguments)},E.dynCall_fiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_fiii.apply(null,arguments)},E.dynCall_viidi=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viidi.apply(null,arguments)},E.dynCall_iiiiiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiiiii.apply(null,arguments)},E.dynCall_viiijj=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_viiijj.apply(null,arguments)},E.dynCall_iiiiiiidiiddii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iiiiiiidiiddii.apply(null,arguments)},E.dynCall_jij=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_jij.apply(null,arguments)},E.dynCall_jii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_jii.apply(null,arguments)},E.dynCall_v=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_v.apply(null,arguments)},E.dynCall_iidiiii=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_iidiiii.apply(null,arguments)},E.dynCall_jiji=function(){return F(BA,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),F(!QA,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),E.asm.dynCall_jiji.apply(null,arguments)};function Wt(A){this.name="ExitStatus",this.message="Program terminated with exit("+A+")",this.status=A}E.asm=UM,Object.getOwnPropertyDescriptor(E,"intArrayFromString")||(E.intArrayFromString=function(){mA("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"intArrayToString")||(E.intArrayToString=function(){mA("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),E.ccall=R,E.cwrap=k,Object.getOwnPropertyDescriptor(E,"setValue")||(E.setValue=function(){mA("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getValue")||(E.getValue=function(){mA("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"allocate")||(E.allocate=function(){mA("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getMemory")||(E.getMemory=function(){mA("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"AsciiToString")||(E.AsciiToString=function(){mA("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToAscii")||(E.stringToAscii=function(){mA("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF8ArrayToString")||(E.UTF8ArrayToString=function(){mA("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF8ToString")||(E.UTF8ToString=function(){mA("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF8Array")||(E.stringToUTF8Array=function(){mA("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF8")||(E.stringToUTF8=function(){mA("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"lengthBytesUTF8")||(E.lengthBytesUTF8=function(){mA("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF16ToString")||(E.UTF16ToString=function(){mA("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF16")||(E.stringToUTF16=function(){mA("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"lengthBytesUTF16")||(E.lengthBytesUTF16=function(){mA("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"UTF32ToString")||(E.UTF32ToString=function(){mA("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stringToUTF32")||(E.stringToUTF32=function(){mA("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"lengthBytesUTF32")||(E.lengthBytesUTF32=function(){mA("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"allocateUTF8")||(E.allocateUTF8=function(){mA("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackTrace")||(E.stackTrace=function(){mA("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnPreRun")||(E.addOnPreRun=function(){mA("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnInit")||(E.addOnInit=function(){mA("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnPreMain")||(E.addOnPreMain=function(){mA("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnExit")||(E.addOnExit=function(){mA("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addOnPostRun")||(E.addOnPostRun=function(){mA("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"writeStringToMemory")||(E.writeStringToMemory=function(){mA("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"writeArrayToMemory")||(E.writeArrayToMemory=function(){mA("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"writeAsciiToMemory")||(E.writeAsciiToMemory=function(){mA("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"addRunDependency")||(E.addRunDependency=function(){mA("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"removeRunDependency")||(E.removeRunDependency=function(){mA("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"ENV")||(E.ENV=function(){mA("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"FS")||(E.FS=function(){mA("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"FS_createFolder")||(E.FS_createFolder=function(){mA("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createPath")||(E.FS_createPath=function(){mA("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createDataFile")||(E.FS_createDataFile=function(){mA("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createPreloadedFile")||(E.FS_createPreloadedFile=function(){mA("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createLazyFile")||(E.FS_createLazyFile=function(){mA("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createLink")||(E.FS_createLink=function(){mA("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_createDevice")||(E.FS_createDevice=function(){mA("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"FS_unlink")||(E.FS_unlink=function(){mA("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(E,"GL")||(E.GL=function(){mA("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"dynamicAlloc")||(E.dynamicAlloc=function(){mA("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"loadDynamicLibrary")||(E.loadDynamicLibrary=function(){mA("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"loadWebAssemblyModule")||(E.loadWebAssemblyModule=function(){mA("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getLEB")||(E.getLEB=function(){mA("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getFunctionTables")||(E.getFunctionTables=function(){mA("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"alignFunctionTables")||(E.alignFunctionTables=function(){mA("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"registerFunctions")||(E.registerFunctions=function(){mA("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),E.addFunction=u,Object.getOwnPropertyDescriptor(E,"removeFunction")||(E.removeFunction=function(){mA("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getFuncWrapper")||(E.getFuncWrapper=function(){mA("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"prettyPrint")||(E.prettyPrint=function(){mA("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"makeBigInt")||(E.makeBigInt=function(){mA("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"dynCall")||(E.dynCall=function(){mA("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getCompilerSetting")||(E.getCompilerSetting=function(){mA("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackSave")||(E.stackSave=function(){mA("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackRestore")||(E.stackRestore=function(){mA("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"stackAlloc")||(E.stackAlloc=function(){mA("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"establishStackSpace")||(E.establishStackSpace=function(){mA("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"print")||(E.print=function(){mA("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"printErr")||(E.printErr=function(){mA("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"getTempRet0")||(E.getTempRet0=function(){mA("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"setTempRet0")||(E.setTempRet0=function(){mA("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"callMain")||(E.callMain=function(){mA("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"abort")||(E.abort=function(){mA("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"Pointer_stringify")||(E.Pointer_stringify=function(){mA("'Pointer_stringify' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(E,"warnOnce")||(E.warnOnce=function(){mA("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),E.writeStackCookie=EA,E.checkStackCookie=NA,E.abortStackOverflow=nA,Object.getOwnPropertyDescriptor(E,"ALLOC_NORMAL")||Object.defineProperty(E,"ALLOC_NORMAL",{configurable:!0,get:function(){mA("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"ALLOC_STACK")||Object.defineProperty(E,"ALLOC_STACK",{configurable:!0,get:function(){mA("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"ALLOC_DYNAMIC")||Object.defineProperty(E,"ALLOC_DYNAMIC",{configurable:!0,get:function(){mA("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"ALLOC_NONE")||Object.defineProperty(E,"ALLOC_NONE",{configurable:!0,get:function(){mA("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(E,"calledRun")||Object.defineProperty(E,"calledRun",{configurable:!0,get:function(){mA("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}});function Pt(A){F(0==SA,'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'),F(0==CA.length,"cannot call main when preRun functions remain to be called");var M=E._main;try{qt(M(0,0),!0)}catch(A){if(A instanceof Wt)return;if("SimulateInfiniteLoop"==A)return void(l=!0);var t=A;A&&"object"==typeof A&&A.stack&&(t=[A,A.stack]),L("exception thrown: "+t),D(1,A)}finally{!0}}function Zt(A){function M(){bt||(bt=!0,O||(hA(),sA(),E.onRuntimeInitialized&&E.onRuntimeInitialized(),_t&&Pt(),wA()))}A=A||N,SA>0||(EA(),aA(),SA>0||(E.setStatus?(E.setStatus("Running..."),setTimeout((function(){setTimeout((function(){E.setStatus("")}),1),M()}),1)):M(),NA()))}function Kt(){var A=j,M=L,t=!1;j=L=function(A){t=!0};try{var g=E._fflush;g&&g(0),["stdout","stderr"].forEach((function(A){var M=iM.analyzePath("/dev/"+A);if(M){var g=M.object.rdev,I=tM.ttys[g];I&&I.output&&I.output.length&&(t=!0)}}))}catch(A){}j=A,L=M,t&&d("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc.")}function qt(A,M){Kt(),M&&l&&0===A||(l?M||L("program exited (with status: "+A+"), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"):(O=!0,A,yA(),E.onExit&&E.onExit(A)),D(A,new Wt(A)))}if(zA=function A(){bt||Zt(),bt||(zA=A)},E.run=Zt,E.preInit)for("function"==typeof E.preInit&&(E.preInit=[E.preInit]);E.preInit.length>0;)E.preInit.pop()();var _t=!0;E.noInitialRun&&(_t=!1),l=!0,Zt()}var n=!1;M.default=function(A){A.isFlvStream=!0,A.enableAudio=!1,A.pause=!1,A.exitFlag=!1,A.needMoreData=!1,A.wasmDecoderId=-1,A.wasmInitVideoDecoder=!1,A.wasmInitAudioDecoder=!1,A.videoQueue=[],A.audioQueue=[],A.videoFrameNum=0,A.videoRawData=null,A.audioRawData=null,A.videoPacketData=null,A.audioPacketData=null,A.findKeyFrame=!0,A.videoIntervalHandle=-1,A.videoIntervalValue=40,A.audioIntervalHandle=-1,A.audioIntervalValue=80,A.lastPTS=0,A.ptsCount=0,A.maxCacheFrameNum=0,A.calcDelayFlag=!0,A.procVideoFlag=!1,A.procAudioFlag=!1;var M=function(){null==A.videoRawData&&(A.videoRawData=E._malloc(8294400)),null==A.audioRawData&&(A.audioRawData=E._malloc(16384)),null==A.videoPacketData&&(A.videoPacketData=E._malloc(1048576)),null==A.audioPacketData&&(A.audioPacketData=E._malloc(2048)),A.wasmDecoderId<0&&(A.wasmDecoderId=E._WasmDecoder_OpenChannel())},t=function(M,t,g,I,e,T,N,n,D){if(A.procVideoFlag)return-1;A.procVideoFlag=!0,E.HEAPU8.set(n,A.videoPacketData);var C,r=i.D,c=0;if(r==i.D?c=0:r==i.B?c=2:r==i.C&&(c=26),1==M&&A.videoFrameNum>0&&(A.videoFrameNum-=1),1==M&&!A.wasmInitVideoDecoder&&g)0==E._WasmDecoder_OpenVideoDecoder(A.wasmDecoderId,t,0,0,c)&&(A.wasmInitVideoDecoder=!0);else if(2==M&&!A.wasmInitAudioDecoder){0==E._WasmDecoder_OpenAudioDecoder(A.wasmDecoderId,t,e,N,T)&&(A.wasmInitAudioDecoder=!0)}var o=null;if(1==M&&A.wasmInitVideoDecoder?o=E._WasmDecoder_DecodeVideoFrame(A.wasmDecoderId,A.videoPacketData,D,0,0,A.videoRawData,0):2==M&&A.wasmInitAudioDecoder&&A.enableAudio&&(o=E._WasmDecoder_DecodeAudioFrame(A.wasmDecoderId,A.videoPacketData,D,A.audioRawData,0)),0!=o&&null!=o){var B=E.HEAPU32[o/4],Q=(E.HEAPU32[o/4+1],E.HEAPU32[o/4+2]),a=(E.HEAPU32[o/4+3],E.HEAPU32[o/4+4]),h=E.HEAPU32[o/4+5],s=(E.HEAPU32[o/4+6],E.HEAPU32[o/4+7]),y=E.HEAPU32[o/4+8],w=E.HEAPU32[o/4+9],j=E.HEAPU32[o/4+10],L=E.HEAPU32[o/4+11],d=(E.HEAPU32[o/4+12],E.HEAPU32[o/4+13]);if(Q<1)return void(A.procVideoFlag=!1);if(1==B){0==c?C=a*h*3/2:2==c?C=a*h*3:(25==c||26==c)&&(C=a*h*4);var x=E.HEAPU8.subarray(A.videoRawData,A.videoRawData+C),Y=new Uint8Array(x),u={cmd:i.o,workerId:i.a,mediaType:1,ts:d,width:a,height:h,framesize:D,rawsize:C,fps:s,interval:y,playTimeSec:I,frameNum:A.videoFrameNum,dat:Y};if(A.postMessage(u,[u.dat.buffer]),a>=1920&&h>=720)return A.procVideoFlag=!1,1}else if(2==B){x=E.HEAPU8.subarray(A.audioRawData,A.audioRawData+Q),Y=new Uint8Array(x);var S=0;8==L?S=0:16==L?S=1:32==L&&(S=2);u={cmd:i.o,workerId:i.a,mediaType:2,fmt:S,ch:w,samplerate:j,ts:d,framesize:Q,dat:Y};A.postMessage(u,[u.dat.buffer])}}return A.procVideoFlag=!1,0},g=function(M,t,g,I,e,T){(E.HEAPU8.set(e,A.audioPacketData),A.wasmInitAudioDecoder)||0==E._WasmDecoder_OpenAudioDecoder(A.wasmDecoderId,M,t,I,g)&&(A.wasmInitAudioDecoder=!0);var N=null;if(A.wasmInitAudioDecoder&&A.enableAudio&&(N=E._WasmDecoder_DecodeAudioFrame(A.wasmDecoderId,A.audioPacketData,T,A.audioRawData,0)),0!=N&&null!=N){E.HEAPU32[N/4],E.HEAPU32[N/4+1];var n=E.HEAPU32[N/4+2],D=(E.HEAPU32[N/4+3],E.HEAPU32[N/4+4],E.HEAPU32[N/4+5],E.HEAPU32[N/4+6],E.HEAPU32[N/4+7],E.HEAPU32[N/4+8],E.HEAPU32[N/4+9]),C=E.HEAPU32[N/4+10],r=E.HEAPU32[N/4+11],c=(E.HEAPU32[N/4+12],E.HEAPU32[N/4+13]);if(n<1)return;var o=E.HEAPU8.subarray(A.audioRawData,A.audioRawData+n),B=new Uint8Array(o),Q=0;8==r?Q=0:16==r?Q=1:32==r&&(Q=2);var a={cmd:i.o,workerId:i.a,mediaType:2,fmt:Q,ch:D,samplerate:C,ts:c,framesize:n,dat:B};A.postMessage(a,[a.dat.buffer])}},I=function(){if(A.wasmDecoderId<0&&M(),A.wasmDecoderId>0&&A.videoQueue.length>0&&!A.pause){var g=null,I=-1;if(A.isFlvStream)g=A.videoQueue[0],I=t(g.mediaType,g.codecId,g.frameType,g.playTimeSec,g.samplerate,g.channelNum,g.bitPerSample,g.dat,g.dat.length);else{if(A.findKeyFrame)for(;A.videoQueue.length>0;){if((g=A.videoQueue[0]).frameType&&A.videoQueue.length<160){A.findKeyFrame=!1;break}A.videoQueue.shift()}else A.videoQueue.length>160&&(A.findKeyFrame=!0);A.videoQueue.length>0&&(null==g&&(g=A.videoQueue[0]),I=t(g.mediaType,g.codecId,g.frameType,g.playTimeSec,g.samplerate,g.channelNum,g.bitPerSample,g.dat,g.dat.length))}I>=0&&A.videoQueue.shift(),A.videoQueue.length>A.maxCacheFrameNum&&A.videoQueue.length}},e=function(){if(!(A.wasmDecoderId<0)&&A.wasmDecoderId>0)for(;A.audioQueue.length>0&&!A.pause;)if(!A.pause){var M=A.audioQueue[0];A.enableAudio&&g(M.codecId,M.samplerate,M.channelNum,M.bitPerSample,M.dat,M.dat.length),A.audioQueue.shift()}};E.onRuntimeInitialized=function(){A.videoIntervalHandle=setInterval(I,A.videoIntervalValue),A.isFlvStream&&(A.audioIntervalHandle=setInterval(e,A.audioIntervalValue));var M={cmd:i.m};A.postMessage(M),n=!0};var D=function(M){if(M>A.lastPTS)if(A.lastPTS>0){if(A.videoQueue.length%5==0){var t=A.ptsCount/5;A.videoQueue.length<=A.maxCacheFrameNum&&(!function(M){if(n){var t=M;(t<5||t>500)&&(t=40),t!=A.videoIntervalValue&&(A.videoIntervalHandle>=0&&(clearInterval(A.videoIntervalHandle),A.videoIntervalHandle=-1),A.videoIntervalValue=Math.floor(t),A.videoIntervalHandle=setInterval(I,A.videoIntervalValue),console.log("SetInterval: "+A.videoIntervalValue))}}(t),console.log("Update interval: "+t)),A.ptsCount=M-A.lastPTS}else A.ptsCount+=M-A.lastPTS;A.lastPTS=M}else A.lastPTS=M,A.ptsCount=40;else A.lastPTS=M,A.ptsCount=40};A.addEventListener("message",(function(t){var g=t.data;switch(g.cmd){case i.u:T=g.url,A.isFlvStream=g.isFlv,N();break;case i.k:A.exitFlag=!0,A.wasmDecoderId>0&&(E._WasmDecoder_CloseChannel(A.wasmDecoderId),A.wasmDecoderId=-1),null!=A.videoRawData&&(E._free(A.videoRawData),A.videoRawData=null),null!=A.audioRawData&&(E._free(A.audioRawData),A.audioRawData=null),null!=A.videoPacketData&&(E._free(A.videoPacketData),A.videoPacketData=null),null!=A.audioPacketData&&(E._free(A.audioPacketData),A.audioPacketData=null),A.videoIntervalHandle>=0&&(clearInterval(A.videoIntervalHandle),A.videoIntervalHandle=-1),A.audioIntervalHandle>=0&&(clearInterval(A.audioIntervalHandle),A.audioIntervalHandle=-1),A.videoQueue.clear,A.videoQueue.length=0,A.videoFrameNum=0,A.audioQueue.clear,A.audioQueue.length=0;var I={cmd:i.k,workerId:i.a};A.postMessage(I);break;case i.t:A.enableAudio=!0;break;case i.j:A.enableAudio=!1;break;case i.v:A.pause=!0;break;case i.y:A.pause=!1;break;case i.z:A.videoQueue.clear,A.videoQueue.length=0,A.videoFrameNum=0,A.audioQueue.clear,A.audioQueue.length=0;break;case i.A:A.updateIntervalTime(g.interval);break;case i.o:if(A.exitFlag){console.log("exit...");break}n?A.isFlvStream?(A.wasmDecoderId<0&&M(),A.wasmDecoderId>0?1==g.mediaType?A.videoIntervalHandle>=0&&(A.videoQueue.push(g),A.maxCacheFrameNum=5):2==g.mediaType&&A.audioIntervalHandle>=0&&!A.findKeyFrame&&A.audioQueue.push(g):A.videoQueue.length<100&&1==g.mediaType&&g.frameType&&A.videoIntervalHandle>=0&&(A.videoQueue.push(g),A.videoQueue.length>=5&&A.videoQueue.shift())):(1==g.mediaType?A.videoIntervalHandle>=0&&(A.videoQueue.push(g),D(g.samplerate),A.videoFrameNum+=1,A.calcDelayFlag&&A.maxCacheFrameNum=0&&A.audioQueue.push(g),A.needMoreData=!1):A.isFlvStream&&A.videoQueue.length<5?1==g.mediaType&&g.frameType&&A.videoIntervalHandle>=0&&(A.videoQueue.push(g),A.videoQueue.length>=5&&A.videoQueue.shift()):!A.isFlvStream&&A.videoQueue.length<1e3&&(1==g.mediaType?A.videoIntervalHandle>=0&&(A.videoQueue.push(g),D(g.samplerate),A.videoFrameNum+=1,A.calcDelayFlag&&A.maxCacheFrameNum=0&&A.audioQueue.push(g))}}))}}.call(this,t(8),"/",t(116)(A),t(9).Buffer)},function(A,M,t){"use strict";var g=t(4).Buffer,I=t(62).Transform;function e(A){I.call(this),this._block=g.allocUnsafe(A),this._blockSize=A,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}t(3)(e,I),e.prototype._transform=function(A,M,t){var g=null;try{this.update(A,M)}catch(A){g=A}t(g)},e.prototype._flush=function(A){var M=null;try{this.push(this.digest())}catch(A){M=A}A(M)},e.prototype.update=function(A,M){if(function(A,M){if(!g.isBuffer(A)&&"string"!=typeof A)throw new TypeError(M+" must be a string or a buffer")}(A,"Data"),this._finalized)throw new Error("Digest already called");g.isBuffer(A)||(A=g.from(A,M));for(var t=this._block,I=0;this._blockOffset+A.length-I>=this._blockSize;){for(var e=this._blockOffset;e0;++i)this._length[i]+=T,(T=this._length[i]/4294967296|0)>0&&(this._length[i]-=4294967296*T);return this},e.prototype._update=function(){throw new Error("_update is not implemented")},e.prototype.digest=function(A){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var M=this._digest();void 0!==A&&(M=M.toString(A)),this._block.fill(0),this._blockOffset=0;for(var t=0;t<4;++t)this._length[t]=0;return M},e.prototype._digest=function(){throw new Error("_digest is not implemented")},A.exports=e},function(A,M,t){(M=A.exports=t(63)).Stream=M,M.Readable=M,M.Writable=t(67),M.Duplex=t(20),M.Transform=t(69),M.PassThrough=t(129),M.finished=t(38),M.pipeline=t(130)},function(A,M,t){"use strict";(function(M,g){var I;A.exports=d,d.ReadableState=L;t(7).EventEmitter;var e=function(A,M){return A.listeners(M).length},i=t(64),T=t(9).Buffer,E=M.Uint8Array||function(){};var N,n=t(124);N=n&&n.debuglog?n.debuglog("stream"):function(){};var D,C,r,c=t(125),o=t(65),B=t(66).getHighWaterMark,Q=t(19).codes,a=Q.ERR_INVALID_ARG_TYPE,h=Q.ERR_STREAM_PUSH_AFTER_EOF,s=Q.ERR_METHOD_NOT_IMPLEMENTED,y=Q.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;t(3)(d,i);var w=o.errorOrDestroy,j=["error","close","destroy","pause","resume"];function L(A,M,g){I=I||t(20),A=A||{},"boolean"!=typeof g&&(g=M instanceof I),this.objectMode=!!A.objectMode,g&&(this.objectMode=this.objectMode||!!A.readableObjectMode),this.highWaterMark=B(this,A,"readableHighWaterMark",g),this.buffer=new c,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==A.emitClose,this.autoDestroy=!!A.autoDestroy,this.destroyed=!1,this.defaultEncoding=A.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,A.encoding&&(D||(D=t(24).StringDecoder),this.decoder=new D(A.encoding),this.encoding=A.encoding)}function d(A){if(I=I||t(20),!(this instanceof d))return new d(A);var M=this instanceof I;this._readableState=new L(A,this,M),this.readable=!0,A&&("function"==typeof A.read&&(this._read=A.read),"function"==typeof A.destroy&&(this._destroy=A.destroy)),i.call(this)}function x(A,M,t,g,I){N("readableAddChunk",M);var e,i=A._readableState;if(null===M)i.reading=!1,function(A,M){if(N("onEofChunk"),M.ended)return;if(M.decoder){var t=M.decoder.end();t&&t.length&&(M.buffer.push(t),M.length+=M.objectMode?1:t.length)}M.ended=!0,M.sync?S(A):(M.needReadable=!1,M.emittedReadable||(M.emittedReadable=!0,l(A)))}(A,i);else if(I||(e=function(A,M){var t;g=M,T.isBuffer(g)||g instanceof E||"string"==typeof M||void 0===M||A.objectMode||(t=new a("chunk",["string","Buffer","Uint8Array"],M));var g;return t}(i,M)),e)w(A,e);else if(i.objectMode||M&&M.length>0)if("string"==typeof M||i.objectMode||Object.getPrototypeOf(M)===T.prototype||(M=function(A){return T.from(A)}(M)),g)i.endEmitted?w(A,new y):Y(A,i,M,!0);else if(i.ended)w(A,new h);else{if(i.destroyed)return!1;i.reading=!1,i.decoder&&!t?(M=i.decoder.write(M),i.objectMode||0!==M.length?Y(A,i,M,!1):z(A,i)):Y(A,i,M,!1)}else g||(i.reading=!1,z(A,i));return!i.ended&&(i.lengthM.highWaterMark&&(M.highWaterMark=function(A){return A>=1073741824?A=1073741824:(A--,A|=A>>>1,A|=A>>>2,A|=A>>>4,A|=A>>>8,A|=A>>>16,A++),A}(A)),A<=M.length?A:M.ended?M.length:(M.needReadable=!0,0))}function S(A){var M=A._readableState;N("emitReadable",M.needReadable,M.emittedReadable),M.needReadable=!1,M.emittedReadable||(N("emitReadable",M.flowing),M.emittedReadable=!0,g.nextTick(l,A))}function l(A){var M=A._readableState;N("emitReadable_",M.destroyed,M.length,M.ended),M.destroyed||!M.length&&!M.ended||(A.emit("readable"),M.emittedReadable=!1),M.needReadable=!M.flowing&&!M.ended&&M.length<=M.highWaterMark,m(A)}function z(A,M){M.readingMore||(M.readingMore=!0,g.nextTick(U,A,M))}function U(A,M){for(;!M.reading&&!M.ended&&(M.length0,M.resumeScheduled&&!M.paused?M.flowing=!0:A.listenerCount("data")>0&&A.resume()}function O(A){N("readable nexttick read 0"),A.read(0)}function F(A,M){N("resume",M.reading),M.reading||A.read(0),M.resumeScheduled=!1,A.emit("resume"),m(A),M.flowing&&!M.reading&&A.read(0)}function m(A){var M=A._readableState;for(N("flow",M.flowing);M.flowing&&null!==A.read(););}function R(A,M){return 0===M.length?null:(M.objectMode?t=M.buffer.shift():!A||A>=M.length?(t=M.decoder?M.buffer.join(""):1===M.buffer.length?M.buffer.first():M.buffer.concat(M.length),M.buffer.clear()):t=M.buffer.consume(A,M.decoder),t);var t}function k(A){var M=A._readableState;N("endReadable",M.endEmitted),M.endEmitted||(M.ended=!0,g.nextTick(p,M,A))}function p(A,M){if(N("endReadableNT",A.endEmitted,A.length),!A.endEmitted&&0===A.length&&(A.endEmitted=!0,M.readable=!1,M.emit("end"),A.autoDestroy)){var t=M._writableState;(!t||t.autoDestroy&&t.finished)&&M.destroy()}}function b(A,M){for(var t=0,g=A.length;t=M.highWaterMark:M.length>0)||M.ended))return N("read: emitReadable",M.length,M.ended),0===M.length&&M.ended?k(this):S(this),null;if(0===(A=u(A,M))&&M.ended)return 0===M.length&&k(this),null;var g,I=M.needReadable;return N("need readable",I),(0===M.length||M.length-A0?R(A,M):null)?(M.needReadable=M.length<=M.highWaterMark,A=0):(M.length-=A,M.awaitDrain=0),0===M.length&&(M.ended||(M.needReadable=!0),t!==A&&M.ended&&k(this)),null!==g&&this.emit("data",g),g},d.prototype._read=function(A){w(this,new s("_read()"))},d.prototype.pipe=function(A,M){var t=this,I=this._readableState;switch(I.pipesCount){case 0:I.pipes=A;break;case 1:I.pipes=[I.pipes,A];break;default:I.pipes.push(A)}I.pipesCount+=1,N("pipe count=%d opts=%j",I.pipesCount,M);var i=(!M||!1!==M.end)&&A!==g.stdout&&A!==g.stderr?E:B;function T(M,g){N("onunpipe"),M===t&&g&&!1===g.hasUnpiped&&(g.hasUnpiped=!0,N("cleanup"),A.removeListener("close",c),A.removeListener("finish",o),A.removeListener("drain",n),A.removeListener("error",r),A.removeListener("unpipe",T),t.removeListener("end",E),t.removeListener("end",B),t.removeListener("data",C),D=!0,!I.awaitDrain||A._writableState&&!A._writableState.needDrain||n())}function E(){N("onend"),A.end()}I.endEmitted?g.nextTick(i):t.once("end",i),A.on("unpipe",T);var n=function(A){return function(){var M=A._readableState;N("pipeOnDrain",M.awaitDrain),M.awaitDrain&&M.awaitDrain--,0===M.awaitDrain&&e(A,"data")&&(M.flowing=!0,m(A))}}(t);A.on("drain",n);var D=!1;function C(M){N("ondata");var g=A.write(M);N("dest.write",g),!1===g&&((1===I.pipesCount&&I.pipes===A||I.pipesCount>1&&-1!==b(I.pipes,A))&&!D&&(N("false write response, pause",I.awaitDrain),I.awaitDrain++),t.pause())}function r(M){N("onerror",M),B(),A.removeListener("error",r),0===e(A,"error")&&w(A,M)}function c(){A.removeListener("finish",o),B()}function o(){N("onfinish"),A.removeListener("close",c),B()}function B(){N("unpipe"),t.unpipe(A)}return t.on("data",C),function(A,M,t){if("function"==typeof A.prependListener)return A.prependListener(M,t);A._events&&A._events[M]?Array.isArray(A._events[M])?A._events[M].unshift(t):A._events[M]=[t,A._events[M]]:A.on(M,t)}(A,"error",r),A.once("close",c),A.once("finish",o),A.emit("pipe",t),I.flowing||(N("pipe resume"),t.resume()),A},d.prototype.unpipe=function(A){var M=this._readableState,t={hasUnpiped:!1};if(0===M.pipesCount)return this;if(1===M.pipesCount)return A&&A!==M.pipes||(A||(A=M.pipes),M.pipes=null,M.pipesCount=0,M.flowing=!1,A&&A.emit("unpipe",this,t)),this;if(!A){var g=M.pipes,I=M.pipesCount;M.pipes=null,M.pipesCount=0,M.flowing=!1;for(var e=0;e0,!1!==I.flowing&&this.resume()):"readable"===A&&(I.endEmitted||I.readableListening||(I.readableListening=I.needReadable=!0,I.flowing=!1,I.emittedReadable=!1,N("on readable",I.length,I.reading),I.length?S(this):I.reading||g.nextTick(O,this))),t},d.prototype.addListener=d.prototype.on,d.prototype.removeListener=function(A,M){var t=i.prototype.removeListener.call(this,A,M);return"readable"===A&&g.nextTick(f,this),t},d.prototype.removeAllListeners=function(A){var M=i.prototype.removeAllListeners.apply(this,arguments);return"readable"!==A&&void 0!==A||g.nextTick(f,this),M},d.prototype.resume=function(){var A=this._readableState;return A.flowing||(N("resume"),A.flowing=!A.readableListening,function(A,M){M.resumeScheduled||(M.resumeScheduled=!0,g.nextTick(F,A,M))}(this,A)),A.paused=!1,this},d.prototype.pause=function(){return N("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(N("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},d.prototype.wrap=function(A){var M=this,t=this._readableState,g=!1;for(var I in A.on("end",(function(){if(N("wrapped end"),t.decoder&&!t.ended){var A=t.decoder.end();A&&A.length&&M.push(A)}M.push(null)})),A.on("data",(function(I){(N("wrapped data"),t.decoder&&(I=t.decoder.write(I)),t.objectMode&&null==I)||(t.objectMode||I&&I.length)&&(M.push(I)||(g=!0,A.pause()))})),A)void 0===this[I]&&"function"==typeof A[I]&&(this[I]=function(M){return function(){return A[M].apply(A,arguments)}}(I));for(var e=0;e-1))throw new y(A);return this._writableState.defaultEncoding=A,this},Object.defineProperty(d.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(d.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),d.prototype._write=function(A,M,t){t(new o("_write()"))},d.prototype._writev=null,d.prototype.end=function(A,M,t){var I=this._writableState;return"function"==typeof A?(t=A,A=null,M=null):"function"==typeof M&&(t=M,M=null),null!=A&&this.write(A,M),I.corked&&(I.corked=1,this.uncork()),I.ending||function(A,M,t){M.ending=!0,z(A,M),t&&(M.finished?g.nextTick(t):A.once("finish",t));M.ended=!0,A.writable=!1}(this,I,t),this},Object.defineProperty(d.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(d.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(A){this._writableState&&(this._writableState.destroyed=A)}}),d.prototype.destroy=D.destroy,d.prototype._undestroy=D.undestroy,d.prototype._destroy=function(A,M){M(A)}}).call(this,t(10),t(8))},function(A,M,t){(function(M){function t(A){try{if(!M.localStorage)return!1}catch(A){return!1}var t=M.localStorage[A];return null!=t&&"true"===String(t).toLowerCase()}A.exports=function(A,M){if(t("noDeprecation"))return A;var g=!1;return function(){if(!g){if(t("throwDeprecation"))throw new Error(M);t("traceDeprecation")?console.trace(M):console.warn(M),g=!0}return A.apply(this,arguments)}}}).call(this,t(10))},function(A,M,t){"use strict";A.exports=n;var g=t(19).codes,I=g.ERR_METHOD_NOT_IMPLEMENTED,e=g.ERR_MULTIPLE_CALLBACK,i=g.ERR_TRANSFORM_ALREADY_TRANSFORMING,T=g.ERR_TRANSFORM_WITH_LENGTH_0,E=t(20);function N(A,M){var t=this._transformState;t.transforming=!1;var g=t.writecb;if(null===g)return this.emit("error",new e);t.writechunk=null,t.writecb=null,null!=M&&this.push(M),g(A);var I=this._readableState;I.reading=!1,(I.needReadable||I.length>>2|A<<30)^(A>>>13|A<<19)^(A>>>22|A<<10)}function C(A){return(A>>>6|A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7)}function r(A){return(A>>>7|A<<25)^(A>>>18|A<<14)^A>>>3}g(E,I),E.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},E.prototype._update=function(A){for(var M,t=this._w,g=0|this._a,I=0|this._b,e=0|this._c,T=0|this._d,E=0|this._e,c=0|this._f,o=0|this._g,B=0|this._h,Q=0;Q<16;++Q)t[Q]=A.readInt32BE(4*Q);for(;Q<64;++Q)t[Q]=0|(((M=t[Q-2])>>>17|M<<15)^(M>>>19|M<<13)^M>>>10)+t[Q-7]+r(t[Q-15])+t[Q-16];for(var a=0;a<64;++a){var h=B+C(E)+N(E,c,o)+i[a]+t[a]|0,s=D(g)+n(g,I,e)|0;B=o,o=c,c=E,E=T+h|0,T=e,e=I,I=g,g=h+s|0}this._a=g+this._a|0,this._b=I+this._b|0,this._c=e+this._c|0,this._d=T+this._d|0,this._e=E+this._e|0,this._f=c+this._f|0,this._g=o+this._g|0,this._h=B+this._h|0},E.prototype._hash=function(){var A=e.allocUnsafe(32);return A.writeInt32BE(this._a,0),A.writeInt32BE(this._b,4),A.writeInt32BE(this._c,8),A.writeInt32BE(this._d,12),A.writeInt32BE(this._e,16),A.writeInt32BE(this._f,20),A.writeInt32BE(this._g,24),A.writeInt32BE(this._h,28),A},A.exports=E},function(A,M,t){var g=t(3),I=t(21),e=t(4).Buffer,i=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],T=new Array(160);function E(){this.init(),this._w=T,I.call(this,128,112)}function N(A,M,t){return t^A&(M^t)}function n(A,M,t){return A&M|t&(A|M)}function D(A,M){return(A>>>28|M<<4)^(M>>>2|A<<30)^(M>>>7|A<<25)}function C(A,M){return(A>>>14|M<<18)^(A>>>18|M<<14)^(M>>>9|A<<23)}function r(A,M){return(A>>>1|M<<31)^(A>>>8|M<<24)^A>>>7}function c(A,M){return(A>>>1|M<<31)^(A>>>8|M<<24)^(A>>>7|M<<25)}function o(A,M){return(A>>>19|M<<13)^(M>>>29|A<<3)^A>>>6}function B(A,M){return(A>>>19|M<<13)^(M>>>29|A<<3)^(A>>>6|M<<26)}function Q(A,M){return A>>>0>>0?1:0}g(E,I),E.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},E.prototype._update=function(A){for(var M=this._w,t=0|this._ah,g=0|this._bh,I=0|this._ch,e=0|this._dh,T=0|this._eh,E=0|this._fh,a=0|this._gh,h=0|this._hh,s=0|this._al,y=0|this._bl,w=0|this._cl,j=0|this._dl,L=0|this._el,d=0|this._fl,x=0|this._gl,Y=0|this._hl,u=0;u<32;u+=2)M[u]=A.readInt32BE(4*u),M[u+1]=A.readInt32BE(4*u+4);for(;u<160;u+=2){var S=M[u-30],l=M[u-30+1],z=r(S,l),U=c(l,S),f=o(S=M[u-4],l=M[u-4+1]),O=B(l,S),F=M[u-14],m=M[u-14+1],R=M[u-32],k=M[u-32+1],p=U+m|0,b=z+F+Q(p,U)|0;b=(b=b+f+Q(p=p+O|0,O)|0)+R+Q(p=p+k|0,k)|0,M[u]=b,M[u+1]=p}for(var G=0;G<160;G+=2){b=M[G],p=M[G+1];var J=n(t,g,I),H=n(s,y,w),X=D(t,s),v=D(s,t),V=C(T,L),W=C(L,T),P=i[G],Z=i[G+1],K=N(T,E,a),q=N(L,d,x),_=Y+W|0,$=h+V+Q(_,Y)|0;$=($=($=$+K+Q(_=_+q|0,q)|0)+P+Q(_=_+Z|0,Z)|0)+b+Q(_=_+p|0,p)|0;var AA=v+H|0,MA=X+J+Q(AA,v)|0;h=a,Y=x,a=E,x=d,E=T,d=L,T=e+$+Q(L=j+_|0,j)|0,e=I,j=w,I=g,w=y,g=t,y=s,t=$+MA+Q(s=_+AA|0,_)|0}this._al=this._al+s|0,this._bl=this._bl+y|0,this._cl=this._cl+w|0,this._dl=this._dl+j|0,this._el=this._el+L|0,this._fl=this._fl+d|0,this._gl=this._gl+x|0,this._hl=this._hl+Y|0,this._ah=this._ah+t+Q(this._al,s)|0,this._bh=this._bh+g+Q(this._bl,y)|0,this._ch=this._ch+I+Q(this._cl,w)|0,this._dh=this._dh+e+Q(this._dl,j)|0,this._eh=this._eh+T+Q(this._el,L)|0,this._fh=this._fh+E+Q(this._fl,d)|0,this._gh=this._gh+a+Q(this._gl,x)|0,this._hh=this._hh+h+Q(this._hl,Y)|0},E.prototype._hash=function(){var A=e.allocUnsafe(64);function M(M,t,g){A.writeInt32BE(M,g),A.writeInt32BE(t,g+4)}return M(this._ah,this._al,0),M(this._bh,this._bl,8),M(this._ch,this._cl,16),M(this._dh,this._dl,24),M(this._eh,this._el,32),M(this._fh,this._fl,40),M(this._gh,this._gl,48),M(this._hh,this._hl,56),A},A.exports=E},function(A,M,t){"use strict";(function(M,g){var I=t(31);A.exports=h;var e,i=t(59);h.ReadableState=a;t(7).EventEmitter;var T=function(A,M){return A.listeners(M).length},E=t(73),N=t(42).Buffer,n=M.Uint8Array||function(){};var D=Object.create(t(25));D.inherits=t(3);var C=t(136),r=void 0;r=C&&C.debuglog?C.debuglog("stream"):function(){};var c,o=t(137),B=t(74);D.inherits(h,E);var Q=["error","close","destroy","pause","resume"];function a(A,M){A=A||{};var g=M instanceof(e=e||t(16));this.objectMode=!!A.objectMode,g&&(this.objectMode=this.objectMode||!!A.readableObjectMode);var I=A.highWaterMark,i=A.readableHighWaterMark,T=this.objectMode?16:16384;this.highWaterMark=I||0===I?I:g&&(i||0===i)?i:T,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new o,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=A.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,A.encoding&&(c||(c=t(24).StringDecoder),this.decoder=new c(A.encoding),this.encoding=A.encoding)}function h(A){if(e=e||t(16),!(this instanceof h))return new h(A);this._readableState=new a(A,this),this.readable=!0,A&&("function"==typeof A.read&&(this._read=A.read),"function"==typeof A.destroy&&(this._destroy=A.destroy)),E.call(this)}function s(A,M,t,g,I){var e,i=A._readableState;null===M?(i.reading=!1,function(A,M){if(M.ended)return;if(M.decoder){var t=M.decoder.end();t&&t.length&&(M.buffer.push(t),M.length+=M.objectMode?1:t.length)}M.ended=!0,j(A)}(A,i)):(I||(e=function(A,M){var t;g=M,N.isBuffer(g)||g instanceof n||"string"==typeof M||void 0===M||A.objectMode||(t=new TypeError("Invalid non-string/buffer chunk"));var g;return t}(i,M)),e?A.emit("error",e):i.objectMode||M&&M.length>0?("string"==typeof M||i.objectMode||Object.getPrototypeOf(M)===N.prototype||(M=function(A){return N.from(A)}(M)),g?i.endEmitted?A.emit("error",new Error("stream.unshift() after end event")):y(A,i,M,!0):i.ended?A.emit("error",new Error("stream.push() after EOF")):(i.reading=!1,i.decoder&&!t?(M=i.decoder.write(M),i.objectMode||0!==M.length?y(A,i,M,!1):d(A,i)):y(A,i,M,!1))):g||(i.reading=!1));return function(A){return!A.ended&&(A.needReadable||A.lengthM.highWaterMark&&(M.highWaterMark=function(A){return A>=8388608?A=8388608:(A--,A|=A>>>1,A|=A>>>2,A|=A>>>4,A|=A>>>8,A|=A>>>16,A++),A}(A)),A<=M.length?A:M.ended?M.length:(M.needReadable=!0,0))}function j(A){var M=A._readableState;M.needReadable=!1,M.emittedReadable||(r("emitReadable",M.flowing),M.emittedReadable=!0,M.sync?I.nextTick(L,A):L(A))}function L(A){r("emit readable"),A.emit("readable"),S(A)}function d(A,M){M.readingMore||(M.readingMore=!0,I.nextTick(x,A,M))}function x(A,M){for(var t=M.length;!M.reading&&!M.flowing&&!M.ended&&M.length=M.length?(t=M.decoder?M.buffer.join(""):1===M.buffer.length?M.buffer.head.data:M.buffer.concat(M.length),M.buffer.clear()):t=function(A,M,t){var g;Ae.length?e.length:A;if(i===e.length?I+=e:I+=e.slice(0,A),0===(A-=i)){i===e.length?(++g,t.next?M.head=t.next:M.head=M.tail=null):(M.head=t,t.data=e.slice(i));break}++g}return M.length-=g,I}(A,M):function(A,M){var t=N.allocUnsafe(A),g=M.head,I=1;g.data.copy(t),A-=g.data.length;for(;g=g.next;){var e=g.data,i=A>e.length?e.length:A;if(e.copy(t,t.length-A,0,i),0===(A-=i)){i===e.length?(++I,g.next?M.head=g.next:M.head=M.tail=null):(M.head=g,g.data=e.slice(i));break}++I}return M.length-=I,t}(A,M);return g}(A,M.buffer,M.decoder),t);var t}function z(A){var M=A._readableState;if(M.length>0)throw new Error('"endReadable()" called on non-empty stream');M.endEmitted||(M.ended=!0,I.nextTick(U,M,A))}function U(A,M){A.endEmitted||0!==A.length||(A.endEmitted=!0,M.readable=!1,M.emit("end"))}function f(A,M){for(var t=0,g=A.length;t=M.highWaterMark||M.ended))return r("read: emitReadable",M.length,M.ended),0===M.length&&M.ended?z(this):j(this),null;if(0===(A=w(A,M))&&M.ended)return 0===M.length&&z(this),null;var g,I=M.needReadable;return r("need readable",I),(0===M.length||M.length-A0?l(A,M):null)?(M.needReadable=!0,A=0):M.length-=A,0===M.length&&(M.ended||(M.needReadable=!0),t!==A&&M.ended&&z(this)),null!==g&&this.emit("data",g),g},h.prototype._read=function(A){this.emit("error",new Error("_read() is not implemented"))},h.prototype.pipe=function(A,M){var t=this,e=this._readableState;switch(e.pipesCount){case 0:e.pipes=A;break;case 1:e.pipes=[e.pipes,A];break;default:e.pipes.push(A)}e.pipesCount+=1,r("pipe count=%d opts=%j",e.pipesCount,M);var E=(!M||!1!==M.end)&&A!==g.stdout&&A!==g.stderr?n:h;function N(M,g){r("onunpipe"),M===t&&g&&!1===g.hasUnpiped&&(g.hasUnpiped=!0,r("cleanup"),A.removeListener("close",Q),A.removeListener("finish",a),A.removeListener("drain",D),A.removeListener("error",B),A.removeListener("unpipe",N),t.removeListener("end",n),t.removeListener("end",h),t.removeListener("data",o),C=!0,!e.awaitDrain||A._writableState&&!A._writableState.needDrain||D())}function n(){r("onend"),A.end()}e.endEmitted?I.nextTick(E):t.once("end",E),A.on("unpipe",N);var D=function(A){return function(){var M=A._readableState;r("pipeOnDrain",M.awaitDrain),M.awaitDrain&&M.awaitDrain--,0===M.awaitDrain&&T(A,"data")&&(M.flowing=!0,S(A))}}(t);A.on("drain",D);var C=!1;var c=!1;function o(M){r("ondata"),c=!1,!1!==A.write(M)||c||((1===e.pipesCount&&e.pipes===A||e.pipesCount>1&&-1!==f(e.pipes,A))&&!C&&(r("false write response, pause",t._readableState.awaitDrain),t._readableState.awaitDrain++,c=!0),t.pause())}function B(M){r("onerror",M),h(),A.removeListener("error",B),0===T(A,"error")&&A.emit("error",M)}function Q(){A.removeListener("finish",a),h()}function a(){r("onfinish"),A.removeListener("close",Q),h()}function h(){r("unpipe"),t.unpipe(A)}return t.on("data",o),function(A,M,t){if("function"==typeof A.prependListener)return A.prependListener(M,t);A._events&&A._events[M]?i(A._events[M])?A._events[M].unshift(t):A._events[M]=[t,A._events[M]]:A.on(M,t)}(A,"error",B),A.once("close",Q),A.once("finish",a),A.emit("pipe",t),e.flowing||(r("pipe resume"),t.resume()),A},h.prototype.unpipe=function(A){var M=this._readableState,t={hasUnpiped:!1};if(0===M.pipesCount)return this;if(1===M.pipesCount)return A&&A!==M.pipes||(A||(A=M.pipes),M.pipes=null,M.pipesCount=0,M.flowing=!1,A&&A.emit("unpipe",this,t)),this;if(!A){var g=M.pipes,I=M.pipesCount;M.pipes=null,M.pipesCount=0,M.flowing=!1;for(var e=0;et)?M=("rmd160"===A?new E:N(A)).update(M).digest():M.lengtht||M!=M)throw new TypeError("Bad key length")}},function(A,M,t){(function(M){var t;if(M.browser)t="utf-8";else if(M.version){t=parseInt(M.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary"}else t="utf-8";A.exports=t}).call(this,t(8))},function(A,M,t){var g=t(77),I=t(39),e=t(40),i=t(4).Buffer,T=t(80),E=t(81),N=t(83),n=i.alloc(128),D={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function C(A,M,t){var T=function(A){function M(M){return e(A).update(M).digest()}return"rmd160"===A||"ripemd160"===A?function(A){return(new I).update(A).digest()}:"md5"===A?g:M}(A),E="sha512"===A||"sha384"===A?128:64;M.length>E?M=T(M):M.length>>0},M.writeUInt32BE=function(A,M,t){A[0+t]=M>>>24,A[1+t]=M>>>16&255,A[2+t]=M>>>8&255,A[3+t]=255&M},M.ip=function(A,M,t,g){for(var I=0,e=0,i=6;i>=0;i-=2){for(var T=0;T<=24;T+=8)I<<=1,I|=M>>>T+i&1;for(T=0;T<=24;T+=8)I<<=1,I|=A>>>T+i&1}for(i=6;i>=0;i-=2){for(T=1;T<=25;T+=8)e<<=1,e|=M>>>T+i&1;for(T=1;T<=25;T+=8)e<<=1,e|=A>>>T+i&1}t[g+0]=I>>>0,t[g+1]=e>>>0},M.rip=function(A,M,t,g){for(var I=0,e=0,i=0;i<4;i++)for(var T=24;T>=0;T-=8)I<<=1,I|=M>>>T+i&1,I<<=1,I|=A>>>T+i&1;for(i=4;i<8;i++)for(T=24;T>=0;T-=8)e<<=1,e|=M>>>T+i&1,e<<=1,e|=A>>>T+i&1;t[g+0]=I>>>0,t[g+1]=e>>>0},M.pc1=function(A,M,t,g){for(var I=0,e=0,i=7;i>=5;i--){for(var T=0;T<=24;T+=8)I<<=1,I|=M>>T+i&1;for(T=0;T<=24;T+=8)I<<=1,I|=A>>T+i&1}for(T=0;T<=24;T+=8)I<<=1,I|=M>>T+i&1;for(i=1;i<=3;i++){for(T=0;T<=24;T+=8)e<<=1,e|=M>>T+i&1;for(T=0;T<=24;T+=8)e<<=1,e|=A>>T+i&1}for(T=0;T<=24;T+=8)e<<=1,e|=A>>T+i&1;t[g+0]=I>>>0,t[g+1]=e>>>0},M.r28shl=function(A,M){return A<>>28-M};var g=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];M.pc2=function(A,M,t,I){for(var e=0,i=0,T=g.length>>>1,E=0;E>>g[E]&1;for(E=T;E>>g[E]&1;t[I+0]=e>>>0,t[I+1]=i>>>0},M.expand=function(A,M,t){var g=0,I=0;g=(1&A)<<5|A>>>27;for(var e=23;e>=15;e-=4)g<<=6,g|=A>>>e&63;for(e=11;e>=3;e-=4)I|=A>>>e&63,I<<=6;I|=(31&A)<<1|A>>>31,M[t+0]=g>>>0,M[t+1]=I>>>0};var I=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];M.substitute=function(A,M){for(var t=0,g=0;g<4;g++){t<<=4,t|=I[64*g+(A>>>18-6*g&63)]}for(g=0;g<4;g++){t<<=4,t|=I[256+64*g+(M>>>18-6*g&63)]}return t>>>0};var e=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];M.permute=function(A){for(var M=0,t=0;t>>e[t]&1;return M>>>0},M.padSplit=function(A,M,t){for(var g=A.toString(2);g.length>>1];t=e.r28shl(t,T),I=e.r28shl(I,T),e.pc2(t,I,A.keys,i)}},E.prototype._update=function(A,M,t,g){var I=this._desState,i=e.readUInt32BE(A,M),T=e.readUInt32BE(A,M+4);e.ip(i,T,I.tmp,0),i=I.tmp[0],T=I.tmp[1],"encrypt"===this.type?this._encrypt(I,i,T,I.tmp,0):this._decrypt(I,i,T,I.tmp,0),i=I.tmp[0],T=I.tmp[1],e.writeUInt32BE(t,i,g),e.writeUInt32BE(t,T,g+4)},E.prototype._pad=function(A,M){for(var t=A.length-M,g=M;g>>0,i=C}e.rip(T,i,g,I)},E.prototype._decrypt=function(A,M,t,g,I){for(var i=t,T=M,E=A.keys.length-2;E>=0;E-=2){var N=A.keys[E],n=A.keys[E+1];e.expand(i,A.tmp,0),N^=A.tmp[0],n^=A.tmp[1];var D=e.substitute(N,n),C=i;i=(T^e.permute(D))>>>0,T=C}e.rip(i,T,g,I)}},function(A,M,t){var g=t(26),I=t(4).Buffer,e=t(87);function i(A){var M=A._cipher.encryptBlockRaw(A._prev);return e(A._prev),M}M.encrypt=function(A,M){var t=Math.ceil(M.length/16),e=A._cache.length;A._cache=I.concat([A._cache,I.allocUnsafe(16*t)]);for(var T=0;TA;)t.ishrn(1);if(t.isEven()&&t.iadd(T),t.testn(1)||t.iadd(E),M.cmp(E)){if(!M.cmp(N))for(;t.mod(n).cmp(D);)t.iadd(r)}else for(;t.mod(e).cmp(C);)t.iadd(r);if(B(c=t.shrn(1))&&B(t)&&Q(c)&&Q(t)&&i.test(c)&&i.test(t))return t}}},function(A,M){A.exports=function(A){return A.webpackPolyfill||(A.deprecate=function(){},A.paths=[],A.children||(A.children=[]),Object.defineProperty(A,"loaded",{enumerable:!0,get:function(){return A.l}}),Object.defineProperty(A,"id",{enumerable:!0,get:function(){return A.i}}),A.webpackPolyfill=1),A}},function(A,M,t){var g=t(6),I=t(47);function e(A){this.rand=A||new I.Rand}A.exports=e,e.create=function(A){return new e(A)},e.prototype._randbelow=function(A){var M=A.bitLength(),t=Math.ceil(M/8);do{var I=new g(this.rand.generate(t))}while(I.cmp(A)>=0);return I},e.prototype._randrange=function(A,M){var t=M.sub(A);return A.add(this._randbelow(t))},e.prototype.test=function(A,M,t){var I=A.bitLength(),e=g.mont(A),i=new g(1).toRed(e);M||(M=Math.max(1,I/48|0));for(var T=A.subn(1),E=0;!T.testn(E);E++);for(var N=A.shrn(E),n=T.toRed(e);M>0;M--){var D=this._randrange(new g(2),T);t&&t(D);var C=D.toRed(e).redPow(N);if(0!==C.cmp(i)&&0!==C.cmp(n)){for(var r=1;r0;M--){var n=this._randrange(new g(2),i),D=A.gcd(n);if(0!==D.cmpn(1))return D;var C=n.toRed(I).redPow(E);if(0!==C.cmp(e)&&0!==C.cmp(N)){for(var r=1;r>8,i=255&I;e?t.push(e,i):t.push(i)}return t},g.zero2=I,g.toHex=e,g.encode=function(A,M){return"hex"===M?e(A):A}},function(A,M,t){"use strict";var g=M;g.base=t(34),g.short=t(172),g.mont=t(173),g.edwards=t(174)},function(A,M,t){"use strict";var g=t(14).rotr32;function I(A,M,t){return A&M^~A&t}function e(A,M,t){return A&M^A&t^M&t}function i(A,M,t){return A^M^t}M.ft_1=function(A,M,t,g){return 0===A?I(M,t,g):1===A||3===A?i(M,t,g):2===A?e(M,t,g):void 0},M.ch32=I,M.maj32=e,M.p32=i,M.s0_256=function(A){return g(A,2)^g(A,13)^g(A,22)},M.s1_256=function(A){return g(A,6)^g(A,11)^g(A,25)},M.g0_256=function(A){return g(A,7)^g(A,18)^A>>>3},M.g1_256=function(A){return g(A,17)^g(A,19)^A>>>10}},function(A,M,t){"use strict";var g=t(14),I=t(27),e=t(96),i=t(11),T=g.sum32,E=g.sum32_4,N=g.sum32_5,n=e.ch32,D=e.maj32,C=e.s0_256,r=e.s1_256,c=e.g0_256,o=e.g1_256,B=I.BlockHash,Q=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function a(){if(!(this instanceof a))return new a;B.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=Q,this.W=new Array(64)}g.inherits(a,B),A.exports=a,a.blockSize=512,a.outSize=256,a.hmacStrength=192,a.padLength=64,a.prototype._update=function(A,M){for(var t=this.W,g=0;g<16;g++)t[g]=A[M+g];for(;g=49&&N<=54?N-49+10:N>=17&&N<=22?N-17+10:N,i|=E}return g(!(240&i),"Invalid character in "+A),I}function E(A,M,t,I){for(var e=0,i=0,T=Math.min(A.length,t),E=M;E=49?N-49+10:N>=17?N-17+10:N,g(N>=0&&i0?A:M},e.min=function(A,M){return A.cmp(M)<0?A:M},e.prototype._init=function(A,M,t){if("number"==typeof A)return this._initNumber(A,M,t);if("object"==typeof A)return this._initArray(A,M,t);"hex"===M&&(M=16),g(M===(0|M)&&M>=2&&M<=36);var I=0;"-"===(A=A.toString().replace(/\s+/g,""))[0]&&I++,16===M?this._parseHex(A,I):this._parseBase(A,M,I),"-"===A[0]&&(this.negative=1),this._strip(),"le"===t&&this._initArray(this.toArray(),M,t)},e.prototype._initNumber=function(A,M,t){A<0&&(this.negative=1,A=-A),A<67108864?(this.words=[67108863&A],this.length=1):A<4503599627370496?(this.words=[67108863&A,A/67108864&67108863],this.length=2):(g(A<9007199254740992),this.words=[67108863&A,A/67108864&67108863,1],this.length=3),"le"===t&&this._initArray(this.toArray(),M,t)},e.prototype._initArray=function(A,M,t){if(g("number"==typeof A.length),A.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(A.length/3),this.words=new Array(this.length);for(var I=0;I=0;I-=3)i=A[I]|A[I-1]<<8|A[I-2]<<16,this.words[e]|=i<>>26-T&67108863,(T+=24)>=26&&(T-=26,e++);else if("le"===t)for(I=0,e=0;I>>26-T&67108863,(T+=24)>=26&&(T-=26,e++);return this._strip()},e.prototype._parseHex=function(A,M){this.length=Math.ceil((A.length-M)/6),this.words=new Array(this.length);for(var t=0;t=M;t-=6)I=T(A,t,t+6),this.words[g]|=I<>>26-e&4194303,(e+=24)>=26&&(e-=26,g++);t+6!==M&&(I=T(A,M,t+6),this.words[g]|=I<>>26-e&4194303),this._strip()},e.prototype._parseBase=function(A,M,t){this.words=[0],this.length=1;for(var g=0,I=1;I<=67108863;I*=M)g++;g--,I=I/M|0;for(var e=A.length-t,i=e%g,T=Math.min(e,e-i)+t,N=0,n=t;n1&&0===this.words[this.length-1];)this.length--;return this._normSign()},e.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{e.prototype[Symbol.for("nodejs.util.inspect.custom")]=n}catch(A){e.prototype.inspect=n}else e.prototype.inspect=n;function n(){return(this.red?""}var D=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],C=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],r=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];e.prototype.toString=function(A,M){var t;if(M=0|M||1,16===(A=A||10)||"hex"===A){t="";for(var I=0,e=0,i=0;i>>24-I&16777215)||i!==this.length-1?D[6-E.length]+E+t:E+t,(I+=2)>=26&&(I-=26,i--)}for(0!==e&&(t=e.toString(16)+t);t.length%M!=0;)t="0"+t;return 0!==this.negative&&(t="-"+t),t}if(A===(0|A)&&A>=2&&A<=36){var N=C[A],n=r[A];t="";var c=this.clone();for(c.negative=0;!c.isZero();){var o=c.modrn(n).toString(A);t=(c=c.idivn(n)).isZero()?o+t:D[N-o.length]+o+t}for(this.isZero()&&(t="0"+t);t.length%M!=0;)t="0"+t;return 0!==this.negative&&(t="-"+t),t}g(!1,"Base should be between 2 and 36")},e.prototype.toNumber=function(){var A=this.words[0];return 2===this.length?A+=67108864*this.words[1]:3===this.length&&1===this.words[2]?A+=4503599627370496+67108864*this.words[1]:this.length>2&&g(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-A:A},e.prototype.toJSON=function(){return this.toString(16,2)},i&&(e.prototype.toBuffer=function(A,M){return this.toArrayLike(i,A,M)}),e.prototype.toArray=function(A,M){return this.toArrayLike(Array,A,M)};function c(A,M,t){t.negative=M.negative^A.negative;var g=A.length+M.length|0;t.length=g,g=g-1|0;var I=0|A.words[0],e=0|M.words[0],i=I*e,T=67108863&i,E=i/67108864|0;t.words[0]=T;for(var N=1;N>>26,D=67108863&E,C=Math.min(N,M.length-1),r=Math.max(0,N-A.length+1);r<=C;r++){var c=N-r|0;n+=(i=(I=0|A.words[c])*(e=0|M.words[r])+D)/67108864|0,D=67108863&i}t.words[N]=0|D,E=0|n}return 0!==E?t.words[N]=0|E:t.length--,t._strip()}e.prototype.toArrayLike=function(A,M,t){this._strip();var I=this.byteLength(),e=t||Math.max(1,I);g(I<=e,"byte array longer than desired length"),g(e>0,"Requested array length <= 0");var i=function(A,M){return A.allocUnsafe?A.allocUnsafe(M):new A(M)}(A,e);return this["_toArrayLike"+("le"===M?"LE":"BE")](i,I),i},e.prototype._toArrayLikeLE=function(A,M){for(var t=0,g=0,I=0,e=0;I>8&255),t>16&255),6===e?(t>24&255),g=0,e=0):(g=i>>>24,e+=2)}if(t=0&&(A[t--]=i>>8&255),t>=0&&(A[t--]=i>>16&255),6===e?(t>=0&&(A[t--]=i>>24&255),g=0,e=0):(g=i>>>24,e+=2)}if(t>=0)for(A[t--]=g;t>=0;)A[t--]=0},Math.clz32?e.prototype._countBits=function(A){return 32-Math.clz32(A)}:e.prototype._countBits=function(A){var M=A,t=0;return M>=4096&&(t+=13,M>>>=13),M>=64&&(t+=7,M>>>=7),M>=8&&(t+=4,M>>>=4),M>=2&&(t+=2,M>>>=2),t+M},e.prototype._zeroBits=function(A){if(0===A)return 26;var M=A,t=0;return 0==(8191&M)&&(t+=13,M>>>=13),0==(127&M)&&(t+=7,M>>>=7),0==(15&M)&&(t+=4,M>>>=4),0==(3&M)&&(t+=2,M>>>=2),0==(1&M)&&t++,t},e.prototype.bitLength=function(){var A=this.words[this.length-1],M=this._countBits(A);return 26*(this.length-1)+M},e.prototype.zeroBits=function(){if(this.isZero())return 0;for(var A=0,M=0;MA.length?this.clone().ior(A):A.clone().ior(this)},e.prototype.uor=function(A){return this.length>A.length?this.clone().iuor(A):A.clone().iuor(this)},e.prototype.iuand=function(A){var M;M=this.length>A.length?A:this;for(var t=0;tA.length?this.clone().iand(A):A.clone().iand(this)},e.prototype.uand=function(A){return this.length>A.length?this.clone().iuand(A):A.clone().iuand(this)},e.prototype.iuxor=function(A){var M,t;this.length>A.length?(M=this,t=A):(M=A,t=this);for(var g=0;gA.length?this.clone().ixor(A):A.clone().ixor(this)},e.prototype.uxor=function(A){return this.length>A.length?this.clone().iuxor(A):A.clone().iuxor(this)},e.prototype.inotn=function(A){g("number"==typeof A&&A>=0);var M=0|Math.ceil(A/26),t=A%26;this._expand(M),t>0&&M--;for(var I=0;I0&&(this.words[I]=~this.words[I]&67108863>>26-t),this._strip()},e.prototype.notn=function(A){return this.clone().inotn(A)},e.prototype.setn=function(A,M){g("number"==typeof A&&A>=0);var t=A/26|0,I=A%26;return this._expand(t+1),this.words[t]=M?this.words[t]|1<A.length?(t=this,g=A):(t=A,g=this);for(var I=0,e=0;e>>26;for(;0!==I&&e>>26;if(this.length=t.length,0!==I)this.words[this.length]=I,this.length++;else if(t!==this)for(;eA.length?this.clone().iadd(A):A.clone().iadd(this)},e.prototype.isub=function(A){if(0!==A.negative){A.negative=0;var M=this.iadd(A);return A.negative=1,M._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(A),this.negative=1,this._normSign();var t,g,I=this.cmp(A);if(0===I)return this.negative=0,this.length=1,this.words[0]=0,this;I>0?(t=this,g=A):(t=A,g=this);for(var e=0,i=0;i>26,this.words[i]=67108863&M;for(;0!==e&&i>26,this.words[i]=67108863&M;if(0===e&&i>>13,r=0|i[1],c=8191&r,o=r>>>13,B=0|i[2],Q=8191&B,a=B>>>13,h=0|i[3],s=8191&h,y=h>>>13,w=0|i[4],j=8191&w,L=w>>>13,d=0|i[5],x=8191&d,Y=d>>>13,u=0|i[6],S=8191&u,l=u>>>13,z=0|i[7],U=8191&z,f=z>>>13,O=0|i[8],F=8191&O,m=O>>>13,R=0|i[9],k=8191&R,p=R>>>13,b=0|T[0],G=8191&b,J=b>>>13,H=0|T[1],X=8191&H,v=H>>>13,V=0|T[2],W=8191&V,P=V>>>13,Z=0|T[3],K=8191&Z,q=Z>>>13,_=0|T[4],$=8191&_,AA=_>>>13,MA=0|T[5],tA=8191&MA,gA=MA>>>13,IA=0|T[6],eA=8191&IA,iA=IA>>>13,TA=0|T[7],EA=8191&TA,NA=TA>>>13,nA=0|T[8],DA=8191&nA,CA=nA>>>13,rA=0|T[9],cA=8191&rA,oA=rA>>>13;t.negative=A.negative^M.negative,t.length=19;var BA=(N+(g=Math.imul(D,G))|0)+((8191&(I=(I=Math.imul(D,J))+Math.imul(C,G)|0))<<13)|0;N=((e=Math.imul(C,J))+(I>>>13)|0)+(BA>>>26)|0,BA&=67108863,g=Math.imul(c,G),I=(I=Math.imul(c,J))+Math.imul(o,G)|0,e=Math.imul(o,J);var QA=(N+(g=g+Math.imul(D,X)|0)|0)+((8191&(I=(I=I+Math.imul(D,v)|0)+Math.imul(C,X)|0))<<13)|0;N=((e=e+Math.imul(C,v)|0)+(I>>>13)|0)+(QA>>>26)|0,QA&=67108863,g=Math.imul(Q,G),I=(I=Math.imul(Q,J))+Math.imul(a,G)|0,e=Math.imul(a,J),g=g+Math.imul(c,X)|0,I=(I=I+Math.imul(c,v)|0)+Math.imul(o,X)|0,e=e+Math.imul(o,v)|0;var aA=(N+(g=g+Math.imul(D,W)|0)|0)+((8191&(I=(I=I+Math.imul(D,P)|0)+Math.imul(C,W)|0))<<13)|0;N=((e=e+Math.imul(C,P)|0)+(I>>>13)|0)+(aA>>>26)|0,aA&=67108863,g=Math.imul(s,G),I=(I=Math.imul(s,J))+Math.imul(y,G)|0,e=Math.imul(y,J),g=g+Math.imul(Q,X)|0,I=(I=I+Math.imul(Q,v)|0)+Math.imul(a,X)|0,e=e+Math.imul(a,v)|0,g=g+Math.imul(c,W)|0,I=(I=I+Math.imul(c,P)|0)+Math.imul(o,W)|0,e=e+Math.imul(o,P)|0;var hA=(N+(g=g+Math.imul(D,K)|0)|0)+((8191&(I=(I=I+Math.imul(D,q)|0)+Math.imul(C,K)|0))<<13)|0;N=((e=e+Math.imul(C,q)|0)+(I>>>13)|0)+(hA>>>26)|0,hA&=67108863,g=Math.imul(j,G),I=(I=Math.imul(j,J))+Math.imul(L,G)|0,e=Math.imul(L,J),g=g+Math.imul(s,X)|0,I=(I=I+Math.imul(s,v)|0)+Math.imul(y,X)|0,e=e+Math.imul(y,v)|0,g=g+Math.imul(Q,W)|0,I=(I=I+Math.imul(Q,P)|0)+Math.imul(a,W)|0,e=e+Math.imul(a,P)|0,g=g+Math.imul(c,K)|0,I=(I=I+Math.imul(c,q)|0)+Math.imul(o,K)|0,e=e+Math.imul(o,q)|0;var sA=(N+(g=g+Math.imul(D,$)|0)|0)+((8191&(I=(I=I+Math.imul(D,AA)|0)+Math.imul(C,$)|0))<<13)|0;N=((e=e+Math.imul(C,AA)|0)+(I>>>13)|0)+(sA>>>26)|0,sA&=67108863,g=Math.imul(x,G),I=(I=Math.imul(x,J))+Math.imul(Y,G)|0,e=Math.imul(Y,J),g=g+Math.imul(j,X)|0,I=(I=I+Math.imul(j,v)|0)+Math.imul(L,X)|0,e=e+Math.imul(L,v)|0,g=g+Math.imul(s,W)|0,I=(I=I+Math.imul(s,P)|0)+Math.imul(y,W)|0,e=e+Math.imul(y,P)|0,g=g+Math.imul(Q,K)|0,I=(I=I+Math.imul(Q,q)|0)+Math.imul(a,K)|0,e=e+Math.imul(a,q)|0,g=g+Math.imul(c,$)|0,I=(I=I+Math.imul(c,AA)|0)+Math.imul(o,$)|0,e=e+Math.imul(o,AA)|0;var yA=(N+(g=g+Math.imul(D,tA)|0)|0)+((8191&(I=(I=I+Math.imul(D,gA)|0)+Math.imul(C,tA)|0))<<13)|0;N=((e=e+Math.imul(C,gA)|0)+(I>>>13)|0)+(yA>>>26)|0,yA&=67108863,g=Math.imul(S,G),I=(I=Math.imul(S,J))+Math.imul(l,G)|0,e=Math.imul(l,J),g=g+Math.imul(x,X)|0,I=(I=I+Math.imul(x,v)|0)+Math.imul(Y,X)|0,e=e+Math.imul(Y,v)|0,g=g+Math.imul(j,W)|0,I=(I=I+Math.imul(j,P)|0)+Math.imul(L,W)|0,e=e+Math.imul(L,P)|0,g=g+Math.imul(s,K)|0,I=(I=I+Math.imul(s,q)|0)+Math.imul(y,K)|0,e=e+Math.imul(y,q)|0,g=g+Math.imul(Q,$)|0,I=(I=I+Math.imul(Q,AA)|0)+Math.imul(a,$)|0,e=e+Math.imul(a,AA)|0,g=g+Math.imul(c,tA)|0,I=(I=I+Math.imul(c,gA)|0)+Math.imul(o,tA)|0,e=e+Math.imul(o,gA)|0;var wA=(N+(g=g+Math.imul(D,eA)|0)|0)+((8191&(I=(I=I+Math.imul(D,iA)|0)+Math.imul(C,eA)|0))<<13)|0;N=((e=e+Math.imul(C,iA)|0)+(I>>>13)|0)+(wA>>>26)|0,wA&=67108863,g=Math.imul(U,G),I=(I=Math.imul(U,J))+Math.imul(f,G)|0,e=Math.imul(f,J),g=g+Math.imul(S,X)|0,I=(I=I+Math.imul(S,v)|0)+Math.imul(l,X)|0,e=e+Math.imul(l,v)|0,g=g+Math.imul(x,W)|0,I=(I=I+Math.imul(x,P)|0)+Math.imul(Y,W)|0,e=e+Math.imul(Y,P)|0,g=g+Math.imul(j,K)|0,I=(I=I+Math.imul(j,q)|0)+Math.imul(L,K)|0,e=e+Math.imul(L,q)|0,g=g+Math.imul(s,$)|0,I=(I=I+Math.imul(s,AA)|0)+Math.imul(y,$)|0,e=e+Math.imul(y,AA)|0,g=g+Math.imul(Q,tA)|0,I=(I=I+Math.imul(Q,gA)|0)+Math.imul(a,tA)|0,e=e+Math.imul(a,gA)|0,g=g+Math.imul(c,eA)|0,I=(I=I+Math.imul(c,iA)|0)+Math.imul(o,eA)|0,e=e+Math.imul(o,iA)|0;var jA=(N+(g=g+Math.imul(D,EA)|0)|0)+((8191&(I=(I=I+Math.imul(D,NA)|0)+Math.imul(C,EA)|0))<<13)|0;N=((e=e+Math.imul(C,NA)|0)+(I>>>13)|0)+(jA>>>26)|0,jA&=67108863,g=Math.imul(F,G),I=(I=Math.imul(F,J))+Math.imul(m,G)|0,e=Math.imul(m,J),g=g+Math.imul(U,X)|0,I=(I=I+Math.imul(U,v)|0)+Math.imul(f,X)|0,e=e+Math.imul(f,v)|0,g=g+Math.imul(S,W)|0,I=(I=I+Math.imul(S,P)|0)+Math.imul(l,W)|0,e=e+Math.imul(l,P)|0,g=g+Math.imul(x,K)|0,I=(I=I+Math.imul(x,q)|0)+Math.imul(Y,K)|0,e=e+Math.imul(Y,q)|0,g=g+Math.imul(j,$)|0,I=(I=I+Math.imul(j,AA)|0)+Math.imul(L,$)|0,e=e+Math.imul(L,AA)|0,g=g+Math.imul(s,tA)|0,I=(I=I+Math.imul(s,gA)|0)+Math.imul(y,tA)|0,e=e+Math.imul(y,gA)|0,g=g+Math.imul(Q,eA)|0,I=(I=I+Math.imul(Q,iA)|0)+Math.imul(a,eA)|0,e=e+Math.imul(a,iA)|0,g=g+Math.imul(c,EA)|0,I=(I=I+Math.imul(c,NA)|0)+Math.imul(o,EA)|0,e=e+Math.imul(o,NA)|0;var LA=(N+(g=g+Math.imul(D,DA)|0)|0)+((8191&(I=(I=I+Math.imul(D,CA)|0)+Math.imul(C,DA)|0))<<13)|0;N=((e=e+Math.imul(C,CA)|0)+(I>>>13)|0)+(LA>>>26)|0,LA&=67108863,g=Math.imul(k,G),I=(I=Math.imul(k,J))+Math.imul(p,G)|0,e=Math.imul(p,J),g=g+Math.imul(F,X)|0,I=(I=I+Math.imul(F,v)|0)+Math.imul(m,X)|0,e=e+Math.imul(m,v)|0,g=g+Math.imul(U,W)|0,I=(I=I+Math.imul(U,P)|0)+Math.imul(f,W)|0,e=e+Math.imul(f,P)|0,g=g+Math.imul(S,K)|0,I=(I=I+Math.imul(S,q)|0)+Math.imul(l,K)|0,e=e+Math.imul(l,q)|0,g=g+Math.imul(x,$)|0,I=(I=I+Math.imul(x,AA)|0)+Math.imul(Y,$)|0,e=e+Math.imul(Y,AA)|0,g=g+Math.imul(j,tA)|0,I=(I=I+Math.imul(j,gA)|0)+Math.imul(L,tA)|0,e=e+Math.imul(L,gA)|0,g=g+Math.imul(s,eA)|0,I=(I=I+Math.imul(s,iA)|0)+Math.imul(y,eA)|0,e=e+Math.imul(y,iA)|0,g=g+Math.imul(Q,EA)|0,I=(I=I+Math.imul(Q,NA)|0)+Math.imul(a,EA)|0,e=e+Math.imul(a,NA)|0,g=g+Math.imul(c,DA)|0,I=(I=I+Math.imul(c,CA)|0)+Math.imul(o,DA)|0,e=e+Math.imul(o,CA)|0;var dA=(N+(g=g+Math.imul(D,cA)|0)|0)+((8191&(I=(I=I+Math.imul(D,oA)|0)+Math.imul(C,cA)|0))<<13)|0;N=((e=e+Math.imul(C,oA)|0)+(I>>>13)|0)+(dA>>>26)|0,dA&=67108863,g=Math.imul(k,X),I=(I=Math.imul(k,v))+Math.imul(p,X)|0,e=Math.imul(p,v),g=g+Math.imul(F,W)|0,I=(I=I+Math.imul(F,P)|0)+Math.imul(m,W)|0,e=e+Math.imul(m,P)|0,g=g+Math.imul(U,K)|0,I=(I=I+Math.imul(U,q)|0)+Math.imul(f,K)|0,e=e+Math.imul(f,q)|0,g=g+Math.imul(S,$)|0,I=(I=I+Math.imul(S,AA)|0)+Math.imul(l,$)|0,e=e+Math.imul(l,AA)|0,g=g+Math.imul(x,tA)|0,I=(I=I+Math.imul(x,gA)|0)+Math.imul(Y,tA)|0,e=e+Math.imul(Y,gA)|0,g=g+Math.imul(j,eA)|0,I=(I=I+Math.imul(j,iA)|0)+Math.imul(L,eA)|0,e=e+Math.imul(L,iA)|0,g=g+Math.imul(s,EA)|0,I=(I=I+Math.imul(s,NA)|0)+Math.imul(y,EA)|0,e=e+Math.imul(y,NA)|0,g=g+Math.imul(Q,DA)|0,I=(I=I+Math.imul(Q,CA)|0)+Math.imul(a,DA)|0,e=e+Math.imul(a,CA)|0;var xA=(N+(g=g+Math.imul(c,cA)|0)|0)+((8191&(I=(I=I+Math.imul(c,oA)|0)+Math.imul(o,cA)|0))<<13)|0;N=((e=e+Math.imul(o,oA)|0)+(I>>>13)|0)+(xA>>>26)|0,xA&=67108863,g=Math.imul(k,W),I=(I=Math.imul(k,P))+Math.imul(p,W)|0,e=Math.imul(p,P),g=g+Math.imul(F,K)|0,I=(I=I+Math.imul(F,q)|0)+Math.imul(m,K)|0,e=e+Math.imul(m,q)|0,g=g+Math.imul(U,$)|0,I=(I=I+Math.imul(U,AA)|0)+Math.imul(f,$)|0,e=e+Math.imul(f,AA)|0,g=g+Math.imul(S,tA)|0,I=(I=I+Math.imul(S,gA)|0)+Math.imul(l,tA)|0,e=e+Math.imul(l,gA)|0,g=g+Math.imul(x,eA)|0,I=(I=I+Math.imul(x,iA)|0)+Math.imul(Y,eA)|0,e=e+Math.imul(Y,iA)|0,g=g+Math.imul(j,EA)|0,I=(I=I+Math.imul(j,NA)|0)+Math.imul(L,EA)|0,e=e+Math.imul(L,NA)|0,g=g+Math.imul(s,DA)|0,I=(I=I+Math.imul(s,CA)|0)+Math.imul(y,DA)|0,e=e+Math.imul(y,CA)|0;var YA=(N+(g=g+Math.imul(Q,cA)|0)|0)+((8191&(I=(I=I+Math.imul(Q,oA)|0)+Math.imul(a,cA)|0))<<13)|0;N=((e=e+Math.imul(a,oA)|0)+(I>>>13)|0)+(YA>>>26)|0,YA&=67108863,g=Math.imul(k,K),I=(I=Math.imul(k,q))+Math.imul(p,K)|0,e=Math.imul(p,q),g=g+Math.imul(F,$)|0,I=(I=I+Math.imul(F,AA)|0)+Math.imul(m,$)|0,e=e+Math.imul(m,AA)|0,g=g+Math.imul(U,tA)|0,I=(I=I+Math.imul(U,gA)|0)+Math.imul(f,tA)|0,e=e+Math.imul(f,gA)|0,g=g+Math.imul(S,eA)|0,I=(I=I+Math.imul(S,iA)|0)+Math.imul(l,eA)|0,e=e+Math.imul(l,iA)|0,g=g+Math.imul(x,EA)|0,I=(I=I+Math.imul(x,NA)|0)+Math.imul(Y,EA)|0,e=e+Math.imul(Y,NA)|0,g=g+Math.imul(j,DA)|0,I=(I=I+Math.imul(j,CA)|0)+Math.imul(L,DA)|0,e=e+Math.imul(L,CA)|0;var uA=(N+(g=g+Math.imul(s,cA)|0)|0)+((8191&(I=(I=I+Math.imul(s,oA)|0)+Math.imul(y,cA)|0))<<13)|0;N=((e=e+Math.imul(y,oA)|0)+(I>>>13)|0)+(uA>>>26)|0,uA&=67108863,g=Math.imul(k,$),I=(I=Math.imul(k,AA))+Math.imul(p,$)|0,e=Math.imul(p,AA),g=g+Math.imul(F,tA)|0,I=(I=I+Math.imul(F,gA)|0)+Math.imul(m,tA)|0,e=e+Math.imul(m,gA)|0,g=g+Math.imul(U,eA)|0,I=(I=I+Math.imul(U,iA)|0)+Math.imul(f,eA)|0,e=e+Math.imul(f,iA)|0,g=g+Math.imul(S,EA)|0,I=(I=I+Math.imul(S,NA)|0)+Math.imul(l,EA)|0,e=e+Math.imul(l,NA)|0,g=g+Math.imul(x,DA)|0,I=(I=I+Math.imul(x,CA)|0)+Math.imul(Y,DA)|0,e=e+Math.imul(Y,CA)|0;var SA=(N+(g=g+Math.imul(j,cA)|0)|0)+((8191&(I=(I=I+Math.imul(j,oA)|0)+Math.imul(L,cA)|0))<<13)|0;N=((e=e+Math.imul(L,oA)|0)+(I>>>13)|0)+(SA>>>26)|0,SA&=67108863,g=Math.imul(k,tA),I=(I=Math.imul(k,gA))+Math.imul(p,tA)|0,e=Math.imul(p,gA),g=g+Math.imul(F,eA)|0,I=(I=I+Math.imul(F,iA)|0)+Math.imul(m,eA)|0,e=e+Math.imul(m,iA)|0,g=g+Math.imul(U,EA)|0,I=(I=I+Math.imul(U,NA)|0)+Math.imul(f,EA)|0,e=e+Math.imul(f,NA)|0,g=g+Math.imul(S,DA)|0,I=(I=I+Math.imul(S,CA)|0)+Math.imul(l,DA)|0,e=e+Math.imul(l,CA)|0;var lA=(N+(g=g+Math.imul(x,cA)|0)|0)+((8191&(I=(I=I+Math.imul(x,oA)|0)+Math.imul(Y,cA)|0))<<13)|0;N=((e=e+Math.imul(Y,oA)|0)+(I>>>13)|0)+(lA>>>26)|0,lA&=67108863,g=Math.imul(k,eA),I=(I=Math.imul(k,iA))+Math.imul(p,eA)|0,e=Math.imul(p,iA),g=g+Math.imul(F,EA)|0,I=(I=I+Math.imul(F,NA)|0)+Math.imul(m,EA)|0,e=e+Math.imul(m,NA)|0,g=g+Math.imul(U,DA)|0,I=(I=I+Math.imul(U,CA)|0)+Math.imul(f,DA)|0,e=e+Math.imul(f,CA)|0;var zA=(N+(g=g+Math.imul(S,cA)|0)|0)+((8191&(I=(I=I+Math.imul(S,oA)|0)+Math.imul(l,cA)|0))<<13)|0;N=((e=e+Math.imul(l,oA)|0)+(I>>>13)|0)+(zA>>>26)|0,zA&=67108863,g=Math.imul(k,EA),I=(I=Math.imul(k,NA))+Math.imul(p,EA)|0,e=Math.imul(p,NA),g=g+Math.imul(F,DA)|0,I=(I=I+Math.imul(F,CA)|0)+Math.imul(m,DA)|0,e=e+Math.imul(m,CA)|0;var UA=(N+(g=g+Math.imul(U,cA)|0)|0)+((8191&(I=(I=I+Math.imul(U,oA)|0)+Math.imul(f,cA)|0))<<13)|0;N=((e=e+Math.imul(f,oA)|0)+(I>>>13)|0)+(UA>>>26)|0,UA&=67108863,g=Math.imul(k,DA),I=(I=Math.imul(k,CA))+Math.imul(p,DA)|0,e=Math.imul(p,CA);var fA=(N+(g=g+Math.imul(F,cA)|0)|0)+((8191&(I=(I=I+Math.imul(F,oA)|0)+Math.imul(m,cA)|0))<<13)|0;N=((e=e+Math.imul(m,oA)|0)+(I>>>13)|0)+(fA>>>26)|0,fA&=67108863;var OA=(N+(g=Math.imul(k,cA))|0)+((8191&(I=(I=Math.imul(k,oA))+Math.imul(p,cA)|0))<<13)|0;return N=((e=Math.imul(p,oA))+(I>>>13)|0)+(OA>>>26)|0,OA&=67108863,E[0]=BA,E[1]=QA,E[2]=aA,E[3]=hA,E[4]=sA,E[5]=yA,E[6]=wA,E[7]=jA,E[8]=LA,E[9]=dA,E[10]=xA,E[11]=YA,E[12]=uA,E[13]=SA,E[14]=lA,E[15]=zA,E[16]=UA,E[17]=fA,E[18]=OA,0!==N&&(E[19]=N,t.length++),t};function B(A,M,t){t.negative=M.negative^A.negative,t.length=A.length+M.length;for(var g=0,I=0,e=0;e>>26)|0)>>>26,i&=67108863}t.words[e]=T,g=i,i=I}return 0!==g?t.words[e]=g:t.length--,t._strip()}function Q(A,M,t){return B(A,M,t)}function a(A,M){this.x=A,this.y=M}Math.imul||(o=c),e.prototype.mulTo=function(A,M){var t=this.length+A.length;return 10===this.length&&10===A.length?o(this,A,M):t<63?c(this,A,M):t<1024?B(this,A,M):Q(this,A,M)},a.prototype.makeRBT=function(A){for(var M=new Array(A),t=e.prototype._countBits(A)-1,g=0;g>=1;return g},a.prototype.permute=function(A,M,t,g,I,e){for(var i=0;i>>=1)I++;return 1<>>=13,t[2*i+1]=8191&e,e>>>=13;for(i=2*M;i>=26,t+=e/67108864|0,t+=i>>>26,this.words[I]=67108863&i}return 0!==t&&(this.words[I]=t,this.length++),M?this.ineg():this},e.prototype.muln=function(A){return this.clone().imuln(A)},e.prototype.sqr=function(){return this.mul(this)},e.prototype.isqr=function(){return this.imul(this.clone())},e.prototype.pow=function(A){var M=function(A){for(var M=new Array(A.bitLength()),t=0;t>>I&1}return M}(A);if(0===M.length)return new e(1);for(var t=this,g=0;g=0);var M,t=A%26,I=(A-t)/26,e=67108863>>>26-t<<26-t;if(0!==t){var i=0;for(M=0;M>>26-t}i&&(this.words[M]=i,this.length++)}if(0!==I){for(M=this.length-1;M>=0;M--)this.words[M+I]=this.words[M];for(M=0;M=0),I=M?(M-M%26)/26:0;var e=A%26,i=Math.min((A-e)/26,this.length),T=67108863^67108863>>>e<i)for(this.length-=i,N=0;N=0&&(0!==n||N>=I);N--){var D=0|this.words[N];this.words[N]=n<<26-e|D>>>e,n=D&T}return E&&0!==n&&(E.words[E.length++]=n),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},e.prototype.ishrn=function(A,M,t){return g(0===this.negative),this.iushrn(A,M,t)},e.prototype.shln=function(A){return this.clone().ishln(A)},e.prototype.ushln=function(A){return this.clone().iushln(A)},e.prototype.shrn=function(A){return this.clone().ishrn(A)},e.prototype.ushrn=function(A){return this.clone().iushrn(A)},e.prototype.testn=function(A){g("number"==typeof A&&A>=0);var M=A%26,t=(A-M)/26,I=1<=0);var M=A%26,t=(A-M)/26;if(g(0===this.negative,"imaskn works only with positive numbers"),this.length<=t)return this;if(0!==M&&t++,this.length=Math.min(t,this.length),0!==M){var I=67108863^67108863>>>M<=67108864;M++)this.words[M]-=67108864,M===this.length-1?this.words[M+1]=1:this.words[M+1]++;return this.length=Math.max(this.length,M+1),this},e.prototype.isubn=function(A){if(g("number"==typeof A),g(A<67108864),A<0)return this.iaddn(-A);if(0!==this.negative)return this.negative=0,this.iaddn(A),this.negative=1,this;if(this.words[0]-=A,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var M=0;M>26)-(E/67108864|0),this.words[I+t]=67108863&e}for(;I>26,this.words[I+t]=67108863&e;if(0===T)return this._strip();for(g(-1===T),T=0,I=0;I>26,this.words[I]=67108863&e;return this.negative=1,this._strip()},e.prototype._wordDiv=function(A,M){var t=(this.length,A.length),g=this.clone(),I=A,i=0|I.words[I.length-1];0!==(t=26-this._countBits(i))&&(I=I.ushln(t),g.iushln(t),i=0|I.words[I.length-1]);var T,E=g.length-I.length;if("mod"!==M){(T=new e(null)).length=E+1,T.words=new Array(T.length);for(var N=0;N=0;D--){var C=67108864*(0|g.words[I.length+D])+(0|g.words[I.length+D-1]);for(C=Math.min(C/i|0,67108863),g._ishlnsubmul(I,C,D);0!==g.negative;)C--,g.negative=0,g._ishlnsubmul(I,1,D),g.isZero()||(g.negative^=1);T&&(T.words[D]=C)}return T&&T._strip(),g._strip(),"div"!==M&&0!==t&&g.iushrn(t),{div:T||null,mod:g}},e.prototype.divmod=function(A,M,t){return g(!A.isZero()),this.isZero()?{div:new e(0),mod:new e(0)}:0!==this.negative&&0===A.negative?(T=this.neg().divmod(A,M),"mod"!==M&&(I=T.div.neg()),"div"!==M&&(i=T.mod.neg(),t&&0!==i.negative&&i.iadd(A)),{div:I,mod:i}):0===this.negative&&0!==A.negative?(T=this.divmod(A.neg(),M),"mod"!==M&&(I=T.div.neg()),{div:I,mod:T.mod}):0!=(this.negative&A.negative)?(T=this.neg().divmod(A.neg(),M),"div"!==M&&(i=T.mod.neg(),t&&0!==i.negative&&i.isub(A)),{div:T.div,mod:i}):A.length>this.length||this.cmp(A)<0?{div:new e(0),mod:this}:1===A.length?"div"===M?{div:this.divn(A.words[0]),mod:null}:"mod"===M?{div:null,mod:new e(this.modrn(A.words[0]))}:{div:this.divn(A.words[0]),mod:new e(this.modrn(A.words[0]))}:this._wordDiv(A,M);var I,i,T},e.prototype.div=function(A){return this.divmod(A,"div",!1).div},e.prototype.mod=function(A){return this.divmod(A,"mod",!1).mod},e.prototype.umod=function(A){return this.divmod(A,"mod",!0).mod},e.prototype.divRound=function(A){var M=this.divmod(A);if(M.mod.isZero())return M.div;var t=0!==M.div.negative?M.mod.isub(A):M.mod,g=A.ushrn(1),I=A.andln(1),e=t.cmp(g);return e<0||1===I&&0===e?M.div:0!==M.div.negative?M.div.isubn(1):M.div.iaddn(1)},e.prototype.modrn=function(A){var M=A<0;M&&(A=-A),g(A<=67108863);for(var t=(1<<26)%A,I=0,e=this.length-1;e>=0;e--)I=(t*I+(0|this.words[e]))%A;return M?-I:I},e.prototype.modn=function(A){return this.modrn(A)},e.prototype.idivn=function(A){var M=A<0;M&&(A=-A),g(A<=67108863);for(var t=0,I=this.length-1;I>=0;I--){var e=(0|this.words[I])+67108864*t;this.words[I]=e/A|0,t=e%A}return this._strip(),M?this.ineg():this},e.prototype.divn=function(A){return this.clone().idivn(A)},e.prototype.egcd=function(A){g(0===A.negative),g(!A.isZero());var M=this,t=A.clone();M=0!==M.negative?M.umod(A):M.clone();for(var I=new e(1),i=new e(0),T=new e(0),E=new e(1),N=0;M.isEven()&&t.isEven();)M.iushrn(1),t.iushrn(1),++N;for(var n=t.clone(),D=M.clone();!M.isZero();){for(var C=0,r=1;0==(M.words[0]&r)&&C<26;++C,r<<=1);if(C>0)for(M.iushrn(C);C-- >0;)(I.isOdd()||i.isOdd())&&(I.iadd(n),i.isub(D)),I.iushrn(1),i.iushrn(1);for(var c=0,o=1;0==(t.words[0]&o)&&c<26;++c,o<<=1);if(c>0)for(t.iushrn(c);c-- >0;)(T.isOdd()||E.isOdd())&&(T.iadd(n),E.isub(D)),T.iushrn(1),E.iushrn(1);M.cmp(t)>=0?(M.isub(t),I.isub(T),i.isub(E)):(t.isub(M),T.isub(I),E.isub(i))}return{a:T,b:E,gcd:t.iushln(N)}},e.prototype._invmp=function(A){g(0===A.negative),g(!A.isZero());var M=this,t=A.clone();M=0!==M.negative?M.umod(A):M.clone();for(var I,i=new e(1),T=new e(0),E=t.clone();M.cmpn(1)>0&&t.cmpn(1)>0;){for(var N=0,n=1;0==(M.words[0]&n)&&N<26;++N,n<<=1);if(N>0)for(M.iushrn(N);N-- >0;)i.isOdd()&&i.iadd(E),i.iushrn(1);for(var D=0,C=1;0==(t.words[0]&C)&&D<26;++D,C<<=1);if(D>0)for(t.iushrn(D);D-- >0;)T.isOdd()&&T.iadd(E),T.iushrn(1);M.cmp(t)>=0?(M.isub(t),i.isub(T)):(t.isub(M),T.isub(i))}return(I=0===M.cmpn(1)?i:T).cmpn(0)<0&&I.iadd(A),I},e.prototype.gcd=function(A){if(this.isZero())return A.abs();if(A.isZero())return this.abs();var M=this.clone(),t=A.clone();M.negative=0,t.negative=0;for(var g=0;M.isEven()&&t.isEven();g++)M.iushrn(1),t.iushrn(1);for(;;){for(;M.isEven();)M.iushrn(1);for(;t.isEven();)t.iushrn(1);var I=M.cmp(t);if(I<0){var e=M;M=t,t=e}else if(0===I||0===t.cmpn(1))break;M.isub(t)}return t.iushln(g)},e.prototype.invm=function(A){return this.egcd(A).a.umod(A)},e.prototype.isEven=function(){return 0==(1&this.words[0])},e.prototype.isOdd=function(){return 1==(1&this.words[0])},e.prototype.andln=function(A){return this.words[0]&A},e.prototype.bincn=function(A){g("number"==typeof A);var M=A%26,t=(A-M)/26,I=1<>>26,T&=67108863,this.words[i]=T}return 0!==e&&(this.words[i]=e,this.length++),this},e.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},e.prototype.cmpn=function(A){var M,t=A<0;if(0!==this.negative&&!t)return-1;if(0===this.negative&&t)return 1;if(this._strip(),this.length>1)M=1;else{t&&(A=-A),g(A<=67108863,"Number is too big");var I=0|this.words[0];M=I===A?0:IA.length)return 1;if(this.length=0;t--){var g=0|this.words[t],I=0|A.words[t];if(g!==I){gI&&(M=1);break}}return M},e.prototype.gtn=function(A){return 1===this.cmpn(A)},e.prototype.gt=function(A){return 1===this.cmp(A)},e.prototype.gten=function(A){return this.cmpn(A)>=0},e.prototype.gte=function(A){return this.cmp(A)>=0},e.prototype.ltn=function(A){return-1===this.cmpn(A)},e.prototype.lt=function(A){return-1===this.cmp(A)},e.prototype.lten=function(A){return this.cmpn(A)<=0},e.prototype.lte=function(A){return this.cmp(A)<=0},e.prototype.eqn=function(A){return 0===this.cmpn(A)},e.prototype.eq=function(A){return 0===this.cmp(A)},e.red=function(A){return new d(A)},e.prototype.toRed=function(A){return g(!this.red,"Already a number in reduction context"),g(0===this.negative,"red works only with positives"),A.convertTo(this)._forceRed(A)},e.prototype.fromRed=function(){return g(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},e.prototype._forceRed=function(A){return this.red=A,this},e.prototype.forceRed=function(A){return g(!this.red,"Already a number in reduction context"),this._forceRed(A)},e.prototype.redAdd=function(A){return g(this.red,"redAdd works only with red numbers"),this.red.add(this,A)},e.prototype.redIAdd=function(A){return g(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,A)},e.prototype.redSub=function(A){return g(this.red,"redSub works only with red numbers"),this.red.sub(this,A)},e.prototype.redISub=function(A){return g(this.red,"redISub works only with red numbers"),this.red.isub(this,A)},e.prototype.redShl=function(A){return g(this.red,"redShl works only with red numbers"),this.red.shl(this,A)},e.prototype.redMul=function(A){return g(this.red,"redMul works only with red numbers"),this.red._verify2(this,A),this.red.mul(this,A)},e.prototype.redIMul=function(A){return g(this.red,"redMul works only with red numbers"),this.red._verify2(this,A),this.red.imul(this,A)},e.prototype.redSqr=function(){return g(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},e.prototype.redISqr=function(){return g(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},e.prototype.redSqrt=function(){return g(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},e.prototype.redInvm=function(){return g(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},e.prototype.redNeg=function(){return g(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},e.prototype.redPow=function(A){return g(this.red&&!A.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,A)};var h={k256:null,p224:null,p192:null,p25519:null};function s(A,M){this.name=A,this.p=new e(M,16),this.n=this.p.bitLength(),this.k=new e(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){s.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function w(){s.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function j(){s.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function L(){s.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function d(A){if("string"==typeof A){var M=e._prime(A);this.m=M.p,this.prime=M}else g(A.gtn(1),"modulus must be greater than 1"),this.m=A,this.prime=null}function x(A){d.call(this,A),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new e(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}s.prototype._tmp=function(){var A=new e(null);return A.words=new Array(Math.ceil(this.n/13)),A},s.prototype.ireduce=function(A){var M,t=A;do{this.split(t,this.tmp),M=(t=(t=this.imulK(t)).iadd(this.tmp)).bitLength()}while(M>this.n);var g=M0?t.isub(this.p):void 0!==t.strip?t.strip():t._strip(),t},s.prototype.split=function(A,M){A.iushrn(this.n,0,M)},s.prototype.imulK=function(A){return A.imul(this.k)},I(y,s),y.prototype.split=function(A,M){for(var t=Math.min(A.length,9),g=0;g>>22,I=e}I>>>=22,A.words[g-10]=I,0===I&&A.length>10?A.length-=10:A.length-=9},y.prototype.imulK=function(A){A.words[A.length]=0,A.words[A.length+1]=0,A.length+=2;for(var M=0,t=0;t>>=26,A.words[t]=I,M=g}return 0!==M&&(A.words[A.length++]=M),A},e._prime=function(A){if(h[A])return h[A];var M;if("k256"===A)M=new y;else if("p224"===A)M=new w;else if("p192"===A)M=new j;else{if("p25519"!==A)throw new Error("Unknown prime "+A);M=new L}return h[A]=M,M},d.prototype._verify1=function(A){g(0===A.negative,"red works only with positives"),g(A.red,"red works only with red numbers")},d.prototype._verify2=function(A,M){g(0==(A.negative|M.negative),"red works only with positives"),g(A.red&&A.red===M.red,"red works only with red numbers")},d.prototype.imod=function(A){return this.prime?this.prime.ireduce(A)._forceRed(this):(N(A,A.umod(this.m)._forceRed(this)),A)},d.prototype.neg=function(A){return A.isZero()?A.clone():this.m.sub(A)._forceRed(this)},d.prototype.add=function(A,M){this._verify2(A,M);var t=A.add(M);return t.cmp(this.m)>=0&&t.isub(this.m),t._forceRed(this)},d.prototype.iadd=function(A,M){this._verify2(A,M);var t=A.iadd(M);return t.cmp(this.m)>=0&&t.isub(this.m),t},d.prototype.sub=function(A,M){this._verify2(A,M);var t=A.sub(M);return t.cmpn(0)<0&&t.iadd(this.m),t._forceRed(this)},d.prototype.isub=function(A,M){this._verify2(A,M);var t=A.isub(M);return t.cmpn(0)<0&&t.iadd(this.m),t},d.prototype.shl=function(A,M){return this._verify1(A),this.imod(A.ushln(M))},d.prototype.imul=function(A,M){return this._verify2(A,M),this.imod(A.imul(M))},d.prototype.mul=function(A,M){return this._verify2(A,M),this.imod(A.mul(M))},d.prototype.isqr=function(A){return this.imul(A,A.clone())},d.prototype.sqr=function(A){return this.mul(A,A)},d.prototype.sqrt=function(A){if(A.isZero())return A.clone();var M=this.m.andln(3);if(g(M%2==1),3===M){var t=this.m.add(new e(1)).iushrn(2);return this.pow(A,t)}for(var I=this.m.subn(1),i=0;!I.isZero()&&0===I.andln(1);)i++,I.iushrn(1);g(!I.isZero());var T=new e(1).toRed(this),E=T.redNeg(),N=this.m.subn(1).iushrn(1),n=this.m.bitLength();for(n=new e(2*n*n).toRed(this);0!==this.pow(n,N).cmp(E);)n.redIAdd(E);for(var D=this.pow(n,I),C=this.pow(A,I.addn(1).iushrn(1)),r=this.pow(A,I),c=i;0!==r.cmp(T);){for(var o=r,B=0;0!==o.cmp(T);B++)o=o.redSqr();g(B=0;g--){for(var N=M.words[g],n=E-1;n>=0;n--){var D=N>>n&1;I!==t[0]&&(I=this.sqr(I)),0!==D||0!==i?(i<<=1,i|=D,(4===++T||0===g&&0===n)&&(I=this.mul(I,t[i]),T=0,i=0)):T=0}E=26}return I},d.prototype.convertTo=function(A){var M=A.umod(this.m);return M===A?M.clone():M},d.prototype.convertFrom=function(A){var M=A.clone();return M.red=null,M},e.mont=function(A){return new x(A)},I(x,d),x.prototype.convertTo=function(A){return this.imod(A.ushln(this.shift))},x.prototype.convertFrom=function(A){var M=this.imod(A.mul(this.rinv));return M.red=null,M},x.prototype.imul=function(A,M){if(A.isZero()||M.isZero())return A.words[0]=0,A.length=1,A;var t=A.imul(M),g=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),I=t.isub(g).iushrn(this.shift),e=I;return I.cmp(this.m)>=0?e=I.isub(this.m):I.cmpn(0)<0&&(e=I.iadd(this.m)),e._forceRed(this)},x.prototype.mul=function(A,M){if(A.isZero()||M.isZero())return new e(0)._forceRed(this);var t=A.mul(M),g=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),I=t.isub(g).iushrn(this.shift),i=I;return I.cmp(this.m)>=0?i=I.isub(this.m):I.cmpn(0)<0&&(i=I.iadd(this.m)),i._forceRed(this)},x.prototype.invm=function(A){return this.imod(A._invmp(this.m).mul(this.r2))._forceRed(this)}}(A,this)}).call(this,t(92)(A))},function(A,M,t){"use strict";var g=M;g.bignum=t(6),g.define=t(191).define,g.base=t(194),g.constants=t(195),g.decoders=t(103),g.encoders=t(101)},function(A,M,t){"use strict";var g=M;g.der=t(102),g.pem=t(192)},function(A,M,t){"use strict";var g=t(3),I=t(52).Buffer,e=t(53),i=t(55);function T(A){this.enc="der",this.name=A.name,this.entity=A,this.tree=new E,this.tree._init(A.body)}function E(A){e.call(this,"der",A)}function N(A){return A<10?"0"+A:A}A.exports=T,T.prototype.encode=function(A,M){return this.tree._encode(A,M).join()},g(E,e),E.prototype._encodeComposite=function(A,M,t,g){var e=function(A,M,t,g){var I;"seqof"===A?A="seq":"setof"===A&&(A="set");if(i.tagByName.hasOwnProperty(A))I=i.tagByName[A];else{if("number"!=typeof A||(0|A)!==A)return g.error("Unknown tag: "+A);I=A}if(I>=31)return g.error("Multi-octet tag encoding unsupported");M||(I|=32);return I|=i.tagClassByName[t||"universal"]<<6}(A,M,t,this.reporter);if(g.length<128){var T=I.alloc(2);return T[0]=e,T[1]=g.length,this._createEncoderBuffer([T,g])}for(var E=1,N=g.length;N>=256;N>>=8)E++;var n=I.alloc(2+E);n[0]=e,n[1]=128|E;for(var D=1+E,C=g.length;C>0;D--,C>>=8)n[D]=255&C;return this._createEncoderBuffer([n,g])},E.prototype._encodeStr=function(A,M){if("bitstr"===M)return this._createEncoderBuffer([0|A.unused,A.data]);if("bmpstr"===M){for(var t=I.alloc(2*A.length),g=0;g=40)return this.reporter.error("Second objid identifier OOB");A.splice(0,2,40*A[0]+A[1])}for(var i=0,T=0;T=128;E>>=7)i++}for(var N=I.alloc(i),n=N.length-1,D=A.length-1;D>=0;D--){var C=A[D];for(N[n--]=127&C;(C>>=7)>0;)N[n--]=128|127&C}return this._createEncoderBuffer(N)},E.prototype._encodeTime=function(A,M){var t,g=new Date(A);return"gentime"===M?t=[N(g.getUTCFullYear()),N(g.getUTCMonth()+1),N(g.getUTCDate()),N(g.getUTCHours()),N(g.getUTCMinutes()),N(g.getUTCSeconds()),"Z"].join(""):"utctime"===M?t=[N(g.getUTCFullYear()%100),N(g.getUTCMonth()+1),N(g.getUTCDate()),N(g.getUTCHours()),N(g.getUTCMinutes()),N(g.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+M+" time is not supported yet"),this._encodeStr(t,"octstr")},E.prototype._encodeNull=function(){return this._createEncoderBuffer("")},E.prototype._encodeInt=function(A,M){if("string"==typeof A){if(!M)return this.reporter.error("String int or enum given, but no values map");if(!M.hasOwnProperty(A))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(A));A=M[A]}if("number"!=typeof A&&!I.isBuffer(A)){var t=A.toArray();!A.sign&&128&t[0]&&t.unshift(0),A=I.from(t)}if(I.isBuffer(A)){var g=A.length;0===A.length&&g++;var e=I.alloc(g);return A.copy(e),0===A.length&&(e[0]=0),this._createEncoderBuffer(e)}if(A<128)return this._createEncoderBuffer(A);if(A<256)return this._createEncoderBuffer([0,A]);for(var i=1,T=A;T>=256;T>>=8)i++;for(var E=new Array(i),N=E.length-1;N>=0;N--)E[N]=255&A,A>>=8;return 128&E[0]&&E.unshift(0),this._createEncoderBuffer(I.from(E))},E.prototype._encodeBool=function(A){return this._createEncoderBuffer(A?255:0)},E.prototype._use=function(A,M){return"function"==typeof A&&(A=A(M)),A._getEncoder("der").tree},E.prototype._skipDefault=function(A,M,t){var g,I=this._baseState;if(null===I.default)return!1;var e=A.join();if(void 0===I.defaultBuffer&&(I.defaultBuffer=this._encodeValue(I.default,M,t).join()),e.length!==I.defaultBuffer.length)return!1;for(g=0;g>6],I=0==(32&t);if(31==(31&t)){var e=t;for(t=0;128==(128&e);){if(e=A.readUInt8(M),A.isError(e))return e;t<<=7,t|=127&e}}else t&=31;return{cls:g,primitive:I,tag:t,tagStr:T.tag[t]}}function D(A,M,t){var g=A.readUInt8(t);if(A.isError(g))return g;if(!M&&128===g)return null;if(0==(128&g))return g;var I=127&g;if(I>4)return A.error("length octect is too long");g=0;for(var e=0;e0?i-4:i;for(t=0;t>16&255,E[n++]=M>>8&255,E[n++]=255&M;2===T&&(M=I[A.charCodeAt(t)]<<2|I[A.charCodeAt(t+1)]>>4,E[n++]=255&M);1===T&&(M=I[A.charCodeAt(t)]<<10|I[A.charCodeAt(t+1)]<<4|I[A.charCodeAt(t+2)]>>2,E[n++]=M>>8&255,E[n++]=255&M);return E},M.fromByteArray=function(A){for(var M,t=A.length,I=t%3,e=[],i=0,T=t-I;iT?T:i+16383));1===I?(M=A[t-1],e.push(g[M>>2]+g[M<<4&63]+"==")):2===I&&(M=(A[t-2]<<8)+A[t-1],e.push(g[M>>10]+g[M>>4&63]+g[M<<2&63]+"="));return e.join("")};for(var g=[],I=[],e="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=0,E=i.length;T0)throw new Error("Invalid string. Length must be a multiple of 4");var t=A.indexOf("=");return-1===t&&(t=M),[t,t===M?0:4-t%4]}function n(A,M,t){for(var I,e,i=[],T=M;T>18&63]+g[e>>12&63]+g[e>>6&63]+g[63&e]);return i.join("")}I["-".charCodeAt(0)]=62,I["_".charCodeAt(0)]=63},function(A,M){M.read=function(A,M,t,g,I){var e,i,T=8*I-g-1,E=(1<>1,n=-7,D=t?I-1:0,C=t?-1:1,r=A[M+D];for(D+=C,e=r&(1<<-n)-1,r>>=-n,n+=T;n>0;e=256*e+A[M+D],D+=C,n-=8);for(i=e&(1<<-n)-1,e>>=-n,n+=g;n>0;i=256*i+A[M+D],D+=C,n-=8);if(0===e)e=1-N;else{if(e===E)return i?NaN:1/0*(r?-1:1);i+=Math.pow(2,g),e-=N}return(r?-1:1)*i*Math.pow(2,e-g)},M.write=function(A,M,t,g,I,e){var i,T,E,N=8*e-I-1,n=(1<>1,C=23===I?Math.pow(2,-24)-Math.pow(2,-77):0,r=g?0:e-1,c=g?1:-1,o=M<0||0===M&&1/M<0?1:0;for(M=Math.abs(M),isNaN(M)||M===1/0?(T=isNaN(M)?1:0,i=n):(i=Math.floor(Math.log(M)/Math.LN2),M*(E=Math.pow(2,-i))<1&&(i--,E*=2),(M+=i+D>=1?C/E:C*Math.pow(2,1-D))*E>=2&&(i++,E/=2),i+D>=n?(T=0,i=n):i+D>=1?(T=(M*E-1)*Math.pow(2,I),i+=D):(T=M*Math.pow(2,D-1)*Math.pow(2,I),i=0));I>=8;A[t+r]=255&T,r+=c,T/=256,I-=8);for(i=i<0;A[t+r]=255&i,r+=c,i/=256,N-=8);A[t+r-c]|=128*o}},function(A,M,t){(function(M){var t;t="undefined"!=typeof window?window:void 0!==M?M:"undefined"!=typeof self?self:{},A.exports=t}).call(this,t(10))},function(A,M,t){(function(M,t){ +/*! + * @overview es6-promise - a tiny implementation of Promises/A+. + * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald) + * @license Licensed under MIT license + * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE + * @version v4.2.8+1e68dce6 + */ +var g;g=function(){"use strict";function A(A){return"function"==typeof A}var g=Array.isArray?Array.isArray:function(A){return"[object Array]"===Object.prototype.toString.call(A)},I=0,e=void 0,i=void 0,T=function(A,M){c[I]=A,c[I+1]=M,2===(I+=2)&&(i?i(o):Q())},E="undefined"!=typeof window?window:void 0,N=E||{},n=N.MutationObserver||N.WebKitMutationObserver,D="undefined"==typeof self&&void 0!==M&&"[object process]"==={}.toString.call(M),C="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function r(){var A=setTimeout;return function(){return A(o,1)}}var c=new Array(1e3);function o(){for(var A=0;A1&&void 0!==arguments[1]?arguments[1]:{},t=0,T={},D=M.getImportObject,C=N(M,["getImportObject"]),r=new Worker("data:,ACTIONS="+JSON.stringify(I.default)+";getImportObject="+D+";importObject=undefined;wasmModule=null;moduleInstance=null;onmessage="+e.default,C);return r.onmessage=function(A){var M=A.data,e=M.id,i=M.result,N=M.action,D=M.payload;if(N===I.default.COMPILE_MODULE)if(0===i){var C=D.exports;T[e][0]({exports:C.reduce((function(A,M){return g({},A,E({},M,(function(){for(var A=arguments.length,g=Array(A),e=0;e=0||Object.prototype.hasOwnProperty.call(A,g)&&(t[g]=A[g]);return t}var n=function(){var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return A.filter((function(A){return A instanceof ArrayBuffer||A instanceof MessagePort||A instanceof ImageBitmap}))}},function(A,M,t){"use strict";M.__esModule=!0;M.default={COMPILE_MODULE:0,CALL_FUNCTION_EXPORT:1,RUN_FUNCTION:2}},function(A,M,t){"use strict";M.__esModule=!0,M.default=function(A){var M=A.data,t=M.id,g=M.action,I=M.payload,e=function(A,M){self.postMessage({id:t,action:g,result:A,payload:M})},i=function(A){return e(1,""+A)},T=e.bind(null,0);if(g===ACTIONS.COMPILE_MODULE)Promise.resolve().then((function(){var A=void 0;if(void 0!==getImportObject&&(importObject=getImportObject()),"string"==typeof I){if(A=fetch(I),void 0!==WebAssembly.instantiateStreaming)return WebAssembly.instantiateStreaming(A,importObject);A=A.then((function(A){return A.arrayBuffer()}))}else A=Promise.resolve(I);return A.then((function(A){return WebAssembly.compile(A)})).then((function(A){return WebAssembly.instantiate(A,importObject).then((function(M){return{module:A,instance:M}}))}))})).then((function(A){var M=A.module,t=A.instance;moduleInstance=t,wasmModule=M,T({exports:WebAssembly.Module.exports(M).filter((function(A){return"function"===A.kind})).map((function(A){return A.name}))})})).catch(i);else if(g===ACTIONS.CALL_FUNCTION_EXPORT){var E=I.func,N=I.params;Promise.resolve().then((function(){var A=moduleInstance.exports;T(A[E].apply(A,N))})).catch(i)}else if(g===ACTIONS.RUN_FUNCTION){var n=I.func,D=I.params;Promise.resolve().then((function(){var A=new Function("return "+n)();T(A({module:wasmModule,instance:moduleInstance,importObject:importObject,params:D}))})).catch(i)}}},function(A,M,t){"use strict";M.__esModule=!0;M.getWasmSource=function(A){var M=A;return"string"==typeof M&&"undefined"!=typeof location&&(0===(M=M.trim()).indexOf("/")?M=location.origin+M:0!==M.indexOf("http")&&(M=location.href+("/"===location.href[location.href.length-1]?"":"/")+M)),M}},function(A,M){},function(A,M,t){(function(A){function t(A,M){for(var t=0,g=A.length-1;g>=0;g--){var I=A[g];"."===I?A.splice(g,1):".."===I?(A.splice(g,1),t++):t&&(A.splice(g,1),t--)}if(M)for(;t--;t)A.unshift("..");return A}function g(A,M){if(A.filter)return A.filter(M);for(var t=[],g=0;g=-1&&!I;e--){var i=e>=0?arguments[e]:A.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(M=i+"/"+M,I="/"===i.charAt(0))}return(I?"/":"")+(M=t(g(M.split("/"),(function(A){return!!A})),!I).join("/"))||"."},M.normalize=function(A){var e=M.isAbsolute(A),i="/"===I(A,-1);return(A=t(g(A.split("/"),(function(A){return!!A})),!e).join("/"))||e||(A="."),A&&i&&(A+="/"),(e?"/":"")+A},M.isAbsolute=function(A){return"/"===A.charAt(0)},M.join=function(){var A=Array.prototype.slice.call(arguments,0);return M.normalize(g(A,(function(A,M){if("string"!=typeof A)throw new TypeError("Arguments to path.join must be strings");return A})).join("/"))},M.relative=function(A,t){function g(A){for(var M=0;M=0&&""===A[t];t--);return M>t?[]:A.slice(M,t-M+1)}A=M.resolve(A).substr(1),t=M.resolve(t).substr(1);for(var I=g(A.split("/")),e=g(t.split("/")),i=Math.min(I.length,e.length),T=i,E=0;E=1;--e)if(47===(M=A.charCodeAt(e))){if(!I){g=e;break}}else I=!1;return-1===g?t?"/":".":t&&1===g?"/":A.slice(0,g)},M.basename=function(A,M){var t=function(A){"string"!=typeof A&&(A+="");var M,t=0,g=-1,I=!0;for(M=A.length-1;M>=0;--M)if(47===A.charCodeAt(M)){if(!I){t=M+1;break}}else-1===g&&(I=!1,g=M+1);return-1===g?"":A.slice(t,g)}(A);return M&&t.substr(-1*M.length)===M&&(t=t.substr(0,t.length-M.length)),t},M.extname=function(A){"string"!=typeof A&&(A+="");for(var M=-1,t=0,g=-1,I=!0,e=0,i=A.length-1;i>=0;--i){var T=A.charCodeAt(i);if(47!==T)-1===g&&(I=!1,g=i+1),46===T?-1===M?M=i:1!==e&&(e=1):-1!==M&&(e=-1);else if(!I){t=i+1;break}}return-1===M||-1===g||0===e||1===e&&M===g-1&&M===t+1?"":A.slice(M,g)};var I="b"==="ab".substr(-1)?function(A,M,t){return A.substr(M,t)}:function(A,M,t){return M<0&&(M=A.length+M),A.substr(M,t)}}).call(this,t(8))},function(A,M,t){"use strict";M.randomBytes=M.rng=M.pseudoRandomBytes=M.prng=t(18),M.createHash=M.Hash=t(23),M.createHmac=M.Hmac=t(76);var g=t(147),I=Object.keys(g),e=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(I);M.getHashes=function(){return e};var i=t(79);M.pbkdf2=i.pbkdf2,M.pbkdf2Sync=i.pbkdf2Sync;var T=t(149);M.Cipher=T.Cipher,M.createCipher=T.createCipher,M.Cipheriv=T.Cipheriv,M.createCipheriv=T.createCipheriv,M.Decipher=T.Decipher,M.createDecipher=T.createDecipher,M.Decipheriv=T.Decipheriv,M.createDecipheriv=T.createDecipheriv,M.getCiphers=T.getCiphers,M.listCiphers=T.listCiphers;var E=t(164);M.DiffieHellmanGroup=E.DiffieHellmanGroup,M.createDiffieHellmanGroup=E.createDiffieHellmanGroup,M.getDiffieHellman=E.getDiffieHellman,M.createDiffieHellman=E.createDiffieHellman,M.DiffieHellman=E.DiffieHellman;var N=t(169);M.createSign=N.createSign,M.Sign=N.Sign,M.createVerify=N.createVerify,M.Verify=N.Verify,M.createECDH=t(200);var n=t(201);M.publicEncrypt=n.publicEncrypt,M.privateEncrypt=n.privateEncrypt,M.publicDecrypt=n.publicDecrypt,M.privateDecrypt=n.privateDecrypt;var D=t(204);M.randomFill=D.randomFill,M.randomFillSync=D.randomFillSync,M.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},M.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},function(A,M){},function(A,M,t){"use strict";function g(A,M){var t=Object.keys(A);if(Object.getOwnPropertySymbols){var g=Object.getOwnPropertySymbols(A);M&&(g=g.filter((function(M){return Object.getOwnPropertyDescriptor(A,M).enumerable}))),t.push.apply(t,g)}return t}function I(A,M,t){return M in A?Object.defineProperty(A,M,{value:t,enumerable:!0,configurable:!0,writable:!0}):A[M]=t,A}function e(A,M){for(var t=0;t0?this.tail.next=M:this.head=M,this.tail=M,++this.length}},{key:"unshift",value:function(A){var M={data:A,next:this.head};0===this.length&&(this.tail=M),this.head=M,++this.length}},{key:"shift",value:function(){if(0!==this.length){var A=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,A}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(A){if(0===this.length)return"";for(var M=this.head,t=""+M.data;M=M.next;)t+=A+M.data;return t}},{key:"concat",value:function(A){if(0===this.length)return i.alloc(0);for(var M,t,g,I=i.allocUnsafe(A>>>0),e=this.head,T=0;e;)M=e.data,t=I,g=T,i.prototype.copy.call(M,t,g),T+=e.data.length,e=e.next;return I}},{key:"consume",value:function(A,M){var t;return AI.length?I.length:A;if(e===I.length?g+=I:g+=I.slice(0,A),0==(A-=e)){e===I.length?(++t,M.next?this.head=M.next:this.head=this.tail=null):(this.head=M,M.data=I.slice(e));break}++t}return this.length-=t,g}},{key:"_getBuffer",value:function(A){var M=i.allocUnsafe(A),t=this.head,g=1;for(t.data.copy(M),A-=t.data.length;t=t.next;){var I=t.data,e=A>I.length?I.length:A;if(I.copy(M,M.length-A,0,e),0==(A-=e)){e===I.length?(++g,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=I.slice(e));break}++g}return this.length-=g,M}},{key:E,value:function(A,M){return T(this,function(A){for(var M=1;M0,(function(A){g||(g=A),A&&i.forEach(N),e||(i.forEach(N),I(g))}))}));return M.reduce(n)}},function(A,M,t){var g=t(3),I=t(21),e=t(4).Buffer,i=[1518500249,1859775393,-1894007588,-899497514],T=new Array(80);function E(){this.init(),this._w=T,I.call(this,64,56)}function N(A){return A<<30|A>>>2}function n(A,M,t,g){return 0===A?M&t|~M&g:2===A?M&t|M&g|t&g:M^t^g}g(E,I),E.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},E.prototype._update=function(A){for(var M,t=this._w,g=0|this._a,I=0|this._b,e=0|this._c,T=0|this._d,E=0|this._e,D=0;D<16;++D)t[D]=A.readInt32BE(4*D);for(;D<80;++D)t[D]=t[D-3]^t[D-8]^t[D-14]^t[D-16];for(var C=0;C<80;++C){var r=~~(C/20),c=0|((M=g)<<5|M>>>27)+n(r,I,e,T)+E+t[C]+i[r];E=T,T=e,e=N(I),I=g,g=c}this._a=g+this._a|0,this._b=I+this._b|0,this._c=e+this._c|0,this._d=T+this._d|0,this._e=E+this._e|0},E.prototype._hash=function(){var A=e.allocUnsafe(20);return A.writeInt32BE(0|this._a,0),A.writeInt32BE(0|this._b,4),A.writeInt32BE(0|this._c,8),A.writeInt32BE(0|this._d,12),A.writeInt32BE(0|this._e,16),A},A.exports=E},function(A,M,t){var g=t(3),I=t(21),e=t(4).Buffer,i=[1518500249,1859775393,-1894007588,-899497514],T=new Array(80);function E(){this.init(),this._w=T,I.call(this,64,56)}function N(A){return A<<5|A>>>27}function n(A){return A<<30|A>>>2}function D(A,M,t,g){return 0===A?M&t|~M&g:2===A?M&t|M&g|t&g:M^t^g}g(E,I),E.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},E.prototype._update=function(A){for(var M,t=this._w,g=0|this._a,I=0|this._b,e=0|this._c,T=0|this._d,E=0|this._e,C=0;C<16;++C)t[C]=A.readInt32BE(4*C);for(;C<80;++C)t[C]=(M=t[C-3]^t[C-8]^t[C-14]^t[C-16])<<1|M>>>31;for(var r=0;r<80;++r){var c=~~(r/20),o=N(g)+D(c,I,e,T)+E+t[r]+i[c]|0;E=T,T=e,e=n(I),I=g,g=o}this._a=g+this._a|0,this._b=I+this._b|0,this._c=e+this._c|0,this._d=T+this._d|0,this._e=E+this._e|0},E.prototype._hash=function(){var A=e.allocUnsafe(20);return A.writeInt32BE(0|this._a,0),A.writeInt32BE(0|this._b,4),A.writeInt32BE(0|this._c,8),A.writeInt32BE(0|this._d,12),A.writeInt32BE(0|this._e,16),A},A.exports=E},function(A,M,t){var g=t(3),I=t(70),e=t(21),i=t(4).Buffer,T=new Array(64);function E(){this.init(),this._w=T,e.call(this,64,56)}g(E,I),E.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},E.prototype._hash=function(){var A=i.allocUnsafe(28);return A.writeInt32BE(this._a,0),A.writeInt32BE(this._b,4),A.writeInt32BE(this._c,8),A.writeInt32BE(this._d,12),A.writeInt32BE(this._e,16),A.writeInt32BE(this._f,20),A.writeInt32BE(this._g,24),A},A.exports=E},function(A,M,t){var g=t(3),I=t(71),e=t(21),i=t(4).Buffer,T=new Array(160);function E(){this.init(),this._w=T,e.call(this,128,112)}g(E,I),E.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},E.prototype._hash=function(){var A=i.allocUnsafe(48);function M(M,t,g){A.writeInt32BE(M,g),A.writeInt32BE(t,g+4)}return M(this._ah,this._al,0),M(this._bh,this._bl,8),M(this._ch,this._cl,16),M(this._dh,this._dl,24),M(this._eh,this._el,32),M(this._fh,this._fl,40),A},A.exports=E},function(A,M,t){A.exports=I;var g=t(7).EventEmitter;function I(){g.call(this)}t(3)(I,g),I.Readable=t(41),I.Writable=t(142),I.Duplex=t(143),I.Transform=t(144),I.PassThrough=t(145),I.Stream=I,I.prototype.pipe=function(A,M){var t=this;function I(M){A.writable&&!1===A.write(M)&&t.pause&&t.pause()}function e(){t.readable&&t.resume&&t.resume()}t.on("data",I),A.on("drain",e),A._isStdio||M&&!1===M.end||(t.on("end",T),t.on("close",E));var i=!1;function T(){i||(i=!0,A.end())}function E(){i||(i=!0,"function"==typeof A.destroy&&A.destroy())}function N(A){if(n(),0===g.listenerCount(this,"error"))throw A}function n(){t.removeListener("data",I),A.removeListener("drain",e),t.removeListener("end",T),t.removeListener("close",E),t.removeListener("error",N),A.removeListener("error",N),t.removeListener("end",n),t.removeListener("close",n),A.removeListener("close",n)}return t.on("error",N),A.on("error",N),t.on("end",n),t.on("close",n),A.on("close",n),A.emit("pipe",t),A}},function(A,M){},function(A,M,t){"use strict";var g=t(42).Buffer,I=t(138);A.exports=function(){function A(){!function(A,M){if(!(A instanceof M))throw new TypeError("Cannot call a class as a function")}(this,A),this.head=null,this.tail=null,this.length=0}return A.prototype.push=function(A){var M={data:A,next:null};this.length>0?this.tail.next=M:this.head=M,this.tail=M,++this.length},A.prototype.unshift=function(A){var M={data:A,next:this.head};0===this.length&&(this.tail=M),this.head=M,++this.length},A.prototype.shift=function(){if(0!==this.length){var A=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,A}},A.prototype.clear=function(){this.head=this.tail=null,this.length=0},A.prototype.join=function(A){if(0===this.length)return"";for(var M=this.head,t=""+M.data;M=M.next;)t+=A+M.data;return t},A.prototype.concat=function(A){if(0===this.length)return g.alloc(0);if(1===this.length)return this.head.data;for(var M,t,I,e=g.allocUnsafe(A>>>0),i=this.head,T=0;i;)M=i.data,t=e,I=T,M.copy(t,I),T+=i.data.length,i=i.next;return e},A}(),I&&I.inspect&&I.inspect.custom&&(A.exports.prototype[I.inspect.custom]=function(){var A=I.inspect({length:this.length});return this.constructor.name+" "+A})},function(A,M){},function(A,M,t){(function(A){var g=void 0!==A&&A||"undefined"!=typeof self&&self||window,I=Function.prototype.apply;function e(A,M){this._id=A,this._clearFn=M}M.setTimeout=function(){return new e(I.call(setTimeout,g,arguments),clearTimeout)},M.setInterval=function(){return new e(I.call(setInterval,g,arguments),clearInterval)},M.clearTimeout=M.clearInterval=function(A){A&&A.close()},e.prototype.unref=e.prototype.ref=function(){},e.prototype.close=function(){this._clearFn.call(g,this._id)},M.enroll=function(A,M){clearTimeout(A._idleTimeoutId),A._idleTimeout=M},M.unenroll=function(A){clearTimeout(A._idleTimeoutId),A._idleTimeout=-1},M._unrefActive=M.active=function(A){clearTimeout(A._idleTimeoutId);var M=A._idleTimeout;M>=0&&(A._idleTimeoutId=setTimeout((function(){A._onTimeout&&A._onTimeout()}),M))},t(140),M.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==A&&A.setImmediate||this&&this.setImmediate,M.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==A&&A.clearImmediate||this&&this.clearImmediate}).call(this,t(10))},function(A,M,t){(function(A,M){!function(A,t){"use strict";if(!A.setImmediate){var g,I,e,i,T,E=1,N={},n=!1,D=A.document,C=Object.getPrototypeOf&&Object.getPrototypeOf(A);C=C&&C.setTimeout?C:A,"[object process]"==={}.toString.call(A.process)?g=function(A){M.nextTick((function(){c(A)}))}:!function(){if(A.postMessage&&!A.importScripts){var M=!0,t=A.onmessage;return A.onmessage=function(){M=!1},A.postMessage("","*"),A.onmessage=t,M}}()?A.MessageChannel?((e=new MessageChannel).port1.onmessage=function(A){c(A.data)},g=function(A){e.port2.postMessage(A)}):D&&"onreadystatechange"in D.createElement("script")?(I=D.documentElement,g=function(A){var M=D.createElement("script");M.onreadystatechange=function(){c(A),M.onreadystatechange=null,I.removeChild(M),M=null},I.appendChild(M)}):g=function(A){setTimeout(c,0,A)}:(i="setImmediate$"+Math.random()+"$",T=function(M){M.source===A&&"string"==typeof M.data&&0===M.data.indexOf(i)&&c(+M.data.slice(i.length))},A.addEventListener?A.addEventListener("message",T,!1):A.attachEvent("onmessage",T),g=function(M){A.postMessage(i+M,"*")}),C.setImmediate=function(A){"function"!=typeof A&&(A=new Function(""+A));for(var M=new Array(arguments.length-1),t=0;t64?M=A(M):M.length<64&&(M=I.concat([M,i],64));for(var t=this._ipad=I.allocUnsafe(64),g=this._opad=I.allocUnsafe(64),T=0;T<64;T++)t[T]=54^M[T],g[T]=92^M[T];this._hash=[t]}g(T,e),T.prototype._update=function(A){this._hash.push(A)},T.prototype._final=function(){var A=this._alg(I.concat(this._hash));return this._alg(I.concat([this._opad,A]))},A.exports=T},function(A,M,t){A.exports=t(78)},function(A,M,t){(function(M,g){var I,e=t(4).Buffer,i=t(80),T=t(81),E=t(82),N=t(83),n=M.crypto&&M.crypto.subtle,D={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},C=[];function r(A,M,t,g,I){return n.importKey("raw",A,{name:"PBKDF2"},!1,["deriveBits"]).then((function(A){return n.deriveBits({name:"PBKDF2",salt:M,iterations:t,hash:{name:I}},A,g<<3)})).then((function(A){return e.from(A)}))}A.exports=function(A,t,c,o,B,Q){"function"==typeof B&&(Q=B,B=void 0);var a=D[(B=B||"sha1").toLowerCase()];if(!a||"function"!=typeof M.Promise)return g.nextTick((function(){var M;try{M=E(A,t,c,o,B)}catch(A){return Q(A)}Q(null,M)}));if(i(c,o),A=N(A,T,"Password"),t=N(t,T,"Salt"),"function"!=typeof Q)throw new Error("No callback provided to pbkdf2");!function(A,M){A.then((function(A){g.nextTick((function(){M(null,A)}))}),(function(A){g.nextTick((function(){M(A)}))}))}(function(A){if(M.process&&!M.process.browser)return Promise.resolve(!1);if(!n||!n.importKey||!n.deriveBits)return Promise.resolve(!1);if(void 0!==C[A])return C[A];var t=r(I=I||e.alloc(8),I,10,128,A).then((function(){return!0})).catch((function(){return!1}));return C[A]=t,t}(a).then((function(M){return M?r(A,t,c,o,a):E(A,t,c,o,B)})),Q)}}).call(this,t(10),t(8))},function(A,M,t){var g=t(150),I=t(45),e=t(46),i=t(163),T=t(33);function E(A,M,t){if(A=A.toLowerCase(),e[A])return I.createCipheriv(A,M,t);if(i[A])return new g({key:M,iv:t,mode:A});throw new TypeError("invalid suite type")}function N(A,M,t){if(A=A.toLowerCase(),e[A])return I.createDecipheriv(A,M,t);if(i[A])return new g({key:M,iv:t,mode:A,decrypt:!0});throw new TypeError("invalid suite type")}M.createCipher=M.Cipher=function(A,M){var t,g;if(A=A.toLowerCase(),e[A])t=e[A].key,g=e[A].iv;else{if(!i[A])throw new TypeError("invalid suite type");t=8*i[A].key,g=i[A].iv}var I=T(M,!1,t,g);return E(A,I.key,I.iv)},M.createCipheriv=M.Cipheriv=E,M.createDecipher=M.Decipher=function(A,M){var t,g;if(A=A.toLowerCase(),e[A])t=e[A].key,g=e[A].iv;else{if(!i[A])throw new TypeError("invalid suite type");t=8*i[A].key,g=i[A].iv}var I=T(M,!1,t,g);return N(A,I.key,I.iv)},M.createDecipheriv=M.Decipheriv=N,M.listCiphers=M.getCiphers=function(){return Object.keys(i).concat(I.getCiphers())}},function(A,M,t){var g=t(15),I=t(151),e=t(3),i=t(4).Buffer,T={"des-ede3-cbc":I.CBC.instantiate(I.EDE),"des-ede3":I.EDE,"des-ede-cbc":I.CBC.instantiate(I.EDE),"des-ede":I.EDE,"des-cbc":I.CBC.instantiate(I.DES),"des-ecb":I.DES};function E(A){g.call(this);var M,t=A.mode.toLowerCase(),I=T[t];M=A.decrypt?"decrypt":"encrypt";var e=A.key;i.isBuffer(e)||(e=i.from(e)),"des-ede"!==t&&"des-ede-cbc"!==t||(e=i.concat([e,e.slice(0,8)]));var E=A.iv;i.isBuffer(E)||(E=i.from(E)),this._des=I.create({key:e,iv:E,type:M})}T.des=T["des-cbc"],T.des3=T["des-ede3-cbc"],A.exports=E,e(E,g),E.prototype._update=function(A){return i.from(this._des.update(A))},E.prototype._final=function(){return i.from(this._des.final())}},function(A,M,t){"use strict";M.utils=t(84),M.Cipher=t(44),M.DES=t(85),M.CBC=t(152),M.EDE=t(153)},function(A,M,t){"use strict";var g=t(11),I=t(3),e={};function i(A){g.equal(A.length,8,"Invalid IV length"),this.iv=new Array(8);for(var M=0;M15){var A=this.cache.slice(0,16);return this.cache=this.cache.slice(16),A}return null},C.prototype.flush=function(){for(var A=16-this.cache.length,M=e.allocUnsafe(A),t=-1;++t>i%8,A._prev=e(A._prev,t?g:I);return T}function e(A,M){var t=A.length,I=-1,e=g.allocUnsafe(A.length);for(A=g.concat([A,g.from([M])]);++I>7;return e}M.encrypt=function(A,M,t){for(var e=M.length,i=g.allocUnsafe(e),T=-1;++T>>0,0),M.writeUInt32BE(A[1]>>>0,4),M.writeUInt32BE(A[2]>>>0,8),M.writeUInt32BE(A[3]>>>0,12),M}function i(A){this.h=A,this.state=g.alloc(16,0),this.cache=g.allocUnsafe(0)}i.prototype.ghash=function(A){for(var M=-1;++M0;M--)g[M]=g[M]>>>1|(1&g[M-1])<<31;g[0]=g[0]>>>1,t&&(g[0]=g[0]^225<<24)}this.state=e(I)},i.prototype.update=function(A){var M;for(this.cache=g.concat([this.cache,A]);this.cache.length>=16;)M=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(M)},i.prototype.final=function(A,M){return this.cache.length&&this.ghash(g.concat([this.cache,I],16)),this.ghash(e([0,A,0,M])),this.state},A.exports=i},function(A,M,t){var g=t(89),I=t(4).Buffer,e=t(46),i=t(90),T=t(15),E=t(32),N=t(33);function n(A,M,t){T.call(this),this._cache=new D,this._last=void 0,this._cipher=new E.AES(M),this._prev=I.from(t),this._mode=A,this._autopadding=!0}function D(){this.cache=I.allocUnsafe(0)}function C(A,M,t){var T=e[A.toLowerCase()];if(!T)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=I.from(t)),"GCM"!==T.mode&&t.length!==T.iv)throw new TypeError("invalid iv length "+t.length);if("string"==typeof M&&(M=I.from(M)),M.length!==T.key/8)throw new TypeError("invalid key length "+M.length);return"stream"===T.type?new i(T.module,M,t,!0):"auth"===T.type?new g(T.module,M,t,!0):new n(T.module,M,t)}t(3)(n,T),n.prototype._update=function(A){var M,t;this._cache.add(A);for(var g=[];M=this._cache.get(this._autopadding);)t=this._mode.decrypt(this,M),g.push(t);return I.concat(g)},n.prototype._final=function(){var A=this._cache.flush();if(this._autopadding)return function(A){var M=A[15];if(M<1||M>16)throw new Error("unable to decrypt data");var t=-1;for(;++t16)return M=this.cache.slice(0,16),this.cache=this.cache.slice(16),M}else if(this.cache.length>=16)return M=this.cache.slice(0,16),this.cache=this.cache.slice(16),M;return null},D.prototype.flush=function(){if(this.cache.length)return this.cache},M.createDecipher=function(A,M){var t=e[A.toLowerCase()];if(!t)throw new TypeError("invalid suite type");var g=N(M,!1,t.key,t.iv);return C(A,g.key,g.iv)},M.createDecipheriv=C},function(A,M){M["des-ecb"]={key:8,iv:0},M["des-cbc"]=M.des={key:8,iv:8},M["des-ede3-cbc"]=M.des3={key:24,iv:8},M["des-ede3"]={key:24,iv:0},M["des-ede-cbc"]={key:16,iv:8},M["des-ede"]={key:16,iv:0}},function(A,M,t){(function(A){var g=t(91),I=t(167),e=t(168);var i={binary:!0,hex:!0,base64:!0};M.DiffieHellmanGroup=M.createDiffieHellmanGroup=M.getDiffieHellman=function(M){var t=new A(I[M].prime,"hex"),g=new A(I[M].gen,"hex");return new e(t,g)},M.createDiffieHellman=M.DiffieHellman=function M(t,I,T,E){return A.isBuffer(I)||void 0===i[I]?M(t,"binary",I,T):(I=I||"binary",E=E||"binary",T=T||new A([2]),A.isBuffer(T)||(T=new A(T,E)),"number"==typeof t?new e(g(t,T),T,!0):(A.isBuffer(t)||(t=new A(t,I)),new e(t,T,!0)))}}).call(this,t(9).Buffer)},function(A,M){},function(A,M){},function(A){A.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(A,M,t){(function(M){var g=t(6),I=new(t(93)),e=new g(24),i=new g(11),T=new g(10),E=new g(3),N=new g(7),n=t(91),D=t(18);function C(A,t){return t=t||"utf8",M.isBuffer(A)||(A=new M(A,t)),this._pub=new g(A),this}function r(A,t){return t=t||"utf8",M.isBuffer(A)||(A=new M(A,t)),this._priv=new g(A),this}A.exports=o;var c={};function o(A,M,t){this.setGenerator(M),this.__prime=new g(A),this._prime=g.mont(this.__prime),this._primeLen=A.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,t?(this.setPublicKey=C,this.setPrivateKey=r):this._primeCode=8}function B(A,t){var g=new M(A.toArray());return t?g.toString(t):g}Object.defineProperty(o.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(A,M){var t=M.toString("hex"),g=[t,A.toString(16)].join("_");if(g in c)return c[g];var D,C=0;if(A.isEven()||!n.simpleSieve||!n.fermatTest(A)||!I.test(A))return C+=1,C+="02"===t||"05"===t?8:4,c[g]=C,C;switch(I.test(A.shrn(1))||(C+=2),t){case"02":A.mod(e).cmp(i)&&(C+=8);break;case"05":(D=A.mod(T)).cmp(E)&&D.cmp(N)&&(C+=8);break;default:C+=4}return c[g]=C,C}(this.__prime,this.__gen)),this._primeCode}}),o.prototype.generateKeys=function(){return this._priv||(this._priv=new g(D(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},o.prototype.computeSecret=function(A){var t=(A=(A=new g(A)).toRed(this._prime)).redPow(this._priv).fromRed(),I=new M(t.toArray()),e=this.getPrime();if(I.length0&&t.ishrn(g),t}function C(A,M,t){var e,i;do{for(e=g.alloc(0);8*e.length","license":"MIT","bugs":{"url":"https://github.com/indutny/elliptic/issues"},"homepage":"https://github.com/indutny/elliptic","devDependencies":{"brfs":"^1.4.3","coveralls":"^3.0.8","grunt":"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.2","jscs":"^3.0.7","jshint":"^2.10.3","mocha":"^6.2.2"},"dependencies":{"bn.js":"^4.4.0","brorand":"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0","inherits":"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},"__npminstall_done":"Tue Sep 15 2020 09:43:51 GMT+0800 (GMT+08:00)","_from":"elliptic@6.5.3","_resolved":"https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.3.tgz?cache=0&sync_timestamp=1592492864889&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felliptic%2Fdownload%2Felliptic-6.5.3.tgz"}')},function(A,M,t){"use strict";var g=t(12),I=t(6),e=t(3),i=t(34),T=g.assert;function E(A){i.call(this,"short",A),this.a=new I(A.a,16).toRed(this.red),this.b=new I(A.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(A),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function N(A,M,t,g){i.BasePoint.call(this,A,"affine"),null===M&&null===t?(this.x=null,this.y=null,this.inf=!0):(this.x=new I(M,16),this.y=new I(t,16),g&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function n(A,M,t,g){i.BasePoint.call(this,A,"jacobian"),null===M&&null===t&&null===g?(this.x=this.curve.one,this.y=this.curve.one,this.z=new I(0)):(this.x=new I(M,16),this.y=new I(t,16),this.z=new I(g,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}e(E,i),A.exports=E,E.prototype._getEndomorphism=function(A){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var M,t;if(A.beta)M=new I(A.beta,16).toRed(this.red);else{var g=this._getEndoRoots(this.p);M=(M=g[0].cmp(g[1])<0?g[0]:g[1]).toRed(this.red)}if(A.lambda)t=new I(A.lambda,16);else{var e=this._getEndoRoots(this.n);0===this.g.mul(e[0]).x.cmp(this.g.x.redMul(M))?t=e[0]:(t=e[1],T(0===this.g.mul(t).x.cmp(this.g.x.redMul(M))))}return{beta:M,lambda:t,basis:A.basis?A.basis.map((function(A){return{a:new I(A.a,16),b:new I(A.b,16)}})):this._getEndoBasis(t)}}},E.prototype._getEndoRoots=function(A){var M=A===this.p?this.red:I.mont(A),t=new I(2).toRed(M).redInvm(),g=t.redNeg(),e=new I(3).toRed(M).redNeg().redSqrt().redMul(t);return[g.redAdd(e).fromRed(),g.redSub(e).fromRed()]},E.prototype._getEndoBasis=function(A){for(var M,t,g,e,i,T,E,N,n,D=this.n.ushrn(Math.floor(this.n.bitLength()/2)),C=A,r=this.n.clone(),c=new I(1),o=new I(0),B=new I(0),Q=new I(1),a=0;0!==C.cmpn(0);){var h=r.div(C);N=r.sub(h.mul(C)),n=B.sub(h.mul(c));var s=Q.sub(h.mul(o));if(!g&&N.cmp(D)<0)M=E.neg(),t=c,g=N.neg(),e=n;else if(g&&2==++a)break;E=N,r=C,C=N,B=c,c=n,Q=o,o=s}i=N.neg(),T=n;var y=g.sqr().add(e.sqr());return i.sqr().add(T.sqr()).cmp(y)>=0&&(i=M,T=t),g.negative&&(g=g.neg(),e=e.neg()),i.negative&&(i=i.neg(),T=T.neg()),[{a:g,b:e},{a:i,b:T}]},E.prototype._endoSplit=function(A){var M=this.endo.basis,t=M[0],g=M[1],I=g.b.mul(A).divRound(this.n),e=t.b.neg().mul(A).divRound(this.n),i=I.mul(t.a),T=e.mul(g.a),E=I.mul(t.b),N=e.mul(g.b);return{k1:A.sub(i).sub(T),k2:E.add(N).neg()}},E.prototype.pointFromX=function(A,M){(A=new I(A,16)).red||(A=A.toRed(this.red));var t=A.redSqr().redMul(A).redIAdd(A.redMul(this.a)).redIAdd(this.b),g=t.redSqrt();if(0!==g.redSqr().redSub(t).cmp(this.zero))throw new Error("invalid point");var e=g.fromRed().isOdd();return(M&&!e||!M&&e)&&(g=g.redNeg()),this.point(A,g)},E.prototype.validate=function(A){if(A.inf)return!0;var M=A.x,t=A.y,g=this.a.redMul(M),I=M.redSqr().redMul(M).redIAdd(g).redIAdd(this.b);return 0===t.redSqr().redISub(I).cmpn(0)},E.prototype._endoWnafMulAdd=function(A,M,t){for(var g=this._endoWnafT1,I=this._endoWnafT2,e=0;e":""},N.prototype.isInfinity=function(){return this.inf},N.prototype.add=function(A){if(this.inf)return A;if(A.inf)return this;if(this.eq(A))return this.dbl();if(this.neg().eq(A))return this.curve.point(null,null);if(0===this.x.cmp(A.x))return this.curve.point(null,null);var M=this.y.redSub(A.y);0!==M.cmpn(0)&&(M=M.redMul(this.x.redSub(A.x).redInvm()));var t=M.redSqr().redISub(this.x).redISub(A.x),g=M.redMul(this.x.redSub(t)).redISub(this.y);return this.curve.point(t,g)},N.prototype.dbl=function(){if(this.inf)return this;var A=this.y.redAdd(this.y);if(0===A.cmpn(0))return this.curve.point(null,null);var M=this.curve.a,t=this.x.redSqr(),g=A.redInvm(),I=t.redAdd(t).redIAdd(t).redIAdd(M).redMul(g),e=I.redSqr().redISub(this.x.redAdd(this.x)),i=I.redMul(this.x.redSub(e)).redISub(this.y);return this.curve.point(e,i)},N.prototype.getX=function(){return this.x.fromRed()},N.prototype.getY=function(){return this.y.fromRed()},N.prototype.mul=function(A){return A=new I(A,16),this.isInfinity()?this:this._hasDoubles(A)?this.curve._fixedNafMul(this,A):this.curve.endo?this.curve._endoWnafMulAdd([this],[A]):this.curve._wnafMul(this,A)},N.prototype.mulAdd=function(A,M,t){var g=[this,M],I=[A,t];return this.curve.endo?this.curve._endoWnafMulAdd(g,I):this.curve._wnafMulAdd(1,g,I,2)},N.prototype.jmulAdd=function(A,M,t){var g=[this,M],I=[A,t];return this.curve.endo?this.curve._endoWnafMulAdd(g,I,!0):this.curve._wnafMulAdd(1,g,I,2,!0)},N.prototype.eq=function(A){return this===A||this.inf===A.inf&&(this.inf||0===this.x.cmp(A.x)&&0===this.y.cmp(A.y))},N.prototype.neg=function(A){if(this.inf)return this;var M=this.curve.point(this.x,this.y.redNeg());if(A&&this.precomputed){var t=this.precomputed,g=function(A){return A.neg()};M.precomputed={naf:t.naf&&{wnd:t.naf.wnd,points:t.naf.points.map(g)},doubles:t.doubles&&{step:t.doubles.step,points:t.doubles.points.map(g)}}}return M},N.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},e(n,i.BasePoint),E.prototype.jpoint=function(A,M,t){return new n(this,A,M,t)},n.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var A=this.z.redInvm(),M=A.redSqr(),t=this.x.redMul(M),g=this.y.redMul(M).redMul(A);return this.curve.point(t,g)},n.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},n.prototype.add=function(A){if(this.isInfinity())return A;if(A.isInfinity())return this;var M=A.z.redSqr(),t=this.z.redSqr(),g=this.x.redMul(M),I=A.x.redMul(t),e=this.y.redMul(M.redMul(A.z)),i=A.y.redMul(t.redMul(this.z)),T=g.redSub(I),E=e.redSub(i);if(0===T.cmpn(0))return 0!==E.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var N=T.redSqr(),n=N.redMul(T),D=g.redMul(N),C=E.redSqr().redIAdd(n).redISub(D).redISub(D),r=E.redMul(D.redISub(C)).redISub(e.redMul(n)),c=this.z.redMul(A.z).redMul(T);return this.curve.jpoint(C,r,c)},n.prototype.mixedAdd=function(A){if(this.isInfinity())return A.toJ();if(A.isInfinity())return this;var M=this.z.redSqr(),t=this.x,g=A.x.redMul(M),I=this.y,e=A.y.redMul(M).redMul(this.z),i=t.redSub(g),T=I.redSub(e);if(0===i.cmpn(0))return 0!==T.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var E=i.redSqr(),N=E.redMul(i),n=t.redMul(E),D=T.redSqr().redIAdd(N).redISub(n).redISub(n),C=T.redMul(n.redISub(D)).redISub(I.redMul(N)),r=this.z.redMul(i);return this.curve.jpoint(D,C,r)},n.prototype.dblp=function(A){if(0===A)return this;if(this.isInfinity())return this;if(!A)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var M=this,t=0;t=0)return!1;if(t.redIAdd(I),0===this.x.cmp(t))return!0}},n.prototype.inspect=function(){return this.isInfinity()?"":""},n.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(A,M,t){"use strict";var g=t(6),I=t(3),e=t(34),i=t(12);function T(A){e.call(this,"mont",A),this.a=new g(A.a,16).toRed(this.red),this.b=new g(A.b,16).toRed(this.red),this.i4=new g(4).toRed(this.red).redInvm(),this.two=new g(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function E(A,M,t){e.BasePoint.call(this,A,"projective"),null===M&&null===t?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new g(M,16),this.z=new g(t,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}I(T,e),A.exports=T,T.prototype.validate=function(A){var M=A.normalize().x,t=M.redSqr(),g=t.redMul(M).redAdd(t.redMul(this.a)).redAdd(M);return 0===g.redSqrt().redSqr().cmp(g)},I(E,e.BasePoint),T.prototype.decodePoint=function(A,M){return this.point(i.toArray(A,M),1)},T.prototype.point=function(A,M){return new E(this,A,M)},T.prototype.pointFromJSON=function(A){return E.fromJSON(this,A)},E.prototype.precompute=function(){},E.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},E.fromJSON=function(A,M){return new E(A,M[0],M[1]||A.one)},E.prototype.inspect=function(){return this.isInfinity()?"":""},E.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},E.prototype.dbl=function(){var A=this.x.redAdd(this.z).redSqr(),M=this.x.redSub(this.z).redSqr(),t=A.redSub(M),g=A.redMul(M),I=t.redMul(M.redAdd(this.curve.a24.redMul(t)));return this.curve.point(g,I)},E.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},E.prototype.diffAdd=function(A,M){var t=this.x.redAdd(this.z),g=this.x.redSub(this.z),I=A.x.redAdd(A.z),e=A.x.redSub(A.z).redMul(t),i=I.redMul(g),T=M.z.redMul(e.redAdd(i).redSqr()),E=M.x.redMul(e.redISub(i).redSqr());return this.curve.point(T,E)},E.prototype.mul=function(A){for(var M=A.clone(),t=this,g=this.curve.point(null,null),I=[];0!==M.cmpn(0);M.iushrn(1))I.push(M.andln(1));for(var e=I.length-1;e>=0;e--)0===I[e]?(t=t.diffAdd(g,this),g=g.dbl()):(g=t.diffAdd(g,this),t=t.dbl());return g},E.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},E.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},E.prototype.eq=function(A){return 0===this.getX().cmp(A.getX())},E.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},E.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(A,M,t){"use strict";var g=t(12),I=t(6),e=t(3),i=t(34),T=g.assert;function E(A){this.twisted=1!=(0|A.a),this.mOneA=this.twisted&&-1==(0|A.a),this.extended=this.mOneA,i.call(this,"edwards",A),this.a=new I(A.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new I(A.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new I(A.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),T(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|A.c)}function N(A,M,t,g,e){i.BasePoint.call(this,A,"projective"),null===M&&null===t&&null===g?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new I(M,16),this.y=new I(t,16),this.z=g?new I(g,16):this.curve.one,this.t=e&&new I(e,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}e(E,i),A.exports=E,E.prototype._mulA=function(A){return this.mOneA?A.redNeg():this.a.redMul(A)},E.prototype._mulC=function(A){return this.oneC?A:this.c.redMul(A)},E.prototype.jpoint=function(A,M,t,g){return this.point(A,M,t,g)},E.prototype.pointFromX=function(A,M){(A=new I(A,16)).red||(A=A.toRed(this.red));var t=A.redSqr(),g=this.c2.redSub(this.a.redMul(t)),e=this.one.redSub(this.c2.redMul(this.d).redMul(t)),i=g.redMul(e.redInvm()),T=i.redSqrt();if(0!==T.redSqr().redSub(i).cmp(this.zero))throw new Error("invalid point");var E=T.fromRed().isOdd();return(M&&!E||!M&&E)&&(T=T.redNeg()),this.point(A,T)},E.prototype.pointFromY=function(A,M){(A=new I(A,16)).red||(A=A.toRed(this.red));var t=A.redSqr(),g=t.redSub(this.c2),e=t.redMul(this.d).redMul(this.c2).redSub(this.a),i=g.redMul(e.redInvm());if(0===i.cmp(this.zero)){if(M)throw new Error("invalid point");return this.point(this.zero,A)}var T=i.redSqrt();if(0!==T.redSqr().redSub(i).cmp(this.zero))throw new Error("invalid point");return T.fromRed().isOdd()!==M&&(T=T.redNeg()),this.point(T,A)},E.prototype.validate=function(A){if(A.isInfinity())return!0;A.normalize();var M=A.x.redSqr(),t=A.y.redSqr(),g=M.redMul(this.a).redAdd(t),I=this.c2.redMul(this.one.redAdd(this.d.redMul(M).redMul(t)));return 0===g.cmp(I)},e(N,i.BasePoint),E.prototype.pointFromJSON=function(A){return N.fromJSON(this,A)},E.prototype.point=function(A,M,t,g){return new N(this,A,M,t,g)},N.fromJSON=function(A,M){return new N(A,M[0],M[1],M[2])},N.prototype.inspect=function(){return this.isInfinity()?"":""},N.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},N.prototype._extDbl=function(){var A=this.x.redSqr(),M=this.y.redSqr(),t=this.z.redSqr();t=t.redIAdd(t);var g=this.curve._mulA(A),I=this.x.redAdd(this.y).redSqr().redISub(A).redISub(M),e=g.redAdd(M),i=e.redSub(t),T=g.redSub(M),E=I.redMul(i),N=e.redMul(T),n=I.redMul(T),D=i.redMul(e);return this.curve.point(E,N,D,n)},N.prototype._projDbl=function(){var A,M,t,g=this.x.redAdd(this.y).redSqr(),I=this.x.redSqr(),e=this.y.redSqr();if(this.curve.twisted){var i=(N=this.curve._mulA(I)).redAdd(e);if(this.zOne)A=g.redSub(I).redSub(e).redMul(i.redSub(this.curve.two)),M=i.redMul(N.redSub(e)),t=i.redSqr().redSub(i).redSub(i);else{var T=this.z.redSqr(),E=i.redSub(T).redISub(T);A=g.redSub(I).redISub(e).redMul(E),M=i.redMul(N.redSub(e)),t=i.redMul(E)}}else{var N=I.redAdd(e);T=this.curve._mulC(this.z).redSqr(),E=N.redSub(T).redSub(T);A=this.curve._mulC(g.redISub(N)).redMul(E),M=this.curve._mulC(N).redMul(I.redISub(e)),t=N.redMul(E)}return this.curve.point(A,M,t)},N.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},N.prototype._extAdd=function(A){var M=this.y.redSub(this.x).redMul(A.y.redSub(A.x)),t=this.y.redAdd(this.x).redMul(A.y.redAdd(A.x)),g=this.t.redMul(this.curve.dd).redMul(A.t),I=this.z.redMul(A.z.redAdd(A.z)),e=t.redSub(M),i=I.redSub(g),T=I.redAdd(g),E=t.redAdd(M),N=e.redMul(i),n=T.redMul(E),D=e.redMul(E),C=i.redMul(T);return this.curve.point(N,n,C,D)},N.prototype._projAdd=function(A){var M,t,g=this.z.redMul(A.z),I=g.redSqr(),e=this.x.redMul(A.x),i=this.y.redMul(A.y),T=this.curve.d.redMul(e).redMul(i),E=I.redSub(T),N=I.redAdd(T),n=this.x.redAdd(this.y).redMul(A.x.redAdd(A.y)).redISub(e).redISub(i),D=g.redMul(E).redMul(n);return this.curve.twisted?(M=g.redMul(N).redMul(i.redSub(this.curve._mulA(e))),t=E.redMul(N)):(M=g.redMul(N).redMul(i.redSub(e)),t=this.curve._mulC(E).redMul(N)),this.curve.point(D,M,t)},N.prototype.add=function(A){return this.isInfinity()?A:A.isInfinity()?this:this.curve.extended?this._extAdd(A):this._projAdd(A)},N.prototype.mul=function(A){return this._hasDoubles(A)?this.curve._fixedNafMul(this,A):this.curve._wnafMul(this,A)},N.prototype.mulAdd=function(A,M,t){return this.curve._wnafMulAdd(1,[this,M],[A,t],2,!1)},N.prototype.jmulAdd=function(A,M,t){return this.curve._wnafMulAdd(1,[this,M],[A,t],2,!0)},N.prototype.normalize=function(){if(this.zOne)return this;var A=this.z.redInvm();return this.x=this.x.redMul(A),this.y=this.y.redMul(A),this.t&&(this.t=this.t.redMul(A)),this.z=this.curve.one,this.zOne=!0,this},N.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},N.prototype.getX=function(){return this.normalize(),this.x.fromRed()},N.prototype.getY=function(){return this.normalize(),this.y.fromRed()},N.prototype.eq=function(A){return this===A||0===this.getX().cmp(A.getX())&&0===this.getY().cmp(A.getY())},N.prototype.eqXToP=function(A){var M=A.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(M))return!0;for(var t=A.clone(),g=this.curve.redN.redMul(this.z);;){if(t.iadd(this.curve.n),t.cmp(this.curve.p)>=0)return!1;if(M.redIAdd(g),0===this.x.cmp(M))return!0}},N.prototype.toP=N.prototype.normalize,N.prototype.mixedAdd=N.prototype.add},function(A,M,t){"use strict";M.sha1=t(176),M.sha224=t(177),M.sha256=t(97),M.sha384=t(178),M.sha512=t(98)},function(A,M,t){"use strict";var g=t(14),I=t(27),e=t(96),i=g.rotl32,T=g.sum32,E=g.sum32_5,N=e.ft_1,n=I.BlockHash,D=[1518500249,1859775393,2400959708,3395469782];function C(){if(!(this instanceof C))return new C;n.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}g.inherits(C,n),A.exports=C,C.blockSize=512,C.outSize=160,C.hmacStrength=80,C.padLength=64,C.prototype._update=function(A,M){for(var t=this.W,g=0;g<16;g++)t[g]=A[M+g];for(;gthis.blockSize&&(A=(new this.Hash).update(A).digest()),I(A.length<=this.blockSize);for(var M=A.length;M0))return i.iaddn(1),this.keyFromPrivate(i)}},D.prototype._truncateToN=function(A,M){var t=8*A.byteLength()-this.n.bitLength();return t>0&&(A=A.ushrn(t)),!M&&A.cmp(this.n)>=0?A.sub(this.n):A},D.prototype.sign=function(A,M,t,e){"object"==typeof t&&(e=t,t=null),e||(e={}),M=this.keyFromPrivate(M,t),A=this._truncateToN(new g(A,16));for(var i=this.n.byteLength(),T=M.getPrivate().toArray("be",i),E=A.toArray("be",i),N=new I({hash:this.hash,entropy:T,nonce:E,pers:e.pers,persEnc:e.persEnc||"utf8"}),D=this.n.sub(new g(1)),C=0;;C++){var r=e.k?e.k(C):new g(N.generate(this.n.byteLength()));if(!((r=this._truncateToN(r,!0)).cmpn(1)<=0||r.cmp(D)>=0)){var c=this.g.mul(r);if(!c.isInfinity()){var o=c.getX(),B=o.umod(this.n);if(0!==B.cmpn(0)){var Q=r.invm(this.n).mul(B.mul(M.getPrivate()).iadd(A));if(0!==(Q=Q.umod(this.n)).cmpn(0)){var a=(c.getY().isOdd()?1:0)|(0!==o.cmp(B)?2:0);return e.canonical&&Q.cmp(this.nh)>0&&(Q=this.n.sub(Q),a^=1),new n({r:B,s:Q,recoveryParam:a})}}}}}},D.prototype.verify=function(A,M,t,I){A=this._truncateToN(new g(A,16)),t=this.keyFromPublic(t,I);var e=(M=new n(M,"hex")).r,i=M.s;if(e.cmpn(1)<0||e.cmp(this.n)>=0)return!1;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var T,E=i.invm(this.n),N=E.mul(A).umod(this.n),D=E.mul(e).umod(this.n);return this.curve._maxwellTrick?!(T=this.g.jmulAdd(N,t.getPublic(),D)).isInfinity()&&T.eqXToP(e):!(T=this.g.mulAdd(N,t.getPublic(),D)).isInfinity()&&0===T.getX().umod(this.n).cmp(e)},D.prototype.recoverPubKey=function(A,M,t,I){E((3&t)===t,"The recovery param is more than two bits"),M=new n(M,I);var e=this.n,i=new g(A),T=M.r,N=M.s,D=1&t,C=t>>1;if(T.cmp(this.curve.p.umod(this.curve.n))>=0&&C)throw new Error("Unable to find sencond key candinate");T=C?this.curve.pointFromX(T.add(this.curve.n),D):this.curve.pointFromX(T,D);var r=M.r.invm(e),c=e.sub(i).mul(r).umod(e),o=N.mul(r).umod(e);return this.g.mulAdd(c,T,o)},D.prototype.getKeyRecoveryParam=function(A,M,t,g){if(null!==(M=new n(M,g)).recoveryParam)return M.recoveryParam;for(var I=0;I<4;I++){var e;try{e=this.recoverPubKey(A,M,I)}catch(A){continue}if(e.eq(t))return I}throw new Error("Unable to find valid recovery factor")}},function(A,M,t){"use strict";var g=t(51),I=t(94),e=t(11);function i(A){if(!(this instanceof i))return new i(A);this.hash=A.hash,this.predResist=!!A.predResist,this.outLen=this.hash.outSize,this.minEntropy=A.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var M=I.toArray(A.entropy,A.entropyEnc||"hex"),t=I.toArray(A.nonce,A.nonceEnc||"hex"),g=I.toArray(A.pers,A.persEnc||"hex");e(M.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(M,t,g)}A.exports=i,i.prototype._init=function(A,M,t){var g=A.concat(M).concat(t);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var I=0;I=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(A.concat(t||[])),this._reseed=1},i.prototype.generate=function(A,M,t,g){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof M&&(g=t,t=M,M=null),t&&(t=I.toArray(t,g||"hex"),this._update(t));for(var e=[];e.length"}},function(A,M,t){"use strict";var g=t(6),I=t(12),e=I.assert;function i(A,M){if(A instanceof i)return A;this._importDER(A,M)||(e(A.r&&A.s,"Signature without r or s"),this.r=new g(A.r,16),this.s=new g(A.s,16),void 0===A.recoveryParam?this.recoveryParam=null:this.recoveryParam=A.recoveryParam)}function T(){this.place=0}function E(A,M){var t=A[M.place++];if(!(128&t))return t;var g=15&t;if(0===g||g>4)return!1;for(var I=0,e=0,i=M.place;e>>=0;return!(I<=127)&&(M.place=i,I)}function N(A){for(var M=0,t=A.length-1;!A[M]&&!(128&A[M+1])&&M>>3);for(A.push(128|t);--t;)A.push(M>>>(t<<3)&255);A.push(M)}}A.exports=i,i.prototype._importDER=function(A,M){A=I.toArray(A,M);var t=new T;if(48!==A[t.place++])return!1;var e=E(A,t);if(!1===e)return!1;if(e+t.place!==A.length)return!1;if(2!==A[t.place++])return!1;var i=E(A,t);if(!1===i)return!1;var N=A.slice(t.place,i+t.place);if(t.place+=i,2!==A[t.place++])return!1;var n=E(A,t);if(!1===n)return!1;if(A.length!==n+t.place)return!1;var D=A.slice(t.place,n+t.place);if(0===N[0]){if(!(128&N[1]))return!1;N=N.slice(1)}if(0===D[0]){if(!(128&D[1]))return!1;D=D.slice(1)}return this.r=new g(N),this.s=new g(D),this.recoveryParam=null,!0},i.prototype.toDER=function(A){var M=this.r.toArray(),t=this.s.toArray();for(128&M[0]&&(M=[0].concat(M)),128&t[0]&&(t=[0].concat(t)),M=N(M),t=N(t);!(t[0]||128&t[1]);)t=t.slice(1);var g=[2];n(g,M.length),(g=g.concat(M)).push(2),n(g,t.length);var e=g.concat(t),i=[48];return n(i,e.length),i=i.concat(e),I.encode(i,A)}},function(A,M,t){"use strict";var g=t(51),I=t(50),e=t(12),i=e.assert,T=e.parseBytes,E=t(187),N=t(188);function n(A){if(i("ed25519"===A,"only tested with ed25519 so far"),!(this instanceof n))return new n(A);A=I[A].curve;this.curve=A,this.g=A.g,this.g.precompute(A.n.bitLength()+1),this.pointClass=A.point().constructor,this.encodingLength=Math.ceil(A.n.bitLength()/8),this.hash=g.sha512}A.exports=n,n.prototype.sign=function(A,M){A=T(A);var t=this.keyFromSecret(M),g=this.hashInt(t.messagePrefix(),A),I=this.g.mul(g),e=this.encodePoint(I),i=this.hashInt(e,t.pubBytes(),A).mul(t.priv()),E=g.add(i).umod(this.curve.n);return this.makeSignature({R:I,S:E,Rencoded:e})},n.prototype.verify=function(A,M,t){A=T(A),M=this.makeSignature(M);var g=this.keyFromPublic(t),I=this.hashInt(M.Rencoded(),g.pubBytes(),A),e=this.g.mul(M.S());return M.R().add(g.pub().mul(I)).eq(e)},n.prototype.hashInt=function(){for(var A=this.hash(),M=0;M=M)throw new Error("invalid sig")}A.exports=function(A,M,t,N,n){var D=i(t);if("ec"===D.type){if("ecdsa"!==N&&"ecdsa/rsa"!==N)throw new Error("wrong public key type");return function(A,M,t){var g=T[t.data.algorithm.curve.join(".")];if(!g)throw new Error("unknown curve "+t.data.algorithm.curve.join("."));var I=new e(g),i=t.data.subjectPrivateKey.data;return I.verify(M,A,i)}(A,M,D)}if("dsa"===D.type){if("dsa"!==N)throw new Error("wrong public key type");return function(A,M,t){var g=t.data.p,e=t.data.q,T=t.data.g,N=t.data.pub_key,n=i.signature.decode(A,"der"),D=n.s,C=n.r;E(D,e),E(C,e);var r=I.mont(g),c=D.invm(e);return 0===T.toRed(r).redPow(new I(M).mul(c).mod(e)).fromRed().mul(N.toRed(r).redPow(C.mul(c).mod(e)).fromRed()).mod(g).mod(e).cmp(C)}(A,M,D)}if("rsa"!==N&&"ecdsa/rsa"!==N)throw new Error("wrong public key type");M=g.concat([n,M]);for(var C=D.modulus.byteLength(),r=[1],c=0;M.length+r.length+2t-C-2)throw new Error("message too long");var r=D.alloc(t-g-C-2),c=t-n-1,o=I(n),B=T(D.concat([N,r,D.alloc(1,1),M],c),i(o,c)),Q=T(o,i(B,n));return new E(D.concat([D.alloc(1),Q,B],t))}(c,M);else if(1===C)r=function(A,M,t){var g,e=M.length,i=A.modulus.byteLength();if(e>i-11)throw new Error("message too long");g=t?D.alloc(i-e-3,255):function(A){var M,t=D.allocUnsafe(A),g=0,e=I(2*A),i=0;for(;g=0)throw new Error("data too long for modulus")}return t?n(r,c):N(r,c)}},function(A,M,t){var g=t(35),I=t(106),e=t(107),i=t(6),T=t(48),E=t(23),N=t(108),n=t(4).Buffer;A.exports=function(A,M,t){var D;D=A.padding?A.padding:t?1:4;var C,r=g(A),c=r.modulus.byteLength();if(M.length>c||new i(M).cmp(r.modulus)>=0)throw new Error("decryption error");C=t?N(new i(M),r):T(M,r);var o=n.alloc(c-C.length);if(C=n.concat([o,C],c),4===D)return function(A,M){var t=A.modulus.byteLength(),g=E("sha1").update(n.alloc(0)).digest(),i=g.length;if(0!==M[0])throw new Error("decryption error");var T=M.slice(1,i+1),N=M.slice(i+1),D=e(T,I(N,i)),C=e(N,I(D,t-i-1));if(function(A,M){A=n.from(A),M=n.from(M);var t=0,g=A.length;A.length!==M.length&&(t++,g=Math.min(A.length,M.length));var I=-1;for(;++I=M.length){e++;break}var i=M.slice(2,I-1);("0002"!==g.toString("hex")&&!t||"0001"!==g.toString("hex")&&t)&&e++;i.length<8&&e++;if(e)throw new Error("decryption error");return M.slice(I)}(0,C,t);if(3===D)return C;throw new Error("unknown padding")}},function(A,M,t){"use strict";(function(A,g){function I(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var e=t(4),i=t(18),T=e.Buffer,E=e.kMaxLength,N=A.crypto||A.msCrypto,n=Math.pow(2,32)-1;function D(A,M){if("number"!=typeof A||A!=A)throw new TypeError("offset must be a number");if(A>n||A<0)throw new TypeError("offset must be a uint32");if(A>E||A>M)throw new RangeError("offset out of range")}function C(A,M,t){if("number"!=typeof A||A!=A)throw new TypeError("size must be a number");if(A>n||A<0)throw new TypeError("size must be a uint32");if(A+M>t||A>E)throw new RangeError("buffer too small")}function r(A,M,t,I){if(g.browser){var e=A.buffer,T=new Uint8Array(e,M,t);return N.getRandomValues(T),I?void g.nextTick((function(){I(null,A)})):A}if(!I)return i(t).copy(A,M),A;i(t,(function(t,g){if(t)return I(t);g.copy(A,M),I(null,A)}))}N&&N.getRandomValues||!g.browser?(M.randomFill=function(M,t,g,I){if(!(T.isBuffer(M)||M instanceof A.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof t)I=t,t=0,g=M.length;else if("function"==typeof g)I=g,g=M.length-t;else if("function"!=typeof I)throw new TypeError('"cb" argument must be a function');return D(t,M.length),C(g,t,M.length),r(M,t,g,I)},M.randomFillSync=function(M,t,g){void 0===t&&(t=0);if(!(T.isBuffer(M)||M instanceof A.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');D(t,M.length),void 0===g&&(g=M.length-t);return C(g,t,M.length),r(M,t,g)}):(M.randomFill=I,M.randomFillSync=I)}).call(this,t(10),t(8))},function(A,M,t){"use strict";t.r(M);var g=t(0),I=t(29);M.default=function(A){console.log("new AudioWorker.js"),A._requestAbort=!1,A.soundPlayer=null,A.audioSampleQueue=[];A.addEventListener("message",(function(M){var t=M.data;switch(console.log("AudioWorker: recv data."),t.cmd){case g.u:console.log("init audio player."),function(M,t,g){if(null==A.soundPlayer){var e="16bitInt";switch(M){case 0:e="8bitInt";break;case 1:e="16bitInt";break;case 2:e="32bitInt";break;case 3:e="32bitFloat";break;default:this.logger.logError("Unsupported audio sampleFmt "+M+"!")}A.soundPlayer=new I.a,A.soundPlayer.init({encoding:e,channels:t,sampleRate:g,flushingTime:5e3})}}(1,2,8e3);break;case g.o:console.log("recv audio data...");break;case g.k:A._requestAbort=!0}}))}},function(A,M,t){var g=t(56),I=t(207);"string"==typeof(I=I.__esModule?I.default:I)&&(I=[[A.i,I,""]]);var e={insert:"head",singleton:!1};g(I,e);A.exports=I.locals||{}},function(A,M,t){var g=t(57),I=t(109),e=t(208),i=t(209),T=t(210),E=t(211),N=t(212),n=t(213);M=g(!1);var D=I(e),C=I(i,{hash:"?#iefix&v=4.7.0"}),r=I(T),c=I(E),o=I(N),B=I(n,{hash:"#fontawesomeregular"});M.push([A.i,"/*!\r\n * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome\r\n * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)\r\n */\r\n/* FONT PATH\r\n * -------------------------- */\r\n@font-face {\r\n font-family: 'FontAwesome';\r\n src: url("+D+");\r\n src: url("+C+") format('embedded-opentype'), \r\n url("+r+") format('woff2'), \r\n url("+c+") format('woff'), url("+o+") format('truetype'), url("+B+') format(\'svg\');\r\n font-weight: normal;\r\n font-style: normal;\r\n}\r\n.fa {\r\n display: inline-block;\r\n font: normal normal normal 14px/1 FontAwesome;\r\n font-size: inherit;\r\n text-rendering: auto;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n/* makes the font 33% larger relative to the icon container */\r\n.fa-lg {\r\n font-size: 1.33333333em;\r\n line-height: 0.75em;\r\n vertical-align: -15%;\r\n}\r\n.fa-2x {\r\n font-size: 2em;\r\n}\r\n.fa-3x {\r\n font-size: 3em;\r\n}\r\n.fa-4x {\r\n font-size: 4em;\r\n}\r\n.fa-5x {\r\n font-size: 5em;\r\n}\r\n.fa-fw {\r\n width: 1.28571429em;\r\n text-align: center;\r\n}\r\n.fa-ul {\r\n padding-left: 0;\r\n margin-left: 2.14285714em;\r\n list-style-type: none;\r\n}\r\n.fa-ul > li {\r\n position: relative;\r\n}\r\n.fa-li {\r\n position: absolute;\r\n left: -2.14285714em;\r\n width: 2.14285714em;\r\n top: 0.14285714em;\r\n text-align: center;\r\n}\r\n.fa-li.fa-lg {\r\n left: -1.85714286em;\r\n}\r\n.fa-border {\r\n padding: .2em .25em .15em;\r\n border: solid 0.08em #eee;\r\n border-radius: .1em;\r\n}\r\n.fa-pull-left {\r\n float: left;\r\n}\r\n.fa-pull-right {\r\n float: right;\r\n}\r\n.fa.fa-pull-left {\r\n margin-right: .3em;\r\n}\r\n.fa.fa-pull-right {\r\n margin-left: .3em;\r\n}\r\n/* Deprecated as of 4.4.0 */\r\n.pull-right {\r\n float: right;\r\n}\r\n.pull-left {\r\n float: left;\r\n}\r\n.fa.pull-left {\r\n margin-right: .3em;\r\n}\r\n.fa.pull-right {\r\n margin-left: .3em;\r\n}\r\n.fa-spin {\r\n -webkit-animation: fa-spin 2s infinite linear;\r\n animation: fa-spin 2s infinite linear;\r\n}\r\n.fa-pulse {\r\n -webkit-animation: fa-spin 1s infinite steps(8);\r\n animation: fa-spin 1s infinite steps(8);\r\n}\r\n@-webkit-keyframes fa-spin {\r\n 0% {\r\n -webkit-transform: rotate(0deg);\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n -webkit-transform: rotate(359deg);\r\n transform: rotate(359deg);\r\n }\r\n}\r\n@keyframes fa-spin {\r\n 0% {\r\n -webkit-transform: rotate(0deg);\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n -webkit-transform: rotate(359deg);\r\n transform: rotate(359deg);\r\n }\r\n}\r\n.fa-rotate-90 {\r\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";\r\n -webkit-transform: rotate(90deg);\r\n -ms-transform: rotate(90deg);\r\n transform: rotate(90deg);\r\n}\r\n.fa-rotate-180 {\r\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";\r\n -webkit-transform: rotate(180deg);\r\n -ms-transform: rotate(180deg);\r\n transform: rotate(180deg);\r\n}\r\n.fa-rotate-270 {\r\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";\r\n -webkit-transform: rotate(270deg);\r\n -ms-transform: rotate(270deg);\r\n transform: rotate(270deg);\r\n}\r\n.fa-flip-horizontal {\r\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";\r\n -webkit-transform: scale(-1, 1);\r\n -ms-transform: scale(-1, 1);\r\n transform: scale(-1, 1);\r\n}\r\n.fa-flip-vertical {\r\n -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";\r\n -webkit-transform: scale(1, -1);\r\n -ms-transform: scale(1, -1);\r\n transform: scale(1, -1);\r\n}\r\n:root .fa-rotate-90,\r\n:root .fa-rotate-180,\r\n:root .fa-rotate-270,\r\n:root .fa-flip-horizontal,\r\n:root .fa-flip-vertical {\r\n filter: none;\r\n}\r\n.fa-stack {\r\n position: relative;\r\n display: inline-block;\r\n width: 2em;\r\n height: 2em;\r\n line-height: 2em;\r\n vertical-align: middle;\r\n}\r\n.fa-stack-1x,\r\n.fa-stack-2x {\r\n position: absolute;\r\n left: 0;\r\n width: 100%;\r\n text-align: center;\r\n}\r\n.fa-stack-1x {\r\n line-height: inherit;\r\n}\r\n.fa-stack-2x {\r\n font-size: 2em;\r\n}\r\n.fa-inverse {\r\n color: #fff;\r\n}\r\n/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen\r\n readers do not read off random characters that represent icons */\r\n.fa-glass:before {\r\n content: "\\f000";\r\n}\r\n.fa-music:before {\r\n content: "\\f001";\r\n}\r\n.fa-search:before {\r\n content: "\\f002";\r\n}\r\n.fa-envelope-o:before {\r\n content: "\\f003";\r\n}\r\n.fa-heart:before {\r\n content: "\\f004";\r\n}\r\n.fa-star:before {\r\n content: "\\f005";\r\n}\r\n.fa-star-o:before {\r\n content: "\\f006";\r\n}\r\n.fa-user:before {\r\n content: "\\f007";\r\n}\r\n.fa-film:before {\r\n content: "\\f008";\r\n}\r\n.fa-th-large:before {\r\n content: "\\f009";\r\n}\r\n.fa-th:before {\r\n content: "\\f00a";\r\n}\r\n.fa-th-list:before {\r\n content: "\\f00b";\r\n}\r\n.fa-check:before {\r\n content: "\\f00c";\r\n}\r\n.fa-remove:before,\r\n.fa-close:before,\r\n.fa-times:before {\r\n content: "\\f00d";\r\n}\r\n.fa-search-plus:before {\r\n content: "\\f00e";\r\n}\r\n.fa-search-minus:before {\r\n content: "\\f010";\r\n}\r\n.fa-power-off:before {\r\n content: "\\f011";\r\n}\r\n.fa-signal:before {\r\n content: "\\f012";\r\n}\r\n.fa-gear:before,\r\n.fa-cog:before {\r\n content: "\\f013";\r\n}\r\n.fa-trash-o:before {\r\n content: "\\f014";\r\n}\r\n.fa-home:before {\r\n content: "\\f015";\r\n}\r\n.fa-file-o:before {\r\n content: "\\f016";\r\n}\r\n.fa-clock-o:before {\r\n content: "\\f017";\r\n}\r\n.fa-road:before {\r\n content: "\\f018";\r\n}\r\n.fa-download:before {\r\n content: "\\f019";\r\n}\r\n.fa-arrow-circle-o-down:before {\r\n content: "\\f01a";\r\n}\r\n.fa-arrow-circle-o-up:before {\r\n content: "\\f01b";\r\n}\r\n.fa-inbox:before {\r\n content: "\\f01c";\r\n}\r\n.fa-play-circle-o:before {\r\n content: "\\f01d";\r\n}\r\n.fa-rotate-right:before,\r\n.fa-repeat:before {\r\n content: "\\f01e";\r\n}\r\n.fa-refresh:before {\r\n content: "\\f021";\r\n}\r\n.fa-list-alt:before {\r\n content: "\\f022";\r\n}\r\n.fa-lock:before {\r\n content: "\\f023";\r\n}\r\n.fa-flag:before {\r\n content: "\\f024";\r\n}\r\n.fa-headphones:before {\r\n content: "\\f025";\r\n}\r\n.fa-volume-off:before {\r\n content: "\\f026";\r\n}\r\n.fa-volume-down:before {\r\n content: "\\f027";\r\n}\r\n.fa-volume-up:before {\r\n content: "\\f028";\r\n}\r\n.fa-qrcode:before {\r\n content: "\\f029";\r\n}\r\n.fa-barcode:before {\r\n content: "\\f02a";\r\n}\r\n.fa-tag:before {\r\n content: "\\f02b";\r\n}\r\n.fa-tags:before {\r\n content: "\\f02c";\r\n}\r\n.fa-book:before {\r\n content: "\\f02d";\r\n}\r\n.fa-bookmark:before {\r\n content: "\\f02e";\r\n}\r\n.fa-print:before {\r\n content: "\\f02f";\r\n}\r\n.fa-camera:before {\r\n content: "\\f030";\r\n}\r\n.fa-font:before {\r\n content: "\\f031";\r\n}\r\n.fa-bold:before {\r\n content: "\\f032";\r\n}\r\n.fa-italic:before {\r\n content: "\\f033";\r\n}\r\n.fa-text-height:before {\r\n content: "\\f034";\r\n}\r\n.fa-text-width:before {\r\n content: "\\f035";\r\n}\r\n.fa-align-left:before {\r\n content: "\\f036";\r\n}\r\n.fa-align-center:before {\r\n content: "\\f037";\r\n}\r\n.fa-align-right:before {\r\n content: "\\f038";\r\n}\r\n.fa-align-justify:before {\r\n content: "\\f039";\r\n}\r\n.fa-list:before {\r\n content: "\\f03a";\r\n}\r\n.fa-dedent:before,\r\n.fa-outdent:before {\r\n content: "\\f03b";\r\n}\r\n.fa-indent:before {\r\n content: "\\f03c";\r\n}\r\n.fa-video-camera:before {\r\n content: "\\f03d";\r\n}\r\n.fa-photo:before,\r\n.fa-image:before,\r\n.fa-picture-o:before {\r\n content: "\\f03e";\r\n}\r\n.fa-pencil:before {\r\n content: "\\f040";\r\n}\r\n.fa-map-marker:before {\r\n content: "\\f041";\r\n}\r\n.fa-adjust:before {\r\n content: "\\f042";\r\n}\r\n.fa-tint:before {\r\n content: "\\f043";\r\n}\r\n.fa-edit:before,\r\n.fa-pencil-square-o:before {\r\n content: "\\f044";\r\n}\r\n.fa-share-square-o:before {\r\n content: "\\f045";\r\n}\r\n.fa-check-square-o:before {\r\n content: "\\f046";\r\n}\r\n.fa-arrows:before {\r\n content: "\\f047";\r\n}\r\n.fa-step-backward:before {\r\n content: "\\f048";\r\n}\r\n.fa-fast-backward:before {\r\n content: "\\f049";\r\n}\r\n.fa-backward:before {\r\n content: "\\f04a";\r\n}\r\n.fa-play:before {\r\n content: "\\f04b";\r\n}\r\n.fa-pause:before {\r\n content: "\\f04c";\r\n}\r\n.fa-stop:before {\r\n content: "\\f04d";\r\n}\r\n.fa-forward:before {\r\n content: "\\f04e";\r\n}\r\n.fa-fast-forward:before {\r\n content: "\\f050";\r\n}\r\n.fa-step-forward:before {\r\n content: "\\f051";\r\n}\r\n.fa-eject:before {\r\n content: "\\f052";\r\n}\r\n.fa-chevron-left:before {\r\n content: "\\f053";\r\n}\r\n.fa-chevron-right:before {\r\n content: "\\f054";\r\n}\r\n.fa-plus-circle:before {\r\n content: "\\f055";\r\n}\r\n.fa-minus-circle:before {\r\n content: "\\f056";\r\n}\r\n.fa-times-circle:before {\r\n content: "\\f057";\r\n}\r\n.fa-check-circle:before {\r\n content: "\\f058";\r\n}\r\n.fa-question-circle:before {\r\n content: "\\f059";\r\n}\r\n.fa-info-circle:before {\r\n content: "\\f05a";\r\n}\r\n.fa-crosshairs:before {\r\n content: "\\f05b";\r\n}\r\n.fa-times-circle-o:before {\r\n content: "\\f05c";\r\n}\r\n.fa-check-circle-o:before {\r\n content: "\\f05d";\r\n}\r\n.fa-ban:before {\r\n content: "\\f05e";\r\n}\r\n.fa-arrow-left:before {\r\n content: "\\f060";\r\n}\r\n.fa-arrow-right:before {\r\n content: "\\f061";\r\n}\r\n.fa-arrow-up:before {\r\n content: "\\f062";\r\n}\r\n.fa-arrow-down:before {\r\n content: "\\f063";\r\n}\r\n.fa-mail-forward:before,\r\n.fa-share:before {\r\n content: "\\f064";\r\n}\r\n.fa-expand:before {\r\n content: "\\f065";\r\n}\r\n.fa-compress:before {\r\n content: "\\f066";\r\n}\r\n.fa-plus:before {\r\n content: "\\f067";\r\n}\r\n.fa-minus:before {\r\n content: "\\f068";\r\n}\r\n.fa-asterisk:before {\r\n content: "\\f069";\r\n}\r\n.fa-exclamation-circle:before {\r\n content: "\\f06a";\r\n}\r\n.fa-gift:before {\r\n content: "\\f06b";\r\n}\r\n.fa-leaf:before {\r\n content: "\\f06c";\r\n}\r\n.fa-fire:before {\r\n content: "\\f06d";\r\n}\r\n.fa-eye:before {\r\n content: "\\f06e";\r\n}\r\n.fa-eye-slash:before {\r\n content: "\\f070";\r\n}\r\n.fa-warning:before,\r\n.fa-exclamation-triangle:before {\r\n content: "\\f071";\r\n}\r\n.fa-plane:before {\r\n content: "\\f072";\r\n}\r\n.fa-calendar:before {\r\n content: "\\f073";\r\n}\r\n.fa-random:before {\r\n content: "\\f074";\r\n}\r\n.fa-comment:before {\r\n content: "\\f075";\r\n}\r\n.fa-magnet:before {\r\n content: "\\f076";\r\n}\r\n.fa-chevron-up:before {\r\n content: "\\f077";\r\n}\r\n.fa-chevron-down:before {\r\n content: "\\f078";\r\n}\r\n.fa-retweet:before {\r\n content: "\\f079";\r\n}\r\n.fa-shopping-cart:before {\r\n content: "\\f07a";\r\n}\r\n.fa-folder:before {\r\n content: "\\f07b";\r\n}\r\n.fa-folder-open:before {\r\n content: "\\f07c";\r\n}\r\n.fa-arrows-v:before {\r\n content: "\\f07d";\r\n}\r\n.fa-arrows-h:before {\r\n content: "\\f07e";\r\n}\r\n.fa-bar-chart-o:before,\r\n.fa-bar-chart:before {\r\n content: "\\f080";\r\n}\r\n.fa-twitter-square:before {\r\n content: "\\f081";\r\n}\r\n.fa-facebook-square:before {\r\n content: "\\f082";\r\n}\r\n.fa-camera-retro:before {\r\n content: "\\f083";\r\n}\r\n.fa-key:before {\r\n content: "\\f084";\r\n}\r\n.fa-gears:before,\r\n.fa-cogs:before {\r\n content: "\\f085";\r\n}\r\n.fa-comments:before {\r\n content: "\\f086";\r\n}\r\n.fa-thumbs-o-up:before {\r\n content: "\\f087";\r\n}\r\n.fa-thumbs-o-down:before {\r\n content: "\\f088";\r\n}\r\n.fa-star-half:before {\r\n content: "\\f089";\r\n}\r\n.fa-heart-o:before {\r\n content: "\\f08a";\r\n}\r\n.fa-sign-out:before {\r\n content: "\\f08b";\r\n}\r\n.fa-linkedin-square:before {\r\n content: "\\f08c";\r\n}\r\n.fa-thumb-tack:before {\r\n content: "\\f08d";\r\n}\r\n.fa-external-link:before {\r\n content: "\\f08e";\r\n}\r\n.fa-sign-in:before {\r\n content: "\\f090";\r\n}\r\n.fa-trophy:before {\r\n content: "\\f091";\r\n}\r\n.fa-github-square:before {\r\n content: "\\f092";\r\n}\r\n.fa-upload:before {\r\n content: "\\f093";\r\n}\r\n.fa-lemon-o:before {\r\n content: "\\f094";\r\n}\r\n.fa-phone:before {\r\n content: "\\f095";\r\n}\r\n.fa-square-o:before {\r\n content: "\\f096";\r\n}\r\n.fa-bookmark-o:before {\r\n content: "\\f097";\r\n}\r\n.fa-phone-square:before {\r\n content: "\\f098";\r\n}\r\n.fa-twitter:before {\r\n content: "\\f099";\r\n}\r\n.fa-facebook-f:before,\r\n.fa-facebook:before {\r\n content: "\\f09a";\r\n}\r\n.fa-github:before {\r\n content: "\\f09b";\r\n}\r\n.fa-unlock:before {\r\n content: "\\f09c";\r\n}\r\n.fa-credit-card:before {\r\n content: "\\f09d";\r\n}\r\n.fa-feed:before,\r\n.fa-rss:before {\r\n content: "\\f09e";\r\n}\r\n.fa-hdd-o:before {\r\n content: "\\f0a0";\r\n}\r\n.fa-bullhorn:before {\r\n content: "\\f0a1";\r\n}\r\n.fa-bell:before {\r\n content: "\\f0f3";\r\n}\r\n.fa-certificate:before {\r\n content: "\\f0a3";\r\n}\r\n.fa-hand-o-right:before {\r\n content: "\\f0a4";\r\n}\r\n.fa-hand-o-left:before {\r\n content: "\\f0a5";\r\n}\r\n.fa-hand-o-up:before {\r\n content: "\\f0a6";\r\n}\r\n.fa-hand-o-down:before {\r\n content: "\\f0a7";\r\n}\r\n.fa-arrow-circle-left:before {\r\n content: "\\f0a8";\r\n}\r\n.fa-arrow-circle-right:before {\r\n content: "\\f0a9";\r\n}\r\n.fa-arrow-circle-up:before {\r\n content: "\\f0aa";\r\n}\r\n.fa-arrow-circle-down:before {\r\n content: "\\f0ab";\r\n}\r\n.fa-globe:before {\r\n content: "\\f0ac";\r\n}\r\n.fa-wrench:before {\r\n content: "\\f0ad";\r\n}\r\n.fa-tasks:before {\r\n content: "\\f0ae";\r\n}\r\n.fa-filter:before {\r\n content: "\\f0b0";\r\n}\r\n.fa-briefcase:before {\r\n content: "\\f0b1";\r\n}\r\n.fa-arrows-alt:before {\r\n content: "\\f0b2";\r\n}\r\n.fa-group:before,\r\n.fa-users:before {\r\n content: "\\f0c0";\r\n}\r\n.fa-chain:before,\r\n.fa-link:before {\r\n content: "\\f0c1";\r\n}\r\n.fa-cloud:before {\r\n content: "\\f0c2";\r\n}\r\n.fa-flask:before {\r\n content: "\\f0c3";\r\n}\r\n.fa-cut:before,\r\n.fa-scissors:before {\r\n content: "\\f0c4";\r\n}\r\n.fa-copy:before,\r\n.fa-files-o:before {\r\n content: "\\f0c5";\r\n}\r\n.fa-paperclip:before {\r\n content: "\\f0c6";\r\n}\r\n.fa-save:before,\r\n.fa-floppy-o:before {\r\n content: "\\f0c7";\r\n}\r\n.fa-square:before {\r\n content: "\\f0c8";\r\n}\r\n.fa-navicon:before,\r\n.fa-reorder:before,\r\n.fa-bars:before {\r\n content: "\\f0c9";\r\n}\r\n.fa-list-ul:before {\r\n content: "\\f0ca";\r\n}\r\n.fa-list-ol:before {\r\n content: "\\f0cb";\r\n}\r\n.fa-strikethrough:before {\r\n content: "\\f0cc";\r\n}\r\n.fa-underline:before {\r\n content: "\\f0cd";\r\n}\r\n.fa-table:before {\r\n content: "\\f0ce";\r\n}\r\n.fa-magic:before {\r\n content: "\\f0d0";\r\n}\r\n.fa-truck:before {\r\n content: "\\f0d1";\r\n}\r\n.fa-pinterest:before {\r\n content: "\\f0d2";\r\n}\r\n.fa-pinterest-square:before {\r\n content: "\\f0d3";\r\n}\r\n.fa-google-plus-square:before {\r\n content: "\\f0d4";\r\n}\r\n.fa-google-plus:before {\r\n content: "\\f0d5";\r\n}\r\n.fa-money:before {\r\n content: "\\f0d6";\r\n}\r\n.fa-caret-down:before {\r\n content: "\\f0d7";\r\n}\r\n.fa-caret-up:before {\r\n content: "\\f0d8";\r\n}\r\n.fa-caret-left:before {\r\n content: "\\f0d9";\r\n}\r\n.fa-caret-right:before {\r\n content: "\\f0da";\r\n}\r\n.fa-columns:before {\r\n content: "\\f0db";\r\n}\r\n.fa-unsorted:before,\r\n.fa-sort:before {\r\n content: "\\f0dc";\r\n}\r\n.fa-sort-down:before,\r\n.fa-sort-desc:before {\r\n content: "\\f0dd";\r\n}\r\n.fa-sort-up:before,\r\n.fa-sort-asc:before {\r\n content: "\\f0de";\r\n}\r\n.fa-envelope:before {\r\n content: "\\f0e0";\r\n}\r\n.fa-linkedin:before {\r\n content: "\\f0e1";\r\n}\r\n.fa-rotate-left:before,\r\n.fa-undo:before {\r\n content: "\\f0e2";\r\n}\r\n.fa-legal:before,\r\n.fa-gavel:before {\r\n content: "\\f0e3";\r\n}\r\n.fa-dashboard:before,\r\n.fa-tachometer:before {\r\n content: "\\f0e4";\r\n}\r\n.fa-comment-o:before {\r\n content: "\\f0e5";\r\n}\r\n.fa-comments-o:before {\r\n content: "\\f0e6";\r\n}\r\n.fa-flash:before,\r\n.fa-bolt:before {\r\n content: "\\f0e7";\r\n}\r\n.fa-sitemap:before {\r\n content: "\\f0e8";\r\n}\r\n.fa-umbrella:before {\r\n content: "\\f0e9";\r\n}\r\n.fa-paste:before,\r\n.fa-clipboard:before {\r\n content: "\\f0ea";\r\n}\r\n.fa-lightbulb-o:before {\r\n content: "\\f0eb";\r\n}\r\n.fa-exchange:before {\r\n content: "\\f0ec";\r\n}\r\n.fa-cloud-download:before {\r\n content: "\\f0ed";\r\n}\r\n.fa-cloud-upload:before {\r\n content: "\\f0ee";\r\n}\r\n.fa-user-md:before {\r\n content: "\\f0f0";\r\n}\r\n.fa-stethoscope:before {\r\n content: "\\f0f1";\r\n}\r\n.fa-suitcase:before {\r\n content: "\\f0f2";\r\n}\r\n.fa-bell-o:before {\r\n content: "\\f0a2";\r\n}\r\n.fa-coffee:before {\r\n content: "\\f0f4";\r\n}\r\n.fa-cutlery:before {\r\n content: "\\f0f5";\r\n}\r\n.fa-file-text-o:before {\r\n content: "\\f0f6";\r\n}\r\n.fa-building-o:before {\r\n content: "\\f0f7";\r\n}\r\n.fa-hospital-o:before {\r\n content: "\\f0f8";\r\n}\r\n.fa-ambulance:before {\r\n content: "\\f0f9";\r\n}\r\n.fa-medkit:before {\r\n content: "\\f0fa";\r\n}\r\n.fa-fighter-jet:before {\r\n content: "\\f0fb";\r\n}\r\n.fa-beer:before {\r\n content: "\\f0fc";\r\n}\r\n.fa-h-square:before {\r\n content: "\\f0fd";\r\n}\r\n.fa-plus-square:before {\r\n content: "\\f0fe";\r\n}\r\n.fa-angle-double-left:before {\r\n content: "\\f100";\r\n}\r\n.fa-angle-double-right:before {\r\n content: "\\f101";\r\n}\r\n.fa-angle-double-up:before {\r\n content: "\\f102";\r\n}\r\n.fa-angle-double-down:before {\r\n content: "\\f103";\r\n}\r\n.fa-angle-left:before {\r\n content: "\\f104";\r\n}\r\n.fa-angle-right:before {\r\n content: "\\f105";\r\n}\r\n.fa-angle-up:before {\r\n content: "\\f106";\r\n}\r\n.fa-angle-down:before {\r\n content: "\\f107";\r\n}\r\n.fa-desktop:before {\r\n content: "\\f108";\r\n}\r\n.fa-laptop:before {\r\n content: "\\f109";\r\n}\r\n.fa-tablet:before {\r\n content: "\\f10a";\r\n}\r\n.fa-mobile-phone:before,\r\n.fa-mobile:before {\r\n content: "\\f10b";\r\n}\r\n.fa-circle-o:before {\r\n content: "\\f10c";\r\n}\r\n.fa-quote-left:before {\r\n content: "\\f10d";\r\n}\r\n.fa-quote-right:before {\r\n content: "\\f10e";\r\n}\r\n.fa-spinner:before {\r\n content: "\\f110";\r\n}\r\n.fa-circle:before {\r\n content: "\\f111";\r\n}\r\n.fa-mail-reply:before,\r\n.fa-reply:before {\r\n content: "\\f112";\r\n}\r\n.fa-github-alt:before {\r\n content: "\\f113";\r\n}\r\n.fa-folder-o:before {\r\n content: "\\f114";\r\n}\r\n.fa-folder-open-o:before {\r\n content: "\\f115";\r\n}\r\n.fa-smile-o:before {\r\n content: "\\f118";\r\n}\r\n.fa-frown-o:before {\r\n content: "\\f119";\r\n}\r\n.fa-meh-o:before {\r\n content: "\\f11a";\r\n}\r\n.fa-gamepad:before {\r\n content: "\\f11b";\r\n}\r\n.fa-keyboard-o:before {\r\n content: "\\f11c";\r\n}\r\n.fa-flag-o:before {\r\n content: "\\f11d";\r\n}\r\n.fa-flag-checkered:before {\r\n content: "\\f11e";\r\n}\r\n.fa-terminal:before {\r\n content: "\\f120";\r\n}\r\n.fa-code:before {\r\n content: "\\f121";\r\n}\r\n.fa-mail-reply-all:before,\r\n.fa-reply-all:before {\r\n content: "\\f122";\r\n}\r\n.fa-star-half-empty:before,\r\n.fa-star-half-full:before,\r\n.fa-star-half-o:before {\r\n content: "\\f123";\r\n}\r\n.fa-location-arrow:before {\r\n content: "\\f124";\r\n}\r\n.fa-crop:before {\r\n content: "\\f125";\r\n}\r\n.fa-code-fork:before {\r\n content: "\\f126";\r\n}\r\n.fa-unlink:before,\r\n.fa-chain-broken:before {\r\n content: "\\f127";\r\n}\r\n.fa-question:before {\r\n content: "\\f128";\r\n}\r\n.fa-info:before {\r\n content: "\\f129";\r\n}\r\n.fa-exclamation:before {\r\n content: "\\f12a";\r\n}\r\n.fa-superscript:before {\r\n content: "\\f12b";\r\n}\r\n.fa-subscript:before {\r\n content: "\\f12c";\r\n}\r\n.fa-eraser:before {\r\n content: "\\f12d";\r\n}\r\n.fa-puzzle-piece:before {\r\n content: "\\f12e";\r\n}\r\n.fa-microphone:before {\r\n content: "\\f130";\r\n}\r\n.fa-microphone-slash:before {\r\n content: "\\f131";\r\n}\r\n.fa-shield:before {\r\n content: "\\f132";\r\n}\r\n.fa-calendar-o:before {\r\n content: "\\f133";\r\n}\r\n.fa-fire-extinguisher:before {\r\n content: "\\f134";\r\n}\r\n.fa-rocket:before {\r\n content: "\\f135";\r\n}\r\n.fa-maxcdn:before {\r\n content: "\\f136";\r\n}\r\n.fa-chevron-circle-left:before {\r\n content: "\\f137";\r\n}\r\n.fa-chevron-circle-right:before {\r\n content: "\\f138";\r\n}\r\n.fa-chevron-circle-up:before {\r\n content: "\\f139";\r\n}\r\n.fa-chevron-circle-down:before {\r\n content: "\\f13a";\r\n}\r\n.fa-html5:before {\r\n content: "\\f13b";\r\n}\r\n.fa-css3:before {\r\n content: "\\f13c";\r\n}\r\n.fa-anchor:before {\r\n content: "\\f13d";\r\n}\r\n.fa-unlock-alt:before {\r\n content: "\\f13e";\r\n}\r\n.fa-bullseye:before {\r\n content: "\\f140";\r\n}\r\n.fa-ellipsis-h:before {\r\n content: "\\f141";\r\n}\r\n.fa-ellipsis-v:before {\r\n content: "\\f142";\r\n}\r\n.fa-rss-square:before {\r\n content: "\\f143";\r\n}\r\n.fa-play-circle:before {\r\n content: "\\f144";\r\n}\r\n.fa-ticket:before {\r\n content: "\\f145";\r\n}\r\n.fa-minus-square:before {\r\n content: "\\f146";\r\n}\r\n.fa-minus-square-o:before {\r\n content: "\\f147";\r\n}\r\n.fa-level-up:before {\r\n content: "\\f148";\r\n}\r\n.fa-level-down:before {\r\n content: "\\f149";\r\n}\r\n.fa-check-square:before {\r\n content: "\\f14a";\r\n}\r\n.fa-pencil-square:before {\r\n content: "\\f14b";\r\n}\r\n.fa-external-link-square:before {\r\n content: "\\f14c";\r\n}\r\n.fa-share-square:before {\r\n content: "\\f14d";\r\n}\r\n.fa-compass:before {\r\n content: "\\f14e";\r\n}\r\n.fa-toggle-down:before,\r\n.fa-caret-square-o-down:before {\r\n content: "\\f150";\r\n}\r\n.fa-toggle-up:before,\r\n.fa-caret-square-o-up:before {\r\n content: "\\f151";\r\n}\r\n.fa-toggle-right:before,\r\n.fa-caret-square-o-right:before {\r\n content: "\\f152";\r\n}\r\n.fa-euro:before,\r\n.fa-eur:before {\r\n content: "\\f153";\r\n}\r\n.fa-gbp:before {\r\n content: "\\f154";\r\n}\r\n.fa-dollar:before,\r\n.fa-usd:before {\r\n content: "\\f155";\r\n}\r\n.fa-rupee:before,\r\n.fa-inr:before {\r\n content: "\\f156";\r\n}\r\n.fa-cny:before,\r\n.fa-rmb:before,\r\n.fa-yen:before,\r\n.fa-jpy:before {\r\n content: "\\f157";\r\n}\r\n.fa-ruble:before,\r\n.fa-rouble:before,\r\n.fa-rub:before {\r\n content: "\\f158";\r\n}\r\n.fa-won:before,\r\n.fa-krw:before {\r\n content: "\\f159";\r\n}\r\n.fa-bitcoin:before,\r\n.fa-btc:before {\r\n content: "\\f15a";\r\n}\r\n.fa-file:before {\r\n content: "\\f15b";\r\n}\r\n.fa-file-text:before {\r\n content: "\\f15c";\r\n}\r\n.fa-sort-alpha-asc:before {\r\n content: "\\f15d";\r\n}\r\n.fa-sort-alpha-desc:before {\r\n content: "\\f15e";\r\n}\r\n.fa-sort-amount-asc:before {\r\n content: "\\f160";\r\n}\r\n.fa-sort-amount-desc:before {\r\n content: "\\f161";\r\n}\r\n.fa-sort-numeric-asc:before {\r\n content: "\\f162";\r\n}\r\n.fa-sort-numeric-desc:before {\r\n content: "\\f163";\r\n}\r\n.fa-thumbs-up:before {\r\n content: "\\f164";\r\n}\r\n.fa-thumbs-down:before {\r\n content: "\\f165";\r\n}\r\n.fa-youtube-square:before {\r\n content: "\\f166";\r\n}\r\n.fa-youtube:before {\r\n content: "\\f167";\r\n}\r\n.fa-xing:before {\r\n content: "\\f168";\r\n}\r\n.fa-xing-square:before {\r\n content: "\\f169";\r\n}\r\n.fa-youtube-play:before {\r\n content: "\\f16a";\r\n}\r\n.fa-dropbox:before {\r\n content: "\\f16b";\r\n}\r\n.fa-stack-overflow:before {\r\n content: "\\f16c";\r\n}\r\n.fa-instagram:before {\r\n content: "\\f16d";\r\n}\r\n.fa-flickr:before {\r\n content: "\\f16e";\r\n}\r\n.fa-adn:before {\r\n content: "\\f170";\r\n}\r\n.fa-bitbucket:before {\r\n content: "\\f171";\r\n}\r\n.fa-bitbucket-square:before {\r\n content: "\\f172";\r\n}\r\n.fa-tumblr:before {\r\n content: "\\f173";\r\n}\r\n.fa-tumblr-square:before {\r\n content: "\\f174";\r\n}\r\n.fa-long-arrow-down:before {\r\n content: "\\f175";\r\n}\r\n.fa-long-arrow-up:before {\r\n content: "\\f176";\r\n}\r\n.fa-long-arrow-left:before {\r\n content: "\\f177";\r\n}\r\n.fa-long-arrow-right:before {\r\n content: "\\f178";\r\n}\r\n.fa-apple:before {\r\n content: "\\f179";\r\n}\r\n.fa-windows:before {\r\n content: "\\f17a";\r\n}\r\n.fa-android:before {\r\n content: "\\f17b";\r\n}\r\n.fa-linux:before {\r\n content: "\\f17c";\r\n}\r\n.fa-dribbble:before {\r\n content: "\\f17d";\r\n}\r\n.fa-skype:before {\r\n content: "\\f17e";\r\n}\r\n.fa-foursquare:before {\r\n content: "\\f180";\r\n}\r\n.fa-trello:before {\r\n content: "\\f181";\r\n}\r\n.fa-female:before {\r\n content: "\\f182";\r\n}\r\n.fa-male:before {\r\n content: "\\f183";\r\n}\r\n.fa-gittip:before,\r\n.fa-gratipay:before {\r\n content: "\\f184";\r\n}\r\n.fa-sun-o:before {\r\n content: "\\f185";\r\n}\r\n.fa-moon-o:before {\r\n content: "\\f186";\r\n}\r\n.fa-archive:before {\r\n content: "\\f187";\r\n}\r\n.fa-bug:before {\r\n content: "\\f188";\r\n}\r\n.fa-vk:before {\r\n content: "\\f189";\r\n}\r\n.fa-weibo:before {\r\n content: "\\f18a";\r\n}\r\n.fa-renren:before {\r\n content: "\\f18b";\r\n}\r\n.fa-pagelines:before {\r\n content: "\\f18c";\r\n}\r\n.fa-stack-exchange:before {\r\n content: "\\f18d";\r\n}\r\n.fa-arrow-circle-o-right:before {\r\n content: "\\f18e";\r\n}\r\n.fa-arrow-circle-o-left:before {\r\n content: "\\f190";\r\n}\r\n.fa-toggle-left:before,\r\n.fa-caret-square-o-left:before {\r\n content: "\\f191";\r\n}\r\n.fa-dot-circle-o:before {\r\n content: "\\f192";\r\n}\r\n.fa-wheelchair:before {\r\n content: "\\f193";\r\n}\r\n.fa-vimeo-square:before {\r\n content: "\\f194";\r\n}\r\n.fa-turkish-lira:before,\r\n.fa-try:before {\r\n content: "\\f195";\r\n}\r\n.fa-plus-square-o:before {\r\n content: "\\f196";\r\n}\r\n.fa-space-shuttle:before {\r\n content: "\\f197";\r\n}\r\n.fa-slack:before {\r\n content: "\\f198";\r\n}\r\n.fa-envelope-square:before {\r\n content: "\\f199";\r\n}\r\n.fa-wordpress:before {\r\n content: "\\f19a";\r\n}\r\n.fa-openid:before {\r\n content: "\\f19b";\r\n}\r\n.fa-institution:before,\r\n.fa-bank:before,\r\n.fa-university:before {\r\n content: "\\f19c";\r\n}\r\n.fa-mortar-board:before,\r\n.fa-graduation-cap:before {\r\n content: "\\f19d";\r\n}\r\n.fa-yahoo:before {\r\n content: "\\f19e";\r\n}\r\n.fa-google:before {\r\n content: "\\f1a0";\r\n}\r\n.fa-reddit:before {\r\n content: "\\f1a1";\r\n}\r\n.fa-reddit-square:before {\r\n content: "\\f1a2";\r\n}\r\n.fa-stumbleupon-circle:before {\r\n content: "\\f1a3";\r\n}\r\n.fa-stumbleupon:before {\r\n content: "\\f1a4";\r\n}\r\n.fa-delicious:before {\r\n content: "\\f1a5";\r\n}\r\n.fa-digg:before {\r\n content: "\\f1a6";\r\n}\r\n.fa-pied-piper-pp:before {\r\n content: "\\f1a7";\r\n}\r\n.fa-pied-piper-alt:before {\r\n content: "\\f1a8";\r\n}\r\n.fa-drupal:before {\r\n content: "\\f1a9";\r\n}\r\n.fa-joomla:before {\r\n content: "\\f1aa";\r\n}\r\n.fa-language:before {\r\n content: "\\f1ab";\r\n}\r\n.fa-fax:before {\r\n content: "\\f1ac";\r\n}\r\n.fa-building:before {\r\n content: "\\f1ad";\r\n}\r\n.fa-child:before {\r\n content: "\\f1ae";\r\n}\r\n.fa-paw:before {\r\n content: "\\f1b0";\r\n}\r\n.fa-spoon:before {\r\n content: "\\f1b1";\r\n}\r\n.fa-cube:before {\r\n content: "\\f1b2";\r\n}\r\n.fa-cubes:before {\r\n content: "\\f1b3";\r\n}\r\n.fa-behance:before {\r\n content: "\\f1b4";\r\n}\r\n.fa-behance-square:before {\r\n content: "\\f1b5";\r\n}\r\n.fa-steam:before {\r\n content: "\\f1b6";\r\n}\r\n.fa-steam-square:before {\r\n content: "\\f1b7";\r\n}\r\n.fa-recycle:before {\r\n content: "\\f1b8";\r\n}\r\n.fa-automobile:before,\r\n.fa-car:before {\r\n content: "\\f1b9";\r\n}\r\n.fa-cab:before,\r\n.fa-taxi:before {\r\n content: "\\f1ba";\r\n}\r\n.fa-tree:before {\r\n content: "\\f1bb";\r\n}\r\n.fa-spotify:before {\r\n content: "\\f1bc";\r\n}\r\n.fa-deviantart:before {\r\n content: "\\f1bd";\r\n}\r\n.fa-soundcloud:before {\r\n content: "\\f1be";\r\n}\r\n.fa-database:before {\r\n content: "\\f1c0";\r\n}\r\n.fa-file-pdf-o:before {\r\n content: "\\f1c1";\r\n}\r\n.fa-file-word-o:before {\r\n content: "\\f1c2";\r\n}\r\n.fa-file-excel-o:before {\r\n content: "\\f1c3";\r\n}\r\n.fa-file-powerpoint-o:before {\r\n content: "\\f1c4";\r\n}\r\n.fa-file-photo-o:before,\r\n.fa-file-picture-o:before,\r\n.fa-file-image-o:before {\r\n content: "\\f1c5";\r\n}\r\n.fa-file-zip-o:before,\r\n.fa-file-archive-o:before {\r\n content: "\\f1c6";\r\n}\r\n.fa-file-sound-o:before,\r\n.fa-file-audio-o:before {\r\n content: "\\f1c7";\r\n}\r\n.fa-file-movie-o:before,\r\n.fa-file-video-o:before {\r\n content: "\\f1c8";\r\n}\r\n.fa-file-code-o:before {\r\n content: "\\f1c9";\r\n}\r\n.fa-vine:before {\r\n content: "\\f1ca";\r\n}\r\n.fa-codepen:before {\r\n content: "\\f1cb";\r\n}\r\n.fa-jsfiddle:before {\r\n content: "\\f1cc";\r\n}\r\n.fa-life-bouy:before,\r\n.fa-life-buoy:before,\r\n.fa-life-saver:before,\r\n.fa-support:before,\r\n.fa-life-ring:before {\r\n content: "\\f1cd";\r\n}\r\n.fa-circle-o-notch:before {\r\n content: "\\f1ce";\r\n}\r\n.fa-ra:before,\r\n.fa-resistance:before,\r\n.fa-rebel:before {\r\n content: "\\f1d0";\r\n}\r\n.fa-ge:before,\r\n.fa-empire:before {\r\n content: "\\f1d1";\r\n}\r\n.fa-git-square:before {\r\n content: "\\f1d2";\r\n}\r\n.fa-git:before {\r\n content: "\\f1d3";\r\n}\r\n.fa-y-combinator-square:before,\r\n.fa-yc-square:before,\r\n.fa-hacker-news:before {\r\n content: "\\f1d4";\r\n}\r\n.fa-tencent-weibo:before {\r\n content: "\\f1d5";\r\n}\r\n.fa-qq:before {\r\n content: "\\f1d6";\r\n}\r\n.fa-wechat:before,\r\n.fa-weixin:before {\r\n content: "\\f1d7";\r\n}\r\n.fa-send:before,\r\n.fa-paper-plane:before {\r\n content: "\\f1d8";\r\n}\r\n.fa-send-o:before,\r\n.fa-paper-plane-o:before {\r\n content: "\\f1d9";\r\n}\r\n.fa-history:before {\r\n content: "\\f1da";\r\n}\r\n.fa-circle-thin:before {\r\n content: "\\f1db";\r\n}\r\n.fa-header:before {\r\n content: "\\f1dc";\r\n}\r\n.fa-paragraph:before {\r\n content: "\\f1dd";\r\n}\r\n.fa-sliders:before {\r\n content: "\\f1de";\r\n}\r\n.fa-share-alt:before {\r\n content: "\\f1e0";\r\n}\r\n.fa-share-alt-square:before {\r\n content: "\\f1e1";\r\n}\r\n.fa-bomb:before {\r\n content: "\\f1e2";\r\n}\r\n.fa-soccer-ball-o:before,\r\n.fa-futbol-o:before {\r\n content: "\\f1e3";\r\n}\r\n.fa-tty:before {\r\n content: "\\f1e4";\r\n}\r\n.fa-binoculars:before {\r\n content: "\\f1e5";\r\n}\r\n.fa-plug:before {\r\n content: "\\f1e6";\r\n}\r\n.fa-slideshare:before {\r\n content: "\\f1e7";\r\n}\r\n.fa-twitch:before {\r\n content: "\\f1e8";\r\n}\r\n.fa-yelp:before {\r\n content: "\\f1e9";\r\n}\r\n.fa-newspaper-o:before {\r\n content: "\\f1ea";\r\n}\r\n.fa-wifi:before {\r\n content: "\\f1eb";\r\n}\r\n.fa-calculator:before {\r\n content: "\\f1ec";\r\n}\r\n.fa-paypal:before {\r\n content: "\\f1ed";\r\n}\r\n.fa-google-wallet:before {\r\n content: "\\f1ee";\r\n}\r\n.fa-cc-visa:before {\r\n content: "\\f1f0";\r\n}\r\n.fa-cc-mastercard:before {\r\n content: "\\f1f1";\r\n}\r\n.fa-cc-discover:before {\r\n content: "\\f1f2";\r\n}\r\n.fa-cc-amex:before {\r\n content: "\\f1f3";\r\n}\r\n.fa-cc-paypal:before {\r\n content: "\\f1f4";\r\n}\r\n.fa-cc-stripe:before {\r\n content: "\\f1f5";\r\n}\r\n.fa-bell-slash:before {\r\n content: "\\f1f6";\r\n}\r\n.fa-bell-slash-o:before {\r\n content: "\\f1f7";\r\n}\r\n.fa-trash:before {\r\n content: "\\f1f8";\r\n}\r\n.fa-copyright:before {\r\n content: "\\f1f9";\r\n}\r\n.fa-at:before {\r\n content: "\\f1fa";\r\n}\r\n.fa-eyedropper:before {\r\n content: "\\f1fb";\r\n}\r\n.fa-paint-brush:before {\r\n content: "\\f1fc";\r\n}\r\n.fa-birthday-cake:before {\r\n content: "\\f1fd";\r\n}\r\n.fa-area-chart:before {\r\n content: "\\f1fe";\r\n}\r\n.fa-pie-chart:before {\r\n content: "\\f200";\r\n}\r\n.fa-line-chart:before {\r\n content: "\\f201";\r\n}\r\n.fa-lastfm:before {\r\n content: "\\f202";\r\n}\r\n.fa-lastfm-square:before {\r\n content: "\\f203";\r\n}\r\n.fa-toggle-off:before {\r\n content: "\\f204";\r\n}\r\n.fa-toggle-on:before {\r\n content: "\\f205";\r\n}\r\n.fa-bicycle:before {\r\n content: "\\f206";\r\n}\r\n.fa-bus:before {\r\n content: "\\f207";\r\n}\r\n.fa-ioxhost:before {\r\n content: "\\f208";\r\n}\r\n.fa-angellist:before {\r\n content: "\\f209";\r\n}\r\n.fa-cc:before {\r\n content: "\\f20a";\r\n}\r\n.fa-shekel:before,\r\n.fa-sheqel:before,\r\n.fa-ils:before {\r\n content: "\\f20b";\r\n}\r\n.fa-meanpath:before {\r\n content: "\\f20c";\r\n}\r\n.fa-buysellads:before {\r\n content: "\\f20d";\r\n}\r\n.fa-connectdevelop:before {\r\n content: "\\f20e";\r\n}\r\n.fa-dashcube:before {\r\n content: "\\f210";\r\n}\r\n.fa-forumbee:before {\r\n content: "\\f211";\r\n}\r\n.fa-leanpub:before {\r\n content: "\\f212";\r\n}\r\n.fa-sellsy:before {\r\n content: "\\f213";\r\n}\r\n.fa-shirtsinbulk:before {\r\n content: "\\f214";\r\n}\r\n.fa-simplybuilt:before {\r\n content: "\\f215";\r\n}\r\n.fa-skyatlas:before {\r\n content: "\\f216";\r\n}\r\n.fa-cart-plus:before {\r\n content: "\\f217";\r\n}\r\n.fa-cart-arrow-down:before {\r\n content: "\\f218";\r\n}\r\n.fa-diamond:before {\r\n content: "\\f219";\r\n}\r\n.fa-ship:before {\r\n content: "\\f21a";\r\n}\r\n.fa-user-secret:before {\r\n content: "\\f21b";\r\n}\r\n.fa-motorcycle:before {\r\n content: "\\f21c";\r\n}\r\n.fa-street-view:before {\r\n content: "\\f21d";\r\n}\r\n.fa-heartbeat:before {\r\n content: "\\f21e";\r\n}\r\n.fa-venus:before {\r\n content: "\\f221";\r\n}\r\n.fa-mars:before {\r\n content: "\\f222";\r\n}\r\n.fa-mercury:before {\r\n content: "\\f223";\r\n}\r\n.fa-intersex:before,\r\n.fa-transgender:before {\r\n content: "\\f224";\r\n}\r\n.fa-transgender-alt:before {\r\n content: "\\f225";\r\n}\r\n.fa-venus-double:before {\r\n content: "\\f226";\r\n}\r\n.fa-mars-double:before {\r\n content: "\\f227";\r\n}\r\n.fa-venus-mars:before {\r\n content: "\\f228";\r\n}\r\n.fa-mars-stroke:before {\r\n content: "\\f229";\r\n}\r\n.fa-mars-stroke-v:before {\r\n content: "\\f22a";\r\n}\r\n.fa-mars-stroke-h:before {\r\n content: "\\f22b";\r\n}\r\n.fa-neuter:before {\r\n content: "\\f22c";\r\n}\r\n.fa-genderless:before {\r\n content: "\\f22d";\r\n}\r\n.fa-facebook-official:before {\r\n content: "\\f230";\r\n}\r\n.fa-pinterest-p:before {\r\n content: "\\f231";\r\n}\r\n.fa-whatsapp:before {\r\n content: "\\f232";\r\n}\r\n.fa-server:before {\r\n content: "\\f233";\r\n}\r\n.fa-user-plus:before {\r\n content: "\\f234";\r\n}\r\n.fa-user-times:before {\r\n content: "\\f235";\r\n}\r\n.fa-hotel:before,\r\n.fa-bed:before {\r\n content: "\\f236";\r\n}\r\n.fa-viacoin:before {\r\n content: "\\f237";\r\n}\r\n.fa-train:before {\r\n content: "\\f238";\r\n}\r\n.fa-subway:before {\r\n content: "\\f239";\r\n}\r\n.fa-medium:before {\r\n content: "\\f23a";\r\n}\r\n.fa-yc:before,\r\n.fa-y-combinator:before {\r\n content: "\\f23b";\r\n}\r\n.fa-optin-monster:before {\r\n content: "\\f23c";\r\n}\r\n.fa-opencart:before {\r\n content: "\\f23d";\r\n}\r\n.fa-expeditedssl:before {\r\n content: "\\f23e";\r\n}\r\n.fa-battery-4:before,\r\n.fa-battery:before,\r\n.fa-battery-full:before {\r\n content: "\\f240";\r\n}\r\n.fa-battery-3:before,\r\n.fa-battery-three-quarters:before {\r\n content: "\\f241";\r\n}\r\n.fa-battery-2:before,\r\n.fa-battery-half:before {\r\n content: "\\f242";\r\n}\r\n.fa-battery-1:before,\r\n.fa-battery-quarter:before {\r\n content: "\\f243";\r\n}\r\n.fa-battery-0:before,\r\n.fa-battery-empty:before {\r\n content: "\\f244";\r\n}\r\n.fa-mouse-pointer:before {\r\n content: "\\f245";\r\n}\r\n.fa-i-cursor:before {\r\n content: "\\f246";\r\n}\r\n.fa-object-group:before {\r\n content: "\\f247";\r\n}\r\n.fa-object-ungroup:before {\r\n content: "\\f248";\r\n}\r\n.fa-sticky-note:before {\r\n content: "\\f249";\r\n}\r\n.fa-sticky-note-o:before {\r\n content: "\\f24a";\r\n}\r\n.fa-cc-jcb:before {\r\n content: "\\f24b";\r\n}\r\n.fa-cc-diners-club:before {\r\n content: "\\f24c";\r\n}\r\n.fa-clone:before {\r\n content: "\\f24d";\r\n}\r\n.fa-balance-scale:before {\r\n content: "\\f24e";\r\n}\r\n.fa-hourglass-o:before {\r\n content: "\\f250";\r\n}\r\n.fa-hourglass-1:before,\r\n.fa-hourglass-start:before {\r\n content: "\\f251";\r\n}\r\n.fa-hourglass-2:before,\r\n.fa-hourglass-half:before {\r\n content: "\\f252";\r\n}\r\n.fa-hourglass-3:before,\r\n.fa-hourglass-end:before {\r\n content: "\\f253";\r\n}\r\n.fa-hourglass:before {\r\n content: "\\f254";\r\n}\r\n.fa-hand-grab-o:before,\r\n.fa-hand-rock-o:before {\r\n content: "\\f255";\r\n}\r\n.fa-hand-stop-o:before,\r\n.fa-hand-paper-o:before {\r\n content: "\\f256";\r\n}\r\n.fa-hand-scissors-o:before {\r\n content: "\\f257";\r\n}\r\n.fa-hand-lizard-o:before {\r\n content: "\\f258";\r\n}\r\n.fa-hand-spock-o:before {\r\n content: "\\f259";\r\n}\r\n.fa-hand-pointer-o:before {\r\n content: "\\f25a";\r\n}\r\n.fa-hand-peace-o:before {\r\n content: "\\f25b";\r\n}\r\n.fa-trademark:before {\r\n content: "\\f25c";\r\n}\r\n.fa-registered:before {\r\n content: "\\f25d";\r\n}\r\n.fa-creative-commons:before {\r\n content: "\\f25e";\r\n}\r\n.fa-gg:before {\r\n content: "\\f260";\r\n}\r\n.fa-gg-circle:before {\r\n content: "\\f261";\r\n}\r\n.fa-tripadvisor:before {\r\n content: "\\f262";\r\n}\r\n.fa-odnoklassniki:before {\r\n content: "\\f263";\r\n}\r\n.fa-odnoklassniki-square:before {\r\n content: "\\f264";\r\n}\r\n.fa-get-pocket:before {\r\n content: "\\f265";\r\n}\r\n.fa-wikipedia-w:before {\r\n content: "\\f266";\r\n}\r\n.fa-safari:before {\r\n content: "\\f267";\r\n}\r\n.fa-chrome:before {\r\n content: "\\f268";\r\n}\r\n.fa-firefox:before {\r\n content: "\\f269";\r\n}\r\n.fa-opera:before {\r\n content: "\\f26a";\r\n}\r\n.fa-internet-explorer:before {\r\n content: "\\f26b";\r\n}\r\n.fa-tv:before,\r\n.fa-television:before {\r\n content: "\\f26c";\r\n}\r\n.fa-contao:before {\r\n content: "\\f26d";\r\n}\r\n.fa-500px:before {\r\n content: "\\f26e";\r\n}\r\n.fa-amazon:before {\r\n content: "\\f270";\r\n}\r\n.fa-calendar-plus-o:before {\r\n content: "\\f271";\r\n}\r\n.fa-calendar-minus-o:before {\r\n content: "\\f272";\r\n}\r\n.fa-calendar-times-o:before {\r\n content: "\\f273";\r\n}\r\n.fa-calendar-check-o:before {\r\n content: "\\f274";\r\n}\r\n.fa-industry:before {\r\n content: "\\f275";\r\n}\r\n.fa-map-pin:before {\r\n content: "\\f276";\r\n}\r\n.fa-map-signs:before {\r\n content: "\\f277";\r\n}\r\n.fa-map-o:before {\r\n content: "\\f278";\r\n}\r\n.fa-map:before {\r\n content: "\\f279";\r\n}\r\n.fa-commenting:before {\r\n content: "\\f27a";\r\n}\r\n.fa-commenting-o:before {\r\n content: "\\f27b";\r\n}\r\n.fa-houzz:before {\r\n content: "\\f27c";\r\n}\r\n.fa-vimeo:before {\r\n content: "\\f27d";\r\n}\r\n.fa-black-tie:before {\r\n content: "\\f27e";\r\n}\r\n.fa-fonticons:before {\r\n content: "\\f280";\r\n}\r\n.fa-reddit-alien:before {\r\n content: "\\f281";\r\n}\r\n.fa-edge:before {\r\n content: "\\f282";\r\n}\r\n.fa-credit-card-alt:before {\r\n content: "\\f283";\r\n}\r\n.fa-codiepie:before {\r\n content: "\\f284";\r\n}\r\n.fa-modx:before {\r\n content: "\\f285";\r\n}\r\n.fa-fort-awesome:before {\r\n content: "\\f286";\r\n}\r\n.fa-usb:before {\r\n content: "\\f287";\r\n}\r\n.fa-product-hunt:before {\r\n content: "\\f288";\r\n}\r\n.fa-mixcloud:before {\r\n content: "\\f289";\r\n}\r\n.fa-scribd:before {\r\n content: "\\f28a";\r\n}\r\n.fa-pause-circle:before {\r\n content: "\\f28b";\r\n}\r\n.fa-pause-circle-o:before {\r\n content: "\\f28c";\r\n}\r\n.fa-stop-circle:before {\r\n content: "\\f28d";\r\n}\r\n.fa-stop-circle-o:before {\r\n content: "\\f28e";\r\n}\r\n.fa-shopping-bag:before {\r\n content: "\\f290";\r\n}\r\n.fa-shopping-basket:before {\r\n content: "\\f291";\r\n}\r\n.fa-hashtag:before {\r\n content: "\\f292";\r\n}\r\n.fa-bluetooth:before {\r\n content: "\\f293";\r\n}\r\n.fa-bluetooth-b:before {\r\n content: "\\f294";\r\n}\r\n.fa-percent:before {\r\n content: "\\f295";\r\n}\r\n.fa-gitlab:before {\r\n content: "\\f296";\r\n}\r\n.fa-wpbeginner:before {\r\n content: "\\f297";\r\n}\r\n.fa-wpforms:before {\r\n content: "\\f298";\r\n}\r\n.fa-envira:before {\r\n content: "\\f299";\r\n}\r\n.fa-universal-access:before {\r\n content: "\\f29a";\r\n}\r\n.fa-wheelchair-alt:before {\r\n content: "\\f29b";\r\n}\r\n.fa-question-circle-o:before {\r\n content: "\\f29c";\r\n}\r\n.fa-blind:before {\r\n content: "\\f29d";\r\n}\r\n.fa-audio-description:before {\r\n content: "\\f29e";\r\n}\r\n.fa-volume-control-phone:before {\r\n content: "\\f2a0";\r\n}\r\n.fa-braille:before {\r\n content: "\\f2a1";\r\n}\r\n.fa-assistive-listening-systems:before {\r\n content: "\\f2a2";\r\n}\r\n.fa-asl-interpreting:before,\r\n.fa-american-sign-language-interpreting:before {\r\n content: "\\f2a3";\r\n}\r\n.fa-deafness:before,\r\n.fa-hard-of-hearing:before,\r\n.fa-deaf:before {\r\n content: "\\f2a4";\r\n}\r\n.fa-glide:before {\r\n content: "\\f2a5";\r\n}\r\n.fa-glide-g:before {\r\n content: "\\f2a6";\r\n}\r\n.fa-signing:before,\r\n.fa-sign-language:before {\r\n content: "\\f2a7";\r\n}\r\n.fa-low-vision:before {\r\n content: "\\f2a8";\r\n}\r\n.fa-viadeo:before {\r\n content: "\\f2a9";\r\n}\r\n.fa-viadeo-square:before {\r\n content: "\\f2aa";\r\n}\r\n.fa-snapchat:before {\r\n content: "\\f2ab";\r\n}\r\n.fa-snapchat-ghost:before {\r\n content: "\\f2ac";\r\n}\r\n.fa-snapchat-square:before {\r\n content: "\\f2ad";\r\n}\r\n.fa-pied-piper:before {\r\n content: "\\f2ae";\r\n}\r\n.fa-first-order:before {\r\n content: "\\f2b0";\r\n}\r\n.fa-yoast:before {\r\n content: "\\f2b1";\r\n}\r\n.fa-themeisle:before {\r\n content: "\\f2b2";\r\n}\r\n.fa-google-plus-circle:before,\r\n.fa-google-plus-official:before {\r\n content: "\\f2b3";\r\n}\r\n.fa-fa:before,\r\n.fa-font-awesome:before {\r\n content: "\\f2b4";\r\n}\r\n.fa-handshake-o:before {\r\n content: "\\f2b5";\r\n}\r\n.fa-envelope-open:before {\r\n content: "\\f2b6";\r\n}\r\n.fa-envelope-open-o:before {\r\n content: "\\f2b7";\r\n}\r\n.fa-linode:before {\r\n content: "\\f2b8";\r\n}\r\n.fa-address-book:before {\r\n content: "\\f2b9";\r\n}\r\n.fa-address-book-o:before {\r\n content: "\\f2ba";\r\n}\r\n.fa-vcard:before,\r\n.fa-address-card:before {\r\n content: "\\f2bb";\r\n}\r\n.fa-vcard-o:before,\r\n.fa-address-card-o:before {\r\n content: "\\f2bc";\r\n}\r\n.fa-user-circle:before {\r\n content: "\\f2bd";\r\n}\r\n.fa-user-circle-o:before {\r\n content: "\\f2be";\r\n}\r\n.fa-user-o:before {\r\n content: "\\f2c0";\r\n}\r\n.fa-id-badge:before {\r\n content: "\\f2c1";\r\n}\r\n.fa-drivers-license:before,\r\n.fa-id-card:before {\r\n content: "\\f2c2";\r\n}\r\n.fa-drivers-license-o:before,\r\n.fa-id-card-o:before {\r\n content: "\\f2c3";\r\n}\r\n.fa-quora:before {\r\n content: "\\f2c4";\r\n}\r\n.fa-free-code-camp:before {\r\n content: "\\f2c5";\r\n}\r\n.fa-telegram:before {\r\n content: "\\f2c6";\r\n}\r\n.fa-thermometer-4:before,\r\n.fa-thermometer:before,\r\n.fa-thermometer-full:before {\r\n content: "\\f2c7";\r\n}\r\n.fa-thermometer-3:before,\r\n.fa-thermometer-three-quarters:before {\r\n content: "\\f2c8";\r\n}\r\n.fa-thermometer-2:before,\r\n.fa-thermometer-half:before {\r\n content: "\\f2c9";\r\n}\r\n.fa-thermometer-1:before,\r\n.fa-thermometer-quarter:before {\r\n content: "\\f2ca";\r\n}\r\n.fa-thermometer-0:before,\r\n.fa-thermometer-empty:before {\r\n content: "\\f2cb";\r\n}\r\n.fa-shower:before {\r\n content: "\\f2cc";\r\n}\r\n.fa-bathtub:before,\r\n.fa-s15:before,\r\n.fa-bath:before {\r\n content: "\\f2cd";\r\n}\r\n.fa-podcast:before {\r\n content: "\\f2ce";\r\n}\r\n.fa-window-maximize:before {\r\n content: "\\f2d0";\r\n}\r\n.fa-window-minimize:before {\r\n content: "\\f2d1";\r\n}\r\n.fa-window-restore:before {\r\n content: "\\f2d2";\r\n}\r\n.fa-times-rectangle:before,\r\n.fa-window-close:before {\r\n content: "\\f2d3";\r\n}\r\n.fa-times-rectangle-o:before,\r\n.fa-window-close-o:before {\r\n content: "\\f2d4";\r\n}\r\n.fa-bandcamp:before {\r\n content: "\\f2d5";\r\n}\r\n.fa-grav:before {\r\n content: "\\f2d6";\r\n}\r\n.fa-etsy:before {\r\n content: "\\f2d7";\r\n}\r\n.fa-imdb:before {\r\n content: "\\f2d8";\r\n}\r\n.fa-ravelry:before {\r\n content: "\\f2d9";\r\n}\r\n.fa-eercast:before {\r\n content: "\\f2da";\r\n}\r\n.fa-microchip:before {\r\n content: "\\f2db";\r\n}\r\n.fa-snowflake-o:before {\r\n content: "\\f2dc";\r\n}\r\n.fa-superpowers:before {\r\n content: "\\f2dd";\r\n}\r\n.fa-wpexplorer:before {\r\n content: "\\f2de";\r\n}\r\n.fa-meetup:before {\r\n content: "\\f2e0";\r\n}\r\n.sr-only {\r\n position: absolute;\r\n width: 1px;\r\n height: 1px;\r\n padding: 0;\r\n margin: -1px;\r\n overflow: hidden;\r\n clip: rect(0, 0, 0, 0);\r\n border: 0;\r\n}\r\n.sr-only-focusable:active,\r\n.sr-only-focusable:focus {\r\n position: static;\r\n width: auto;\r\n height: auto;\r\n margin: 0;\r\n overflow: visible;\r\n clip: auto;\r\n}\r\n',""]),A.exports=M},function(A,M,t){"use strict";t.r(M),M.default="data:application/vnd.ms-fontobject;base64,bocCAKyGAgABAAIAAAAAAAAAAAAAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAWXjPkAAAAAAAAAAAAAAAAAAAAAAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAADgBSAGUAZwB1AGwAYQByAAAAJABWAGUAcgBzAGkAbwBuACAANAAuADcALgAwACAAMgAwADEANgAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAAAAAAAQAAAA0AgAADAFBGRlRNa75HuQAChpAAAAAcR0RFRgLwAAQAAoZwAAAAIE9TLzKIMnpAAAABWAAAAGBjbWFwCr86fwAADKgAAALyZ2FzcP//AAMAAoZoAAAACGdseWaP965NAAAarAACTLxoZWFkEInlLQAAANwAAAA2aGhlYQ8DCrUAAAEUAAAAJGhtdHhFeRiFAAABuAAACvBsb2NhAvWiXAAAD5wAAAsQbWF4cAMsAhwAAAE4AAAAIG5hbWXjl4usAAJnaAAABIZwb3N0r4+boQACa/AAABp1AAEAAAAEAcuQz3hZXw889QALBwAAAAAA1DPNMgAAAADUM80y////AAkBBgAAAAAIAAIAAQAAAAAAAQAABgD/AAAACQD/////CQEAAQAAAAAAAAAAAAAAAAAAArUAAQAAAsMCGQAnAAAAAAACAAAAAQABAAAAQAAAAAAAAAADBmkBkAAFAAAEjAQzAAAAhgSMBDMAAAJzAAABigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABweXJzAEAAIPUABgD/AAAABgABAAAAAAEAAAAAAAAAAAAAACAAAQOAAHAAAAAAAlUAAAHAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAABdBgAAAAaAAAAHAAAABwAAAAaAAAAGgAAABQAAAAeAAAAGgAAABwAAAAcAAAAHAAB5BYAAbgaAAAAGgAAABgAAAAcAAAAGAAAABYAAAAaAABoGAAAABgAAAAeAADIGgAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAASAAAAHAABABoAAAAMAAAAEgAAABoAAAAWAAAAHAAAABgAAAAeAAAAGgAAKBQAAAAaAAAAHgAAABoAAAAWAAAAEAAAABwAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAeAAAAGAAAABAAAAAYAAAAEAAAABwAAAAaAAAAGgAAABwAAAAQAAAAHAAAABoAAegWAAAAGAAAABgAAAAaAAAAHAAAABAAAAAYCAAEFAACaBQAAWgYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAABABgAAAAaAADUGgAA1BwAAAAYAAAAGAAANBYAAAAWAAAAGgAB6BgAAAAYAAAAHAAAABYAAAAcAAAAHAAAABwAAEAWAAAAGgAAABwAAAAcAAAAGAAAABwAAWgcAAFoHgAAABoAAAAaAAAAHgAAAAwAAQAcAAAAIAAAABgAAAAYAAAAHAAAABwAAAAeAAAAHAAAABgAAAAYAAAADgAAABwAAAAaAAAAGAAAABIAAAAcAAAAGAAAABoAAAAYAAAAGgAAABgAAAAWAAAAFgAAABQAAAAYAAAAGgAAsBAAAXwYAAAAGgAAAB4AAAAWAAAAGAAAABwAAAAcAAEAGAAACBwAAAAcAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABoAAFQcAAAAFgAAFBwAAAAYAAAAHgAAABoAAEAeAAAAGgABzBwAAAQcAAAAFgAAEBgAAAAYAAAAGAAAABwAAAAcAAA8HAAAABgAAAAaAAAAGgAAbBwAAQAYAAAAGAAAABgAAAAkAAAAHgAAABAAAAAQAAAACgABAAoAAAAaAAAAEAAAABAAAAAQAAAAHAAAABgAAAAYAAAAHAAAoBwAAAAcAAAAHAAAAA4AAAQcAAAAGgAAABwAAAAQAAAAHAAAAB4AAAAeAAAAFgAAABYAAAAcAAAAHAABAB4AAAAWAAAAGAAAABYAAAAWAAAAHgABABwAAAAeAAAAGgABABgAAAAYAAAAEAAAtBAAADQSAAE0EgABNAoAALQKAAA0EgABNBIAATQeAAAAHgAAABIAAAAMAAAAGAAAABoAAAAaAAAAHAABABgAAAAcAAAAGgAAABoAAAAeAAAAHAAAABwAAAAYAAAAGAAAABgAAAAeAAAAHgAAABwAAQAcAAEAGgAANB4AALQcAAAAGgAACBYAAAgaAAAAEAAAABoAAAAQAAGACgAAAAoAAYgYAAAUGAAAFB4AAAQaAAAAEgAAABYAADQUAAAAGgAAABYAAAwaAACQHAAAABgAAAAYAAAAGAAAABgAAAAWAAAAHAAAMBwAAAASAAAAGAAAABYAAAAGAAAAGAAAABgAAAAcAADYGAAAABYAAAAQAAAMEAAADBgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAEAAAABAAAAAQAADQDggAABAMABAUAAAAHAAAABQAAOAYAAAAGAAAABoAAIgaAACIHAAAiBwAAIgYAACIGAAAiBoAAAAaAAAAGAAAABgAAGwWAAAUGAAAABwAAAAcAAEAGAAALBgAAAAYAAAAGAAAABYAAAAYAAAAEAABEBgAAAAMAAAMDAAADBwAAQAcAAAAFgAAABoAAAAWAAAAGAAALBgAAAAYAAAAFAAAsBgAAAAUAAAAEAAAABgAAAAcAACwGAAAABwAAQAaAACAHgP//BwAAAAYAAAAFgAAABQAAFQYAAAAGAAAABgAAAAYAAAAGgAAABgAAAASAAAAFgAAACIAAAAaAAAAGAAAABwAAAAcAAAAIAAAACQAAAAYAAG0GAAAABwAAAAYAAAAGAAAAB4AAAAYAAAAIAAAABgAAAAf2ACkGAAAABgAAAAYAAAAHAAAABgAAAAUAAEAGgAAAAwAAQAcAAAAJAAAACAAAAAYAAAAHAAAABgAAAAcAABAIAAAACAAAAAYAACAGAAAABAAAAAkAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAJwcAAAAIAAAABwAAAAcAACAHAAATBwAAAAYAAAAHAABEBgAAAAUAADkHAAASCAAAAAcAAAAHAAAABgAAAAYAAAAHAAA+BQAAGAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAGQcAAGQGAABZCAAAAAgAACoHAAAABgAACQcAACcJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAIAAAOCAAADgWAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAHAAAACAAAAAcAAAAGAAAACAAAAAgAAAAJAAAABgAAAAgAAAAFAAALCAAAAAYAAAAGAAAABgAAAAgAAAAGAAAABgAAAAgAAAAIAAAABgAAAAgAAAAIAAAABoAAAAaAAAAIAAAACAAAEwYAAAAJAAAABgAAAAcAAAAFAAACBgAAAAUAAAAGAAACBwAAAAcA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AaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAAiAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTANICVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxAJQFZ2xhc3MFbXVzaWMGc2VhcmNoCGVudmVsb3BlBWhlYXJ0BHN0YXIKc3Rhcl9lbXB0eQR1c2VyBGZpbG0IdGhfbGFyZ2UCdGgHdGhfbGlzdAJvawZyZW1vdmUHem9vbV9pbgh6b29tX291dANvZmYGc2lnbmFsA2NvZwV0cmFzaARob21lCGZpbGVfYWx0BHRpbWUEcm9hZAxkb3dubG9hZF9hbHQIZG93bmxvYWQGdXBsb2FkBWluYm94C3BsYXlfY2lyY2xlBnJlcGVhdAdyZWZyZXNoCGxpc3RfYWx0BGxvY2sEZmxhZwpoZWFkcGhvbmVzCnZvbHVtZV9vZmYLdm9sdW1lX2Rvd24Jdm9sdW1lX3VwBnFyY29kZQdiYXJjb2RlA3RhZwR0YWdzBGJvb2sIYm9va21hcmsFcHJpbnQGY2FtZXJhBGZvbnQEYm9sZAZpdGFsaWMLdGV4dF9oZWlnaHQKdGV4dF93aWR0aAphbGlnbl9sZWZ0DGFsaWduX2NlbnRlcgthbGlnbl9yaWdodA1hbGlnbl9qdXN0aWZ5BGxpc3QLaW5kZW50X2xlZnQMaW5kZW50X3JpZ2h0DmZhY2V0aW1lX3ZpZGVvB3BpY3R1cmUGcGVuY2lsCm1hcF9tYXJrZXIGYWRqdXN0BHRpbnQEZWRpdAVzaGFyZQVjaGVjawRtb3ZlDXN0ZXBfYmFja3dhcmQNZmFzdF9iYWNrd2FyZAhiYWNrd2FyZARwbGF5BXBhdXNlBHN0b3AHZm9yd2FyZAxmYXN0X2ZvcndhcmQMc3RlcF9mb3J3YXJkBWVqZWN0DGNoZXZyb25fbGVmdA1jaGV2cm9uX3JpZ2h0CXBsdXNfc2lnbgptaW51c19zaWduC3JlbW92ZV9zaWduB29rX3NpZ24NcXVlc3Rpb25fc2lnbglpbmZvX3NpZ24Kc2NyZWVuc2hvdA1yZW1vdmVfY2lyY2xlCW9rX2NpcmNsZQpiYW5fY2lyY2xlCmFycm93X2xlZnQLYXJyb3dfcmlnaHQIYXJyb3dfdXAKYXJyb3dfZG93bglzaGFyZV9hbHQLcmVzaXplX2Z1bGwMcmVzaXplX3NtYWxsEGV4Y2xhbWF0aW9uX3NpZ24EZ2lmdARsZWFmBGZpcmUIZXllX29wZW4JZXllX2Nsb3NlDHdhcm5pbmdfc2lnbgVwbGFuZQhjYWxlbmRhcgZyYW5kb20HY29tbWVudAZtYWduZXQKY2hldnJvbl91cAxjaGV2cm9uX2Rvd24HcmV0d2VldA1zaG9wcGluZ19jYXJ0DGZvbGRlcl9jbG9zZQtmb2xkZXJfb3Blbg9yZXNpemVfdmVydGljYWwRcmVzaXplX2hvcml6b250YWwJYmFyX2NoYXJ0DHR3aXR0ZXJfc2lnbg1mYWNlYm9va19zaWduDGNhbWVyYV9yZXRybwNrZXkEY29ncwhjb21tZW50cw10aHVtYnNfdXBfYWx0D3RodW1ic19kb3duX2FsdAlzdGFyX2hhbGYLaGVhcnRfZW1wdHkHc2lnbm91dA1saW5rZWRpbl9zaWduB3B1c2hwaW4NZXh0ZXJuYWxfbGluawZzaWduaW4GdHJvcGh5C2dpdGh1Yl9zaWduCnVwbG9hZF9hbHQFbGVtb24FcGhvbmULY2hlY2tfZW1wdHkOYm9va21hcmtfZW1wdHkKcGhvbmVfc2lnbgd0d2l0dGVyCGZhY2Vib29rBmdpdGh1YgZ1bmxvY2sLY3JlZGl0X2NhcmQDcnNzA2hkZAhidWxsaG9ybgRiZWxsC2NlcnRpZmljYXRlCmhhbmRfcmlnaHQJaGFuZF9sZWZ0B2hhbmRfdXAJaGFuZF9kb3duEWNpcmNsZV9hcnJvd19sZWZ0EmNpcmNsZV9hcnJvd19yaWdodA9jaXJjbGVfYXJyb3dfdXARY2lyY2xlX2Fycm93X2Rvd24FZ2xvYmUGd3JlbmNoBXRhc2tzBmZpbHRlcglicmllZmNhc2UKZnVsbHNjcmVlbgVncm91cARsaW5rBWNsb3VkBmJlYWtlcgNjdXQEY29weQpwYXBlcl9jbGlwBHNhdmUKc2lnbl9ibGFuawdyZW9yZGVyAnVsAm9sDXN0cmlrZXRocm91Z2gJdW5kZXJsaW5lBXRhYmxlBW1hZ2ljBXRydWNrCXBpbnRlcmVzdA5waW50ZXJlc3Rfc2lnbhBnb29nbGVfcGx1c19zaWduC2dvb2dsZV9wbHVzBW1vbmV5CmNhcmV0X2Rvd24IY2FyZXRfdXAKY2FyZXRfbGVmdAtjYXJldF9yaWdodAdjb2x1bW5zBHNvcnQJc29ydF9kb3duB3NvcnRfdXAMZW52ZWxvcGVfYWx0CGxpbmtlZGluBHVuZG8FbGVnYWwJZGFzaGJvYXJkC2NvbW1lbnRfYWx0DGNvbW1lbnRzX2FsdARib2x0B3NpdGVtYXAIdW1icmVsbGEFcGFzdGUKbGlnaHRfYnVsYghleGNoYW5nZQ5jbG91ZF9kb3dubG9hZAxjbG91ZF91cGxvYWQHdXNlcl9tZAtzdGV0aG9zY29wZQhzdWl0Y2FzZQhiZWxsX2FsdAZjb2ZmZWUEZm9vZA1maWxlX3RleHRfYWx0CGJ1aWxkaW5nCGhvc3BpdGFsCWFtYnVsYW5jZQZtZWRraXQLZmlnaHRlcl9qZXQEYmVlcgZoX3NpZ24EZjBmZRFkb3VibGVfYW5nbGVfbGVmdBJkb3VibGVfYW5nbGVfcmlnaHQPZG91YmxlX2FuZ2xlX3VwEWRvdWJsZV9hbmdsZV9kb3duCmFuZ2xlX2xlZnQLYW5nbGVfcmlnaHQIYW5nbGVfdXAKYW5nbGVfZG93bgdkZXNrdG9wBmxhcHRvcAZ0YWJsZXQMbW9iaWxlX3Bob25lDGNpcmNsZV9ibGFuawpxdW90ZV9sZWZ0C3F1b3RlX3JpZ2h0B3NwaW5uZXIGY2lyY2xlBXJlcGx5CmdpdGh1Yl9hbHQQZm9sZGVyX2Nsb3NlX2FsdA9mb2xkZXJfb3Blbl9hbHQKZXhwYW5kX2FsdAxjb2xsYXBzZV9hbHQFc21pbGUFZnJvd24DbWVoB2dhbWVwYWQIa2V5Ym9hcmQIZmxhZ19hbHQOZmxhZ19jaGVja2VyZWQIdGVybWluYWwEY29kZQlyZXBseV9hbGwPc3Rhcl9oYWxmX2VtcHR5DmxvY2F0aW9uX2Fycm93BGNyb3AJY29kZV9mb3JrBnVubGluawRfMjc5C2V4Y2xhbWF0aW9uC3N1cGVyc2NyaXB0CXN1YnNjcmlwdARfMjgzDHB1enpsZV9waWVjZQptaWNyb3Bob25lDm1pY3JvcGhvbmVfb2ZmBnNoaWVsZA5jYWxlbmRhcl9lbXB0eRFmaXJlX2V4dGluZ3Vpc2hlcgZyb2NrZXQGbWF4Y2RuEWNoZXZyb25fc2lnbl9sZWZ0EmNoZXZyb25fc2lnbl9yaWdodA9jaGV2cm9uX3NpZ25fdXARY2hldnJvbl9zaWduX2Rvd24FaHRtbDUEY3NzMwZhbmNob3IKdW5sb2NrX2FsdAhidWxsc2V5ZRNlbGxpcHNpc19ob3Jpem9udGFsEWVsbGlwc2lzX3ZlcnRpY2FsBF8zMDMJcGxheV9zaWduBnRpY2tldA5taW51c19zaWduX2FsdAtjaGVja19taW51cwhsZXZlbF91cApsZXZlbF9kb3duCmNoZWNrX3NpZ24JZWRpdF9zaWduBF8zMTIKc2hhcmVfc2lnbgdjb21wYXNzCGNvbGxhcHNlDGNvbGxhcHNlX3RvcARfMzE3A2V1cgNnYnADdXNkA2lucgNqcHkDcnViA2tydwNidGMEZmlsZQlmaWxlX3RleHQQc29ydF9ieV9hbHBoYWJldARfMzI5EnNvcnRfYnlfYXR0cmlidXRlcxZzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0DXNvcnRfYnlfb3JkZXIRc29ydF9ieV9vcmRlcl9hbHQEXzMzNARfMzM1DHlvdXR1YmVfc2lnbgd5b3V0dWJlBHhpbmcJeGluZ19zaWduDHlvdXR1YmVfcGxheQdkcm9wYm94DXN0YWNrZXhjaGFuZ2UJaW5zdGFncmFtBmZsaWNrcgNhZG4EZjE3MQ5iaXRidWNrZXRfc2lnbgZ0dW1ibHILdHVtYmxyX3NpZ24PbG9uZ19hcnJvd19kb3duDWxvbmdfYXJyb3dfdXAPbG9uZ19hcnJvd19sZWZ0EGxvbmdfYXJyb3dfcmlnaHQHd2luZG93cwdhbmRyb2lkBWxpbnV4B2RyaWJibGUFc2t5cGUKZm91cnNxdWFyZQZ0cmVsbG8GZmVtYWxlBG1hbGUGZ2l0dGlwA3N1bgRfMzY2B2FyY2hpdmUDYnVnAnZrBXdlaWJvBnJlbnJlbgRfMzcyDnN0YWNrX2V4Y2hhbmdlBF8zNzQVYXJyb3dfY2lyY2xlX2FsdF9sZWZ0BF8zNzYOZG90X2NpcmNsZV9hbHQEXzM3OAx2aW1lb19zcXVhcmUEXzM4MA1wbHVzX3NxdWFyZV9vBF8zODIEXzM4MwRfMzg0BF8zODUEXzM4NgRfMzg3BF8zODgEXzM4OQd1bmlGMUEwBGYxYTEEXzM5MgRfMzkzBGYxYTQEXzM5NQRfMzk2BF8zOTcEXzM5OARfMzk5BF80MDAEZjFhYgRfNDAyBF80MDMEXzQwNAd1bmlGMUIxBF80MDYEXzQwNwRfNDA4BF80MDkEXzQxMARfNDExBF80MTIEXzQxMwRfNDE0BF80MTUEXzQxNgRfNDE3BF80MTgEXzQxOQd1bmlGMUMwB3VuaUYxQzEEXzQyMgRfNDIzBF80MjQEXzQyNQRfNDI2BF80MjcEXzQyOARfNDI5BF80MzAEXzQzMQRfNDMyBF80MzMEXzQzNAd1bmlGMUQwB3VuaUYxRDEHdW5pRjFEMgRfNDM4BF80MzkHdW5pRjFENQd1bmlGMUQ2B3VuaUYxRDcEXzQ0MwRfNDQ0BF80NDUEXzQ0NgRfNDQ3BF80NDgEXzQ0OQd1bmlGMUUwBF80NTEEXzQ1MgRfNDUzBF80NTQEXzQ1NQRfNDU2BF80NTcEXzQ1OARfNDU5BF80NjAEXzQ2MQRfNDYyBF80NjMEXzQ2NAd1bmlGMUYwBF80NjYEXzQ2NwRmMWYzBF80NjkEXzQ3MARfNDcxBF80NzIEXzQ3MwRfNDc0BF80NzUEXzQ3NgRmMWZjBF80NzgEXzQ3OQRfNDgwBF80ODEEXzQ4MgRfNDgzBF80ODQEXzQ4NQRfNDg2BF80ODcEXzQ4OARfNDg5BF80OTAEXzQ5MQRfNDkyBF80OTMEXzQ5NARmMjEwBF80OTYEZjIxMgRfNDk4BF80OTkEXzUwMARfNTAxBF81MDIEXzUwMwRfNTA0BF81MDUEXzUwNgRfNTA3BF81MDgEXzUwOQV2ZW51cwRfNTExBF81MTIEXzUxMwRfNTE0BF81MTUEXzUxNgRfNTE3BF81MTgEXzUxOQRfNTIwBF81MjEEXzUyMgRfNTIzBF81MjQEXzUyNQRfNTI2BF81MjcEXzUyOARfNTI5BF81MzAEXzUzMQRfNTMyBF81MzMEXzUzNARfNTM1BF81MzYEXzUzNwRfNTM4BF81MzkEXzU0MARfNTQxBF81NDIEXzU0MwRfNTQ0BF81NDUEXzU0NgRfNTQ3BF81NDgEXzU0OQRfNTUwBF81NTEEXzU1MgRfNTUzBF81NTQEXzU1NQRfNTU2BF81NTcEXzU1OARfNTU5BF81NjAEXzU2MQRfNTYyBF81NjMEXzU2NARfNTY1BF81NjYEXzU2NwRfNTY4BF81NjkEZjI2MARmMjYxBF81NzIEZjI2MwRfNTc0BF81NzUEXzU3NgRfNTc3BF81NzgEXzU3OQRfNTgwBF81ODEEXzU4MgRfNTgzBF81ODQEXzU4NQRfNTg2BF81ODcEXzU4OARfNTg5BF81OTAEXzU5MQRfNTkyBF81OTMEXzU5NARfNTk1BF81OTYEXzU5NwRfNTk4BGYyN2UHdW5pRjI4MAd1bmlGMjgxBF82MDIEXzYwMwRfNjA0B3VuaUYyODUHdW5pRjI4NgRfNjA3BF82MDgEXzYwOQRfNjEwBF82MTEEXzYxMgRfNjEzBF82MTQEXzYxNQRfNjE2BF82MTcEXzYxOARfNjE5BF82MjAEXzYyMQRfNjIyBF82MjMEXzYyNARfNjI1BF82MjYEXzYyNwRfNjI4BF82MjkHdW5pRjJBMAd1bmlGMkExB3VuaUYyQTIHdW5pRjJBMwd1bmlGMkE0B3VuaUYyQTUHdW5pRjJBNgd1bmlGMkE3B3VuaUYyQTgHdW5pRjJBOQd1bmlGMkFBB3VuaUYyQUIHdW5pRjJBQwd1bmlGMkFEB3VuaUYyQUUHdW5pRjJCMAd1bmlGMkIxB3VuaUYyQjIHdW5pRjJCMwd1bmlGMkI0B3VuaUYyQjUHdW5pRjJCNgd1bmlGMkI3B3VuaUYyQjgHdW5pRjJCOQd1bmlGMkJBB3VuaUYyQkIHdW5pRjJCQwd1bmlGMkJEB3VuaUYyQkUHdW5pRjJDMAd1bmlGMkMxB3VuaUYyQzIHdW5pRjJDMwd1bmlGMkM0B3VuaUYyQzUHdW5pRjJDNgd1bmlGMkM3B3VuaUYyQzgHdW5pRjJDOQd1bmlGMkNBB3VuaUYyQ0IHdW5pRjJDQwd1bmlGMkNEB3VuaUYyQ0UHdW5pRjJEMAd1bmlGMkQxB3VuaUYyRDIHdW5pRjJEMwd1bmlGMkQ0B3VuaUYyRDUHdW5pRjJENgd1bmlGMkQ3B3VuaUYyRDgHdW5pRjJEOQd1bmlGMkRBB3VuaUYyREIHdW5pRjJEQwd1bmlGMkREB3VuaUYyREUHdW5pRjJFMAd1bmlGMkUxB3VuaUYyRTIHdW5pRjJFMwd1bmlGMkU0B3VuaUYyRTUHdW5pRjJFNgd1bmlGMkU3BF82OTgHdW5pRjJFOQd1bmlGMkVBB3VuaUYyRUIHdW5pRjJFQwd1bmlGMkVEB3VuaUYyRUUAAAAAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQABAsIAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAMtPPDAAAAAA1DFouQ=="},function(A,M,t){"use strict";t.r(M),M.default="data:application/vnd.ms-fontobject;base64,bocCAKyGAgABAAIAAAAAAAAAAAAAAAAAAAABAJABAAAAAExQAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAWXjPkAAAAAAAAAAAAAAAAAAAAAAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAADgBSAGUAZwB1AGwAYQByAAAAJABWAGUAcgBzAGkAbwBuACAANAAuADcALgAwACAAMgAwADEANgAAABYARgBvAG4AdABBAHcAZQBzAG8AbQBlAAAAAAAAAQAAAA0AgAADAFBGRlRNa75HuQAChpAAAAAcR0RFRgLwAAQAAoZwAAAAIE9TLzKIMnpAAAABWAAAAGBjbWFwCr86fwAADKgAAALyZ2FzcP//AAMAAoZoAAAACGdseWaP965NAAAarAACTLxoZWFkEInlLQAAANwAAAA2aGhlYQ8DCrUAAAEUAAAAJGhtdHhFeRiFAAABuAAACvBsb2NhAvWiXAAAD5wAAAsQbWF4cAMsAhwAAAE4AAAAIG5hbWXjl4usAAJnaAAABIZwb3N0r4+boQACa/AAABp1AAEAAAAEAcuQz3hZXw889QALBwAAAAAA1DPNMgAAAADUM80y////AAkBBgAAAAAIAAIAAQAAAAAAAQAABgD/AAAACQD/////CQEAAQAAAAAAAAAAAAAAAAAAArUAAQAAAsMCGQAnAAAAAAACAAAAAQABAAAAQAAAAAAAAAADBmkBkAAFAAAEjAQzAAAAhgSMBDMAAAJzAAABigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABweXJzAEAAIPUABgD/AAAABgABAAAAAAEAAAAAAAAAAAAAACAAAQOAAHAAAAAAAlUAAAHAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAABdBgAAAAaAAAAHAAAABwAAAAaAAAAGgAAABQAAAAeAAAAGgAAABwAAAAcAAAAHAAB5BYAAbgaAAAAGgAAABgAAAAcAAAAGAAAABYAAAAaAABoGAAAABgAAAAeAADIGgAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAASAAAAHAABABoAAAAMAAAAEgAAABoAAAAWAAAAHAAAABgAAAAeAAAAGgAAKBQAAAAaAAAAHgAAABoAAAAWAAAAEAAAABwAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAeAAAAGAAAABAAAAAYAAAAEAAAABwAAAAaAAAAGgAAABwAAAAQAAAAHAAAABoAAegWAAAAGAAAABgAAAAaAAAAHAAAABAAAAAYCAAEFAACaBQAAWgYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAABABgAAAAaAADUGgAA1BwAAAAYAAAAGAAANBYAAAAWAAAAGgAB6BgAAAAYAAAAHAAAABYAAAAcAAAAHAAAABwAAEAWAAAAGgAAABwAAAAcAAAAGAAAABwAAWgcAAFoHgAAABoAAAAaAAAAHgAAAAwAAQAcAAAAIAAAABgAAAAYAAAAHAAAABwAAAAeAAAAHAAAABgAAAAYAAAADgAAABwAAAAaAAAAGAAAABIAAAAcAAAAGAAAABoAAAAYAAAAGgAAABgAAAAWAAAAFgAAABQAAAAYAAAAGgAAsBAAAXwYAAAAGgAAAB4AAAAWAAAAGAAAABwAAAAcAAEAGAAACBwAAAAcAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABoAAFQcAAAAFgAAFBwAAAAYAAAAHgAAABoAAEAeAAAAGgABzBwAAAQcAAAAFgAAEBgAAAAYAAAAGAAAABwAAAAcAAA8HAAAABgAAAAaAAAAGgAAbBwAAQAYAAAAGAAAABgAAAAkAAAAHgAAABAAAAAQAAAACgABAAoAAAAaAAAAEAAAABAAAAAQAAAAHAAAABgAAAAYAAAAHAAAoBwAAAAcAAAAHAAAAA4AAAQcAAAAGgAAABwAAAAQAAAAHAAAAB4AAAAeAAAAFgAAABYAAAAcAAAAHAABAB4AAAAWAAAAGAAAABYAAAAWAAAAHgABABwAAAAeAAAAGgABABgAAAAYAAAAEAAAtBAAADQSAAE0EgABNAoAALQKAAA0EgABNBIAATQeAAAAHgAAABIAAAAMAAAAGAAAABoAAAAaAAAAHAABABgAAAAcAAAAGgAAABoAAAAeAAAAHAAAABwAAAAYAAAAGAAAABgAAAAeAAAAHgAAABwAAQAcAAEAGgAANB4AALQcAAAAGgAACBYAAAgaAAAAEAAAABoAAAAQAAGACgAAAAoAAYgYAAAUGAAAFB4AAAQaAAAAEgAAABYAADQUAAAAGgAAABYAAAwaAACQHAAAABgAAAAYAAAAGAAAABgAAAAWAAAAHAAAMBwAAAASAAAAGAAAABYAAAAGAAAAGAAAABgAAAAcAADYGAAAABYAAAAQAAAMEAAADBgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAEAAAABAAAAAQAADQDggAABAMABAUAAAAHAAAABQAAOAYAAAAGAAAABoAAIgaAACIHAAAiBwAAIgYAACIGAAAiBoAAAAaAAAAGAAAABgAAGwWAAAUGAAAABwAAAAcAAEAGAAALBgAAAAYAAAAGAAAABYAAAAYAAAAEAABEBgAAAAMAAAMDAAADBwAAQAcAAAAFgAAABoAAAAWAAAAGAAALBgAAAAYAAAAFAAAsBgAAAAUAAAAEAAAABgAAAAcAACwGAAAABwAAQAaAACAHgP//BwAAAAYAAAAFgAAABQAAFQYAAAAGAAAABgAAAAYAAAAGgAAABgAAAASAAAAFgAAACIAAAAaAAAAGAAAABwAAAAcAAAAIAAAACQAAAAYAAG0GAAAABwAAAAYAAAAGAAAAB4AAAAYAAAAIAAAABgAAAAf2ACkGAAAABgAAAAYAAAAHAAAABgAAAAUAAEAGgAAAAwAAQAcAAAAJAAAACAAAAAYAAAAHAAAABgAAAAcAABAIAAAACAAAAAYAACAGAAAABAAAAAkAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAJwcAAAAIAAAABwAAAAcAACAHAAATBwAAAAYAAAAHAABEBgAAAAUAADkHAAASCAAAAAcAAAAHAAAABgAAAAYAAAAHAAA+BQAAGAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAGQcAAGQGAABZCAAAAAgAACoHAAAABgAACQcAACcJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAIAAAOCAAADgWAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAHAAAACAAAAAcAAAAGAAAACAAAAAgAAAAJAAAABgAAAAgAAAAFAAALCAAAAAYAAAAGAAAABgAAAAgAAAAGAAAABgAAAAgAAAAIAAAABgAAAAgAAAAIAAAABoAAAAaAAAAIAAAACAAAEwYAAAAJAAAABgAAAAcAAAAFAAACBgAAAAUAAAAGAAACBwAAAAcA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AaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAAiAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiECIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+Aj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTANICVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXANdA14DXwNgA2EDYgNjA2QDZQNmA2cDaANpA2oDawNsA20DbgNvA3ADcQNyA3MDdAN1A3YDdwN4A3kDegN7A3wDfQN+A38DgAOBA4IDgwOEA4UDhgOHA4gDiQOKA4sDjAONA44DjwOQA5EDkgOTA5QDlQOWA5cDmAOZA5oDmwOcA50DngOfA6ADoQOiA6MDpAOlA6YDpwOoA6kDqgOrA6wDrQOuA68DsAOxAJQFZ2xhc3MFbXVzaWMGc2VhcmNoCGVudmVsb3BlBWhlYXJ0BHN0YXIKc3Rhcl9lbXB0eQR1c2VyBGZpbG0IdGhfbGFyZ2UCdGgHdGhfbGlzdAJvawZyZW1vdmUHem9vbV9pbgh6b29tX291dANvZmYGc2lnbmFsA2NvZwV0cmFzaARob21lCGZpbGVfYWx0BHRpbWUEcm9hZAxkb3dubG9hZF9hbHQIZG93bmxvYWQGdXBsb2FkBWluYm94C3BsYXlfY2lyY2xlBnJlcGVhdAdyZWZyZXNoCGxpc3RfYWx0BGxvY2sEZmxhZwpoZWFkcGhvbmVzCnZvbHVtZV9vZmYLdm9sdW1lX2Rvd24Jdm9sdW1lX3VwBnFyY29kZQdiYXJjb2RlA3RhZwR0YWdzBGJvb2sIYm9va21hcmsFcHJpbnQGY2FtZXJhBGZvbnQEYm9sZAZpdGFsaWMLdGV4dF9oZWlnaHQKdGV4dF93aWR0aAphbGlnbl9sZWZ0DGFsaWduX2NlbnRlcgthbGlnbl9yaWdodA1hbGlnbl9qdXN0aWZ5BGxpc3QLaW5kZW50X2xlZnQMaW5kZW50X3JpZ2h0DmZhY2V0aW1lX3ZpZGVvB3BpY3R1cmUGcGVuY2lsCm1hcF9tYXJrZXIGYWRqdXN0BHRpbnQEZWRpdAVzaGFyZQVjaGVjawRtb3ZlDXN0ZXBfYmFja3dhcmQNZmFzdF9iYWNrd2FyZAhiYWNrd2FyZARwbGF5BXBhdXNlBHN0b3AHZm9yd2FyZAxmYXN0X2ZvcndhcmQMc3RlcF9mb3J3YXJkBWVqZWN0DGNoZXZyb25fbGVmdA1jaGV2cm9uX3JpZ2h0CXBsdXNfc2lnbgptaW51c19zaWduC3JlbW92ZV9zaWduB29rX3NpZ24NcXVlc3Rpb25fc2lnbglpbmZvX3NpZ24Kc2NyZWVuc2hvdA1yZW1vdmVfY2lyY2xlCW9rX2NpcmNsZQpiYW5fY2lyY2xlCmFycm93X2xlZnQLYXJyb3dfcmlnaHQIYXJyb3dfdXAKYXJyb3dfZG93bglzaGFyZV9hbHQLcmVzaXplX2Z1bGwMcmVzaXplX3NtYWxsEGV4Y2xhbWF0aW9uX3NpZ24EZ2lmdARsZWFmBGZpcmUIZXllX29wZW4JZXllX2Nsb3NlDHdhcm5pbmdfc2lnbgVwbGFuZQhjYWxlbmRhcgZyYW5kb20HY29tbWVudAZtYWduZXQKY2hldnJvbl91cAxjaGV2cm9uX2Rvd24HcmV0d2VldA1zaG9wcGluZ19jYXJ0DGZvbGRlcl9jbG9zZQtmb2xkZXJfb3Blbg9yZXNpemVfdmVydGljYWwRcmVzaXplX2hvcml6b250YWwJYmFyX2NoYXJ0DHR3aXR0ZXJfc2lnbg1mYWNlYm9va19zaWduDGNhbWVyYV9yZXRybwNrZXkEY29ncwhjb21tZW50cw10aHVtYnNfdXBfYWx0D3RodW1ic19kb3duX2FsdAlzdGFyX2hhbGYLaGVhcnRfZW1wdHkHc2lnbm91dA1saW5rZWRpbl9zaWduB3B1c2hwaW4NZXh0ZXJuYWxfbGluawZzaWduaW4GdHJvcGh5C2dpdGh1Yl9zaWduCnVwbG9hZF9hbHQFbGVtb24FcGhvbmULY2hlY2tfZW1wdHkOYm9va21hcmtfZW1wdHkKcGhvbmVfc2lnbgd0d2l0dGVyCGZhY2Vib29rBmdpdGh1YgZ1bmxvY2sLY3JlZGl0X2NhcmQDcnNzA2hkZAhidWxsaG9ybgRiZWxsC2NlcnRpZmljYXRlCmhhbmRfcmlnaHQJaGFuZF9sZWZ0B2hhbmRfdXAJaGFuZF9kb3duEWNpcmNsZV9hcnJvd19sZWZ0EmNpcmNsZV9hcnJvd19yaWdodA9jaXJjbGVfYXJyb3dfdXARY2lyY2xlX2Fycm93X2Rvd24FZ2xvYmUGd3JlbmNoBXRhc2tzBmZpbHRlcglicmllZmNhc2UKZnVsbHNjcmVlbgVncm91cARsaW5rBWNsb3VkBmJlYWtlcgNjdXQEY29weQpwYXBlcl9jbGlwBHNhdmUKc2lnbl9ibGFuawdyZW9yZGVyAnVsAm9sDXN0cmlrZXRocm91Z2gJdW5kZXJsaW5lBXRhYmxlBW1hZ2ljBXRydWNrCXBpbnRlcmVzdA5waW50ZXJlc3Rfc2lnbhBnb29nbGVfcGx1c19zaWduC2dvb2dsZV9wbHVzBW1vbmV5CmNhcmV0X2Rvd24IY2FyZXRfdXAKY2FyZXRfbGVmdAtjYXJldF9yaWdodAdjb2x1bW5zBHNvcnQJc29ydF9kb3duB3NvcnRfdXAMZW52ZWxvcGVfYWx0CGxpbmtlZGluBHVuZG8FbGVnYWwJZGFzaGJvYXJkC2NvbW1lbnRfYWx0DGNvbW1lbnRzX2FsdARib2x0B3NpdGVtYXAIdW1icmVsbGEFcGFzdGUKbGlnaHRfYnVsYghleGNoYW5nZQ5jbG91ZF9kb3dubG9hZAxjbG91ZF91cGxvYWQHdXNlcl9tZAtzdGV0aG9zY29wZQhzdWl0Y2FzZQhiZWxsX2FsdAZjb2ZmZWUEZm9vZA1maWxlX3RleHRfYWx0CGJ1aWxkaW5nCGhvc3BpdGFsCWFtYnVsYW5jZQZtZWRraXQLZmlnaHRlcl9qZXQEYmVlcgZoX3NpZ24EZjBmZRFkb3VibGVfYW5nbGVfbGVmdBJkb3VibGVfYW5nbGVfcmlnaHQPZG91YmxlX2FuZ2xlX3VwEWRvdWJsZV9hbmdsZV9kb3duCmFuZ2xlX2xlZnQLYW5nbGVfcmlnaHQIYW5nbGVfdXAKYW5nbGVfZG93bgdkZXNrdG9wBmxhcHRvcAZ0YWJsZXQMbW9iaWxlX3Bob25lDGNpcmNsZV9ibGFuawpxdW90ZV9sZWZ0C3F1b3RlX3JpZ2h0B3NwaW5uZXIGY2lyY2xlBXJlcGx5CmdpdGh1Yl9hbHQQZm9sZGVyX2Nsb3NlX2FsdA9mb2xkZXJfb3Blbl9hbHQKZXhwYW5kX2FsdAxjb2xsYXBzZV9hbHQFc21pbGUFZnJvd24DbWVoB2dhbWVwYWQIa2V5Ym9hcmQIZmxhZ19hbHQOZmxhZ19jaGVja2VyZWQIdGVybWluYWwEY29kZQlyZXBseV9hbGwPc3Rhcl9oYWxmX2VtcHR5DmxvY2F0aW9uX2Fycm93BGNyb3AJY29kZV9mb3JrBnVubGluawRfMjc5C2V4Y2xhbWF0aW9uC3N1cGVyc2NyaXB0CXN1YnNjcmlwdARfMjgzDHB1enpsZV9waWVjZQptaWNyb3Bob25lDm1pY3JvcGhvbmVfb2ZmBnNoaWVsZA5jYWxlbmRhcl9lbXB0eRFmaXJlX2V4dGluZ3Vpc2hlcgZyb2NrZXQGbWF4Y2RuEWNoZXZyb25fc2lnbl9sZWZ0EmNoZXZyb25fc2lnbl9yaWdodA9jaGV2cm9uX3NpZ25fdXARY2hldnJvbl9zaWduX2Rvd24FaHRtbDUEY3NzMwZhbmNob3IKdW5sb2NrX2FsdAhidWxsc2V5ZRNlbGxpcHNpc19ob3Jpem9udGFsEWVsbGlwc2lzX3ZlcnRpY2FsBF8zMDMJcGxheV9zaWduBnRpY2tldA5taW51c19zaWduX2FsdAtjaGVja19taW51cwhsZXZlbF91cApsZXZlbF9kb3duCmNoZWNrX3NpZ24JZWRpdF9zaWduBF8zMTIKc2hhcmVfc2lnbgdjb21wYXNzCGNvbGxhcHNlDGNvbGxhcHNlX3RvcARfMzE3A2V1cgNnYnADdXNkA2lucgNqcHkDcnViA2tydwNidGMEZmlsZQlmaWxlX3RleHQQc29ydF9ieV9hbHBoYWJldARfMzI5EnNvcnRfYnlfYXR0cmlidXRlcxZzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0DXNvcnRfYnlfb3JkZXIRc29ydF9ieV9vcmRlcl9hbHQEXzMzNARfMzM1DHlvdXR1YmVfc2lnbgd5b3V0dWJlBHhpbmcJeGluZ19zaWduDHlvdXR1YmVfcGxheQdkcm9wYm94DXN0YWNrZXhjaGFuZ2UJaW5zdGFncmFtBmZsaWNrcgNhZG4EZjE3MQ5iaXRidWNrZXRfc2lnbgZ0dW1ibHILdHVtYmxyX3NpZ24PbG9uZ19hcnJvd19kb3duDWxvbmdfYXJyb3dfdXAPbG9uZ19hcnJvd19sZWZ0EGxvbmdfYXJyb3dfcmlnaHQHd2luZG93cwdhbmRyb2lkBWxpbnV4B2RyaWJibGUFc2t5cGUKZm91cnNxdWFyZQZ0cmVsbG8GZmVtYWxlBG1hbGUGZ2l0dGlwA3N1bgRfMzY2B2FyY2hpdmUDYnVnAnZrBXdlaWJvBnJlbnJlbgRfMzcyDnN0YWNrX2V4Y2hhbmdlBF8zNzQVYXJyb3dfY2lyY2xlX2FsdF9sZWZ0BF8zNzYOZG90X2NpcmNsZV9hbHQEXzM3OAx2aW1lb19zcXVhcmUEXzM4MA1wbHVzX3NxdWFyZV9vBF8zODIEXzM4MwRfMzg0BF8zODUEXzM4NgRfMzg3BF8zODgEXzM4OQd1bmlGMUEwBGYxYTEEXzM5MgRfMzkzBGYxYTQEXzM5NQRfMzk2BF8zOTcEXzM5OARfMzk5BF80MDAEZjFhYgRfNDAyBF80MDMEXzQwNAd1bmlGMUIxBF80MDYEXzQwNwRfNDA4BF80MDkEXzQxMARfNDExBF80MTIEXzQxMwRfNDE0BF80MTUEXzQxNgRfNDE3BF80MTgEXzQxOQd1bmlGMUMwB3VuaUYxQzEEXzQyMgRfNDIzBF80MjQEXzQyNQRfNDI2BF80MjcEXzQyOARfNDI5BF80MzAEXzQzMQRfNDMyBF80MzMEXzQzNAd1bmlGMUQwB3VuaUYxRDEHdW5pRjFEMgRfNDM4BF80MzkHdW5pRjFENQd1bmlGMUQ2B3VuaUYxRDcEXzQ0MwRfNDQ0BF80NDUEXzQ0NgRfNDQ3BF80NDgEXzQ0OQd1bmlGMUUwBF80NTEEXzQ1MgRfNDUzBF80NTQEXzQ1NQRfNDU2BF80NTcEXzQ1OARfNDU5BF80NjAEXzQ2MQRfNDYyBF80NjMEXzQ2NAd1bmlGMUYwBF80NjYEXzQ2NwRmMWYzBF80NjkEXzQ3MARfNDcxBF80NzIEXzQ3MwRfNDc0BF80NzUEXzQ3NgRmMWZjBF80NzgEXzQ3OQRfNDgwBF80ODEEXzQ4MgRfNDgzBF80ODQEXzQ4NQRfNDg2BF80ODcEXzQ4OARfNDg5BF80OTAEXzQ5MQRfNDkyBF80OTMEXzQ5NARmMjEwBF80OTYEZjIxMgRfNDk4BF80OTkEXzUwMARfNTAxBF81MDIEXzUwMwRfNTA0BF81MDUEXzUwNgRfNTA3BF81MDgEXzUwOQV2ZW51cwRfNTExBF81MTIEXzUxMwRfNTE0BF81MTUEXzUxNgRfNTE3BF81MTgEXzUxOQRfNTIwBF81MjEEXzUyMgRfNTIzBF81MjQEXzUyNQRfNTI2BF81MjcEXzUyOARfNTI5BF81MzAEXzUzMQRfNTMyBF81MzMEXzUzNARfNTM1BF81MzYEXzUzNwRfNTM4BF81MzkEXzU0MARfNTQxBF81NDIEXzU0MwRfNTQ0BF81NDUEXzU0NgRfNTQ3BF81NDgEXzU0OQRfNTUwBF81NTEEXzU1MgRfNTUzBF81NTQEXzU1NQRfNTU2BF81NTcEXzU1OARfNTU5BF81NjAEXzU2MQRfNTYyBF81NjMEXzU2NARfNTY1BF81NjYEXzU2NwRfNTY4BF81NjkEZjI2MARmMjYxBF81NzIEZjI2MwRfNTc0BF81NzUEXzU3NgRfNTc3BF81NzgEXzU3OQRfNTgwBF81ODEEXzU4MgRfNTgzBF81ODQEXzU4NQRfNTg2BF81ODcEXzU4OARfNTg5BF81OTAEXzU5MQRfNTkyBF81OTMEXzU5NARfNTk1BF81OTYEXzU5NwRfNTk4BGYyN2UHdW5pRjI4MAd1bmlGMjgxBF82MDIEXzYwMwRfNjA0B3VuaUYyODUHdW5pRjI4NgRfNjA3BF82MDgEXzYwOQRfNjEwBF82MTEEXzYxMgRfNjEzBF82MTQEXzYxNQRfNjE2BF82MTcEXzYxOARfNjE5BF82MjAEXzYyMQRfNjIyBF82MjMEXzYyNARfNjI1BF82MjYEXzYyNwRfNjI4BF82MjkHdW5pRjJBMAd1bmlGMkExB3VuaUYyQTIHdW5pRjJBMwd1bmlGMkE0B3VuaUYyQTUHdW5pRjJBNgd1bmlGMkE3B3VuaUYyQTgHdW5pRjJBOQd1bmlGMkFBB3VuaUYyQUIHdW5pRjJBQwd1bmlGMkFEB3VuaUYyQUUHdW5pRjJCMAd1bmlGMkIxB3VuaUYyQjIHdW5pRjJCMwd1bmlGMkI0B3VuaUYyQjUHdW5pRjJCNgd1bmlGMkI3B3VuaUYyQjgHdW5pRjJCOQd1bmlGMkJBB3VuaUYyQkIHdW5pRjJCQwd1bmlGMkJEB3VuaUYyQkUHdW5pRjJDMAd1bmlGMkMxB3VuaUYyQzIHdW5pRjJDMwd1bmlGMkM0B3VuaUYyQzUHdW5pRjJDNgd1bmlGMkM3B3VuaUYyQzgHdW5pRjJDOQd1bmlGMkNBB3VuaUYyQ0IHdW5pRjJDQwd1bmlGMkNEB3VuaUYyQ0UHdW5pRjJEMAd1bmlGMkQxB3VuaUYyRDIHdW5pRjJEMwd1bmlGMkQ0B3VuaUYyRDUHdW5pRjJENgd1bmlGMkQ3B3VuaUYyRDgHdW5pRjJEOQd1bmlGMkRBB3VuaUYyREIHdW5pRjJEQwd1bmlGMkREB3VuaUYyREUHdW5pRjJFMAd1bmlGMkUxB3VuaUYyRTIHdW5pRjJFMwd1bmlGMkU0B3VuaUYyRTUHdW5pRjJFNgd1bmlGMkU3BF82OTgHdW5pRjJFOQd1bmlGMkVBB3VuaUYyRUIHdW5pRjJFQwd1bmlGMkVEB3VuaUYyRUUAAAAAAAAB//8AAgABAAAADgAAABgAAAAAAAIAAQABAsIAAQAEAAAAAgAAAAAAAQAAAADMPaLPAAAAAMtPPDAAAAAA1DFouQ=="},function(A,M,t){"use strict";t.r(M),M.default="data:font/woff2;base64,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"},function(A,M,t){"use strict";t.r(M),M.default="data:font/woff;base64,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"},function(A,M,t){"use strict";t.r(M),M.default="data:font/ttf;base64,AAEAAAANAIAAAwBQRkZUTWu+R7kAAoaQAAAAHEdERUYC8AAEAAKGcAAAACBPUy8yiDJ6QAAAAVgAAABgY21hcAq/On8AAAyoAAAC8mdhc3D//wADAAKGaAAAAAhnbHlmj/euTQAAGqwAAky8aGVhZBCJ5S0AAADcAAAANmhoZWEPAwq1AAABFAAAACRobXR4RXkYhQAAAbgAAArwbG9jYQL1olwAAA+cAAALEG1heHADLAIcAAABOAAAACBuYW1l45eLrAACZ2gAAASGcG9zdK+Pm6EAAmvwAAAadQABAAAABAHLkM94WV8PPPUACwcAAAAAANQzzTIAAAAA1DPNMv///wAJAQYAAAAACAACAAEAAAAAAAEAAAYA/wAAAAkA/////wkBAAEAAAAAAAAAAAAAAAAAAAK1AAEAAALDAhkAJwAAAAAAAgAAAAEAAQAAAEAAAAAAAAAAAwZpAZAABQAABIwEMwAAAIYEjAQzAAACcwAAAYoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcHlycwBAACD1AAYA/wAAAAYAAQAAAAABAAAAAAAAAAAAAAAgAAEDgABwAAAAAAJVAAABwAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAXQYAAAAGgAAABwAAAAcAAAAGgAAABoAAAAUAAAAHgAAABoAAAAcAAAAHAAAABwAAeQWAAG4GgAAABoAAAAYAAAAHAAAABgAAAAWAAAAGgAAaBgAAAAYAAAAHgAAyBoAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAcAAAAEgAAABwAAQAaAAAADAAAABIAAAAaAAAAFgAAABwAAAAYAAAAHgAAABoAACgUAAAAGgAAAB4AAAAaAAAAFgAAABAAAAAcAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAAAAHgAAABgAAAAQAAAAGAAAABAAAAAcAAAAGgAAABoAAAAcAAAAEAAAABwAAAAaAAHoFgAAABgAAAAYAAAAGgAAABwAAAAQAAAAGAgABBQAAmgUAAFoGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAQAYAAAAGgAA1BoAANQcAAAAGAAAABgAADQWAAAAFgAAABoAAegYAAAAGAAAABwAAAAWAAAAHAAAABwAAAAcAABAFgAAABoAAAAcAAAAHAAAABgAAAAcAAFoHAABaB4AAAAaAAAAGgAAAB4AAAAMAAEAHAAAACAAAAAYAAAAGAAAABwAAAAcAAAAHgAAABwAAAAYAAAAGAAAAA4AAAAcAAAAGgAAABgAAAASAAAAHAAAABgAAAAaAAAAGAAAABoAAAAYAAAAFgAAABYAAAAUAAAAGAAAABoAALAQAAF8GAAAABoAAAAeAAAAFgAAABgAAAAcAAAAHAABABgAAAgcAAAAHAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAaAABUHAAAABYAABQcAAAAGAAAAB4AAAAaAABAHgAAABoAAcwcAAAEHAAAABYAABAYAAAAGAAAABgAAAAcAAAAHAAAPBwAAAAYAAAAGgAAABoAAGwcAAEAGAAAABgAAAAYAAAAJAAAAB4AAAAQAAAAEAAAAAoAAQAKAAAAGgAAABAAAAAQAAAAEAAAABwAAAAYAAAAGAAAABwAAKAcAAAAHAAAABwAAAAOAAAEHAAAABoAAAAcAAAAEAAAABwAAAAeAAAAHgAAABYAAAAWAAAAHAAAABwAAQAeAAAAFgAAABgAAAAWAAAAFgAAAB4AAQAcAAAAHgAAABoAAQAYAAAAGAAAABAAALQQAAA0EgABNBIAATQKAAC0CgAANBIAATQSAAE0HgAAAB4AAAASAAAADAAAABgAAAAaAAAAGgAAABwAAQAYAAAAHAAAABoAAAAaAAAAHgAAABwAAAAcAAAAGAAAABgAAAAYAAAAHgAAAB4AAAAcAAEAHAABABoAADQeAAC0HAAAABoAAAgWAAAIGgAAABAAAAAaAAAAEAABgAoAAAAKAAGIGAAAFBgAABQeAAAEGgAAABIAAAAWAAA0FAAAABoAAAAWAAAMGgAAkBwAAAAYAAAAGAAAABgAAAAYAAAAFgAAABwAADAcAAAAEgAAABgAAAAWAAAABgAAABgAAAAYAAAAHAAA2BgAAAAWAAAAEAAADBAAAAwYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABAAAAAQAAAAEAAA0A4IAAAQDAAQFAAAABwAAAAUAADgGAAAABgAAAAaAACIGgAAiBwAAIgcAACIGAAAiBgAAIgaAAAAGgAAABgAAAAYAABsFgAAFBgAAAAcAAAAHAABABgAACwYAAAAGAAAABgAAAAWAAAAGAAAABAAARAYAAAADAAADAwAAAwcAAEAHAAAABYAAAAaAAAAFgAAABgAACwYAAAAGAAAABQAALAYAAAAFAAAABAAAAAYAAAAHAAAsBgAAAAcAAEAGgAAgB4D//wcAAAAGAAAABYAAAAUAABUGAAAABgAAAAYAAAAGAAAABoAAAAYAAAAEgAAABYAAAAiAAAAGgAAABgAAAAcAAAAHAAAACAAAAAkAAAAGAABtBgAAAAcAAAAGAAAABgAAAAeAAAAGAAAACAAAAAYAAAAH9gApBgAAAAYAAAAGAAAABwAAAAYAAAAFAABABoAAAAMAAEAHAAAACQAAAAgAAAAGAAAABwAAAAYAAAAHAAAQCAAAAAgAAAAGAAAgBgAAAAQAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAACcHAAAACAAAAAcAAAAHAAAgBwAAEwcAAAAGAAAABwAARAYAAAAFAAA5BwAAEggAAAAHAAAABwAAAAYAAAAGAAAABwAAPgUAABgGAAAABgAAAAYAAAAHAAAABwAAAAcAAAAHAAAABwAAAAcAABkHAABkBgAAWQgAAAAIAAAqBwAAAAYAAAkHAAAnCQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACAAADggAAA4FgAAABgAAAAYAAAAHAAAABwAAAAcAAAAIAAAABwAAAAgAAAAHAAAABgAAAAgAAAAIAAAACQAAAAYAAAAIAAAABQAACwgAAAAGAAAABgAAAAYAAAAIAAAABgAAAAYAAAAIAAAACAAAAAYAAAAIAAAACAAAAAaAAAAGgAAACAAAAAgAABMGAAAACQAAAAYAAAAHAAAABQAAAgYAAAAFAAAABgAAAgcAAAAHAAACB4AAAQgAAAYGAAAABQAAAggAAAQFAAAABQAAAAcAAAAHAAAABgAAAAUAAAAGAAAABwAAAAgAAAAIAAAACAAAAAYAAAAGAAAABgAAAAcAAAAGAAAACPgAVAkAAAAHAAAACQAAAAkAAAAJAAAACQAAAAkAAAAFAAAABAAAAAgAAAAJAAAABgAAAAYAAAAJAAAACQAAAAcAAAAJAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABwAAAAcAAAAIAAAA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AAD8uAAA/QwAAP1gAAD9tAAA/ggAAP64AAD/CAABABQAAQW0AAEG9AABB/gAAQjQAAEJZAABChAAAQqYAAELGAABDAQAAQykAAENLAABDgAAAQ+IAAERLAABEaAAARLMAAETOAABE+QAARSQAAEVKAABFaQAARZYAAEW/AABF8AAARiEAAEZeAABGnwAARtUAAEc1AABHUAAAR3UAAEekAABHwQAAR98AAEgpAABIcAAASJ4AAEjCAABI2wAASQEAAEkzAABJ2gAASjoAAEqTAABLFQAAS5MAAExdAABMfQAATLgAAEzMAABM7AAATSoAAE1dAABNlQAATckAAE4DAABOUgAAToQAAE68AABO5AAATyEAAE82AABP1gAAUAcAAFBwAABQsgAAUPIAAFEnAABRUgAAUZIAAFHcAABSEgAAUl4AAFKIAABSuQAAUvUAAFMoAABTRgAAU5AAAFQQAABUaAAAVLgAAFTRAABVCAAAVVMAAFWYAABVtQAAVdYAAFYNAABWKAAAVoEAAFaiAABW2QAAVvgAAFcfAABXdgAAV6gAAFglAABYUgAAWG8AAFi8AABY1gAAWSsAAFldAABZmgAAWfcAAFotAABaVwAAWp4AAFuhAABcEAAAXPgAAF2EAABd8gAAXiQAAF5iAABeowAAXtoAAF8jAABfRwAAX2kAAF/XAABf5gAAX/4AAGAbAABgXQAAYKQAAGDNAABg6QAAYTIAAGFsAABhqQAAYh0AAGJjAABijgAAYs4AAGLoAABjkwAAY6oAAGPVAABkBAAAZEUAAGTkAABlBQAAZUEAAGV/AABlvgAAZegAAGZfAABmsgAAZwQAAGdCAABndgAAZ58AAGfGAABn+gAAaDEAAGiDAABozQAAaR4AAGlsAABpoAAAadMAAGoHAABqJAAAajsAAGo7AABqOwAAalYAAGqKAABqyAAAavMAAGsrAABragAAa4gAAGuiAABrwQAAa+oAAGwQAABsIgAAba8AAG3bAABuOAAAbl0AAG6BAABupQAAbskAAG7pAABvAgAAbx4AAG9TAABvkwAAb6kAAG/IAABwEgAAcEYAAHBxAABwwQAAcPkAAHEoAABxVQAAcYoAAHG7AAByAwAAckMAAHKiAABy6AAAcz4AAHOHAABz5QAAdBsAAHRZAAB0twAAdNQAAHT+AAB1YQAAdZ4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AgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwDSAlQCVQJWAlcCWAJZAloCWwJcAl0CXgJfAmACYQJiAmMCZAJlAmYCZwJoAmkCagJrAmwCbQJuAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoECggKDAoQChQKGAocCiAKJAooCiwKMAo0CjgKPApACkQKSApMClAKVApYClwKYApkCmgKbApwCnQKeAp8CoAKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4CrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLLAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC6ALpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkC+gL7AvwC/QL+Av8DAAMBAwIDAwMEAwUDBgMHAwgDCQMKAwsDDAMNAw4DDwMQAxEDEgMTAxQDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMiAyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DPwNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNYA1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbANtA24DbwNwA3EDcgNzA3QDdQN2A3cDeAN5A3oDewN8A30DfgN/A4ADgQOCA4MDhAOFA4YDhwOIA4kDigOLA4wDjQOOA48DkAORA5IDkwOUA5UDlgOXA5gDmQOaA5sDnAOdA54DnwOgA6EDogOjA6QDpQOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQCUBWdsYXNzBW11c2ljBnNlYXJjaAhlbnZlbG9wZQVoZWFydARzdGFyCnN0YXJfZW1wdHkEdXNlcgRmaWxtCHRoX2xhcmdlAnRoB3RoX2xpc3QCb2sGcmVtb3ZlB3pvb21faW4Iem9vbV9vdXQDb2ZmBnNpZ25hbANjb2cFdHJhc2gEaG9tZQhmaWxlX2FsdAR0aW1lBHJvYWQMZG93bmxvYWRfYWx0CGRvd25sb2FkBnVwbG9hZAVpbmJveAtwbGF5X2NpcmNsZQZyZXBlYXQHcmVmcmVzaAhsaXN0X2FsdARsb2NrBGZsYWcKaGVhZHBob25lcwp2b2x1bWVfb2ZmC3ZvbHVtZV9kb3duCXZvbHVtZV91cAZxcmNvZGUHYmFyY29kZQN0YWcEdGFncwRib29rCGJvb2ttYXJrBXByaW50BmNhbWVyYQRmb250BGJvbGQGaXRhbGljC3RleHRfaGVpZ2h0CnRleHRfd2lkdGgKYWxpZ25fbGVmdAxhbGlnbl9jZW50ZXILYWxpZ25fcmlnaHQNYWxpZ25fanVzdGlmeQRsaXN0C2luZGVudF9sZWZ0DGluZGVudF9yaWdodA5mYWNldGltZV92aWRlbwdwaWN0dXJlBnBlbmNpbAptYXBfbWFya2VyBmFkanVzdAR0aW50BGVkaXQFc2hhcmUFY2hlY2sEbW92ZQ1zdGVwX2JhY2t3YXJkDWZhc3RfYmFja3dhcmQIYmFja3dhcmQEcGxheQVwYXVzZQRzdG9wB2ZvcndhcmQMZmFzdF9mb3J3YXJkDHN0ZXBfZm9yd2FyZAVlamVjdAxjaGV2cm9uX2xlZnQNY2hldnJvbl9yaWdodAlwbHVzX3NpZ24KbWludXNfc2lnbgtyZW1vdmVfc2lnbgdva19zaWduDXF1ZXN0aW9uX3NpZ24JaW5mb19zaWduCnNjcmVlbnNob3QNcmVtb3ZlX2NpcmNsZQlva19jaXJjbGUKYmFuX2NpcmNsZQphcnJvd19sZWZ0C2Fycm93X3JpZ2h0CGFycm93X3VwCmFycm93X2Rvd24Jc2hhcmVfYWx0C3Jlc2l6ZV9mdWxsDHJlc2l6ZV9zbWFsbBBleGNsYW1hdGlvbl9zaWduBGdpZnQEbGVhZgRmaXJlCGV5ZV9vcGVuCWV5ZV9jbG9zZQx3YXJuaW5nX3NpZ24FcGxhbmUIY2FsZW5kYXIGcmFuZG9tB2NvbW1lbnQGbWFnbmV0CmNoZXZyb25fdXAMY2hldnJvbl9kb3duB3JldHdlZXQNc2hvcHBpbmdfY2FydAxmb2xkZXJfY2xvc2ULZm9sZGVyX29wZW4PcmVzaXplX3ZlcnRpY2FsEXJlc2l6ZV9ob3Jpem9udGFsCWJhcl9jaGFydAx0d2l0dGVyX3NpZ24NZmFjZWJvb2tfc2lnbgxjYW1lcmFfcmV0cm8Da2V5BGNvZ3MIY29tbWVudHMNdGh1bWJzX3VwX2FsdA90aHVtYnNfZG93bl9hbHQJc3Rhcl9oYWxmC2hlYXJ0X2VtcHR5B3NpZ25vdXQNbGlua2VkaW5fc2lnbgdwdXNocGluDWV4dGVybmFsX2xpbmsGc2lnbmluBnRyb3BoeQtnaXRodWJfc2lnbgp1cGxvYWRfYWx0BWxlbW9uBXBob25lC2NoZWNrX2VtcHR5DmJvb2ttYXJrX2VtcHR5CnBob25lX3NpZ24HdHdpdHRlcghmYWNlYm9vawZnaXRodWIGdW5sb2NrC2NyZWRpdF9jYXJkA3JzcwNoZGQIYnVsbGhvcm4EYmVsbAtjZXJ0aWZpY2F0ZQpoYW5kX3JpZ2h0CWhhbmRfbGVmdAdoYW5kX3VwCWhhbmRfZG93bhFjaXJjbGVfYXJyb3dfbGVmdBJjaXJjbGVfYXJyb3dfcmlnaHQPY2lyY2xlX2Fycm93X3VwEWNpcmNsZV9hcnJvd19kb3duBWdsb2JlBndyZW5jaAV0YXNrcwZmaWx0ZXIJYnJpZWZjYXNlCmZ1bGxzY3JlZW4FZ3JvdXAEbGluawVjbG91ZAZiZWFrZXIDY3V0BGNvcHkKcGFwZXJfY2xpcARzYXZlCnNpZ25fYmxhbmsHcmVvcmRlcgJ1bAJvbA1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQV0YWJsZQVtYWdpYwV0cnVjawlwaW50ZXJlc3QOcGludGVyZXN0X3NpZ24QZ29vZ2xlX3BsdXNfc2lnbgtnb29nbGVfcGx1cwVtb25leQpjYXJldF9kb3duCGNhcmV0X3VwCmNhcmV0X2xlZnQLY2FyZXRfcmlnaHQHY29sdW1ucwRzb3J0CXNvcnRfZG93bgdzb3J0X3VwDGVudmVsb3BlX2FsdAhsaW5rZWRpbgR1bmRvBWxlZ2FsCWRhc2hib2FyZAtjb21tZW50X2FsdAxjb21tZW50c19hbHQEYm9sdAdzaXRlbWFwCHVtYnJlbGxhBXBhc3RlCmxpZ2h0X2J1bGIIZXhjaGFuZ2UOY2xvdWRfZG93bmxvYWQMY2xvdWRfdXBsb2FkB3VzZXJfbWQLc3RldGhvc2NvcGUIc3VpdGNhc2UIYmVsbF9hbHQGY29mZmVlBGZvb2QNZmlsZV90ZXh0X2FsdAhidWlsZGluZwhob3NwaXRhbAlhbWJ1bGFuY2UGbWVka2l0C2ZpZ2h0ZXJfamV0BGJlZXIGaF9zaWduBGYwZmURZG91YmxlX2FuZ2xlX2xlZnQSZG91YmxlX2FuZ2xlX3JpZ2h0D2RvdWJsZV9hbmdsZV91cBFkb3VibGVfYW5nbGVfZG93bgphbmdsZV9sZWZ0C2FuZ2xlX3JpZ2h0CGFuZ2xlX3VwCmFuZ2xlX2Rvd24HZGVza3RvcAZsYXB0b3AGdGFibGV0DG1vYmlsZV9waG9uZQxjaXJjbGVfYmxhbmsKcXVvdGVfbGVmdAtxdW90ZV9yaWdodAdzcGlubmVyBmNpcmNsZQVyZXBseQpnaXRodWJfYWx0EGZvbGRlcl9jbG9zZV9hbHQPZm9sZGVyX29wZW5fYWx0CmV4cGFuZF9hbHQMY29sbGFwc2VfYWx0BXNtaWxlBWZyb3duA21laAdnYW1lcGFkCGtleWJvYXJkCGZsYWdfYWx0DmZsYWdfY2hlY2tlcmVkCHRlcm1pbmFsBGNvZGUJcmVwbHlfYWxsD3N0YXJfaGFsZl9lbXB0eQ5sb2NhdGlvbl9hcnJvdwRjcm9wCWNvZGVfZm9yawZ1bmxpbmsEXzI3OQtleGNsYW1hdGlvbgtzdXBlcnNjcmlwdAlzdWJzY3JpcHQEXzI4MwxwdXp6bGVfcGllY2UKbWljcm9waG9uZQ5taWNyb3Bob25lX29mZgZzaGllbGQOY2FsZW5kYXJfZW1wdHkRZmlyZV9leHRpbmd1aXNoZXIGcm9ja2V0Bm1heGNkbhFjaGV2cm9uX3NpZ25fbGVmdBJjaGV2cm9uX3NpZ25fcmlnaHQPY2hldnJvbl9zaWduX3VwEWNoZXZyb25fc2lnbl9kb3duBWh0bWw1BGNzczMGYW5jaG9yCnVubG9ja19hbHQIYnVsbHNleWUTZWxsaXBzaXNfaG9yaXpvbnRhbBFlbGxpcHNpc192ZXJ0aWNhbARfMzAzCXBsYXlfc2lnbgZ0aWNrZXQObWludXNfc2lnbl9hbHQLY2hlY2tfbWludXMIbGV2ZWxfdXAKbGV2ZWxfZG93bgpjaGVja19zaWduCWVkaXRfc2lnbgRfMzEyCnNoYXJlX3NpZ24HY29tcGFzcwhjb2xsYXBzZQxjb2xsYXBzZV90b3AEXzMxNwNldXIDZ2JwA3VzZANpbnIDanB5A3J1YgNrcncDYnRjBGZpbGUJZmlsZV90ZXh0EHNvcnRfYnlfYWxwaGFiZXQEXzMyORJzb3J0X2J5X2F0dHJpYnV0ZXMWc29ydF9ieV9hdHRyaWJ1dGVzX2FsdA1zb3J0X2J5X29yZGVyEXNvcnRfYnlfb3JkZXJfYWx0BF8zMzQEXzMzNQx5b3V0dWJlX3NpZ24HeW91dHViZQR4aW5nCXhpbmdfc2lnbgx5b3V0dWJlX3BsYXkHZHJvcGJveA1zdGFja2V4Y2hhbmdlCWluc3RhZ3JhbQZmbGlja3IDYWRuBGYxNzEOYml0YnVja2V0X3NpZ24GdHVtYmxyC3R1bWJscl9zaWduD2xvbmdfYXJyb3dfZG93bg1sb25nX2Fycm93X3VwD2xvbmdfYXJyb3dfbGVmdBBsb25nX2Fycm93X3JpZ2h0B3dpbmRvd3MHYW5kcm9pZAVsaW51eAdkcmliYmxlBXNreXBlCmZvdXJzcXVhcmUGdHJlbGxvBmZlbWFsZQRtYWxlBmdpdHRpcANzdW4EXzM2NgdhcmNoaXZlA2J1ZwJ2awV3ZWlibwZyZW5yZW4EXzM3Mg5zdGFja19leGNoYW5nZQRfMzc0FWFycm93X2NpcmNsZV9hbHRfbGVmdARfMzc2DmRvdF9jaXJjbGVfYWx0BF8zNzgMdmltZW9fc3F1YXJlBF8zODANcGx1c19zcXVhcmVfbwRfMzgyBF8zODMEXzM4NARfMzg1BF8zODYEXzM4NwRfMzg4BF8zODkHdW5pRjFBMARmMWExBF8zOTIEXzM5MwRmMWE0BF8zOTUEXzM5NgRfMzk3BF8zOTgEXzM5OQRfNDAwBGYxYWIEXzQwMgRfNDAzBF80MDQHdW5pRjFCMQRfNDA2BF80MDcEXzQwOARfNDA5BF80MTAEXzQxMQRfNDEyBF80MTMEXzQxNARfNDE1BF80MTYEXzQxNwRfNDE4BF80MTkHdW5pRjFDMAd1bmlGMUMxBF80MjIEXzQyMwRfNDI0BF80MjUEXzQyNgRfNDI3BF80MjgEXzQyOQRfNDMwBF80MzEEXzQzMgRfNDMzBF80MzQHdW5pRjFEMAd1bmlGMUQxB3VuaUYxRDIEXzQzOARfNDM5B3VuaUYxRDUHdW5pRjFENgd1bmlGMUQ3BF80NDMEXzQ0NARfNDQ1BF80NDYEXzQ0NwRfNDQ4BF80NDkHdW5pRjFFMARfNDUxBF80NTIEXzQ1MwRfNDU0BF80NTUEXzQ1NgRfNDU3BF80NTgEXzQ1OQRfNDYwBF80NjEEXzQ2MgRfNDYzBF80NjQHdW5pRjFGMARfNDY2BF80NjcEZjFmMwRfNDY5BF80NzAEXzQ3MQRfNDcyBF80NzMEXzQ3NARfNDc1BF80NzYEZjFmYwRfNDc4BF80NzkEXzQ4MARfNDgxBF80ODIEXzQ4MwRfNDg0BF80ODUEXzQ4NgRfNDg3BF80ODgEXzQ4OQRfNDkwBF80OTEEXzQ5MgRfNDkzBF80OTQEZjIxMARfNDk2BGYyMTIEXzQ5OARfNDk5BF81MDAEXzUwMQRfNTAyBF81MDMEXzUwNARfNTA1BF81MDYEXzUwNwRfNTA4BF81MDkFdmVudXMEXzUxMQRfNTEyBF81MTMEXzUxNARfNTE1BF81MTYEXzUxNwRfNTE4BF81MTkEXzUyMARfNTIxBF81MjIEXzUyMwRfNTI0BF81MjUEXzUyNgRfNTI3BF81MjgEXzUyOQRfNTMwBF81MzEEXzUzMgRfNTMzBF81MzQEXzUzNQRfNTM2BF81MzcEXzUzOARfNTM5BF81NDAEXzU0MQRfNTQyBF81NDMEXzU0NARfNTQ1BF81NDYEXzU0NwRfNTQ4BF81NDkEXzU1MARfNTUxBF81NTIEXzU1MwRfNTU0BF81NTUEXzU1NgRfNTU3BF81NTgEXzU1OQRfNTYwBF81NjEEXzU2MgRfNTYzBF81NjQEXzU2NQRfNTY2BF81NjcEXzU2OARfNTY5BGYyNjAEZjI2MQRfNTcyBGYyNjMEXzU3NARfNTc1BF81NzYEXzU3NwRfNTc4BF81NzkEXzU4MARfNTgxBF81ODIEXzU4MwRfNTg0BF81ODUEXzU4NgRfNTg3BF81ODgEXzU4OQRfNTkwBF81OTEEXzU5MgRfNTkzBF81OTQEXzU5NQRfNTk2BF81OTcEXzU5OARmMjdlB3VuaUYyODAHdW5pRjI4MQRfNjAyBF82MDMEXzYwNAd1bmlGMjg1B3VuaUYyODYEXzYwNwRfNjA4BF82MDkEXzYxMARfNjExBF82MTIEXzYxMwRfNjE0BF82MTUEXzYxNgRfNjE3BF82MTgEXzYxOQRfNjIwBF82MjEEXzYyMgRfNjIzBF82MjQEXzYyNQRfNjI2BF82MjcEXzYyOARfNjI5B3VuaUYyQTAHdW5pRjJBMQd1bmlGMkEyB3VuaUYyQTMHdW5pRjJBNAd1bmlGMkE1B3VuaUYyQTYHdW5pRjJBNwd1bmlGMkE4B3VuaUYyQTkHdW5pRjJBQQd1bmlGMkFCB3VuaUYyQUMHdW5pRjJBRAd1bmlGMkFFB3VuaUYyQjAHdW5pRjJCMQd1bmlGMkIyB3VuaUYyQjMHdW5pRjJCNAd1bmlGMkI1B3VuaUYyQjYHdW5pRjJCNwd1bmlGMkI4B3VuaUYyQjkHdW5pRjJCQQd1bmlGMkJCB3VuaUYyQkMHdW5pRjJCRAd1bmlGMkJFB3VuaUYyQzAHdW5pRjJDMQd1bmlGMkMyB3VuaUYyQzMHdW5pRjJDNAd1bmlGMkM1B3VuaUYyQzYHdW5pRjJDNwd1bmlGMkM4B3VuaUYyQzkHdW5pRjJDQQd1bmlGMkNCB3VuaUYyQ0MHdW5pRjJDRAd1bmlGMkNFB3VuaUYyRDAHdW5pRjJEMQd1bmlGMkQyB3VuaUYyRDMHdW5pRjJENAd1bmlGMkQ1B3VuaUYyRDYHdW5pRjJENwd1bmlGMkQ4B3VuaUYyRDkHdW5pRjJEQQd1bmlGMkRCB3VuaUYyREMHdW5pRjJERAd1bmlGMkRFB3VuaUYyRTAHdW5pRjJFMQd1bmlGMkUyB3VuaUYyRTMHdW5pRjJFNAd1bmlGMkU1B3VuaUYyRTYHdW5pRjJFNwRfNjk4B3VuaUYyRTkHdW5pRjJFQQd1bmlGMkVCB3VuaUYyRUMHdW5pRjJFRAd1bmlGMkVFAAAAAAAAAf//AAIAAQAAAA4AAAAYAAAAAAACAAEAAQLCAAEABAAAAAIAAAAAAAEAAAAAzD2izwAAAADLTzwwAAAAANQxaLk="},function(A,M,t){"use strict";t.r(M),M.default="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiA+DQo8c3ZnPg0KPG1ldGFkYXRhPg0KQ3JlYXRlZCBieSBGb250Rm9yZ2UgMjAxMjA3MzEgYXQgTW9uIE9jdCAyNCAxNzozNzo0MCAyMDE2DQogQnkgLCwsDQpDb3B5cmlnaHQgRGF2ZSBHYW5keSAyMDE2LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPC9tZXRhZGF0YT4NCjxkZWZzPg0KPGZvbnQgaWQ9IkZvbnRBd2Vzb21lIiBob3Jpei1hZHYteD0iMTUzNiIgPg0KICA8Zm9udC1mYWNlIA0KICAgIGZvbnQtZmFtaWx5PSJGb250QXdlc29tZSINCiAgICBmb250LXdlaWdodD0iNDAwIg0KICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIg0KICAgIHVuaXRzLXBlci1lbT0iMTc5MiINCiAgICBwYW5vc2UtMT0iMCAwIDAgMCAwIDAgMCAwIDAgMCINCiAgICBhc2NlbnQ9IjE1MzYiDQogICAgZGVzY2VudD0iLTI1NiINCiAgICBiYm94PSItMS4wMjA4MyAtMjU2Ljk2MiAyMzA0LjYgMTUzNy4wMiINCiAgICB1bmRlcmxpbmUtdGhpY2tuZXNzPSIwIg0KICAgIHVuZGVybGluZS1wb3NpdGlvbj0iMCINCiAgICB1bmljb2RlLXJhbmdlPSJVKzAwMjAtRjUwMCINCiAgLz4NCjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSI4OTYiIA0KZD0iTTIyNCAxMTJoNDQ4djEzMTJoLTQ0OHYtMTMxMnpNMTEyIDB2MTUzNmg2NzJ2LTE1MzZoLTY3MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5ub3RkZWYiIGhvcml6LWFkdi14PSI4OTYiIA0KZD0iTTIyNCAxMTJoNDQ4djEzMTJoLTQ0OHYtMTMxMnpNMTEyIDB2MTUzNmg2NzJ2LTE1MzZoLTY3MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5udWxsIiBob3Jpei1hZHYteD0iMCIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibm9ubWFya2luZ3JldHVybiIgaG9yaXotYWR2LXg9IjU5NyIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3BhY2UiIHVuaWNvZGU9IiAiIGhvcml6LWFkdi14PSI0NDgiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImRpZXJlc2lzIiB1bmljb2RlPSImI3hhODsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb3B5cmlnaHQiIHVuaWNvZGU9IiYjeGE5OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlZ2lzdGVyZWQiIHVuaWNvZGU9IiYjeGFlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFjdXRlIiB1bmljb2RlPSImI3hiNDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJBRSIgdW5pY29kZT0iJiN4YzY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iT3NsYXNoIiB1bmljb2RlPSImI3hkODsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmFkZW1hcmsiIHVuaWNvZGU9IiYjeDIxMjI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaW5maW5pdHkiIHVuaWNvZGU9IiYjeDIyMWU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibm90ZXF1YWwiIHVuaWNvZGU9IiYjeDIyNjA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2xhc3MiIHVuaWNvZGU9IiYjeGYwMDA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTY5OSAxMzUwcTAgLTM1IC00MyAtNzhsLTYzMiAtNjMydi03NjhoMzIwcTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTg5NnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDMyMHY3NjhsLTYzMiA2MzJxLTQzIDQzIC00MyA3OHEwIDIzIDE4IDM2LjV0MzggMTcuNXQ0MyA0aDE0MDhxMjMgMCA0MyAtNHQzOCAtMTcuNXQxOCAtMzYuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im11c2ljIiB1bmljb2RlPSImI3hmMDAxOyIgDQpkPSJNMTUzNiAxMzEydi0xMTIwcTAgLTUwIC0zNCAtODl0LTg2IC02MC41dC0xMDMuNSAtMzJ0LTk2LjUgLTEwLjV0LTk2LjUgMTAuNXQtMTAzLjUgMzJ0LTg2IDYwLjV0LTM0IDg5dDM0IDg5dDg2IDYwLjV0MTAzLjUgMzJ0OTYuNSAxMC41cTEwNSAwIDE5MiAtMzl2NTM3bC03NjggLTIzN3YtNzA5cTAgLTUwIC0zNCAtODl0LTg2IC02MC41dC0xMDMuNSAtMzJ0LTk2LjUgLTEwLjV0LTk2LjUgMTAuNXQtMTAzLjUgMzJ0LTg2IDYwLjV0LTM0IDg5DQp0MzQgODl0ODYgNjAuNXQxMDMuNSAzMnQ5Ni41IDEwLjVxMTA1IDAgMTkyIC0zOXY5NjdxMCAzMSAxOSA1Ni41dDQ5IDM1LjVsODMyIDI1NnExMiA0IDI4IDRxNDAgMCA2OCAtMjh0MjggLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2VhcmNoIiB1bmljb2RlPSImI3hmMDAyOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTExNTIgNzA0cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV0MzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV6TTE2NjQgLTEyOHEwIC01MiAtMzggLTkwdC05MCAtMzhxLTU0IDAgLTkwIDM4bC0zNDMgMzQycS0xNzkgLTEyNCAtMzk5IC0xMjRxLTE0MyAwIC0yNzMuNSA1NS41dC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41DQp0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXEwIC0yMjAgLTEyNCAtMzk5bDM0MyAtMzQzcTM3IC0zNyAzNyAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbnZlbG9wZSIgdW5pY29kZT0iJiN4ZjAwMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDMydjc2OHEtMzIgLTM2IC02OSAtNjZxLTI2OCAtMjA2IC00MjYgLTMzOHEtNTEgLTQzIC04MyAtNjd0LTg2LjUgLTQ4LjV0LTEwMi41IC0yNC41aC0xaC0xcS00OCAwIC0xMDIuNSAyNC41dC04Ni41IDQ4LjV0LTgzIDY3cS0xNTggMTMyIC00MjYgMzM4cS0zNyAzMCAtNjkgNjZ2LTc2OHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE0NzJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMDgzdjExdjEzLjV0LTAuNSAxMw0KdC0zIDEyLjV0LTUuNSA5dC05IDcuNXQtMTQgMi41aC0xNDcycS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXEwIC0xNjggMTQ3IC0yODRxMTkzIC0xNTIgNDAxIC0zMTdxNiAtNSAzNSAtMjkuNXQ0NiAtMzcuNXQ0NC41IC0zMS41dDUwLjUgLTI3LjV0NDMgLTloMWgxcTIwIDAgNDMgOXQ1MC41IDI3LjV0NDQuNSAzMS41dDQ2IDM3LjV0MzUgMjkuNXEyMDggMTY1IDQwMSAzMTdxNTQgNDMgMTAwLjUgMTE1LjV0NDYuNSAxMzEuNXoNCk0xNzkyIDExMjB2LTEwODhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEwODhxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoZWFydCIgdW5pY29kZT0iJiN4ZjAwNDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04OTYgLTEyOHEtMjYgMCAtNDQgMThsLTYyNCA2MDJxLTEwIDggLTI3LjUgMjZ0LTU1LjUgNjUuNXQtNjggOTcuNXQtNTMuNSAxMjF0LTIzLjUgMTM4cTAgMjIwIDEyNyAzNDR0MzUxIDEyNHE2MiAwIDEyNi41IC0yMS41dDEyMCAtNTh0OTUuNSAtNjguNXQ3NiAtNjhxMzYgMzYgNzYgNjh0OTUuNSA2OC41dDEyMCA1OHQxMjYuNSAyMS41cTIyNCAwIDM1MSAtMTI0dDEyNyAtMzQ0cTAgLTIyMSAtMjI5IC00NTBsLTYyMyAtNjAwDQpxLTE4IC0xOCAtNDQgLTE4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RhciIgdW5pY29kZT0iJiN4ZjAwNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDg4OXEwIC0yMiAtMjYgLTQ4bC0zNjMgLTM1NGw4NiAtNTAwcTEgLTcgMSAtMjBxMCAtMjEgLTEwLjUgLTM1LjV0LTMwLjUgLTE0LjVxLTE5IDAgLTQwIDEybC00NDkgMjM2bC00NDkgLTIzNnEtMjIgLTEyIC00MCAtMTJxLTIxIDAgLTMxLjUgMTQuNXQtMTAuNSAzNS41cTAgNiAyIDIwbDg2IDUwMGwtMzY0IDM1NHEtMjUgMjcgLTI1IDQ4cTAgMzcgNTYgNDZsNTAyIDczbDIyNSA0NTVxMTkgNDEgNDkgNDF0NDkgLTQxbDIyNSAtNDU1DQpsNTAyIC03M3E1NiAtOSA1NiAtNDZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFyX2VtcHR5IiB1bmljb2RlPSImI3hmMDA2OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTExMzcgNTMybDMwNiAyOTdsLTQyMiA2MmwtMTg5IDM4MmwtMTg5IC0zODJsLTQyMiAtNjJsMzA2IC0yOTdsLTczIC00MjFsMzc4IDE5OWwzNzcgLTE5OXpNMTY2NCA4ODlxMCAtMjIgLTI2IC00OGwtMzYzIC0zNTRsODYgLTUwMHExIC03IDEgLTIwcTAgLTUwIC00MSAtNTBxLTE5IDAgLTQwIDEybC00NDkgMjM2bC00NDkgLTIzNnEtMjIgLTEyIC00MCAtMTJxLTIxIDAgLTMxLjUgMTQuNXQtMTAuNSAzNS41cTAgNiAyIDIwbDg2IDUwMA0KbC0zNjQgMzU0cS0yNSAyNyAtMjUgNDhxMCAzNyA1NiA0Nmw1MDIgNzNsMjI1IDQ1NXExOSA0MSA0OSA0MXQ0OSAtNDFsMjI1IC00NTVsNTAyIC03M3E1NiAtOSA1NiAtNDZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1c2VyIiB1bmljb2RlPSImI3hmMDA3OyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEyODAgMTM3cTAgLTEwOSAtNjIuNSAtMTg3dC0xNTAuNSAtNzhoLTg1NHEtODggMCAtMTUwLjUgNzh0LTYyLjUgMTg3cTAgODUgOC41IDE2MC41dDMxLjUgMTUydDU4LjUgMTMxdDk0IDg5dDEzNC41IDM0LjVxMTMxIC0xMjggMzEzIC0xMjh0MzEzIDEyOHE3NiAwIDEzNC41IC0zNC41dDk0IC04OXQ1OC41IC0xMzF0MzEuNSAtMTUydDguNSAtMTYwLjV6TTEwMjQgMTAyNHEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41DQp0LTI3MS41IDExMi41dC0xMTIuNSAyNzEuNXQxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsbSIgdW5pY29kZT0iJiN4ZjAwODsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0zODQgLTY0djEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0zODQgMzIwdjEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0zODQgNzA0djEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOA0KcS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE0MDggLTY0djUxMnEwIDI2IC0xOSA0NXQtNDUgMTloLTc2OHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTUxMnEwIC0yNiAxOSAtNDV0NDUgLTE5aDc2OHEyNiAwIDQ1IDE5dDE5IDQ1ek0zODQgMTA4OHYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1DQp0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIC02NHYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXpNMTQwOCA3MDR2NTEycTAgMjYgLTE5IDQ1dC00NSAxOWgtNzY4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtNTEycTAgLTI2IDE5IC00NXQ0NSAtMTloNzY4cTI2IDAgNDUgMTl0MTkgNDV6TTE3OTIgMzIwdjEyOA0KcTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE3OTIgNzA0djEyOHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTEyOHEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIDEwODh2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTkNCnQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXpNMTkyMCAxMjQ4di0xMzQ0cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNjAwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMzQ0cTAgNjYgNDcgMTEzdDExMyA0N2gxNjAwcTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGhfbGFyZ2UiIHVuaWNvZGU9IiYjeGYwMDk7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNzY4IDUxMnYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoNTEycTUyIDAgOTAgLTM4dDM4IC05MHpNNzY4IDEyODB2LTM4NHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTUxMnEtNTIgMCAtOTAgMzh0LTM4IDkwdjM4NHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6TTE2NjQgNTEydi0zODRxMCAtNTIgLTM4IC05MHQtOTAgLTM4DQpoLTUxMnEtNTIgMCAtOTAgMzh0LTM4IDkwdjM4NHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6TTE2NjQgMTI4MHYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoNTEycTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRoIiB1bmljb2RlPSImI3hmMDBhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTUxMiAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTExNTIgMjg4di0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjANCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xMTUyIDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjgNCmgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDI4OHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHpNMTE1MiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDgwMHYtMTkyDQpxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDEzMTJ2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0aF9saXN0IiB1bmljb2RlPSImI3hmMDBiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTUxMiAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDMyMHE0MCAwIDY4IC0yOHQyOCAtNjh6TTE3OTIgMjg4di0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjANCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDk2MHE0MCAwIDY4IC0yOHQyOCAtNjh6TTUxMiAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0zMjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgzMjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDgwMHYtMTkycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTYwcS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjgNCmg5NjBxNDAgMCA2OCAtMjh0MjggLTY4ek0xNzkyIDEzMTJ2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDk2MHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJvayIgdW5pY29kZT0iJiN4ZjAwYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjcxIDk3MHEwIC00MCAtMjggLTY4bC03MjQgLTcyNGwtMTM2IC0xMzZxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMTM2IDEzNmwtMzYyIDM2MnEtMjggMjggLTI4IDY4dDI4IDY4bDEzNiAxMzZxMjggMjggNjggMjh0NjggLTI4bDI5NCAtMjk1bDY1NiA2NTdxMjggMjggNjggMjh0NjggLTI4bDEzNiAtMTM2cTI4IC0yOCAyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZW1vdmUiIHVuaWNvZGU9IiYjeGYwMGQ7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTI5OCAyMTRxMCAtNDAgLTI4IC02OGwtMTM2IC0xMzZxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMjk0IDI5NGwtMjk0IC0yOTRxLTI4IC0yOCAtNjggLTI4dC02OCAyOGwtMTM2IDEzNnEtMjggMjggLTI4IDY4dDI4IDY4bDI5NCAyOTRsLTI5NCAyOTRxLTI4IDI4IC0yOCA2OHQyOCA2OGwxMzYgMTM2cTI4IDI4IDY4IDI4dDY4IC0yOGwyOTQgLTI5NGwyOTQgMjk0cTI4IDI4IDY4IDI4dDY4IC0yOGwxMzYgLTEzNnEyOCAtMjggMjggLTY4DQp0LTI4IC02OGwtMjk0IC0yOTRsMjk0IC0yOTRxMjggLTI4IDI4IC02OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Inpvb21faW4iIHVuaWNvZGU9IiYjeGYwMGU7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTAyNCA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMjI0di0yMjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djIyNGgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgyMjR2MjI0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0yMjRoMjI0DQpxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xMTUyIDcwNHEwIDE4NSAtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41dDMxNi41IDEzMS41dDEzMS41IDMxNi41ek0xNjY0IC0xMjhxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjVxLTU0IDAgLTkwIDM4bC0zNDMgMzQycS0xNzkgLTEyNCAtMzk5IC0xMjRxLTE0MyAwIC0yNzMuNSA1NS41DQp0LTIyNSAxNTB0LTE1MCAyMjV0LTU1LjUgMjczLjV0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXEwIC0yMjAgLTEyNCAtMzk5bDM0MyAtMzQzcTM3IC0zNyAzNyAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ6b29tX291dCIgdW5pY29kZT0iJiN4ZjAxMDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMDI0IDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC01NzZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDU3NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgNzA0cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV0MzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV6DQpNMTY2NCAtMTI4cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41cS01NCAwIC05MCAzOGwtMzQzIDM0MnEtMTc5IC0xMjQgLTM5OSAtMTI0cS0xNDMgMCAtMjczLjUgNTUuNXQtMjI1IDE1MHQtMTUwIDIyNXQtNTUuNSAyNzMuNXQ1NS41IDI3My41dDE1MCAyMjV0MjI1IDE1MHQyNzMuNSA1NS41dDI3My41IC01NS41dDIyNSAtMTUwdDE1MCAtMjI1dDU1LjUgLTI3My41cTAgLTIyMCAtMTI0IC0zOTlsMzQzIC0zNDNxMzcgLTM3IDM3IC05MHoNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ib2ZmIiB1bmljb2RlPSImI3hmMDExOyIgDQpkPSJNMTUzNiA2NDBxMCAtMTU2IC02MSAtMjk4dC0xNjQgLTI0NXQtMjQ1IC0xNjR0LTI5OCAtNjF0LTI5OCA2MXQtMjQ1IDE2NHQtMTY0IDI0NXQtNjEgMjk4cTAgMTgyIDgwLjUgMzQzdDIyNi41IDI3MHE0MyAzMiA5NS41IDI1dDgzLjUgLTUwcTMyIC00MiAyNC41IC05NC41dC00OS41IC04NC41cS05OCAtNzQgLTE1MS41IC0xODF0LTUzLjUgLTIyOHEwIC0xMDQgNDAuNSAtMTk4LjV0MTA5LjUgLTE2My41dDE2My41IC0xMDkuNQ0KdDE5OC41IC00MC41dDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXEwIDEyMSAtNTMuNSAyMjh0LTE1MS41IDE4MXEtNDIgMzIgLTQ5LjUgODQuNXQyNC41IDk0LjVxMzEgNDMgODQgNTB0OTUgLTI1cTE0NiAtMTA5IDIyNi41IC0yNzB0ODAuNSAtMzQzek04OTYgMTQwOHYtNjQwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOHQtOTAgMzh0LTM4IDkwdjY0MHEwIDUyIDM4IDkwdDkwIDM4dDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzaWduYWwiIHVuaWNvZGU9IiYjeGYwMTI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjU2IDk2di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNNjQwIDIyNHYtMzIwcTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YzMjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTEwMjQgNDgwdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzDQp2NTc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNDA4IDg2NHYtOTYwcTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3Y5NjBxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgMTM3NnYtMTQ3MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTQ3MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvZyIgdW5pY29kZT0iJiN4ZjAxMzsiIA0KZD0iTTEwMjQgNjQwcTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMTUzNiA3NDl2LTIyMnEwIC0xMiAtOCAtMjN0LTIwIC0xM2wtMTg1IC0yOHEtMTkgLTU0IC0zOSAtOTFxMzUgLTUwIDEwNyAtMTM4cTEwIC0xMiAxMCAtMjV0LTkgLTIzcS0yNyAtMzcgLTk5IC0xMDh0LTk0IC03MXEtMTIgMCAtMjYgOWwtMTM4IDEwOHEtNDQgLTIzIC05MSAtMzgNCnEtMTYgLTEzNiAtMjkgLTE4NnEtNyAtMjggLTM2IC0yOGgtMjIycS0xNCAwIC0yNC41IDguNXQtMTEuNSAyMS41bC0yOCAxODRxLTQ5IDE2IC05MCAzN2wtMTQxIC0xMDdxLTEwIC05IC0yNSAtOXEtMTQgMCAtMjUgMTFxLTEyNiAxMTQgLTE2NSAxNjhxLTcgMTAgLTcgMjNxMCAxMiA4IDIzcTE1IDIxIDUxIDY2LjV0NTQgNzAuNXEtMjcgNTAgLTQxIDk5bC0xODMgMjdxLTEzIDIgLTIxIDEyLjV0LTggMjMuNXYyMjJxMCAxMiA4IDIzdDE5IDEzDQpsMTg2IDI4cTE0IDQ2IDM5IDkycS00MCA1NyAtMTA3IDEzOHEtMTAgMTIgLTEwIDI0cTAgMTAgOSAyM3EyNiAzNiA5OC41IDEwNy41dDk0LjUgNzEuNXExMyAwIDI2IC0xMGwxMzggLTEwN3E0NCAyMyA5MSAzOHExNiAxMzYgMjkgMTg2cTcgMjggMzYgMjhoMjIycTE0IDAgMjQuNSAtOC41dDExLjUgLTIxLjVsMjggLTE4NHE0OSAtMTYgOTAgLTM3bDE0MiAxMDdxOSA5IDI0IDlxMTMgMCAyNSAtMTBxMTI5IC0xMTkgMTY1IC0xNzBxNyAtOCA3IC0yMg0KcTAgLTEyIC04IC0yM3EtMTUgLTIxIC01MSAtNjYuNXQtNTQgLTcwLjVxMjYgLTUwIDQxIC05OGwxODMgLTI4cTEzIC0yIDIxIC0xMi41dDggLTIzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmFzaCIgdW5pY29kZT0iJiN4ZjAxNDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik01MTIgODAwdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2NTc2cTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6TTc2OCA4MDB2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3pNMTAyNCA4MDB2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzYNCnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzek0xMTUyIDc2djk0OGgtODk2di05NDhxMCAtMjIgNyAtNDAuNXQxNC41IC0yN3QxMC41IC04LjVoODMycTMgMCAxMC41IDguNXQxNC41IDI3dDcgNDAuNXpNNDgwIDExNTJoNDQ4bC00OCAxMTdxLTcgOSAtMTcgMTFoLTMxN3EtMTAgLTIgLTE3IC0xMXpNMTQwOCAxMTIwdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTQ4cTAgLTgzIC00NyAtMTQzLjV0LTExMyAtNjAuNWgtODMyDQpxLTY2IDAgLTExMyA1OC41dC00NyAxNDEuNXY5NTJoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDMwOWw3MCAxNjdxMTUgMzcgNTQgNjN0NzkgMjZoMzIwcTQwIDAgNzkgLTI2dDU0IC02M2w3MCAtMTY3aDMwOXExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaG9tZSIgdW5pY29kZT0iJiN4ZjAxNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNDA4IDU0NHYtNDgwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMzg0djM4NGgtMjU2di0zODRoLTM4NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djQ4MHEwIDEgMC41IDN0MC41IDNsNTc1IDQ3NGw1NzUgLTQ3NHExIC0yIDEgLTZ6TTE2MzEgNjEzbC02MiAtNzRxLTggLTkgLTIxIC0xMWgtM3EtMTMgMCAtMjEgN2wtNjkyIDU3N2wtNjkyIC01NzdxLTEyIC04IC0yNCAtN3EtMTMgMiAtMjEgMTFsLTYyIDc0cS04IDEwIC03IDIzLjV0MTEgMjEuNQ0KbDcxOSA1OTlxMzIgMjYgNzYgMjZ0NzYgLTI2bDI0NCAtMjA0djE5NXEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtNDA4bDIxOSAtMTgycTEwIC04IDExIC0yMS41dC03IC0yMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsZV9hbHQiIHVuaWNvZGU9IiYjeGYwMTY7IiANCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgweg0KIiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0aW1lIiB1bmljb2RlPSImI3hmMDE3OyIgDQpkPSJNODk2IDk5MnYtNDQ4cTAgLTE0IC05IC0yM3QtMjMgLTloLTMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgyMjR2MzUycTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6TTEzMTIgNjQwcTAgMTQ4IC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3QtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJvYWQiIHVuaWNvZGU9IiYjeGYwMTg7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTExMSA1NDB2NGwtMjQgMzIwcS0xIDEzIC0xMSAyMi41dC0yMyA5LjVoLTE4NnEtMTMgMCAtMjMgLTkuNXQtMTEgLTIyLjVsLTI0IC0zMjB2LTRxLTEgLTEyIDggLTIwdDIxIC04aDI0NHExMiAwIDIxIDh0OCAyMHpNMTg3MCA3M3EwIC03MyAtNDYgLTczaC03MDRxMTMgMCAyMiA5LjV0OCAyMi41bC0yMCAyNTZxLTEgMTMgLTExIDIyLjV0LTIzIDkuNWgtMjcycS0xMyAwIC0yMyAtOS41dC0xMSAtMjIuNWwtMjAgLTI1Ng0KcS0xIC0xMyA4IC0yMi41dDIyIC05LjVoLTcwNHEtNDYgMCAtNDYgNzNxMCA1NCAyNiAxMTZsNDE3IDEwNDRxOCAxOSAyNiAzM3QzOCAxNGgzMzlxLTEzIDAgLTIzIC05LjV0LTExIC0yMi41bC0xNSAtMTkycS0xIC0xNCA4IC0yM3QyMiAtOWgxNjZxMTMgMCAyMiA5dDggMjNsLTE1IDE5MnEtMSAxMyAtMTEgMjIuNXQtMjMgOS41aDMzOXEyMCAwIDM4IC0xNHQyNiAtMzNsNDE3IC0xMDQ0cTI2IC02MiAyNiAtMTE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZG93bmxvYWRfYWx0IiB1bmljb2RlPSImI3hmMDE5OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTEyODAgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTUzNiAxOTJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjY0IDQxNnYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTQ3MnEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDQ2NWwxMzUgLTEzNg0KcTU4IC01NiAxMzYgLTU2dDEzNiA1NmwxMzYgMTM2aDQ2NHE0MCAwIDY4IC0yOHQyOCAtNjh6TTEzMzkgOTg1cTE3IC00MSAtMTQgLTcwbC00NDggLTQ0OHEtMTggLTE5IC00NSAtMTl0LTQ1IDE5bC00NDggNDQ4cS0zMSAyOSAtMTQgNzBxMTcgMzkgNTkgMzloMjU2djQ0OHEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTQ0OGgyNTZxNDIgMCA1OSAtMzl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3dubG9hZCIgdW5pY29kZT0iJiN4ZjAxYTsiIA0KZD0iTTExMjAgNjA4cTAgLTEyIC0xMCAtMjRsLTMxOSAtMzE5cS0xMSAtOSAtMjMgLTl0LTIzIDlsLTMyMCAzMjBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMTkydjM1MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMzUyaDE5MnExNCAwIDIzIC05dDkgLTIzek03NjggMTE4NHEtMTQ4IDAgLTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzMNCnQtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXBsb2FkIiB1bmljb2RlPSImI3hmMDFiOyIgDQpkPSJNMTExOCA2NjBxLTggLTIwIC0zMCAtMjBoLTE5MnYtMzUycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YzNTJoLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3EwIDEyIDEwIDI0bDMxOSAzMTlxMTEgOSAyMyA5dDIzIC05bDMyMCAtMzIwcTE1IC0xNiA3IC0zNXpNNzY4IDExODRxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTgNCnQ3MyAyNzN0LTczIDI3M3QtMTk4IDE5OHQtMjczIDczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluYm94IiB1bmljb2RlPSImI3hmMDFjOyIgDQpkPSJNMTAyMyA1NzZoMzE2cS0xIDMgLTIuNSA4LjV0LTIuNSA3LjVsLTIxMiA0OTZoLTcwOGwtMjEyIC00OTZxLTEgLTMgLTIuNSAtOC41dC0yLjUgLTcuNWgzMTZsOTUgLTE5MmgzMjB6TTE1MzYgNTQ2di00ODJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDgycTAgNjIgMjUgMTIzbDIzOCA1NTJxMTAgMjUgMzYuNSA0MnQ1Mi41IDE3aDgzMnEyNiAwIDUyLjUgLTE3dDM2LjUgLTQybDIzOCAtNTUyDQpxMjUgLTYxIDI1IC0xMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5X2NpcmNsZSIgdW5pY29kZT0iJiN4ZjAxZDsiIA0KZD0iTTExODQgNjQwcTAgLTM3IC0zMiAtNTVsLTU0NCAtMzIwcS0xNSAtOSAtMzIgLTlxLTE2IDAgLTMyIDhxLTMyIDE5IC0zMiA1NnY2NDBxMCAzNyAzMiA1NnEzMyAxOCA2NCAtMWw1NDQgLTMyMHEzMiAtMTggMzIgLTU1ek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzN6TTE1MzYgNjQwDQpxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXBlYXQiIHVuaWNvZGU9IiYjeGYwMWU7IiANCmQ9Ik0xNTM2IDEyODB2LTQ0OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTQ0OHEtNDIgMCAtNTkgNDBxLTE3IDM5IDE0IDY5bDEzOCAxMzhxLTE0OCAxMzcgLTM0OSAxMzdxLTEwNCAwIC0xOTguNSAtNDAuNXQtMTYzLjUgLTEwOS41dC0xMDkuNSAtMTYzLjV0LTQwLjUgLTE5OC41dDQwLjUgLTE5OC41dDEwOS41IC0xNjMuNXQxNjMuNSAtMTA5LjV0MTk4LjUgLTQwLjVxMTE5IDAgMjI1IDUydDE3OSAxNDdxNyAxMCAyMyAxMnExNSAwIDI1IC05DQpsMTM3IC0xMzhxOSAtOCA5LjUgLTIwLjV0LTcuNSAtMjIuNXEtMTA5IC0xMzIgLTI2NCAtMjA0LjV0LTMyNyAtNzIuNXEtMTU2IDAgLTI5OCA2MXQtMjQ1IDE2NHQtMTY0IDI0NXQtNjEgMjk4dDYxIDI5OHQxNjQgMjQ1dDI0NSAxNjR0Mjk4IDYxcTE0NyAwIDI4NC41IC01NS41dDI0NC41IC0xNTYuNWwxMzAgMTI5cTI5IDMxIDcwIDE0cTM5IC0xNyAzOSAtNTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZWZyZXNoIiB1bmljb2RlPSImI3hmMDIxOyIgDQpkPSJNMTUxMSA0ODBxMCAtNSAtMSAtN3EtNjQgLTI2OCAtMjY4IC00MzQuNXQtNDc4IC0xNjYuNXEtMTQ2IDAgLTI4Mi41IDU1dC0yNDMuNSAxNTdsLTEyOSAtMTI5cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djQ0OHEwIDI2IDE5IDQ1dDQ1IDE5aDQ0OHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NWwtMTM3IC0xMzdxNzEgLTY2IDE2MSAtMTAydDE4NyAtMzZxMTM0IDAgMjUwIDY1dDE4NiAxNzlxMTEgMTcgNTMgMTE3DQpxOCAyMyAzMCAyM2gxOTJxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNTM2IDEyODB2LTQ0OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTQ0OHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDEzOCAxMzhxLTE0OCAxMzcgLTM0OSAxMzdxLTEzNCAwIC0yNTAgLTY1dC0xODYgLTE3OXEtMTEgLTE3IC01MyAtMTE3cS04IC0yMyAtMzAgLTIzaC0xOTlxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY3cTY1IDI2OCAyNzAgNDM0LjV0NDgwIDE2Ni41DQpxMTQ2IDAgMjg0IC01NS41dDI0NSAtMTU2LjVsMTMwIDEyOXExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlzdF9hbHQiIHVuaWNvZGU9IiYjeGYwMjI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzg0IDM1MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNjA4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMzg0IDg2NHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNTM2IDM1MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC05NjBxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk2MHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMTUzNiA2MDh2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTYwcS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg5NjBxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNTM2IDg2NHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC05NjBxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk2MHExMyAwIDIyLjUgLTkuNQ0KdDkuNSAtMjIuNXpNMTY2NCAxNjB2ODMycTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTQ3MnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTgzMnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE0NzJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTc5MiAxMjQ4di0xMDg4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxNDcycTY2IDAgMTEzIC00Nw0KdDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb2NrIiB1bmljb2RlPSImI3hmMDIzOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTMyMCA3NjhoNTEydjE5MnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF2LTE5MnpNMTE1MiA2NzJ2LTU3NnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djU3NnEwIDQwIDI4IDY4dDY4IDI4aDMydjE5MnEwIDE4NCAxMzIgMzE2dDMxNiAxMzJ0MzE2IC0xMzJ0MTMyIC0zMTZ2LTE5MmgzMnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmbGFnIiB1bmljb2RlPSImI3hmMDI0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTMyMCAxMjgwcTAgLTcyIC02NCAtMTEwdi0xMjY2cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxMjY2cS02NCAzOCAtNjQgMTEwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE3OTIgMTIxNnYtNzYzcTAgLTI1IC0xMi41IC0zOC41dC0zOS41IC0yNy41cS0yMTUgLTExNiAtMzY5IC0xMTZxLTYxIDAgLTEyMy41IDIydC0xMDguNSA0OA0KdC0xMTUuNSA0OHQtMTQyLjUgMjJxLTE5MiAwIC00NjQgLTE0NnEtMTcgLTkgLTMzIC05cS0yNiAwIC00NSAxOXQtMTkgNDV2NzQycTAgMzIgMzEgNTVxMjEgMTQgNzkgNDNxMjM2IDEyMCA0MjEgMTIwcTEwNyAwIDIwMCAtMjl0MjE5IC04OHEzOCAtMTkgODggLTE5cTU0IDAgMTE3LjUgMjF0MTEwIDQ3dDg4IDQ3dDU0LjUgMjFxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGVhZHBob25lcyIgdW5pY29kZT0iJiN4ZjAyNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDY1MHEwIC0xNjYgLTYwIC0zMTRsLTIwIC00OWwtMTg1IC0zM3EtMjIgLTgzIC05MC41IC0xMzYuNXQtMTU2LjUgLTUzLjV2LTMycTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjU3NnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi0zMnE3MSAwIDEzMCAtMzUuNXQ5MyAtOTUuNWw2OCAxMnEyOSA5NSAyOSAxOTNxMCAxNDggLTg4IDI3OXQtMjM2LjUgMjA5dC0zMTUuNSA3OA0KdC0zMTUuNSAtNzh0LTIzNi41IC0yMDl0LTg4IC0yNzlxMCAtOTggMjkgLTE5M2w2OCAtMTJxMzQgNjAgOTMgOTUuNXQxMzAgMzUuNXYzMnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi01NzZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MzJxLTg4IDAgLTE1Ni41IDUzLjV0LTkwLjUgMTM2LjVsLTE4NSAzM2wtMjAgNDlxLTYwIDE0OCAtNjAgMzE0cTAgMTUxIDY3IDI5MXQxNzkgMjQyLjUNCnQyNjYgMTYzLjV0MzIwIDYxdDMyMCAtNjF0MjY2IC0xNjMuNXQxNzkgLTI0Mi41dDY3IC0yOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ2b2x1bWVfb2ZmIiB1bmljb2RlPSImI3hmMDI2OyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzY4IDExODR2LTEwODhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMzMzIDMzM2gtMjYycS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloMjYybDMzMyAzMzNxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InZvbHVtZV9kb3duIiB1bmljb2RlPSImI3hmMDI3OyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTc2OCAxMTg0di0xMDg4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTlsLTMzMyAzMzNoLTI2MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NHEwIDI2IDE5IDQ1dDQ1IDE5aDI2MmwzMzMgMzMzcTE5IDE5IDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTExNTIgNjQwcTAgLTc2IC00Mi41IC0xNDEuNXQtMTEyLjUgLTkzLjVxLTEwIC01IC0yNSAtNXEtMjYgMCAtNDUgMTguNXQtMTkgNDUuNXEwIDIxIDEyIDM1LjV0MjkgMjV0MzQgMjN0MjkgMzYNCnQxMiA1Ni41dC0xMiA1Ni41dC0yOSAzNnQtMzQgMjN0LTI5IDI1dC0xMiAzNS41cTAgMjcgMTkgNDUuNXQ0NSAxOC41cTE1IDAgMjUgLTVxNzAgLTI3IDExMi41IC05M3Q0Mi41IC0xNDJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ2b2x1bWVfdXAiIHVuaWNvZGU9IiYjeGYwMjg7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNzY4IDExODR2LTEwODhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMzMzIDMzM2gtMjYycS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloMjYybDMzMyAzMzNxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXpNMTE1MiA2NDBxMCAtNzYgLTQyLjUgLTE0MS41dC0xMTIuNSAtOTMuNXEtMTAgLTUgLTI1IC01cS0yNiAwIC00NSAxOC41dC0xOSA0NS41cTAgMjEgMTIgMzUuNXQyOSAyNXQzNCAyM3QyOSAzNg0KdDEyIDU2LjV0LTEyIDU2LjV0LTI5IDM2dC0zNCAyM3QtMjkgMjV0LTEyIDM1LjVxMCAyNyAxOSA0NS41dDQ1IDE4LjVxMTUgMCAyNSAtNXE3MCAtMjcgMTEyLjUgLTkzdDQyLjUgLTE0MnpNMTQwOCA2NDBxMCAtMTUzIC04NSAtMjgyLjV0LTIyNSAtMTg4LjVxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDYgMTl0LTE5IDQ1cTAgMzkgMzkgNTlxNTYgMjkgNzYgNDRxNzQgNTQgMTE1LjUgMTM1LjV0NDEuNSAxNzMuNXQtNDEuNSAxNzMuNQ0KdC0xMTUuNSAxMzUuNXEtMjAgMTUgLTc2IDQ0cS0zOSAyMCAtMzkgNTlxMCAyNiAxOSA0NXQ0NSAxOXExMyAwIDI2IC01cTE0MCAtNTkgMjI1IC0xODguNXQ4NSAtMjgyLjV6TTE2NjQgNjQwcTAgLTIzMCAtMTI3IC00MjIuNXQtMzM4IC0yODMuNXEtMTMgLTUgLTI2IC01cS0yNiAwIC00NSAxOXQtMTkgNDVxMCAzNiAzOSA1OXE3IDQgMjIuNSAxMC41dDIyLjUgMTAuNXE0NiAyNSA4MiA1MXExMjMgOTEgMTkyIDIyN3Q2OSAyODl0LTY5IDI4OQ0KdC0xOTIgMjI3cS0zNiAyNiAtODIgNTFxLTcgNCAtMjIuNSAxMC41dC0yMi41IDEwLjVxLTM5IDIzIC0zOSA1OXEwIDI2IDE5IDQ1dDQ1IDE5cTEzIDAgMjYgLTVxMjExIC05MSAzMzggLTI4My41dDEyNyAtNDIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxcmNvZGUiIHVuaWNvZGU9IiYjeGYwMjk7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMzg0IDM4NHYtMTI4aC0xMjh2MTI4aDEyOHpNMzg0IDExNTJ2LTEyOGgtMTI4djEyOGgxMjh6TTExNTIgMTE1MnYtMTI4aC0xMjh2MTI4aDEyOHpNMTI4IDEyOWgzODR2MzgzaC0zODR2LTM4M3pNMTI4IDg5NmgzODR2Mzg0aC0zODR2LTM4NHpNODk2IDg5NmgzODR2Mzg0aC0zODR2LTM4NHpNNjQwIDY0MHYtNjQwaC02NDB2NjQwaDY0MHpNMTE1MiAxMjh2LTEyOGgtMTI4djEyOGgxMjh6TTE0MDggMTI4di0xMjhoLTEyOHYxMjhoMTI4eg0KTTE0MDggNjQwdi0zODRoLTM4NHYxMjhoLTEyOHYtMzg0aC0xMjh2NjQwaDM4NHYtMTI4aDEyOHYxMjhoMTI4ek02NDAgMTQwOHYtNjQwaC02NDB2NjQwaDY0MHpNMTQwOCAxNDA4di02NDBoLTY0MHY2NDBoNjQweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmFyY29kZSIgdW5pY29kZT0iJiN4ZjAyYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02MyAwaC02M3YxNDA4aDYzdi0xNDA4ek0xMjYgMWgtMzJ2MTQwN2gzMnYtMTQwN3pNMjIwIDFoLTMxdjE0MDdoMzF2LTE0MDd6TTM3NyAxaC0zMXYxNDA3aDMxdi0xNDA3ek01MzQgMWgtNjJ2MTQwN2g2MnYtMTQwN3pNNjYwIDFoLTMxdjE0MDdoMzF2LTE0MDd6TTcyMyAxaC0zMXYxNDA3aDMxdi0xNDA3ek03ODYgMWgtMzF2MTQwN2gzMXYtMTQwN3pNOTQzIDFoLTYzdjE0MDdoNjN2LTE0MDd6TTExMDAgMWgtNjN2MTQwN2g2M3YtMTQwN3oNCk0xMjI2IDFoLTYzdjE0MDdoNjN2LTE0MDd6TTEzNTIgMWgtNjN2MTQwN2g2M3YtMTQwN3pNMTQ0NiAxaC02M3YxNDA3aDYzdi0xNDA3ek0xNjM1IDFoLTk0djE0MDdoOTR2LTE0MDd6TTE2OTggMWgtMzJ2MTQwN2gzMnYtMTQwN3pNMTc5MiAwaC02M3YxNDA4aDYzdi0xNDA4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGFnIiB1bmljb2RlPSImI3hmMDJiOyIgDQpkPSJNNDQ4IDEwODhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE1MTUgNTEycTAgLTUzIC0zNyAtOTBsLTQ5MSAtNDkycS0zOSAtMzcgLTkxIC0zN3EtNTMgMCAtOTAgMzdsLTcxNSA3MTZxLTM4IDM3IC02NC41IDEwMXQtMjYuNSAxMTd2NDE2cTAgNTIgMzggOTB0OTAgMzhoNDE2cTUzIDAgMTE3IC0yNi41dDEwMiAtNjQuNQ0KbDcxNSAtNzE0cTM3IC0zOSAzNyAtOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0YWdzIiB1bmljb2RlPSImI3hmMDJjOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTQ0OCAxMDg4cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNTE1IDUxMnEwIC01MyAtMzcgLTkwbC00OTEgLTQ5MnEtMzkgLTM3IC05MSAtMzdxLTUzIDAgLTkwIDM3bC03MTUgNzE2cS0zOCAzNyAtNjQuNSAxMDF0LTI2LjUgMTE3djQxNnEwIDUyIDM4IDkwdDkwIDM4aDQxNnE1MyAwIDExNyAtMjYuNXQxMDIgLTY0LjUNCmw3MTUgLTcxNHEzNyAtMzkgMzcgLTkxek0xODk5IDUxMnEwIC01MyAtMzcgLTkwbC00OTEgLTQ5MnEtMzkgLTM3IC05MSAtMzdxLTM2IDAgLTU5IDE0dC01MyA0NWw0NzAgNDcwcTM3IDM3IDM3IDkwcTAgNTIgLTM3IDkxbC03MTUgNzE0cS0zOCAzOCAtMTAyIDY0LjV0LTExNyAyNi41aDIyNHE1MyAwIDExNyAtMjYuNXQxMDIgLTY0LjVsNzE1IC03MTRxMzcgLTM5IDM3IC05MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJvb2siIHVuaWNvZGU9IiYjeGYwMmQ7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTYzOSAxMDU4cTQwIC01NyAxOCAtMTI5bC0yNzUgLTkwNnEtMTkgLTY0IC03Ni41IC0xMDcuNXQtMTIyLjUgLTQzLjVoLTkyM3EtNzcgMCAtMTQ4LjUgNTMuNXQtOTkuNSAxMzEuNXEtMjQgNjcgLTIgMTI3cTAgNCAzIDI3dDQgMzdxMSA4IC0zIDIxLjV0LTMgMTkuNXEyIDExIDggMjF0MTYuNSAyMy41dDE2LjUgMjMuNXEyMyAzOCA0NSA5MS41dDMwIDkxLjVxMyAxMCAwLjUgMzB0LTAuNSAyOHEzIDExIDE3IDI4dDE3IDIzDQpxMjEgMzYgNDIgOTJ0MjUgOTBxMSA5IC0yLjUgMzJ0MC41IDI4cTQgMTMgMjIgMzAuNXQyMiAyMi41cTE5IDI2IDQyLjUgODQuNXQyNy41IDk2LjVxMSA4IC0zIDI1LjV0LTIgMjYuNXEyIDggOSAxOHQxOCAyM3QxNyAyMXE4IDEyIDE2LjUgMzAuNXQxNSAzNXQxNiAzNnQxOS41IDMydDI2LjUgMjMuNXQzNiAxMS41dDQ3LjUgLTUuNWwtMSAtM3EzOCA5IDUxIDloNzYxcTc0IDAgMTE0IC01NnQxOCAtMTMwbC0yNzQgLTkwNg0KcS0zNiAtMTE5IC03MS41IC0xNTMuNXQtMTI4LjUgLTM0LjVoLTg2OXEtMjcgMCAtMzggLTE1cS0xMSAtMTYgLTEgLTQzcTI0IC03MCAxNDQgLTcwaDkyM3EyOSAwIDU2IDE1LjV0MzUgNDEuNWwzMDAgOTg3cTcgMjIgNSA1N3EzOCAtMTUgNTkgLTQzek01NzUgMTA1NnEtNCAtMTMgMiAtMjIuNXQyMCAtOS41aDYwOHExMyAwIDI1LjUgOS41dDE2LjUgMjIuNWwyMSA2NHE0IDEzIC0yIDIyLjV0LTIwIDkuNWgtNjA4cS0xMyAwIC0yNS41IC05LjUNCnQtMTYuNSAtMjIuNXpNNDkyIDgwMHEtNCAtMTMgMiAtMjIuNXQyMCAtOS41aDYwOHExMyAwIDI1LjUgOS41dDE2LjUgMjIuNWwyMSA2NHE0IDEzIC0yIDIyLjV0LTIwIDkuNWgtNjA4cS0xMyAwIC0yNS41IC05LjV0LTE2LjUgLTIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJib29rbWFyayIgdW5pY29kZT0iJiN4ZjAyZTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTY0IDE0MDhxMjMgMCA0NCAtOXEzMyAtMTMgNTIuNSAtNDF0MTkuNSAtNjJ2LTEyODlxMCAtMzQgLTE5LjUgLTYydC01Mi41IC00MXEtMTkgLTggLTQ0IC04cS00OCAwIC04MyAzMmwtNDQxIDQyNGwtNDQxIC00MjRxLTM2IC0zMyAtODMgLTMzcS0yMyAwIC00NCA5cS0zMyAxMyAtNTIuNSA0MXQtMTkuNSA2MnYxMjg5cTAgMzQgMTkuNSA2MnQ1Mi41IDQxcTIxIDkgNDQgOWgxMDQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icHJpbnQiIHVuaWNvZGU9IiYjeGYwMmY7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMzg0IDBoODk2djI1NmgtODk2di0yNTZ6TTM4NCA2NDBoODk2djM4NGgtMTYwcS00MCAwIC02OCAyOHQtMjggNjh2MTYwaC02NDB2LTY0MHpNMTUzNiA1NzZxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjY0IDU3NnYtNDE2cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMjI0di0xNjBxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjBxLTQwIDAgLTY4IDI4dC0yOCA2OA0KdjE2MGgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NDE2cTAgNzkgNTYuNSAxMzUuNXQxMzUuNSA1Ni41aDY0djU0NHEwIDQwIDI4IDY4dDY4IDI4aDY3MnE0MCAwIDg4IC0yMHQ3NiAtNDhsMTUyIC0xNTJxMjggLTI4IDQ4IC03NnQyMCAtODh2LTI1Nmg2NHE3OSAwIDEzNS41IC01Ni41dDU2LjUgLTEzNS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2FtZXJhIiB1bmljb2RlPSImI3hmMDMwOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTk2MCA4NjRxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV0LTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNXQtMjAzLjUgODQuNXQtODQuNSAyMDMuNXQ4NC41IDIwMy41dDIwMy41IDg0LjV6TTE2NjQgMTI4MHExMDYgMCAxODEgLTc1dDc1IC0xODF2LTg5NnEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzVoLTE0MDhxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXY4OTZxMCAxMDYgNzUgMTgxdDE4MSA3NWgyMjRsNTEgMTM2DQpxMTkgNDkgNjkuNSA4NC41dDEwMy41IDM1LjVoNTEycTUzIDAgMTAzLjUgLTM1LjV0NjkuNSAtODQuNWw1MSAtMTM2aDIyNHpNOTYwIDEyOHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9udCIgdW5pY29kZT0iJiN4ZjAzMTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik03MjUgOTc3bC0xNzAgLTQ1MHEzMyAwIDEzNi41IC0ydDE2MC41IC0ycTE5IDAgNTcgMnEtODcgMjUzIC0xODQgNDUyek0wIC0xMjhsMiA3OXEyMyA3IDU2IDEyLjV0NTcgMTAuNXQ0OS41IDE0LjV0NDQuNSAyOXQzMSA1MC41bDIzNyA2MTZsMjgwIDcyNGg3NWg1M3E4IC0xNCAxMSAtMjFsMjA1IC00ODBxMzMgLTc4IDEwNiAtMjU3LjV0MTE0IC0yNzQuNXExNSAtMzQgNTggLTE0NC41dDcyIC0xNjguNXEyMCAtNDUgMzUgLTU3DQpxMTkgLTE1IDg4IC0yOS41dDg0IC0yMC41cTYgLTM4IDYgLTU3cTAgLTUgLTAuNSAtMTMuNXQtMC41IC0xMi41cS02MyAwIC0xOTAgOHQtMTkxIDhxLTc2IDAgLTIxNSAtN3QtMTc4IC04cTAgNDMgNCA3OGwxMzEgMjhxMSAwIDEyLjUgMi41dDE1LjUgMy41dDE0LjUgNC41dDE1IDYuNXQxMSA4dDkgMTF0Mi41IDE0cTAgMTYgLTMxIDk2LjV0LTcyIDE3Ny41dC00MiAxMDBsLTQ1MCAycS0yNiAtNTggLTc2LjUgLTE5NS41dC01MC41IC0xNjIuNQ0KcTAgLTIyIDE0IC0zNy41dDQzLjUgLTI0LjV0NDguNSAtMTMuNXQ1NyAtOC41dDQxIC00cTEgLTE5IDEgLTU4cTAgLTkgLTIgLTI3cS01OCAwIC0xNzQuNSAxMHQtMTc0LjUgMTBxLTggMCAtMjYuNSAtNHQtMjEuNSAtNHEtODAgLTE0IC0xODggLTE0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYm9sZCIgdW5pY29kZT0iJiN4ZjAzMjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik01NTUgMTVxNzQgLTMyIDE0MCAtMzJxMzc2IDAgMzc2IDMzNXEwIDExNCAtNDEgMTgwcS0yNyA0NCAtNjEuNSA3NHQtNjcuNSA0Ni41dC04MC41IDI1dC04NCAxMC41dC05NC41IDJxLTczIDAgLTEwMSAtMTBxMCAtNTMgLTAuNSAtMTU5dC0wLjUgLTE1OHEwIC04IC0xIC02Ny41dC0wLjUgLTk2LjV0NC41IC04My41dDEyIC02Ni41ek01NDEgNzYxcTQyIC03IDEwOSAtN3E4MiAwIDE0MyAxM3QxMTAgNDQuNXQ3NC41IDg5LjV0MjUuNSAxNDINCnEwIDcwIC0yOSAxMjIuNXQtNzkgODJ0LTEwOCA0My41dC0xMjQgMTRxLTUwIDAgLTEzMCAtMTNxMCAtNTAgNCAtMTUxdDQgLTE1MnEwIC0yNyAtMC41IC04MHQtMC41IC03OXEwIC00NiAxIC02OXpNMCAtMTI4bDIgOTRxMTUgNCA4NSAxNnQxMDYgMjdxNyAxMiAxMi41IDI3dDguNSAzMy41dDUuNSAzMi41dDMgMzcuNXQwLjUgMzR2MzUuNXYzMHEwIDk4MiAtMjIgMTAyNXEtNCA4IC0yMiAxNC41dC00NC41IDExdC00OS41IDd0LTQ4LjUgNC41DQp0LTMwLjUgM2wtNCA4M3E5OCAyIDM0MCAxMS41dDM3MyA5LjVxMjMgMCA2OCAtMC41dDY4IC0wLjVxNzAgMCAxMzYuNSAtMTN0MTI4LjUgLTQydDEwOCAtNzF0NzQgLTEwNC41dDI4IC0xMzcuNXEwIC01MiAtMTYuNSAtOTUuNXQtMzkgLTcydC02NC41IC01Ny41dC03MyAtNDV0LTg0IC00MHExNTQgLTM1IDI1Ni41IC0xMzR0MTAyLjUgLTI0OHEwIC0xMDAgLTM1IC0xNzkuNXQtOTMuNSAtMTMwLjV0LTEzOCAtODUuNXQtMTYzLjUgLTQ4LjUNCnQtMTc2IC0xNHEtNDQgMCAtMTMyIDN0LTEzMiAzcS0xMDYgMCAtMzA3IC0xMXQtMjMxIC0xMnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Iml0YWxpYyIgdW5pY29kZT0iJiN4ZjAzMzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0wIC0xMjZsMTcgODVxMjIgNyA2MS41IDE2LjV0NzIgMTl0NTkuNSAyMy41cTI4IDM1IDQxIDEwMXExIDcgNjIgMjg5dDExNCA1NDMuNXQ1MiAyOTYuNXYyNXEtMjQgMTMgLTU0LjUgMTguNXQtNjkuNSA4dC01OCA1LjVsMTkgMTAzcTMzIC0yIDEyMCAtNi41dDE0OS41IC03dDEyMC41IC0yLjVxNDggMCA5OC41IDIuNXQxMjEgN3Q5OC41IDYuNXEtNSAtMzkgLTE5IC04OXEtMzAgLTEwIC0xMDEuNSAtMjguNXQtMTA4LjUgLTMzLjUNCnEtOCAtMTkgLTE0IC00Mi41dC05IC00MHQtNy41IC00NS41dC02LjUgLTQycS0yNyAtMTQ4IC04Ny41IC00MTkuNXQtNzcuNSAtMzU1LjVxLTIgLTkgLTEzIC01OHQtMjAgLTkwdC0xNiAtODMuNXQtNiAtNTcuNWwxIC0xOHExNyAtNCAxODUgLTMxcS0zIC00NCAtMTYgLTk5cS0xMSAwIC0zMi41IC0xLjV0LTMyLjUgLTEuNXEtMjkgMCAtODcgMTB0LTg2IDEwcS0xMzggMiAtMjA2IDJxLTUxIDAgLTE0MyAtOXQtMTIxIC0xMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRleHRfaGVpZ2h0IiB1bmljb2RlPSImI3hmMDM0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDQgMTI4cTMzIDAgNDIgLTE4LjV0LTExIC00NC41bC0xMjYgLTE2MnEtMjAgLTI2IC00OSAtMjZ0LTQ5IDI2bC0xMjYgMTYycS0yMCAyNiAtMTEgNDQuNXQ0MiAxOC41aDgwdjEwMjRoLTgwcS0zMyAwIC00MiAxOC41dDExIDQ0LjVsMTI2IDE2MnEyMCAyNiA0OSAyNnQ0OSAtMjZsMTI2IC0xNjJxMjAgLTI2IDExIC00NC41dC00MiAtMTguNWgtODB2LTEwMjRoODB6TTgxIDE0MDdsNTQgLTI3cTEyIC01IDIxMSAtNXE0NCAwIDEzMiAyDQp0MTMyIDJxMzYgMCAxMDcuNSAtMC41dDEwNy41IC0wLjVoMjkzcTYgMCAyMSAtMC41dDIwLjUgMHQxNiAzdDE3LjUgOXQxNSAxNy41bDQyIDFxNCAwIDE0IC0wLjV0MTQgLTAuNXEyIC0xMTIgMiAtMzM2cTAgLTgwIC01IC0xMDlxLTM5IC0xNCAtNjggLTE4cS0yNSA0NCAtNTQgMTI4cS0zIDkgLTExIDQ4dC0xNC41IDczLjV0LTcuNSAzNS41cS02IDggLTEyIDEyLjV0LTE1LjUgNnQtMTMgMi41dC0xOCAwLjV0LTE2LjUgLTAuNQ0KcS0xNyAwIC02Ni41IDAuNXQtNzQuNSAwLjV0LTY0IC0ydC03MSAtNnEtOSAtODEgLTggLTEzNnEwIC05NCAyIC0zODh0MiAtNDU1cTAgLTE2IC0yLjUgLTcxLjV0MCAtOTEuNXQxMi41IC02OXE0MCAtMjEgMTI0IC00Mi41dDEyMCAtMzcuNXE1IC00MCA1IC01MHEwIC0xNCAtMyAtMjlsLTM0IC0xcS03NiAtMiAtMjE4IDh0LTIwNyAxMHEtNTAgMCAtMTUxIC05dC0xNTIgLTlxLTMgNTEgLTMgNTJ2OXExNyAyNyA2MS41IDQzdDk4LjUgMjl0NzggMjcNCnExOSA0MiAxOSAzODNxMCAxMDEgLTMgMzAzdC0zIDMwM3YxMTdxMCAyIDAuNSAxNS41dDAuNSAyNXQtMSAyNS41dC0zIDI0dC01IDE0cS0xMSAxMiAtMTYyIDEycS0zMyAwIC05MyAtMTJ0LTgwIC0yNnEtMTkgLTEzIC0zNCAtNzIuNXQtMzEuNSAtMTExdC00Mi41IC01My41cS00MiAyNiAtNTYgNDR2MzgzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGV4dF93aWR0aCIgdW5pY29kZT0iJiN4ZjAzNTsiIA0KZD0iTTgxIDE0MDdsNTQgLTI3cTEyIC01IDIxMSAtNXE0NCAwIDEzMiAydDEzMiAycTcwIDAgMjQ2LjUgMXQzMDQuNSAwLjV0MjQ3IC00LjVxMzMgLTEgNTYgMzFsNDIgMXE0IDAgMTQgLTAuNXQxNCAtMC41cTIgLTExMiAyIC0zMzZxMCAtODAgLTUgLTEwOXEtMzkgLTE0IC02OCAtMThxLTI1IDQ0IC01NCAxMjhxLTMgOSAtMTEgNDcuNXQtMTUgNzMuNXQtNyAzNnEtMTAgMTMgLTI3IDE5cS01IDIgLTY2IDJxLTMwIDAgLTkzIDF0LTEwMyAxDQp0LTk0IC0ydC05NiAtN3EtOSAtODEgLTggLTEzNmwxIC0xNTJ2NTJxMCAtNTUgMSAtMTU0dDEuNSAtMTgwdDAuNSAtMTUzcTAgLTE2IC0yLjUgLTcxLjV0MCAtOTEuNXQxMi41IC02OXE0MCAtMjEgMTI0IC00Mi41dDEyMCAtMzcuNXE1IC00MCA1IC01MHEwIC0xNCAtMyAtMjlsLTM0IC0xcS03NiAtMiAtMjE4IDh0LTIwNyAxMHEtNTAgMCAtMTUxIC05dC0xNTIgLTlxLTMgNTEgLTMgNTJ2OXExNyAyNyA2MS41IDQzdDk4LjUgMjl0NzggMjcNCnE3IDE2IDExLjUgNzR0NiAxNDUuNXQxLjUgMTU1dC0wLjUgMTUzLjV0LTAuNSA4OXEwIDcgLTIuNSAyMS41dC0yLjUgMjIuNXEwIDcgMC41IDQ0dDEgNzN0MCA3Ni41dC0zIDY3LjV0LTYuNSAzMnEtMTEgMTIgLTE2MiAxMnEtNDEgMCAtMTYzIC0xMy41dC0xMzggLTI0LjVxLTE5IC0xMiAtMzQgLTcxLjV0LTMxLjUgLTExMS41dC00Mi41IC01NHEtNDIgMjYgLTU2IDQ0djM4M3pNMTMxMCAxMjVxMTIgMCA0MiAtMTkuNXQ1Ny41IC00MS41DQp0NTkuNSAtNDl0MzYgLTMwcTI2IC0yMSAyNiAtNDl0LTI2IC00OXEtNCAtMyAtMzYgLTMwdC01OS41IC00OXQtNTcuNSAtNDEuNXQtNDIgLTE5LjVxLTEzIDAgLTIwLjUgMTAuNXQtMTAgMjguNXQtMi41IDMzLjV0MS41IDMzdDEuNSAxOS41aC0xMDI0cTAgLTIgMS41IC0xOS41dDEuNSAtMzN0LTIuNSAtMzMuNXQtMTAgLTI4LjV0LTIwLjUgLTEwLjVxLTEyIDAgLTQyIDE5LjV0LTU3LjUgNDEuNXQtNTkuNSA0OXQtMzYgMzBxLTI2IDIxIC0yNiA0OQ0KdDI2IDQ5cTQgMyAzNiAzMHQ1OS41IDQ5dDU3LjUgNDEuNXQ0MiAxOS41cTEzIDAgMjAuNSAtMTAuNXQxMCAtMjguNXQyLjUgLTMzLjV0LTEuNSAtMzN0LTEuNSAtMTkuNWgxMDI0cTAgMiAtMS41IDE5LjV0LTEuNSAzM3QyLjUgMzMuNXQxMCAyOC41dDIwLjUgMTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFsaWduX2xlZnQiIHVuaWNvZGU9IiYjeGYwMzY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAxOTJ2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE2NjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxNjY0cTI2IDAgNDUgLTE5dDE5IC00NXpNMTQwOCA1NzZ2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyODBxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxMjgwcTI2IDAgNDUgLTE5dDE5IC00NXpNMTY2NCA5NjB2LTEyOHEwIC0yNiAtMTkgLTQ1DQp0LTQ1IC0xOWgtMTUzNnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE1MzZxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xMjgwIDEzNDR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTExNTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWgxMTUycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFsaWduX2NlbnRlciIgdW5pY29kZT0iJiN4ZjAzNzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNDA4IDU3NnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtODk2cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloODk2cTI2IDAgNDUgLTE5dDE5IC00NXpNMTY2NCA5NjB2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTkNCmgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xMjgwIDEzNDR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTY0MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDY0MHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbGlnbl9yaWdodCIgdW5pY29kZT0iJiN4ZjAzODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDU3NnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDEyODBxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDk2MHYtMTI4cTAgLTI2IC0xOSAtNDUNCnQtNDUgLTE5aC0xNTM2cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTUzNnEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgMTM0NHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTE1MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDExNTJxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWxpZ25fanVzdGlmeSIgdW5pY29kZT0iJiN4ZjAzOTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDU3NnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDk2MHYtMTI4cTAgLTI2IC0xOSAtNDUNCnQtNDUgLTE5aC0xNjY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgMTM0NHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlzdCIgdW5pY29kZT0iJiN4ZjAzYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0yNTYgMjI0di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xOTJxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxOTJxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0yNTYgNjA4di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xOTJxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxOTJxMTMgMCAyMi41IC05LjUNCnQ5LjUgLTIyLjV6TTI1NiA5OTJ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE5MnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgMjI0di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTM0NA0KcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMjU2IDEzNzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE5MnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgNjA4di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjUNCnQyMi41IDkuNWgxMzQ0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiA5OTJ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEzNDRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzQ0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiAxMzc2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMzQ0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkyDQpxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzQ0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZGVudF9sZWZ0IiB1bmljb2RlPSImI3hmMDNiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4NCA5OTJ2LTU3NnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTE0IDAgLTIzIDlsLTI4OCAyODhxLTkgOSAtOSAyM3Q5IDIzbDI4OCAyODhxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDIyNHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTcyOHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE3MjhxMTMgMCAyMi41IC05LjUNCnQ5LjUgLTIyLjV6TTE3OTIgNjA4di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMDg4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTA4OHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgOTkydi0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMDg4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTA4OA0KcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTc5MiAxMzc2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xNzI4cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTcyOHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJpbmRlbnRfcmlnaHQiIHVuaWNvZGU9IiYjeGYwM2M7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzUyIDcwNHEwIC0xNCAtOSAtMjNsLTI4OCAtMjg4cS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djU3NnEwIDEzIDkuNSAyMi41dDIyLjUgOS41cTE0IDAgMjMgLTlsMjg4IC0yODhxOSAtOSA5IC0yM3pNMTc5MiAyMjR2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTE3MjhxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxNzI4cTEzIDAgMjIuNSAtOS41DQp0OS41IC0yMi41ek0xNzkyIDYwOHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODhxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xNzkyIDk5MnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTA4OHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEwODgNCnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgMTM3NnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTcyOHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE3MjhxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmFjZXRpbWVfdmlkZW8iIHVuaWNvZGU9IiYjeGYwM2Q7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAxMTg0di0xMDg4cTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDUgMTlsLTQwMyA0MDN2LTE2NnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtNzA0cS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY3MDRxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDcwNHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtMTY1bDQwMyA0MDJxMTggMTkgNDUgMTlxMTIgMCAyNSAtNQ0KcTM5IC0xNyAzOSAtNTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwaWN0dXJlIiB1bmljb2RlPSImI3hmMDNlOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTY0MCA5NjBxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDU3NnYtNDQ4aC0xNDA4djE5MmwzMjAgMzIwbDE2MCAtMTYwbDUxMiA1MTJ6TTE3NjAgMTI4MGgtMTYwMHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTEyMTZxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxNjAwcTEzIDAgMjIuNSA5LjV0OS41IDIyLjV2MTIxNg0KcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNXpNMTkyMCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNjAwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxNjAwcTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGVuY2lsIiB1bmljb2RlPSImI3hmMDQwOyIgDQpkPSJNMzYzIDBsOTEgOTFsLTIzNSAyMzVsLTkxIC05MXYtMTA3aDEyOHYtMTI4aDEwN3pNODg2IDkyOHEwIDIyIC0yMiAyMnEtMTAgMCAtMTcgLTdsLTU0MiAtNTQycS03IC03IC03IC0xN3EwIC0yMiAyMiAtMjJxMTAgMCAxNyA3bDU0MiA1NDJxNyA3IDcgMTd6TTgzMiAxMTIwbDQxNiAtNDE2bC04MzIgLTgzMmgtNDE2djQxNnpNMTUxNSAxMDI0cTAgLTUzIC0zNyAtOTBsLTE2NiAtMTY2bC00MTYgNDE2bDE2NiAxNjVxMzYgMzggOTAgMzgNCnE1MyAwIDkxIC0zOGwyMzUgLTIzNHEzNyAtMzkgMzcgLTkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWFwX21hcmtlciIgdW5pY29kZT0iJiN4ZjA0MTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik03NjggODk2cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMTAyNCA4OTZxMCAtMTA5IC0zMyAtMTc5bC0zNjQgLTc3NHEtMTYgLTMzIC00Ny41IC01MnQtNjcuNSAtMTl0LTY3LjUgMTl0LTQ2LjUgNTJsLTM2NSA3NzRxLTMzIDcwIC0zMyAxNzlxMCAyMTIgMTUwIDM2MnQzNjIgMTUwdDM2MiAtMTUwdDE1MCAtMzYyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWRqdXN0IiB1bmljb2RlPSImI3hmMDQyOyIgDQpkPSJNNzY4IDk2djEwODhxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGludCIgdW5pY29kZT0iJiN4ZjA0MzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik01MTIgMzg0cTAgMzYgLTIwIDY5cS0xIDEgLTE1LjUgMjIuNXQtMjUuNSAzOHQtMjUgNDR0LTIxIDUwLjVxLTQgMTYgLTIxIDE2dC0yMSAtMTZxLTcgLTIzIC0yMSAtNTAuNXQtMjUgLTQ0dC0yNS41IC0zOHQtMTUuNSAtMjIuNXEtMjAgLTMzIC0yMCAtNjlxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMjQgNTEycTAgLTIxMiAtMTUwIC0zNjJ0LTM2MiAtMTUwdC0zNjIgMTUwdC0xNTAgMzYyDQpxMCAxNDUgODEgMjc1cTYgOSA2Mi41IDkwLjV0MTAxIDE1MXQ5OS41IDE3OHQ4MyAyMDEuNXE5IDMwIDM0IDQ3dDUxIDE3dDUxLjUgLTE3dDMzLjUgLTQ3cTI4IC05MyA4MyAtMjAxLjV0OTkuNSAtMTc4dDEwMSAtMTUxdDYyLjUgLTkwLjVxODEgLTEyNyA4MSAtMjc1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZWRpdCIgdW5pY29kZT0iJiN4ZjA0NDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04ODggMzUybDExNiAxMTZsLTE1MiAxNTJsLTExNiAtMTE2di01Nmg5NnYtOTZoNTZ6TTEzMjggMTA3MnEtMTYgMTYgLTMzIC0xbC0zNTAgLTM1MHEtMTcgLTE3IC0xIC0zM3QzMyAxbDM1MCAzNTBxMTcgMTcgMSAzM3pNMTQwOCA0Nzh2LTE5MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtODMycS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY4MzJxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDgzMg0KcTYzIDAgMTE3IC0yNXExNSAtNyAxOCAtMjNxMyAtMTcgLTkgLTI5bC00OSAtNDlxLTE0IC0xNCAtMzIgLThxLTIzIDYgLTQ1IDZoLTgzMnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzdjEyNnEwIDEzIDkgMjJsNjQgNjRxMTUgMTUgMzUgN3QyMCAtMjl6TTEzMTIgMTIxNmwyODggLTI4OGwtNjcyIC02NzJoLTI4OHYyODh6TTE3NTYgMTA4NGwtOTIgLTkyDQpsLTI4OCAyODhsOTIgOTJxMjggMjggNjggMjh0NjggLTI4bDE1MiAtMTUycTI4IC0yOCAyOCAtNjh0LTI4IC02OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNoYXJlIiB1bmljb2RlPSImI3hmMDQ1OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE0MDggNTQ3di0yNTlxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWgyNTV2MHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjVxMCAtMjcgLTI2IC0zMnEtNzcgLTI2IC0xMzMgLTYwcS0xMCAtNCAtMTYgLTRoLTExMnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzINCnE2NiAwIDExMyA0N3Q0NyAxMTN2MjE0cTAgMTkgMTggMjlxMjggMTMgNTQgMzdxMTYgMTYgMzUgOHEyMSAtOSAyMSAtMjl6TTE2NDUgMTA0M2wtMzg0IC0zODRxLTE4IC0xOSAtNDUgLTE5cS0xMiAwIC0yNSA1cS0zOSAxNyAtMzkgNTl2MTkyaC0xNjBxLTMyMyAwIC00MzggLTEzMXEtMTE5IC0xMzcgLTc0IC00NzNxMyAtMjMgLTIwIC0zNHEtOCAtMiAtMTIgLTJxLTE2IDAgLTI2IDEzcS0xMCAxNCAtMjEgMzF0LTM5LjUgNjguNXQtNDkuNSA5OS41DQp0LTM4LjUgMTE0dC0xNy41IDEyMnEwIDQ5IDMuNSA5MXQxNCA5MHQyOCA4OHQ0NyA4MS41dDY4LjUgNzR0OTQuNSA2MS41dDEyNC41IDQ4LjV0MTU5LjUgMzAuNXQxOTYuNSAxMWgxNjB2MTkycTAgNDIgMzkgNTlxMTMgNSAyNSA1cTI2IDAgNDUgLTE5bDM4NCAtMzg0cTE5IC0xOSAxOSAtNDV0LTE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZWNrIiB1bmljb2RlPSImI3hmMDQ2OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE0MDggNjA2di0zMThxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg4MzJxNjMgMCAxMTcgLTI1cTE1IC03IDE4IC0yM3EzIC0xNyAtOSAtMjlsLTQ5IC00OXEtMTAgLTEwIC0yMyAtMTBxLTMgMCAtOSAycS0yMyA2IC00NSA2aC04MzJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMg0KcTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzdjI1NHEwIDEzIDkgMjJsNjQgNjRxMTAgMTAgMjMgMTBxNiAwIDEyIC0zcTIwIC04IDIwIC0yOXpNMTYzOSAxMDk1bC04MTQgLTgxNHEtMjQgLTI0IC01NyAtMjR0LTU3IDI0bC00MzAgNDMwcS0yNCAyNCAtMjQgNTd0MjQgNTdsMTEwIDExMHEyNCAyNCA1NyAyNHQ1NyAtMjRsMjYzIC0yNjNsNjQ3IDY0N3EyNCAyNCA1NyAyNHQ1NyAtMjRsMTEwIC0xMTANCnEyNCAtMjQgMjQgLTU3dC0yNCAtNTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtb3ZlIiB1bmljb2RlPSImI3hmMDQ3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNjQwcTAgLTI2IC0xOSAtNDVsLTI1NiAtMjU2cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djEyOGgtMzg0di0zODRoMTI4cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1bC0yNTYgLTI1NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloMTI4djM4NGgtMzg0di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMjU2IDI1NnEtMTkgMTkgLTE5IDQ1DQp0MTkgNDVsMjU2IDI1NnExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjhoMzg0djM4NGgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsMjU2IDI1NnExOSAxOSA0NSAxOXQ0NSAtMTlsMjU2IC0yNTZxMTkgLTE5IDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTEyOHYtMzg0aDM4NHYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsMjU2IC0yNTZxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0ZXBfYmFja3dhcmQiIHVuaWNvZGU9IiYjeGYwNDg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNOTc5IDEzOTVxMTkgMTkgMzIgMTN0MTMgLTMydi0xNDcycTAgLTI2IC0xMyAtMzJ0LTMyIDEzbC03MTAgNzEwcS05IDkgLTEzIDE5di02NzhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDA4cTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtNjc4cTQgMTAgMTMgMTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmYXN0X2JhY2t3YXJkIiB1bmljb2RlPSImI3hmMDQ5OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDcgMTM5NXExOSAxOSAzMiAxM3QxMyAtMzJ2LTE0NzJxMCAtMjYgLTEzIC0zMnQtMzIgMTNsLTcxMCA3MTBxLTkgOSAtMTMgMTl2LTcxMHEwIC0yNiAtMTMgLTMydC0zMiAxM2wtNzEwIDcxMHEtOSA5IC0xMyAxOXYtNjc4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTQwOHEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTY3OHE0IDEwIDEzIDE5bDcxMCA3MTANCnExOSAxOSAzMiAxM3QxMyAtMzJ2LTcxMHE0IDEwIDEzIDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmFja3dhcmQiIHVuaWNvZGU9IiYjeGYwNGE7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTYxOSAxMzk1cTE5IDE5IDMyIDEzdDEzIC0zMnYtMTQ3MnEwIC0yNiAtMTMgLTMydC0zMiAxM2wtNzEwIDcxMHEtOSA5IC0xMyAxOXYtNzEwcTAgLTI2IC0xMyAtMzJ0LTMyIDEzbC03MTAgNzEwcS0xOSAxOSAtMTkgNDV0MTkgNDVsNzEwIDcxMHExOSAxOSAzMiAxM3QxMyAtMzJ2LTcxMHE0IDEwIDEzIDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGxheSIgdW5pY29kZT0iJiN4ZjA0YjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xMzg0IDYwOWwtMTMyOCAtNzM4cS0yMyAtMTMgLTM5LjUgLTN0LTE2LjUgMzZ2MTQ3MnEwIDI2IDE2LjUgMzZ0MzkuNSAtM2wxMzI4IC03MzhxMjMgLTEzIDIzIC0zMXQtMjMgLTMxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGF1c2UiIHVuaWNvZGU9IiYjeGYwNGM7IiANCmQ9Ik0xNTM2IDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDA4cTAgMjYgMTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXpNNjQwIDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDA4cTAgMjYgMTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0b3AiIHVuaWNvZGU9IiYjeGYwNGQ7IiANCmQ9Ik0xNTM2IDEzNDR2LTE0MDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDA4cS0yNiAwIC00NSAxOXQtMTkgNDV2MTQwOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA0ZTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik00NSAtMTE1cS0xOSAtMTkgLTMyIC0xM3QtMTMgMzJ2MTQ3MnEwIDI2IDEzIDMydDMyIC0xM2w3MTAgLTcxMHE5IC05IDEzIC0xOXY3MTBxMCAyNiAxMyAzMnQzMiAtMTNsNzEwIC03MTBxMTkgLTE5IDE5IC00NXQtMTkgLTQ1bC03MTAgLTcxMHEtMTkgLTE5IC0zMiAtMTN0LTEzIDMydjcxMHEtNCAtMTAgLTEzIC0xOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhc3RfZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA1MDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik00NSAtMTE1cS0xOSAtMTkgLTMyIC0xM3QtMTMgMzJ2MTQ3MnEwIDI2IDEzIDMydDMyIC0xM2w3MTAgLTcxMHE5IC05IDEzIC0xOXY3MTBxMCAyNiAxMyAzMnQzMiAtMTNsNzEwIC03MTBxOSAtOSAxMyAtMTl2Njc4cTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtMTQwOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djY3OHEtNCAtMTAgLTEzIC0xOWwtNzEwIC03MTANCnEtMTkgLTE5IC0zMiAtMTN0LTEzIDMydjcxMHEtNCAtMTAgLTEzIC0xOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0ZXBfZm9yd2FyZCIgdW5pY29kZT0iJiN4ZjA1MTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik00NSAtMTE1cS0xOSAtMTkgLTMyIC0xM3QtMTMgMzJ2MTQ3MnEwIDI2IDEzIDMydDMyIC0xM2w3MTAgLTcxMHE5IC05IDEzIC0xOXY2NzhxMCAyNiAxOSA0NXQ0NSAxOWgxMjhxMjYgMCA0NSAtMTl0MTkgLTQ1di0xNDA4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4cS0yNiAwIC00NSAxOXQtMTkgNDV2Njc4cS00IC0xMCAtMTMgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZWplY3QiIHVuaWNvZGU9IiYjeGYwNTI7IiBob3Jpei1hZHYteD0iMTUzOCIgDQpkPSJNMTQgNTU3bDcxMCA3MTBxMTkgMTkgNDUgMTl0NDUgLTE5bDcxMCAtNzEwcTE5IC0xOSAxMyAtMzJ0LTMyIC0xM2gtMTQ3MnEtMjYgMCAtMzIgMTN0MTMgMzJ6TTE0NzMgMGgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9sZWZ0IiB1bmljb2RlPSImI3hmMDUzOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTExNzEgMTIzNWwtNTMxIC01MzFsNTMxIC01MzFxMTkgLTE5IDE5IC00NXQtMTkgLTQ1bC0xNjYgLTE2NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC03NDIgNzQycS0xOSAxOSAtMTkgNDV0MTkgNDVsNzQyIDc0MnExOSAxOSA0NSAxOXQ0NSAtMTlsMTY2IC0xNjZxMTkgLTE5IDE5IC00NXQtMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9yaWdodCIgdW5pY29kZT0iJiN4ZjA1NDsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTA3IDY1OWwtNzQyIC03NDJxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtMTY2IDE2NnEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDUzMSA1MzFsLTUzMSA1MzFxLTE5IDE5IC0xOSA0NXQxOSA0NWwxNjYgMTY2cTE5IDE5IDQ1IDE5dDQ1IC0xOWw3NDIgLTc0MnExOSAtMTkgMTkgLTQ1dC0xOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbHVzX3NpZ24iIHVuaWNvZGU9IiYjeGYwNTU7IiANCmQ9Ik0xMjE2IDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC0yNTZ2MjU2cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMjU2aC0yNTZxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgyNTZ2LTI1NnEwIC0yNiAxOSAtNDV0NDUgLTE5aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1djI1NmgyNTZxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41DQp0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1pbnVzX3NpZ24iIHVuaWNvZGU9IiYjeGYwNTY7IiANCmQ9Ik0xMjE2IDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC03NjhxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg3NjhxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41DQp0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlbW92ZV9zaWduIiB1bmljb2RlPSImI3hmMDU3OyIgDQpkPSJNMTE0OSA0MTRxMCAyNiAtMTkgNDVsLTE4MSAxODFsMTgxIDE4MXExOSAxOSAxOSA0NXEwIDI3IC0xOSA0NmwtOTAgOTBxLTE5IDE5IC00NiAxOXEtMjYgMCAtNDUgLTE5bC0xODEgLTE4MWwtMTgxIDE4MXEtMTkgMTkgLTQ1IDE5cS0yNyAwIC00NiAtMTlsLTkwIC05MHEtMTkgLTE5IC0xOSAtNDZxMCAtMjYgMTkgLTQ1bDE4MSAtMTgxbC0xODEgLTE4MXEtMTkgLTE5IC0xOSAtNDVxMCAtMjcgMTkgLTQ2bDkwIC05MHExOSAtMTkgNDYgLTE5DQpxMjYgMCA0NSAxOWwxODEgMTgxbDE4MSAtMTgxcTE5IC0xOSA0NSAtMTlxMjcgMCA0NiAxOWw5MCA5MHExOSAxOSAxOSA0NnpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJva19zaWduIiB1bmljb2RlPSImI3hmMDU4OyIgDQpkPSJNMTI4NCA4MDJxMCAyOCAtMTggNDZsLTkxIDkwcS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtNDA4IC00MDdsLTIyNiAyMjZxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC05MSAtOTBxLTE4IC0xOCAtMTggLTQ2cTAgLTI3IDE4IC00NWwzNjIgLTM2MnExOSAtMTkgNDUgLTE5cTI3IDAgNDYgMTlsNTQzIDU0M3ExOCAxOCAxOCA0NXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwMw0KdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InF1ZXN0aW9uX3NpZ24iIHVuaWNvZGU9IiYjeGYwNTk7IiANCmQ9Ik04OTYgMTYwdjE5MnEwIDE0IC05IDIzdC0yMyA5aC0xOTJxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3pNMTE1MiA4MzJxMCA4OCAtNTUuNSAxNjN0LTEzOC41IDExNnQtMTcwIDQxcS0yNDMgMCAtMzcxIC0yMTNxLTE1IC0yNCA4IC00MmwxMzIgLTEwMHE3IC02IDE5IC02cTE2IDAgMjUgMTJxNTMgNjggODYgOTJxMzQgMjQgODYgMjRxNDggMCA4NS41IC0yNnQzNy41IC01OQ0KcTAgLTM4IC0yMCAtNjF0LTY4IC00NXEtNjMgLTI4IC0xMTUuNSAtODYuNXQtNTIuNSAtMTI1LjV2LTM2cTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3EwIDE5IDIxLjUgNDkuNXQ1NC41IDQ5LjVxMzIgMTggNDkgMjguNXQ0NiAzNXQ0NC41IDQ4dDI4IDYwLjV0MTIuNSA4MXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjUNCnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluZm9fc2lnbiIgdW5pY29kZT0iJiN4ZjA1YTsiIA0KZD0iTTEwMjQgMTYwdjE2MHEwIDE0IC05IDIzdC0yMyA5aC05NnY1MTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE2MHEwIC0xNCA5IC0yM3QyMyAtOWg5NnYtMzIwaC05NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xNjBxMCAtMTQgOSAtMjN0MjMgLTloNDQ4cTE0IDAgMjMgOXQ5IDIzek04OTYgMTA1NnYxNjBxMCAxNCAtOSAyM3QtMjMgOWgtMTkycS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE2MHEwIC0xNCA5IC0yMw0KdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzY3JlZW5zaG90IiB1bmljb2RlPSImI3hmMDViOyIgDQpkPSJNMTE5NyA1MTJoLTEwOXEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDEwOXEtMzIgMTA4IC0xMTIuNSAxODguNXQtMTg4LjUgMTEyLjV2LTEwOXEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEwOXEtMTA4IC0zMiAtMTg4LjUgLTExMi41dC0xMTIuNSAtMTg4LjVoMTA5cTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTA5DQpxMzIgLTEwOCAxMTIuNSAtMTg4LjV0MTg4LjUgLTExMi41djEwOXEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTEwOXExMDggMzIgMTg4LjUgMTEyLjV0MTEyLjUgMTg4LjV6TTE1MzYgNzA0di0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNDNxLTM3IC0xNjEgLTE1NC41IC0yNzguNXQtMjc4LjUgLTE1NC41di0xNDNxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNDMNCnEtMTYxIDM3IC0yNzguNSAxNTQuNXQtMTU0LjUgMjc4LjVoLTE0M3EtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0M3EzNyAxNjEgMTU0LjUgMjc4LjV0Mjc4LjUgMTU0LjV2MTQzcTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtMTQzcTE2MSAtMzcgMjc4LjUgLTE1NC41dDE1NC41IC0yNzguNWgxNDNxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVtb3ZlX2NpcmNsZSIgdW5pY29kZT0iJiN4ZjA1YzsiIA0KZD0iTTEwOTcgNDU3bC0xNDYgLTE0NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xMzcgMTM3bC0xMzcgLTEzN3EtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xNDYgMTQ2cS0xMCAxMCAtMTAgMjN0MTAgMjNsMTM3IDEzN2wtMTM3IDEzN3EtMTAgMTAgLTEwIDIzdDEwIDIzbDE0NiAxNDZxMTAgMTAgMjMgMTB0MjMgLTEwbDEzNyAtMTM3bDEzNyAxMzdxMTAgMTAgMjMgMTB0MjMgLTEwbDE0NiAtMTQ2cTEwIC0xMCAxMCAtMjN0LTEwIC0yMw0KbC0xMzcgLTEzN2wxMzcgLTEzN3ExMCAtMTAgMTAgLTIzdC0xMCAtMjN6TTEzMTIgNjQwcTAgMTQ4IC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3QtMjczIC03M3QtMTk4IC0xOTh0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNQ0KdDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im9rX2NpcmNsZSIgdW5pY29kZT0iJiN4ZjA1ZDsiIA0KZD0iTTExNzEgNzIzbC00MjIgLTQyMnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0yOTQgMjk0cS0xOSAxOSAtMTkgNDV0MTkgNDVsMTAyIDEwMnExOSAxOSA0NSAxOXQ0NSAtMTlsMTQ3IC0xNDdsMjc1IDI3NXExOSAxOSA0NSAxOXQ0NSAtMTlsMTAyIC0xMDJxMTkgLTE5IDE5IC00NXQtMTkgLTQ1ek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTgNCnQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiYW5fY2lyY2xlIiB1bmljb2RlPSImI3hmMDVlOyIgDQpkPSJNMTMxMiA2NDNxMCAxNjEgLTg3IDI5NWwtNzU0IC03NTNxMTM3IC04OSAyOTcgLTg5cTExMSAwIDIxMS41IDQzLjV0MTczLjUgMTE2LjV0MTE2IDE3NC41dDQzIDIxMi41ek0zMTMgMzQ0bDc1NSA3NTRxLTEzNSA5MSAtMzAwIDkxcS0xNDggMCAtMjczIC03M3QtMTk4IC0xOTl0LTczIC0yNzRxMCAtMTYyIDg5IC0yOTl6TTE1MzYgNjQzcTAgLTE1NyAtNjEgLTMwMHQtMTYzLjUgLTI0NnQtMjQ1IC0xNjR0LTI5OC41IC02MXQtMjk4LjUgNjENCnQtMjQ1IDE2NHQtMTYzLjUgMjQ2dC02MSAzMDB0NjEgMjk5LjV0MTYzLjUgMjQ1LjV0MjQ1IDE2NHQyOTguNSA2MXQyOTguNSAtNjF0MjQ1IC0xNjR0MTYzLjUgLTI0NS41dDYxIC0yOTkuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFycm93X2xlZnQiIHVuaWNvZGU9IiYjeGYwNjA7IiANCmQ9Ik0xNTM2IDY0MHYtMTI4cTAgLTUzIC0zMi41IC05MC41dC04NC41IC0zNy41aC03MDRsMjkzIC0yOTRxMzggLTM2IDM4IC05MHQtMzggLTkwbC03NSAtNzZxLTM3IC0zNyAtOTAgLTM3cS01MiAwIC05MSAzN2wtNjUxIDY1MnEtMzcgMzcgLTM3IDkwcTAgNTIgMzcgOTFsNjUxIDY1MHEzOCAzOCA5MSAzOHE1MiAwIDkwIC0zOGw3NSAtNzRxMzggLTM4IDM4IC05MXQtMzggLTkxbC0yOTMgLTI5M2g3MDRxNTIgMCA4NC41IC0zNy41DQp0MzIuNSAtOTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFycm93X3JpZ2h0IiB1bmljb2RlPSImI3hmMDYxOyIgDQpkPSJNMTQ3MiA1NzZxMCAtNTQgLTM3IC05MWwtNjUxIC02NTFxLTM5IC0zNyAtOTEgLTM3cS01MSAwIC05MCAzN2wtNzUgNzVxLTM4IDM4IC0zOCA5MXQzOCA5MWwyOTMgMjkzaC03MDRxLTUyIDAgLTg0LjUgMzcuNXQtMzIuNSA5MC41djEyOHEwIDUzIDMyLjUgOTAuNXQ4NC41IDM3LjVoNzA0bC0yOTMgMjk0cS0zOCAzNiAtMzggOTB0MzggOTBsNzUgNzVxMzggMzggOTAgMzhxNTMgMCA5MSAtMzhsNjUxIC02NTFxMzcgLTM1IDM3IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFycm93X3VwIiB1bmljb2RlPSImI3hmMDYyOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE2MTEgNTY1cTAgLTUxIC0zNyAtOTBsLTc1IC03NXEtMzggLTM4IC05MSAtMzhxLTU0IDAgLTkwIDM4bC0yOTQgMjkzdi03MDRxMCAtNTIgLTM3LjUgLTg0LjV0LTkwLjUgLTMyLjVoLTEyOHEtNTMgMCAtOTAuNSAzMi41dC0zNy41IDg0LjV2NzA0bC0yOTQgLTI5M3EtMzYgLTM4IC05MCAtMzh0LTkwIDM4bC03NSA3NXEtMzggMzggLTM4IDkwcTAgNTMgMzggOTFsNjUxIDY1MXEzNSAzNyA5MCAzN3E1NCAwIDkxIC0zN2w2NTEgLTY1MQ0KcTM3IC0zOSAzNyAtOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvd19kb3duIiB1bmljb2RlPSImI3hmMDYzOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE2MTEgNzA0cTAgLTUzIC0zNyAtOTBsLTY1MSAtNjUycS0zOSAtMzcgLTkxIC0zN3EtNTMgMCAtOTAgMzdsLTY1MSA2NTJxLTM4IDM2IC0zOCA5MHEwIDUzIDM4IDkxbDc0IDc1cTM5IDM3IDkxIDM3cTUzIDAgOTAgLTM3bDI5NCAtMjk0djcwNHEwIDUyIDM4IDkwdDkwIDM4aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB2LTcwNGwyOTQgMjk0cTM3IDM3IDkwIDM3cTUyIDAgOTEgLTM3bDc1IC03NXEzNyAtMzkgMzcgLTkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hhcmVfYWx0IiB1bmljb2RlPSImI3hmMDY0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgODk2cTAgLTI2IC0xOSAtNDVsLTUxMiAtNTEycS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI1NmgtMjI0cS05OCAwIC0xNzUuNSAtNnQtMTU0IC0yMS41dC0xMzMgLTQyLjV0LTEwNS41IC02OS41dC04MCAtMTAxdC00OC41IC0xMzguNXQtMTcuNSAtMTgxcTAgLTU1IDUgLTEyM3EwIC02IDIuNSAtMjMuNXQyLjUgLTI2LjVxMCAtMTUgLTguNSAtMjV0LTIzLjUgLTEwcS0xNiAwIC0yOCAxN3EtNyA5IC0xMyAyMg0KdC0xMy41IDMwdC0xMC41IDI0cS0xMjcgMjg1IC0xMjcgNDUxcTAgMTk5IDUzIDMzM3ExNjIgNDAzIDg3NSA0MDNoMjI0djI1NnEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWw1MTIgLTUxMnExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVzaXplX2Z1bGwiIHVuaWNvZGU9IiYjeGYwNjU7IiANCmQ9Ik03NTUgNDgwcTAgLTEzIC0xMCAtMjNsLTMzMiAtMzMybDE0NCAtMTQ0cTE5IC0xOSAxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC00NDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY0NDhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsMTQ0IC0xNDRsMzMyIDMzMnExMCAxMCAyMyAxMHQyMyAtMTBsMTE0IC0xMTRxMTAgLTEwIDEwIC0yM3pNMTUzNiAxMzQ0di00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMTQ0IDE0NGwtMzMyIC0zMzINCnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xMTQgMTE0cS0xMCAxMCAtMTAgMjN0MTAgMjNsMzMyIDMzMmwtMTQ0IDE0NHEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5aDQ0OHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXNpemVfc21hbGwiIHVuaWNvZGU9IiYjeGYwNjY7IiANCmQ9Ik03NjggNTc2di00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtMTQ0IDE0NGwtMzMyIC0zMzJxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTE0IDExNHEtMTAgMTAgLTEwIDIzdDEwIDIzbDMzMiAzMzJsLTE0NCAxNDRxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWg0NDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNTIzIDEyNDhxMCAtMTMgLTEwIC0yM2wtMzMyIC0zMzJsMTQ0IC0xNDRxMTkgLTE5IDE5IC00NXQtMTkgLTQ1DQp0LTQ1IC0xOWgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgMjYgMTkgNDV0NDUgMTl0NDUgLTE5bDE0NCAtMTQ0bDMzMiAzMzJxMTAgMTAgMjMgMTB0MjMgLTEwbDExNCAtMTE0cTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbHVzIiB1bmljb2RlPSImI3hmMDY3OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDggODAwdi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC00MTZ2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2MTkycTAgNDAgMjggNjh0NjggMjhoNDE2djQxNnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh2LTQxNmg0MTZxNDAgMCA2OCAtMjh0MjggLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWludXMiIHVuaWNvZGU9IiYjeGYwNjg7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTQwOCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEyMTZxLTQwIDAgLTY4IDI4dC0yOCA2OHYxOTJxMCA0MCAyOCA2OHQ2OCAyOGgxMjE2cTQwIDAgNjggLTI4dDI4IC02OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFzdGVyaXNrIiB1bmljb2RlPSImI3hmMDY5OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE0ODIgNDg2cTQ2IC0yNiA1OS41IC03Ny41dC0xMi41IC05Ny41bC02NCAtMTEwcS0yNiAtNDYgLTc3LjUgLTU5LjV0LTk3LjUgMTIuNWwtMjY2IDE1M3YtMzA3cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTI4cS01MiAwIC05MCAzOHQtMzggOTB2MzA3bC0yNjYgLTE1M3EtNDYgLTI2IC05Ny41IC0xMi41dC03Ny41IDU5LjVsLTY0IDExMHEtMjYgNDYgLTEyLjUgOTcuNXQ1OS41IDc3LjVsMjY2IDE1NGwtMjY2IDE1NA0KcS00NiAyNiAtNTkuNSA3Ny41dDEyLjUgOTcuNWw2NCAxMTBxMjYgNDYgNzcuNSA1OS41dDk3LjUgLTEyLjVsMjY2IC0xNTN2MzA3cTAgNTIgMzggOTB0OTAgMzhoMTI4cTUyIDAgOTAgLTM4dDM4IC05MHYtMzA3bDI2NiAxNTNxNDYgMjYgOTcuNSAxMi41dDc3LjUgLTU5LjVsNjQgLTExMHEyNiAtNDYgMTIuNSAtOTcuNXQtNTkuNSAtNzcuNWwtMjY2IC0xNTR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJleGNsYW1hdGlvbl9zaWduIiB1bmljb2RlPSImI3hmMDZhOyIgDQpkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNODk2IDE2MXYxOTBxMCAxNCAtOSAyMy41dC0yMiA5LjVoLTE5MnEtMTMgMCAtMjMgLTEwdC0xMCAtMjN2LTE5MHEwIC0xMyAxMCAtMjN0MjMgLTEwaDE5Mg0KcTEzIDAgMjIgOS41dDkgMjMuNXpNODk0IDUwNWwxOCA2MjFxMCAxMiAtMTAgMThxLTEwIDggLTI0IDhoLTIyMHEtMTQgMCAtMjQgLThxLTEwIC02IC0xMCAtMThsMTcgLTYyMXEwIC0xMCAxMCAtMTcuNXQyNCAtNy41aDE4NXExNCAwIDIzLjUgNy41dDEwLjUgMTcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImdpZnQiIHVuaWNvZGU9IiYjeGYwNmI7IiANCmQ9Ik05MjggMTgwdjU2djQ2OHYxOTJoLTMyMHYtMTkydi00Njh2LTU2cTAgLTI1IDE4IC0zOC41dDQ2IC0xMy41aDE5MnEyOCAwIDQ2IDEzLjV0MTggMzguNXpNNDcyIDEwMjRoMTk1bC0xMjYgMTYxcS0yNiAzMSAtNjkgMzFxLTQwIDAgLTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh6TTExNjAgMTEyMHEwIDQwIC0yOCA2OHQtNjggMjhxLTQzIDAgLTY5IC0zMWwtMTI1IC0xNjFoMTk0cTQwIDAgNjggMjh0MjggNjh6TTE1MzYgODY0di0zMjANCnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtNDE2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTA4OHEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtOTZxLTE0IDAgLTIzIDl0LTkgMjN2MzIwcTAgMTQgOSAyM3QyMyA5aDQ0MHEtOTMgMCAtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjVxMTA3IDAgMTY4IC03N2wxMjggLTE2NWwxMjggMTY1cTYxIDc3IDE2OCA3N3E5MyAwIDE1OC41IC02NS41dDY1LjUgLTE1OC41DQp0LTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNWg0NDBxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImxlYWYiIHVuaWNvZGU9IiYjeGYwNmM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5cS0xNzIgMCAtMzE4IC00OS41dC0yNTkuNSAtMTM0dC0yMzUuNSAtMjE5LjVxLTE5IC0yMSAtMTkgLTQ1cTAgLTI2IDE5IC00NXQ0NSAtMTlxMjQgMCA0NSAxOXEyNyAyNCA3NCA3MXQ2NyA2NnExMzcgMTI0IDI2OC41IDE3NnQzMTMuNSA1MnEyNiAwIDQ1IDE5dDE5IDQ1ek0xNzkyIDEwMzBxMCAtOTUgLTIwIC0xOTNxLTQ2IC0yMjQgLTE4NC41IC0zODN0LTM1Ny41IC0yNjgNCnEtMjE0IC0xMDggLTQzOCAtMTA4cS0xNDggMCAtMjg2IDQ3cS0xNSA1IC04OCA0MnQtOTYgMzdxLTE2IDAgLTM5LjUgLTMydC00NSAtNzB0LTUyLjUgLTcwdC02MCAtMzJxLTQzIDAgLTYzLjUgMTcuNXQtNDUuNSA1OS41cS0yIDQgLTYgMTF0LTUuNSAxMHQtMyA5LjV0LTEuNSAxMy41cTAgMzUgMzEgNzMuNXQ2OCA2NS41dDY4IDU2dDMxIDQ4cTAgNCAtMTQgMzh0LTE2IDQ0cS05IDUxIC05IDEwNHEwIDExNSA0My41IDIyMHQxMTkgMTg0LjUNCnQxNzAuNSAxMzl0MjA0IDk1LjVxNTUgMTggMTQ1IDI1LjV0MTc5LjUgOXQxNzguNSA2dDE2My41IDI0dDExMy41IDU2LjVsMjkuNSAyOS41dDI5LjUgMjh0MjcgMjB0MzYuNSAxNnQ0My41IDQuNXEzOSAwIDcwLjUgLTQ2dDQ3LjUgLTExMnQyNCAtMTI0dDggLTk2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlyZSIgdW5pY29kZT0iJiN4ZjA2ZDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xNDA4IC0xNjB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTM0NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTM0NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgODk2cTAgLTc4IC0yNC41IC0xNDR0LTY0IC0xMTIuNXQtODcuNSAtODh0LTk2IC03Ny41dC04Ny41IC03MnQtNjQgLTgxLjV0LTI0LjUgLTk2LjVxMCAtOTYgNjcgLTIyNGwtNCAxbDEgLTENCnEtOTAgNDEgLTE2MCA4M3QtMTM4LjUgMTAwdC0xMTMuNSAxMjIuNXQtNzIuNSAxNTAuNXQtMjcuNSAxODRxMCA3OCAyNC41IDE0NHQ2NCAxMTIuNXQ4Ny41IDg4dDk2IDc3LjV0ODcuNSA3MnQ2NCA4MS41dDI0LjUgOTYuNXEwIDk0IC02NiAyMjRsMyAtMWwtMSAxcTkwIC00MSAxNjAgLTgzdDEzOC41IC0xMDB0MTEzLjUgLTEyMi41dDcyLjUgLTE1MC41dDI3LjUgLTE4NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImV5ZV9vcGVuIiB1bmljb2RlPSImI3hmMDZlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2NjQgNTc2cS0xNTIgMjM2IC0zODEgMzUzcTYxIC0xMDQgNjEgLTIyNXEwIC0xODUgLTEzMS41IC0zMTYuNXQtMzE2LjUgLTEzMS41dC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxMjEgNjEgMjI1cS0yMjkgLTExNyAtMzgxIC0zNTNxMTMzIC0yMDUgMzMzLjUgLTMyNi41dDQzNC41IC0xMjEuNXQ0MzQuNSAxMjEuNXQzMzMuNSAzMjYuNXpNOTQ0IDk2MHEwIDIwIC0xNCAzNHQtMzQgMTRxLTEyNSAwIC0yMTQuNSAtODkuNQ0KdC04OS41IC0yMTQuNXEwIC0yMCAxNCAtMzR0MzQgLTE0dDM0IDE0dDE0IDM0cTAgODYgNjEgMTQ3dDE0NyA2MXEyMCAwIDM0IDE0dDE0IDM0ek0xNzkyIDU3NnEwIC0zNCAtMjAgLTY5cS0xNDAgLTIzMCAtMzc2LjUgLTM2OC41dC00OTkuNSAtMTM4LjV0LTQ5OS41IDEzOXQtMzc2LjUgMzY4cS0yMCAzNSAtMjAgNjl0MjAgNjlxMTQwIDIyOSAzNzYuNSAzNjh0NDk5LjUgMTM5dDQ5OS41IC0xMzl0Mzc2LjUgLTM2OHEyMCAtMzUgMjAgLTY5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXllX2Nsb3NlIiB1bmljb2RlPSImI3hmMDcwOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTU1NSAyMDFsNzggMTQxcS04NyA2MyAtMTM2IDE1OXQtNDkgMjAzcTAgMTIxIDYxIDIyNXEtMjI5IC0xMTcgLTM4MSAtMzUzcTE2NyAtMjU4IDQyNyAtMzc1ek05NDQgOTYwcTAgMjAgLTE0IDM0dC0zNCAxNHEtMTI1IDAgLTIxNC41IC04OS41dC04OS41IC0yMTQuNXEwIC0yMCAxNCAtMzR0MzQgLTE0dDM0IDE0dDE0IDM0cTAgODYgNjEgMTQ3dDE0NyA2MXEyMCAwIDM0IDE0dDE0IDM0ek0xMzA3IDExNTFxMCAtNyAtMSAtOQ0KcS0xMDYgLTE4OSAtMzE2IC01Njd0LTMxNSAtNTY2bC00OSAtODlxLTEwIC0xNiAtMjggLTE2cS0xMiAwIC0xMzQgNzBxLTE2IDEwIC0xNiAyOHEwIDEyIDQ0IDg3cS0xNDMgNjUgLTI2My41IDE3M3QtMjA4LjUgMjQ1cS0yMCAzMSAtMjAgNjl0MjAgNjlxMTUzIDIzNSAzODAgMzcxdDQ5NiAxMzZxODkgMCAxODAgLTE3bDU0IDk3cTEwIDE2IDI4IDE2cTUgMCAxOCAtNnQzMSAtMTUuNXQzMyAtMTguNXQzMS41IC0xOC41dDE5LjUgLTExLjUNCnExNiAtMTAgMTYgLTI3ek0xMzQ0IDcwNHEwIC0xMzkgLTc5IC0yNTMuNXQtMjA5IC0xNjQuNWwyODAgNTAycTggLTQ1IDggLTg0ek0xNzkyIDU3NnEwIC0zNSAtMjAgLTY5cS0zOSAtNjQgLTEwOSAtMTQ1cS0xNTAgLTE3MiAtMzQ3LjUgLTI2N3QtNDE5LjUgLTk1bDc0IDEzMnEyMTIgMTggMzkyLjUgMTM3dDMwMS41IDMwN3EtMTE1IDE3OSAtMjgyIDI5NGw2MyAxMTJxOTUgLTY0IDE4Mi41IC0xNTN0MTQ0LjUgLTE4NHEyMCAtMzQgMjAgLTY5eg0KIiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ3YXJuaW5nX3NpZ24iIHVuaWNvZGU9IiYjeGYwNzE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTAyNCAxNjF2MTkwcTAgMTQgLTkuNSAyMy41dC0yMi41IDkuNWgtMTkycS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjMuNXYtMTkwcTAgLTE0IDkuNSAtMjMuNXQyMi41IC05LjVoMTkycTEzIDAgMjIuNSA5LjV0OS41IDIzLjV6TTEwMjIgNTM1bDE4IDQ1OXEwIDEyIC0xMCAxOXEtMTMgMTEgLTI0IDExaC0yMjBxLTExIDAgLTI0IC0xMXEtMTAgLTcgLTEwIC0yMWwxNyAtNDU3cTAgLTEwIDEwIC0xNi41dDI0IC02LjVoMTg1DQpxMTQgMCAyMy41IDYuNXQxMC41IDE2LjV6TTEwMDggMTQ2OWw3NjggLTE0MDhxMzUgLTYzIC0yIC0xMjZxLTE3IC0yOSAtNDYuNSAtNDZ0LTYzLjUgLTE3aC0xNTM2cS0zNCAwIC02My41IDE3dC00Ni41IDQ2cS0zNyA2MyAtMiAxMjZsNzY4IDE0MDhxMTcgMzEgNDcgNDl0NjUgMTh0NjUgLTE4dDQ3IC00OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InBsYW5lIiB1bmljb2RlPSImI3hmMDcyOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTEzNzYgMTM3NnE0NCAtNTIgMTIgLTE0OHQtMTA4IC0xNzJsLTE2MSAtMTYxbDE2MCAtNjk2cTUgLTE5IC0xMiAtMzNsLTEyOCAtOTZxLTcgLTYgLTE5IC02cS00IDAgLTcgMXEtMTUgMyAtMjEgMTZsLTI3OSA1MDhsLTI1OSAtMjU5bDUzIC0xOTRxNSAtMTcgLTggLTMxbC05NiAtOTZxLTkgLTkgLTIzIC05aC0ycS0xNSAyIC0yNCAxM2wtMTg5IDI1MmwtMjUyIDE4OXEtMTEgNyAtMTMgMjNxLTEgMTMgOSAyNWw5NiA5N3E5IDkgMjMgOQ0KcTYgMCA4IC0xbDE5NCAtNTNsMjU5IDI1OWwtNTA4IDI3OXEtMTQgOCAtMTcgMjRxLTIgMTYgOSAyN2wxMjggMTI4cTE0IDEzIDMwIDhsNjY1IC0xNTlsMTYwIDE2MHE3NiA3NiAxNzIgMTA4dDE0OCAtMTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYWxlbmRhciIgdW5pY29kZT0iJiN4ZjA3MzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMjggLTEyOGgyODh2Mjg4aC0yODh2LTI4OHpNNDgwIC0xMjhoMzIwdjI4OGgtMzIwdi0yODh6TTEyOCAyMjRoMjg4djMyMGgtMjg4di0zMjB6TTQ4MCAyMjRoMzIwdjMyMGgtMzIwdi0zMjB6TTEyOCA2MDhoMjg4djI4OGgtMjg4di0yODh6TTg2NCAtMTI4aDMyMHYyODhoLTMyMHYtMjg4ek00ODAgNjA4aDMyMHYyODhoLTMyMHYtMjg4ek0xMjQ4IC0xMjhoMjg4djI4OGgtMjg4di0yODh6TTg2NCAyMjRoMzIwdjMyMGgtMzIwdi0zMjB6DQpNNTEyIDEwODh2Mjg4cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtNjRxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0yODhxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg2NHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMjQ4IDIyNGgyODh2MzIwaC0yODh2LTMyMHpNODY0IDYwOGgzMjB2Mjg4aC0zMjB2LTI4OHpNMTI0OCA2MDhoMjg4djI4OGgtMjg4di0yODh6TTEyODAgMTA4OHYyODhxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC02NA0KcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtMjg4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMTUydi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3DQpoNjRxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyYW5kb20iIHVuaWNvZGU9IiYjeGYwNzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjY2IDEwNTVxLTYwIC05MiAtMTM3IC0yNzNxLTIyIDQ1IC0zNyA3Mi41dC00MC41IDYzLjV0LTUxIDU2LjV0LTYzIDM1dC04MS41IDE0LjVoLTIyNHEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMjI0cTI1MCAwIDQxMCAtMjI1ek0xNzkyIDI1NnEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEtMzIgMCAtODUgLTAuNXQtODEgLTF0LTczIDENCnQtNzEgNXQtNjQgMTAuNXQtNjMgMTguNXQtNTggMjguNXQtNTkgNDB0LTU1IDUzLjV0LTU2IDY5LjVxNTkgOTMgMTM2IDI3M3EyMiAtNDUgMzcgLTcyLjV0NDAuNSAtNjMuNXQ1MSAtNTYuNXQ2MyAtMzV0ODEuNSAtMTQuNWgyNTZ2MTkycTAgMTQgOSAyM3QyMyA5cTEyIDAgMjQgLTEwbDMxOSAtMzE5cTkgLTkgOSAtMjN6TTE3OTIgMTE1MnEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41DQp2MTkyaC0yNTZxLTQ4IDAgLTg3IC0xNXQtNjkgLTQ1dC01MSAtNjEuNXQtNDUgLTc3LjVxLTMyIC02MiAtNzggLTE3MXEtMjkgLTY2IC00OS41IC0xMTF0LTU0IC0xMDV0LTY0IC0xMDB0LTc0IC04M3QtOTAgLTY4LjV0LTEwNi41IC00MnQtMTI4IC0xNi41aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDIyNHE0OCAwIDg3IDE1dDY5IDQ1dDUxIDYxLjV0NDUgNzcuNXEzMiA2MiA3OCAxNzFxMjkgNjYgNDkuNSAxMTENCnQ1NCAxMDV0NjQgMTAwdDc0IDgzdDkwIDY4LjV0MTA2LjUgNDJ0MTI4IDE2LjVoMjU2djE5MnEwIDE0IDkgMjN0MjMgOXExMiAwIDI0IC0xMGwzMTkgLTMxOXE5IC05IDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudCIgdW5pY29kZT0iJiN4ZjA3NTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDY0MHEwIC0xNzQgLTEyMCAtMzIxLjV0LTMyNiAtMjMzdC00NTAgLTg1LjVxLTcwIDAgLTE0NSA4cS0xOTggLTE3NSAtNDYwIC0yNDJxLTQ5IC0xNCAtMTE0IC0yMnEtMTcgLTIgLTMwLjUgOXQtMTcuNSAyOXYxcS0zIDQgLTAuNSAxMnQyIDEwdDQuNSA5LjVsNiA5dDcgOC41dDggOXE3IDggMzEgMzQuNXQzNC41IDM4dDMxIDM5LjV0MzIuNSA1MXQyNyA1OXQyNiA3NnEtMTU3IDg5IC0yNDcuNSAyMjB0LTkwLjUgMjgxDQpxMCAxMzAgNzEgMjQ4LjV0MTkxIDIwNC41dDI4NiAxMzYuNXQzNDggNTAuNXEyNDQgMCA0NTAgLTg1LjV0MzI2IC0yMzN0MTIwIC0zMjEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1hZ25ldCIgdW5pY29kZT0iJiN4ZjA3NjsiIA0KZD0iTTE1MzYgNzA0di0xMjhxMCAtMjAxIC05OC41IC0zNjJ0LTI3NCAtMjUxLjV0LTM5NS41IC05MC41dC0zOTUuNSA5MC41dC0yNzQgMjUxLjV0LTk4LjUgMzYydjEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC01MiAyMy41IC05MHQ1My41IC01N3Q3MSAtMzB0NjQgLTEzdDQ0IC0ydDQ0IDJ0NjQgMTN0NzEgMzB0NTMuNSA1N3QyMy41IDkwdjEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDM4NA0KcTI2IDAgNDUgLTE5dDE5IC00NXpNNTEyIDEzNDR2LTM4NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTM4NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djM4NHEwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE1MzYgMTM0NHYtMzg0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMzg0cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloMzg0cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fdXAiIHVuaWNvZGU9IiYjeGYwNzc7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTY4MyAyMDVsLTE2NiAtMTY1cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTUzMSA1MzFsLTUzMSAtNTMxcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTE2NiAxNjVxLTE5IDE5IC0xOSA0NS41dDE5IDQ1LjVsNzQyIDc0MXExOSAxOSA0NSAxOXQ0NSAtMTlsNzQyIC03NDFxMTkgLTE5IDE5IC00NS41dC0xOSAtNDUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fZG93biIgdW5pY29kZT0iJiN4ZjA3ODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjgzIDcyOGwtNzQyIC03NDFxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtNzQyIDc0MXEtMTkgMTkgLTE5IDQ1LjV0MTkgNDUuNWwxNjYgMTY1cTE5IDE5IDQ1IDE5dDQ1IC0xOWw1MzEgLTUzMWw1MzEgNTMxcTE5IDE5IDQ1IDE5dDQ1IC0xOWwxNjYgLTE2NXExOSAtMTkgMTkgLTQ1LjV0LTE5IC00NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmV0d2VldCIgdW5pY29kZT0iJiN4ZjA3OTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xMjgwIDMycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTYwcS04IDAgLTEzLjUgMnQtOSA3dC01LjUgOHQtMyAxMS41dC0xIDExLjV2MTN2MTF2MTYwdjQxNmgtMTkycS0yNiAwIC00NSAxOXQtMTkgNDVxMCAyNCAxNSA0MWwzMjAgMzg0cTE5IDIyIDQ5IDIydDQ5IC0yMmwzMjAgLTM4NHExNSAtMTcgMTUgLTQxcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTkydi0zODRoNTc2cTE2IDAgMjUgLTExbDE2MCAtMTkycTcgLTEwIDcgLTIxDQp6TTE5MjAgNDQ4cTAgLTI0IC0xNSAtNDFsLTMyMCAtMzg0cS0yMCAtMjMgLTQ5IC0yM3QtNDkgMjNsLTMyMCAzODRxLTE1IDE3IC0xNSA0MXEwIDI2IDE5IDQ1dDQ1IDE5aDE5MnYzODRoLTU3NnEtMTYgMCAtMjUgMTJsLTE2MCAxOTJxLTcgOSAtNyAyMHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDk2MHE4IDAgMTMuNSAtMnQ5IC03dDUuNSAtOHQzIC0xMS41dDEgLTExLjV2LTEzdi0xMXYtMTYwdi00MTZoMTkycTI2IDAgNDUgLTE5dDE5IC00NXoNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hvcHBpbmdfY2FydCIgdW5pY29kZT0iJiN4ZjA3YTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik02NDAgMHEwIC01MiAtMzggLTkwdC05MCAtMzh0LTkwIDM4dC0zOCA5MHQzOCA5MHQ5MCAzOHQ5MCAtMzh0MzggLTkwek0xNTM2IDBxMCAtNTIgLTM4IC05MHQtOTAgLTM4dC05MCAzOHQtMzggOTB0MzggOTB0OTAgMzh0OTAgLTM4dDM4IC05MHpNMTY2NCAxMDg4di01MTJxMCAtMjQgLTE2LjUgLTQyLjV0LTQwLjUgLTIxLjVsLTEwNDQgLTEyMnExMyAtNjAgMTMgLTcwcTAgLTE2IC0yNCAtNjRoOTIwcTI2IDAgNDUgLTE5dDE5IC00NQ0KdC0xOSAtNDV0LTQ1IC0xOWgtMTAyNHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTEgOCAzMS41dDE2IDM2dDIxLjUgNDB0MTUuNSAyOS41bC0xNzcgODIzaC0yMDRxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZxMTYgMCAyOC41IC02LjV0MTkuNSAtMTUuNXQxMyAtMjQuNXQ4IC0yNnQ1LjUgLTI5LjV0NC41IC0yNmgxMjAxcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZvbGRlcl9jbG9zZSIgdW5pY29kZT0iJiN4ZjA3YjsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDkyOHYtNzA0cTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC0xMjE2cS05MiAwIC0xNTggNjZ0LTY2IDE1OHY5NjBxMCA5MiA2NiAxNTh0MTU4IDY2aDMyMHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNjcycTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9sZGVyX29wZW4iIHVuaWNvZGU9IiYjeGYwN2M7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTg3OSA1ODRxMCAtMzEgLTMxIC02NmwtMzM2IC0zOTZxLTQzIC01MSAtMTIwLjUgLTg2LjV0LTE0My41IC0zNS41aC0xMDg4cS0zNCAwIC02MC41IDEzdC0yNi41IDQzcTAgMzEgMzEgNjZsMzM2IDM5NnE0MyA1MSAxMjAuNSA4Ni41dDE0My41IDM1LjVoMTA4OHEzNCAwIDYwLjUgLTEzdDI2LjUgLTQzek0xNTM2IDkyOHYtMTYwaC04MzJxLTk0IDAgLTE5NyAtNDcuNXQtMTY0IC0xMTkuNWwtMzM3IC0zOTZsLTUgLTZxMCA0IC0wLjUgMTIuNQ0KdC0wLjUgMTIuNXY5NjBxMCA5MiA2NiAxNTh0MTU4IDY2aDMyMHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNTQ0cTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVzaXplX3ZlcnRpY2FsIiB1bmljb2RlPSImI3hmMDdkOyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzA0IDEyMTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjh2LTEwMjRoMTI4cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1bC0yNTYgLTI1NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloMTI4djEwMjRoLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDI1NiAyNTZxMTkgMTkgNDUgMTl0NDUgLTE5bDI1NiAtMjU2cTE5IC0xOSAxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZXNpemVfaG9yaXpvbnRhbCIgdW5pY29kZT0iJiN4ZjA3ZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDY0MHEwIC0yNiAtMTkgLTQ1bC0yNTYgLTI1NnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5dC0xOSA0NXYxMjhoLTEwMjR2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV0MTkgNDVsMjU2IDI1NnExOSAxOSA0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjhoMTAyNHYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsMjU2IC0yNTZxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJhcl9jaGFydCIgdW5pY29kZT0iJiN4ZjA4MDsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik02NDAgNjQwdi01MTJoLTI1NnY1MTJoMjU2ek0xMDI0IDExNTJ2LTEwMjRoLTI1NnYxMDI0aDI1NnpNMjA0OCAwdi0xMjhoLTIwNDh2MTUzNmgxMjh2LTE0MDhoMTkyMHpNMTQwOCA4OTZ2LTc2OGgtMjU2djc2OGgyNTZ6TTE3OTIgMTI4MHYtMTE1MmgtMjU2djExNTJoMjU2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHdpdHRlcl9zaWduIiB1bmljb2RlPSImI3hmMDgxOyIgDQpkPSJNMTI4MCA5MjZxLTU2IC0yNSAtMTIxIC0zNHE2OCA0MCA5MyAxMTdxLTY1IC0zOCAtMTM0IC01MXEtNjEgNjYgLTE1MyA2NnEtODcgMCAtMTQ4LjUgLTYxLjV0LTYxLjUgLTE0OC41cTAgLTI5IDUgLTQ4cS0xMjkgNyAtMjQyIDY1dC0xOTIgMTU1cS0yOSAtNTAgLTI5IC0xMDZxMCAtMTE0IDkxIC0xNzVxLTQ3IDEgLTEwMCAyNnYtMnEwIC03NSA1MCAtMTMzLjV0MTIzIC03Mi41cS0yOSAtOCAtNTEgLThxLTEzIDAgLTM5IDQNCnEyMSAtNjMgNzQuNSAtMTA0dDEyMS41IC00MnEtMTE2IC05MCAtMjYxIC05MHEtMjYgMCAtNTAgM3ExNDggLTk0IDMyMiAtOTRxMTEyIDAgMjEwIDM1LjV0MTY4IDk1dDEyMC41IDEzN3Q3NSAxNjJ0MjQuNSAxNjguNXEwIDE4IC0xIDI3cTYzIDQ1IDEwNSAxMDl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41DQp0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmYWNlYm9va19zaWduIiB1bmljb2RlPSImI3hmMDgyOyIgDQpkPSJNMTI0OCAxNDA4cTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41di05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTE4OHY1OTVoMTk5bDMwIDIzMmgtMjI5djE0OHEwIDU2IDIzLjUgODR0OTEuNSAyOGwxMjIgMXYyMDdxLTYzIDkgLTE3OCA5cS0xMzYgMCAtMjE3LjUgLTgwdC04MS41IC0yMjZ2LTE3MWgtMjAwdi0yMzJoMjAwdi01OTVoLTUzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwDQpxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhbWVyYV9yZXRybyIgdW5pY29kZT0iJiN4ZjA4MzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05MjggNzA0cTAgMTQgLTkgMjN0LTIzIDlxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTNxMCAtMTQgOSAtMjN0MjMgLTl0MjMgOXQ5IDIzcTAgNDAgMjggNjh0NjggMjhxMTQgMCAyMyA5dDkgMjN6TTExNTIgNTc0cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODF0NzUgMTgxdDE4MSA3NXQxODEgLTc1dDc1IC0xODF6TTEyOCAwaDE1MzZ2MTI4aC0xNTM2di0xMjh6TTEyODAgNTc0cTAgMTU5IC0xMTIuNSAyNzEuNQ0KdC0yNzEuNSAxMTIuNXQtMjcxLjUgLTExMi41dC0xMTIuNSAtMjcxLjV0MTEyLjUgLTI3MS41dDI3MS41IC0xMTIuNXQyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXpNMjU2IDEyMTZoMzg0djEyOGgtMzg0di0xMjh6TTEyOCAxMDI0aDE1MzZ2MTE4djEzOGgtODI4bC02NCAtMTI4aC02NDR2LTEyOHpNMTc5MiAxMjgwdi0xMjgwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC0xNTM2cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXYxMjgwDQpxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDE1MzZxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJrZXkiIHVuaWNvZGU9IiYjeGYwODQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODMyIDEwMjRxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZxMCAtNDIgMTkgLTgzcS00MSAxOSAtODMgMTlxLTgwIDAgLTEzNiAtNTZ0LTU2IC0xMzZ0NTYgLTEzNnQxMzYgLTU2dDEzNiA1NnQ1NiAxMzZxMCA0MiAtMTkgODNxNDEgLTE5IDgzIC0xOXE4MCAwIDEzNiA1NnQ1NiAxMzZ6TTE2ODMgMzIwcTAgLTE3IC00OSAtNjZ0LTY2IC00OXEtOSAwIC0yOC41IDE2dC0zNi41IDMzdC0zOC41IDQwdC0yNC41IDI2DQpsLTk2IC05NmwyMjAgLTIyMHEyOCAtMjggMjggLTY4cTAgLTQyIC0zOSAtODF0LTgxIC0zOXEtNDAgMCAtNjggMjhsLTY3MSA2NzFxLTE3NiAtMTMxIC0zNjUgLTEzMXEtMTYzIDAgLTI2NS41IDEwMi41dC0xMDIuNSAyNjUuNXEwIDE2MCA5NSAzMTN0MjQ4IDI0OHQzMTMgOTVxMTYzIDAgMjY1LjUgLTEwMi41dDEwMi41IC0yNjUuNXEwIC0xODkgLTEzMSAtMzY1bDM1NSAtMzU1bDk2IDk2cS0zIDMgLTI2IDI0LjV0LTQwIDM4LjV0LTMzIDM2LjUNCnQtMTYgMjguNXEwIDE3IDQ5IDY2dDY2IDQ5cTEzIDAgMjMgLTEwcTYgLTYgNDYgLTQ0LjV0ODIgLTc5LjV0ODYuNSAtODZ0NzMgLTc4dDI4LjUgLTQxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29ncyIgdW5pY29kZT0iJiN4ZjA4NTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik04OTYgNjQwcTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMTY2NCAxMjhxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTY2NCAxMTUycTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTBxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41DQp0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTI4MCA3MzF2LTE4NXEwIC0xMCAtNyAtMTkuNXQtMTYgLTEwLjVsLTE1NSAtMjRxLTExIC0zNSAtMzIgLTc2cTM0IC00OCA5MCAtMTE1cTcgLTExIDcgLTIwcTAgLTEyIC03IC0xOXEtMjMgLTMwIC04Mi41IC04OS41dC03OC41IC01OS41cS0xMSAwIC0yMSA3bC0xMTUgOTBxLTM3IC0xOSAtNzcgLTMxcS0xMSAtMTA4IC0yMyAtMTU1cS03IC0yNCAtMzAgLTI0aC0xODZxLTExIDAgLTIwIDcuNXQtMTAgMTcuNQ0KbC0yMyAxNTNxLTM0IDEwIC03NSAzMWwtMTE4IC04OXEtNyAtNyAtMjAgLTdxLTExIDAgLTIxIDhxLTE0NCAxMzMgLTE0NCAxNjBxMCA5IDcgMTlxMTAgMTQgNDEgNTN0NDcgNjFxLTIzIDQ0IC0zNSA4MmwtMTUyIDI0cS0xMCAxIC0xNyA5LjV0LTcgMTkuNXYxODVxMCAxMCA3IDE5LjV0MTYgMTAuNWwxNTUgMjRxMTEgMzUgMzIgNzZxLTM0IDQ4IC05MCAxMTVxLTcgMTEgLTcgMjBxMCAxMiA3IDIwcTIyIDMwIDgyIDg5dDc5IDU5cTExIDAgMjEgLTcNCmwxMTUgLTkwcTM0IDE4IDc3IDMycTExIDEwOCAyMyAxNTRxNyAyNCAzMCAyNGgxODZxMTEgMCAyMCAtNy41dDEwIC0xNy41bDIzIC0xNTNxMzQgLTEwIDc1IC0zMWwxMTggODlxOCA3IDIwIDdxMTEgMCAyMSAtOHExNDQgLTEzMyAxNDQgLTE2MHEwIC04IC03IC0xOXEtMTIgLTE2IC00MiAtNTR0LTQ1IC02MHEyMyAtNDggMzQgLTgybDE1MiAtMjNxMTAgLTIgMTcgLTEwLjV0NyAtMTkuNXpNMTkyMCAxOTh2LTE0MHEwIC0xNiAtMTQ5IC0zMQ0KcS0xMiAtMjcgLTMwIC01MnE1MSAtMTEzIDUxIC0xMzhxMCAtNCAtNCAtN3EtMTIyIC03MSAtMTI0IC03MXEtOCAwIC00NiA0N3QtNTIgNjhxLTIwIC0yIC0zMCAtMnQtMzAgMnEtMTQgLTIxIC01MiAtNjh0LTQ2IC00N3EtMiAwIC0xMjQgNzFxLTQgMyAtNCA3cTAgMjUgNTEgMTM4cS0xOCAyNSAtMzAgNTJxLTE0OSAxNSAtMTQ5IDMxdjE0MHEwIDE2IDE0OSAzMXExMyAyOSAzMCA1MnEtNTEgMTEzIC01MSAxMzhxMCA0IDQgN3E0IDIgMzUgMjANCnQ1OSAzNHQzMCAxNnE4IDAgNDYgLTQ2LjV0NTIgLTY3LjVxMjAgMiAzMCAydDMwIC0ycTUxIDcxIDkyIDExMmw2IDJxNCAwIDEyNCAtNzBxNCAtMyA0IC03cTAgLTI1IC01MSAtMTM4cTE3IC0yMyAzMCAtNTJxMTQ5IC0xNSAxNDkgLTMxek0xOTIwIDEyMjJ2LTE0MHEwIC0xNiAtMTQ5IC0zMXEtMTIgLTI3IC0zMCAtNTJxNTEgLTExMyA1MSAtMTM4cTAgLTQgLTQgLTdxLTEyMiAtNzEgLTEyNCAtNzFxLTggMCAtNDYgNDd0LTUyIDY4DQpxLTIwIC0yIC0zMCAtMnQtMzAgMnEtMTQgLTIxIC01MiAtNjh0LTQ2IC00N3EtMiAwIC0xMjQgNzFxLTQgMyAtNCA3cTAgMjUgNTEgMTM4cS0xOCAyNSAtMzAgNTJxLTE0OSAxNSAtMTQ5IDMxdjE0MHEwIDE2IDE0OSAzMXExMyAyOSAzMCA1MnEtNTEgMTEzIC01MSAxMzhxMCA0IDQgN3E0IDIgMzUgMjB0NTkgMzR0MzAgMTZxOCAwIDQ2IC00Ni41dDUyIC02Ny41cTIwIDIgMzAgMnQzMCAtMnE1MSA3MSA5MiAxMTJsNiAycTQgMCAxMjQgLTcwDQpxNCAtMyA0IC03cTAgLTI1IC01MSAtMTM4cTE3IC0yMyAzMCAtNTJxMTQ5IC0xNSAxNDkgLTMxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudHMiIHVuaWNvZGU9IiYjeGYwODY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTQwOCA3NjhxMCAtMTM5IC05NCAtMjU3dC0yNTYuNSAtMTg2LjV0LTM1My41IC02OC41cS04NiAwIC0xNzYgMTZxLTEyNCAtODggLTI3OCAtMTI4cS0zNiAtOSAtODYgLTE2aC0zcS0xMSAwIC0yMC41IDh0LTExLjUgMjFxLTEgMyAtMSA2LjV0MC41IDYuNXQyIDZsMi41IDV0My41IDUuNXQ0IDV0NC41IDV0NCA0LjVxNSA2IDIzIDI1dDI2IDI5LjV0MjIuNSAyOXQyNSAzOC41dDIwLjUgNDRxLTEyNCA3MiAtMTk1IDE3N3QtNzEgMjI0DQpxMCAxMzkgOTQgMjU3dDI1Ni41IDE4Ni41dDM1My41IDY4LjV0MzUzLjUgLTY4LjV0MjU2LjUgLTE4Ni41dDk0IC0yNTd6TTE3OTIgNTEycTAgLTEyMCAtNzEgLTIyNC41dC0xOTUgLTE3Ni41cTEwIC0yNCAyMC41IC00NHQyNSAtMzguNXQyMi41IC0yOXQyNiAtMjkuNXQyMyAtMjVxMSAtMSA0IC00LjV0NC41IC01dDQgLTV0My41IC01LjVsMi41IC01dDIgLTZ0MC41IC02LjV0LTEgLTYuNXEtMyAtMTQgLTEzIC0yMnQtMjIgLTcNCnEtNTAgNyAtODYgMTZxLTE1NCA0MCAtMjc4IDEyOHEtOTAgLTE2IC0xNzYgLTE2cS0yNzEgMCAtNDcyIDEzMnE1OCAtNCA4OCAtNHExNjEgMCAzMDkgNDV0MjY0IDEyOXExMjUgOTIgMTkyIDIxMnQ2NyAyNTRxMCA3NyAtMjMgMTUycTEyOSAtNzEgMjA0IC0xNzh0NzUgLTIzMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRodW1ic191cF9hbHQiIHVuaWNvZGU9IiYjeGYwODc7IiANCmQ9Ik0yNTYgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA3NjhxMCA1MSAtMzkgODkuNXQtODkgMzguNWgtMzUycTAgNTggNDggMTU5LjV0NDggMTYwLjVxMCA5OCAtMzIgMTQ1dC0xMjggNDdxLTI2IC0yNiAtMzggLTg1dC0zMC41IC0xMjUuNXQtNTkuNSAtMTA5LjVxLTIyIC0yMyAtNzcgLTkxcS00IC01IC0yMyAtMzB0LTMxLjUgLTQxdC0zNC41IC00Mi41DQp0LTQwIC00NHQtMzguNSAtMzUuNXQtNDAgLTI3dC0zNS41IC05aC0zMnYtNjQwaDMycTEzIDAgMzEuNSAtM3QzMyAtNi41dDM4IC0xMXQzNSAtMTEuNXQzNS41IC0xMi41dDI5IC0xMC41cTIxMSAtNzMgMzQyIC03M2gxMjFxMTkyIDAgMTkyIDE2N3EwIDI2IC01IDU2cTMwIDE2IDQ3LjUgNTIuNXQxNy41IDczLjV0LTE4IDY5cTUzIDUwIDUzIDExOXEwIDI1IC0xMCA1NS41dC0yNSA0Ny41cTMyIDEgNTMuNSA0N3QyMS41IDgxek0xNTM2IDc2OQ0KcTAgLTg5IC00OSAtMTYzcTkgLTMzIDkgLTY5cTAgLTc3IC0zOCAtMTQ0cTMgLTIxIDMgLTQzcTAgLTEwMSAtNjAgLTE3OHExIC0xMzkgLTg1IC0yMTkuNXQtMjI3IC04MC41aC0zNmgtOTNxLTk2IDAgLTE4OS41IDIyLjV0LTIxNi41IDY1LjVxLTExNiA0MCAtMTM4IDQwaC0yODhxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djY0MHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjVoMjc0cTM2IDI0IDEzNyAxNTVxNTggNzUgMTA3IDEyOA0KcTI0IDI1IDM1LjUgODUuNXQzMC41IDEyNi41dDYyIDEwOHEzOSAzNyA5MCAzN3E4NCAwIDE1MSAtMzIuNXQxMDIgLTEwMS41dDM1IC0xODZxMCAtOTMgLTQ4IC0xOTJoMTc2cTEwNCAwIDE4MCAtNzZ0NzYgLTE3OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRodW1ic19kb3duX2FsdCIgdW5pY29kZT0iJiN4ZjA4ODsiIA0KZD0iTTI1NiAxMDg4cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA1MTJxMCAzNSAtMjEuNSA4MXQtNTMuNSA0N3ExNSAxNyAyNSA0Ny41dDEwIDU1LjVxMCA2OSAtNTMgMTE5cTE4IDMxIDE4IDY5cTAgMzcgLTE3LjUgNzMuNXQtNDcuNSA1Mi41cTUgMzAgNSA1NnEwIDg1IC00OSAxMjZ0LTEzNiA0MWgtMTI4cS0xMzEgMCAtMzQyIC03M3EtNSAtMiAtMjkgLTEwLjUNCnQtMzUuNSAtMTIuNXQtMzUgLTExLjV0LTM4IC0xMXQtMzMgLTYuNXQtMzEuNSAtM2gtMzJ2LTY0MGgzMnExNiAwIDM1LjUgLTl0NDAgLTI3dDM4LjUgLTM1LjV0NDAgLTQ0dDM0LjUgLTQyLjV0MzEuNSAtNDF0MjMgLTMwcTU1IC02OCA3NyAtOTFxNDEgLTQzIDU5LjUgLTEwOS41dDMwLjUgLTEyNS41dDM4IC04NXE5NiAwIDEyOCA0N3QzMiAxNDVxMCA1OSAtNDggMTYwLjV0LTQ4IDE1OS41aDM1MnE1MCAwIDg5IDM4LjV0MzkgODkuNXoNCk0xNTM2IDUxMXEwIC0xMDMgLTc2IC0xNzl0LTE4MCAtNzZoLTE3NnE0OCAtOTkgNDggLTE5MnEwIC0xMTggLTM1IC0xODZxLTM1IC02OSAtMTAyIC0xMDEuNXQtMTUxIC0zMi41cS01MSAwIC05MCAzN3EtMzQgMzMgLTU0IDgydC0yNS41IDkwLjV0LTE3LjUgODQuNXQtMzEgNjRxLTQ4IDUwIC0xMDcgMTI3cS0xMDEgMTMxIC0xMzcgMTU1aC0yNzRxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djY0MHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjUNCmgyODhxMjIgMCAxMzggNDBxMTI4IDQ0IDIyMyA2NnQyMDAgMjJoMTEycTE0MCAwIDIyNi41IC03OXQ4NS41IC0yMTZ2LTVxNjAgLTc3IDYwIC0xNzhxMCAtMjIgLTMgLTQzcTM4IC02NyAzOCAtMTQ0cTAgLTM2IC05IC02OXE0OSAtNzMgNDkgLTE2M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0YXJfaGFsZiIgdW5pY29kZT0iJiN4ZjA4OTsiIGhvcml6LWFkdi14PSI4OTYiIA0KZD0iTTgzMiAxNTA0di0xMzM5bC00NDkgLTIzNnEtMjIgLTEyIC00MCAtMTJxLTIxIDAgLTMxLjUgMTQuNXQtMTAuNSAzNS41cTAgNiAyIDIwbDg2IDUwMGwtMzY0IDM1NHEtMjUgMjcgLTI1IDQ4cTAgMzcgNTYgNDZsNTAyIDczbDIyNSA0NTVxMTkgNDEgNDkgNDF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoZWFydF9lbXB0eSIgdW5pY29kZT0iJiN4ZjA4YTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDk0MHEwIDgxIC0yMS41IDE0M3QtNTUgOTguNXQtODEuNSA1OS41dC05NCAzMXQtOTggOHQtMTEyIC0yNS41dC0xMTAuNSAtNjR0LTg2LjUgLTcydC02MCAtNjEuNXEtMTggLTIyIC00OSAtMjJ0LTQ5IDIycS0yNCAyOCAtNjAgNjEuNXQtODYuNSA3MnQtMTEwLjUgNjR0LTExMiAyNS41dC05OCAtOHQtOTQgLTMxdC04MS41IC01OS41dC01NSAtOTguNXQtMjEuNSAtMTQzcTAgLTE2OCAxODcgLTM1NWw1ODEgLTU2MGw1ODAgNTU5DQpxMTg4IDE4OCAxODggMzU2ek0xNzkyIDk0MHEwIC0yMjEgLTIyOSAtNDUwbC02MjMgLTYwMHEtMTggLTE4IC00NCAtMTh0LTQ0IDE4bC02MjQgNjAycS0xMCA4IC0yNy41IDI2dC01NS41IDY1LjV0LTY4IDk3LjV0LTUzLjUgMTIxdC0yMy41IDEzOHEwIDIyMCAxMjcgMzQ0dDM1MSAxMjRxNjIgMCAxMjYuNSAtMjEuNXQxMjAgLTU4dDk1LjUgLTY4LjV0NzYgLTY4cTM2IDM2IDc2IDY4dDk1LjUgNjguNXQxMjAgNTh0MTI2LjUgMjEuNQ0KcTIyNCAwIDM1MSAtMTI0dDEyNyAtMzQ0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2lnbm91dCIgdW5pY29kZT0iJiN4ZjA4YjsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik02NDAgOTZxMCAtNCAxIC0yMHQwLjUgLTI2LjV0LTMgLTIzLjV0LTEwIC0xOS41dC0yMC41IC02LjVoLTMyMHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2NzA0cTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWgzMjBxMTMgMCAyMi41IC05LjV0OS41IC0yMi41cTAgLTQgMSAtMjB0MC41IC0yNi41dC0zIC0yMy41dC0xMCAtMTkuNXQtMjAuNSAtNi41aC0zMjBxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTcwNA0KcTAgLTY2IDQ3IC0xMTN0MTEzIC00N2gyODhoMTFoMTN0MTEuNSAtMXQxMS41IC0zdDggLTUuNXQ3IC05dDIgLTEzLjV6TTE1NjggNjQwcTAgLTI2IC0xOSAtNDVsLTU0NCAtNTQ0cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI4OGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloNDQ4djI4OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWw1NDQgLTU0NHExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlua2VkaW5fc2lnbiIgdW5pY29kZT0iJiN4ZjA4YzsiIA0KZD0iTTIzNyAxMjJoMjMxdjY5NGgtMjMxdi02OTR6TTQ4MyAxMDMwcS0xIDUyIC0zNiA4NnQtOTMgMzR0LTk0LjUgLTM0dC0zNi41IC04NnEwIC01MSAzNS41IC04NS41dDkyLjUgLTM0LjVoMXE1OSAwIDk1IDM0LjV0MzYgODUuNXpNMTA2OCAxMjJoMjMxdjM5OHEwIDE1NCAtNzMgMjMzdC0xOTMgNzlxLTEzNiAwIC0yMDkgLTExN2gydjEwMWgtMjMxcTMgLTY2IDAgLTY5NGgyMzF2Mzg4cTAgMzggNyA1NnExNSAzNSA0NSA1OS41dDc0IDI0LjUNCnExMTYgMCAxMTYgLTE1N3YtMzcxek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InB1c2hwaW4iIHVuaWNvZGU9IiYjeGYwOGQ7IiBob3Jpei1hZHYteD0iMTE1MiIgDQpkPSJNNDgwIDY3MnY0NDhxMCAxNCAtOSAyM3QtMjMgOXQtMjMgLTl0LTkgLTIzdi00NDhxMCAtMTQgOSAtMjN0MjMgLTl0MjMgOXQ5IDIzek0xMTUyIDMyMHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTQyOWwtNTEgLTQ4M3EtMiAtMTIgLTEwLjUgLTIwLjV0LTIwLjUgLTguNWgtMXEtMjcgMCAtMzIgMjdsLTc2IDQ4NWgtNDA0cS0yNiAwIC00NSAxOXQtMTkgNDVxMCAxMjMgNzguNSAyMjEuNXQxNzcuNSA5OC41djUxMnEtNTIgMCAtOTAgMzgNCnQtMzggOTB0MzggOTB0OTAgMzhoNjQwcTUyIDAgOTAgLTM4dDM4IC05MHQtMzggLTkwdC05MCAtMzh2LTUxMnE5OSAwIDE3Ny41IC05OC41dDc4LjUgLTIyMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXh0ZXJuYWxfbGluayIgdW5pY29kZT0iJiN4ZjA4ZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNDA4IDYwOHYtMzIwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC04MzJxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djgzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoNzA0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTcwNHEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzdjMyMA0KcTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgMTQ3MnYtNTEycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTlsLTE3NiAxNzZsLTY1MiAtNjUycS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTExNCAxMTRxLTEwIDEwIC0xMCAyM3QxMCAyM2w2NTIgNjUybC0xNzYgMTc2cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNpZ25pbiIgdW5pY29kZT0iJiN4ZjA5MDsiIA0KZD0iTTExODQgNjQwcTAgLTI2IC0xOSAtNDVsLTU0NCAtNTQ0cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI4OGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgMjYgMTkgNDV0NDUgMTloNDQ4djI4OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOWw1NDQgLTU0NHExOSAtMTkgMTkgLTQ1ek0xNTM2IDk5MnYtNzA0cTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC0zMjBxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNQ0KcTAgNCAtMSAyMHQtMC41IDI2LjV0MyAyMy41dDEwIDE5LjV0MjAuNSA2LjVoMzIwcTY2IDAgMTEzIDQ3dDQ3IDExM3Y3MDRxMCA2NiAtNDcgMTEzdC0xMTMgNDdoLTI4OGgtMTFoLTEzdC0xMS41IDF0LTExLjUgM3QtOCA1LjV0LTcgOXQtMiAxMy41cTAgNCAtMSAyMHQtMC41IDI2LjV0MyAyMy41dDEwIDE5LjV0MjAuNSA2LjVoMzIwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHJvcGh5IiB1bmljb2RlPSImI3hmMDkxOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTQ1OCA2NTNxLTc0IDE2MiAtNzQgMzcxaC0yNTZ2LTk2cTAgLTc4IDk0LjUgLTE2MnQyMzUuNSAtMTEzek0xNTM2IDkyOHY5NmgtMjU2cTAgLTIwOSAtNzQgLTM3MXExNDEgMjkgMjM1LjUgMTEzdDk0LjUgMTYyek0xNjY0IDEwNTZ2LTEyOHEwIC03MSAtNDEuNSAtMTQzdC0xMTIgLTEzMHQtMTczIC05Ny41dC0yMTUuNSAtNDQuNXEtNDIgLTU0IC05NSAtOTVxLTM4IC0zNCAtNTIuNSAtNzIuNXQtMTQuNSAtODkuNXEwIC01NCAzMC41IC05MQ0KdDk3LjUgLTM3cTc1IDAgMTMzLjUgLTQ1LjV0NTguNSAtMTE0LjV2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTgzMnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDY5IDU4LjUgMTE0LjV0MTMzLjUgNDUuNXE2NyAwIDk3LjUgMzd0MzAuNSA5MXEwIDUxIC0xNC41IDg5LjV0LTUyLjUgNzIuNXEtNTMgNDEgLTk1IDk1cS0xMTMgNSAtMjE1LjUgNDQuNXQtMTczIDk3LjV0LTExMiAxMzB0LTQxLjUgMTQzdjEyOHEwIDQwIDI4IDY4dDY4IDI4aDI4OHY5Ng0KcTAgNjYgNDcgMTEzdDExMyA0N2g1NzZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTk2aDI4OHE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnaXRodWJfc2lnbiIgdW5pY29kZT0iJiN4ZjA5MjsiIA0KZD0iTTUxOSAzMzZxNCA2IC0zIDEzcS05IDcgLTE0IDJxLTQgLTYgMyAtMTNxOSAtNyAxNCAtMnpNNDkxIDM3N3EtNSA3IC0xMiA0cS02IC00IDAgLTEycTcgLTggMTIgLTVxNiA0IDAgMTN6TTQ1MCA0MTdxMiA0IC01IDhxLTcgMiAtOCAtMnEtMyAtNSA0IC04cTggLTIgOSAyek00NzEgMzk0cTIgMSAxLjUgNC41dC0zLjUgNS41cS02IDcgLTEwIDN0MSAtMTFxNiAtNiAxMSAtMnpNNTU3IDMxOXEyIDcgLTkgMTFxLTkgMyAtMTMgLTQNCnEtMiAtNyA5IC0xMXE5IC0zIDEzIDR6TTU5OSAzMTZxMCA4IC0xMiA4cS0xMCAwIC0xMCAtOHQxMSAtOHQxMSA4ek02MzggMzIzcS0yIDcgLTEzIDV0LTkgLTlxMiAtOCAxMiAtNnQxMCAxMHpNMTI4MCA2NDBxMCAyMTIgLTE1MCAzNjJ0LTM2MiAxNTB0LTM2MiAtMTUwdC0xNTAgLTM2MnEwIC0xNjcgOTggLTMwMC41dDI1MiAtMTg1LjVxMTggLTMgMjYuNSA1dDguNSAyMHEwIDUyIC0xIDk1cS02IC0xIC0xNS41IC0yLjV0LTM1LjUgLTJ0LTQ4IDQNCnQtNDMuNSAyMHQtMjkuNSA0MS41cS0yMyA1OSAtNTcgNzRxLTIgMSAtNC41IDMuNWwtOCA4dC03IDkuNXQ0IDcuNXQxOS41IDMuNXE2IDAgMTUgLTJ0MzAgLTE1LjV0MzMgLTM1LjVxMTYgLTI4IDM3LjUgLTQydDQzLjUgLTE0dDM4IDMuNXQzMCA5LjVxNyA0NyAzMyA2OXEtNDkgNiAtODYgMTguNXQtNzMgMzl0LTU1LjUgNzZ0LTE5LjUgMTE5LjVxMCA3OSA1MyAxMzdxLTI0IDYyIDUgMTM2cTE5IDYgNTQuNSAtNy41dDYwLjUgLTI5LjVsMjYgLTE2DQpxNTggMTcgMTI4IDE3dDEyOCAtMTdxMTEgNyAyOC41IDE4dDU1LjUgMjZ0NTcgOXEyOSAtNzQgNSAtMTM2cTUzIC01OCA1MyAtMTM3cTAgLTU3IC0xNCAtMTAwLjV0LTM1LjUgLTcwdC01My41IC00NC41dC02Mi41IC0yNnQtNjguNSAtMTJxMzUgLTMxIDM1IC05NXEwIC00MCAtMC41IC04OXQtMC41IC01MXEwIC0xMiA4LjUgLTIwdDI2LjUgLTVxMTU0IDUyIDI1MiAxODUuNXQ5OCAzMDAuNXpNMTUzNiAxMTIwdi05NjANCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVwbG9hZF9hbHQiIHVuaWNvZGU9IiYjeGYwOTM7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTI4MCA2NHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE1MzYgNjRxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjY0IDI4OHYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTQ3MnEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDQyN3EyMSAtNTYgNzAuNSAtOTINCnQxMTAuNSAtMzZoMjU2cTYxIDAgMTEwLjUgMzZ0NzAuNSA5Mmg0MjdxNDAgMCA2OCAtMjh0MjggLTY4ek0xMzM5IDkzNnEtMTcgLTQwIC01OSAtNDBoLTI1NnYtNDQ4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4aC0yNTZxLTQyIDAgLTU5IDQwcS0xNyAzOSAxNCA2OWw0NDggNDQ4cTE4IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHEzMSAtMzAgMTQgLTY5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGVtb24iIHVuaWNvZGU9IiYjeGYwOTQ7IiANCmQ9Ik0xNDA3IDcxMHEwIDQ0IC03IDExMy41dC0xOCA5Ni41cS0xMiAzMCAtMTcgNDR0LTkgMzYuNXQtNCA0OC41cTAgMjMgNSA2OC41dDUgNjcuNXEwIDM3IC0xMCA1NXEtNCAxIC0xMyAxcS0xOSAwIC01OCAtNC41dC01OSAtNC41cS02MCAwIC0xNzYgMjR0LTE3NSAyNHEtNDMgMCAtOTQuNSAtMTEuNXQtODUgLTIzLjV0LTg5LjUgLTM0cS0xMzcgLTU0IC0yMDIgLTEwM3EtOTYgLTczIC0xNTkuNSAtMTg5LjV0LTg4IC0yMzZ0LTI0LjUgLTI0OC41DQpxMCAtNDAgMTIuNSAtMTIwdDEyLjUgLTEyMXEwIC0yMyAtMTEgLTY2LjV0LTExIC02NS41dDEyIC0zNi41dDM0IC0xNC41cTI0IDAgNzIuNSAxMXQ3My41IDExcTU3IDAgMTY5LjUgLTE1LjV0MTY5LjUgLTE1LjVxMTgxIDAgMjg0IDM2cTEyOSA0NSAyMzUuNSAxNTIuNXQxNjYgMjQ1LjV0NTkuNSAyNzV6TTE1MzUgNzEycTAgLTE2NSAtNzAgLTMyNy41dC0xOTYgLTI4OHQtMjgxIC0xODAuNXEtMTI0IC00NCAtMzI2IC00NA0KcS01NyAwIC0xNzAgMTQuNXQtMTY5IDE0LjVxLTI0IDAgLTcyLjUgLTE0LjV0LTczLjUgLTE0LjVxLTczIDAgLTEyMy41IDU1LjV0LTUwLjUgMTI4LjVxMCAyNCAxMSA2OHQxMSA2N3EwIDQwIC0xMi41IDEyMC41dC0xMi41IDEyMS41cTAgMTExIDE4IDIxNy41dDU0LjUgMjA5LjV0MTAwLjUgMTk0dDE1MCAxNTZxNzggNTkgMjMyIDEyMHExOTQgNzggMzE2IDc4cTYwIDAgMTc1LjUgLTI0dDE3My41IC0yNHExOSAwIDU3IDV0NTggNQ0KcTgxIDAgMTE4IC01MC41dDM3IC0xMzQuNXEwIC0yMyAtNSAtNjh0LTUgLTY4cTAgLTEzIDIgLTI1dDMuNSAtMTYuNXQ3LjUgLTIwLjV0OCAtMjBxMTYgLTQwIDI1IC0xMTguNXQ5IC0xMzYuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InBob25lIiB1bmljb2RlPSImI3hmMDk1OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDggMjk2cTAgLTI3IC0xMCAtNzAuNXQtMjEgLTY4LjVxLTIxIC01MCAtMTIyIC0xMDZxLTk0IC01MSAtMTg2IC01MXEtMjcgMCAtNTMgMy41dC01Ny41IDEyLjV0LTQ3IDE0LjV0LTU1LjUgMjAuNXQtNDkgMThxLTk4IDM1IC0xNzUgODNxLTEyNyA3OSAtMjY0IDIxNnQtMjE2IDI2NHEtNDggNzcgLTgzIDE3NXEtMyA5IC0xOCA0OXQtMjAuNSA1NS41dC0xNC41IDQ3dC0xMi41IDU3LjV0LTMuNSA1M3EwIDkyIDUxIDE4Ng0KcTU2IDEwMSAxMDYgMTIycTI1IDExIDY4LjUgMjF0NzAuNSAxMHExNCAwIDIxIC0zcTE4IC02IDUzIC03NnExMSAtMTkgMzAgLTU0dDM1IC02My41dDMxIC01My41cTMgLTQgMTcuNSAtMjV0MjEuNSAtMzUuNXQ3IC0yOC41cTAgLTIwIC0yOC41IC01MHQtNjIgLTU1dC02MiAtNTN0LTI4LjUgLTQ2cTAgLTkgNSAtMjIuNXQ4LjUgLTIwLjV0MTQgLTI0dDExLjUgLTE5cTc2IC0xMzcgMTc0IC0yMzV0MjM1IC0xNzRxMiAtMSAxOSAtMTEuNXQyNCAtMTQNCnQyMC41IC04LjV0MjIuNSAtNXExOCAwIDQ2IDI4LjV0NTMgNjJ0NTUgNjJ0NTAgMjguNXExNCAwIDI4LjUgLTd0MzUuNSAtMjEuNXQyNSAtMTcuNXEyNSAtMTUgNTMuNSAtMzF0NjMuNSAtMzV0NTQgLTMwcTcwIC0zNSA3NiAtNTNxMyAtNyAzIC0yMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZWNrX2VtcHR5IiB1bmljb2RlPSImI3hmMDk2OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTExMjAgMTI4MGgtODMycS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdi04MzJxMCAtNjYgNDcgLTExM3QxMTMgLTQ3aDgzMnE2NiAwIDExMyA0N3Q0NyAxMTN2ODMycTAgNjYgLTQ3IDExM3QtMTEzIDQ3ek0xNDA4IDExMjB2LTgzMnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtODMycS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY4MzJxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDgzMg0KcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYm9va21hcmtfZW1wdHkiIHVuaWNvZGU9IiYjeGYwOTc7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTE1MiAxMjgwaC0xMDI0di0xMjQybDQyMyA0MDZsODkgODVsODkgLTg1bDQyMyAtNDA2djEyNDJ6TTExNjQgMTQwOHEyMyAwIDQ0IC05cTMzIC0xMyA1Mi41IC00MXQxOS41IC02MnYtMTI4OXEwIC0zNCAtMTkuNSAtNjJ0LTUyLjUgLTQxcS0xOSAtOCAtNDQgLThxLTQ4IDAgLTgzIDMybC00NDEgNDI0bC00NDEgLTQyNHEtMzYgLTMzIC04MyAtMzNxLTIzIDAgLTQ0IDlxLTMzIDEzIC01Mi41IDQxdC0xOS41IDYydjEyODkNCnEwIDM0IDE5LjUgNjJ0NTIuNSA0MXEyMSA5IDQ0IDloMTA0OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InBob25lX3NpZ24iIHVuaWNvZGU9IiYjeGYwOTg7IiANCmQ9Ik0xMjgwIDM0M3EwIDExIC0yIDE2dC0xOCAxNi41dC00MC41IDI1dC00Ny41IDI2LjV0LTQ1LjUgMjV0LTI4LjUgMTVxLTUgMyAtMTkgMTN0LTI1IDE1dC0yMSA1cS0xNSAwIC0zNi41IC0yMC41dC0zOS41IC00NXQtMzguNSAtNDV0LTMzLjUgLTIwLjVxLTcgMCAtMTYuNSAzLjV0LTE1LjUgNi41dC0xNyA5LjV0LTE0IDguNXEtOTkgNTUgLTE3MCAxMjYuNXQtMTI3IDE3MC41cS0yIDMgLTguNSAxNHQtOS41IDE3dC02LjUgMTUuNQ0KdC0zLjUgMTYuNXEwIDEzIDIwLjUgMzMuNXQ0NSAzOC41dDQ1IDM5LjV0MjAuNSAzNi41cTAgMTAgLTUgMjF0LTE1IDI1dC0xMyAxOXEtMyA2IC0xNSAyOC41dC0yNSA0NS41dC0yNi41IDQ3LjV0LTI1IDQwLjV0LTE2LjUgMTh0LTE2IDJxLTQ4IDAgLTEwMSAtMjJxLTQ2IC0yMSAtODAgLTk0LjV0LTM0IC0xMzAuNXEwIC0xNiAyLjUgLTM0dDUgLTMwLjV0OSAtMzN0MTAgLTI5LjV0MTIuNSAtMzN0MTEgLTMwcTYwIC0xNjQgMjE2LjUgLTMyMC41DQp0MzIwLjUgLTIxNi41cTYgLTIgMzAgLTExdDMzIC0xMi41dDI5LjUgLTEwdDMzIC05dDMwLjUgLTV0MzQgLTIuNXE1NyAwIDEzMC41IDM0dDk0LjUgODBxMjIgNTMgMjIgMTAxek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idHdpdHRlciIgdW5pY29kZT0iJiN4ZjA5OTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjIwIDExMjhxLTY3IC05OCAtMTYyIC0xNjdxMSAtMTQgMSAtNDJxMCAtMTMwIC0zOCAtMjU5LjV0LTExNS41IC0yNDguNXQtMTg0LjUgLTIxMC41dC0yNTggLTE0NnQtMzIzIC01NC41cS0yNzEgMCAtNDk2IDE0NXEzNSAtNCA3OCAtNHEyMjUgMCA0MDEgMTM4cS0xMDUgMiAtMTg4IDY0LjV0LTExNCAxNTkuNXEzMyAtNSA2MSAtNXE0MyAwIDg1IDExcS0xMTIgMjMgLTE4NS41IDExMS41dC03My41IDIwNS41djRxNjggLTM4IDE0NiAtNDENCnEtNjYgNDQgLTEwNSAxMTV0LTM5IDE1NHEwIDg4IDQ0IDE2M3ExMjEgLTE0OSAyOTQuNSAtMjM4LjV0MzcxLjUgLTk5LjVxLTggMzggLTggNzRxMCAxMzQgOTQuNSAyMjguNXQyMjguNSA5NC41cTE0MCAwIDIzNiAtMTAycTEwOSAyMSAyMDUgNzhxLTM3IC0xMTUgLTE0MiAtMTc4cTkzIDEwIDE4NiA1MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZhY2Vib29rIiB1bmljb2RlPSImI3hmMDlhOyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTk1OSAxNTI0di0yNjRoLTE1N3EtODYgMCAtMTE2IC0zNnQtMzAgLTEwOHYtMTg5aDI5M2wtMzkgLTI5NmgtMjU0di03NTloLTMwNnY3NTloLTI1NXYyOTZoMjU1djIxOHEwIDE4NiAxMDQgMjg4LjV0Mjc3IDEwMi41cTE0NyAwIDIyOCAtMTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnaXRodWIiIHVuaWNvZGU9IiYjeGYwOWI7IiANCmQ9Ik03NjggMTQwOHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41cTAgLTI1MSAtMTQ2LjUgLTQ1MS41dC0zNzguNSAtMjc3LjVxLTI3IC01IC00MCA3dC0xMyAzMHEwIDMgMC41IDc2LjV0MC41IDEzNC41cTAgOTcgLTUyIDE0MnE1NyA2IDEwMi41IDE4dDk0IDM5dDgxIDY2LjV0NTMgMTA1dDIwLjUgMTUwLjVxMCAxMTkgLTc5IDIwNnEzNyA5MSAtOCAyMDRxLTI4IDkgLTgxIC0xMXQtOTIgLTQ0bC0zOCAtMjQNCnEtOTMgMjYgLTE5MiAyNnQtMTkyIC0yNnEtMTYgMTEgLTQyLjUgMjd0LTgzLjUgMzguNXQtODUgMTMuNXEtNDUgLTExMyAtOCAtMjA0cS03OSAtODcgLTc5IC0yMDZxMCAtODUgMjAuNSAtMTUwdDUyLjUgLTEwNXQ4MC41IC02N3Q5NCAtMzl0MTAyLjUgLTE4cS0zOSAtMzYgLTQ5IC0xMDNxLTIxIC0xMCAtNDUgLTE1dC01NyAtNXQtNjUuNSAyMS41dC01NS41IDYyLjVxLTE5IDMyIC00OC41IDUydC00OS41IDI0bC0yMCAzcS0yMSAwIC0yOSAtNC41DQp0LTUgLTExLjV0OSAtMTR0MTMgLTEybDcgLTVxMjIgLTEwIDQzLjUgLTM4dDMxLjUgLTUxbDEwIC0yM3ExMyAtMzggNDQgLTYxLjV0NjcgLTMwdDY5LjUgLTd0NTUuNSAzLjVsMjMgNHEwIC0zOCAwLjUgLTg4LjV0MC41IC01NC41cTAgLTE4IC0xMyAtMzB0LTQwIC03cS0yMzIgNzcgLTM3OC41IDI3Ny41dC0xNDYuNSA0NTEuNXEwIDIwOSAxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzek0yOTEgMzA1cTMgNyAtNyAxMg0KcS0xMCAzIC0xMyAtMnEtMyAtNyA3IC0xMnE5IC02IDEzIDJ6TTMyMiAyNzFxNyA1IC0yIDE2cS0xMCA5IC0xNiAzcS03IC01IDIgLTE2cTEwIC0xMCAxNiAtM3pNMzUyIDIyNnE5IDcgMCAxOXEtOCAxMyAtMTcgNnEtOSAtNSAwIC0xOHQxNyAtN3pNMzk0IDE4NHE4IDggLTQgMTlxLTEyIDEyIC0yMCAzcS05IC04IDQgLTE5cTEyIC0xMiAyMCAtM3pNNDUxIDE1OXEzIDExIC0xMyAxNnEtMTUgNCAtMTkgLTd0MTMgLTE1cTE1IC02IDE5IDZ6DQpNNTE0IDE1NHEwIDEzIC0xNyAxMXEtMTYgMCAtMTYgLTExcTAgLTEzIDE3IC0xMXExNiAwIDE2IDExek01NzIgMTY0cS0yIDExIC0xOCA5cS0xNiAtMyAtMTQgLTE1dDE4IC04dDE0IDE0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5sb2NrIiB1bmljb2RlPSImI3hmMDljOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTE2NjQgOTYwdi0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF2LTE5Mmg5NnE0MCAwIDY4IC0yOHQyOCAtNjh2LTU3NnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djU3NnEwIDQwIDI4IDY4dDY4IDI4aDY3MnYxOTJxMCAxODUgMTMxLjUgMzE2LjV0MzE2LjUgMTMxLjUNCnQzMTYuNSAtMTMxLjV0MTMxLjUgLTMxNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY3JlZGl0X2NhcmQiIHVuaWNvZGU9IiYjeGYwOWQ7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTc2MCAxNDA4cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNjAwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxNjAwek0xNjAgMTI4MHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTIyNGgxNjY0djIyNHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTE2MDB6TTE3NjAgMHExMyAwIDIyLjUgOS41dDkuNSAyMi41djYwOGgtMTY2NHYtNjA4DQpxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxNjAwek0yNTYgMTI4djEyOGgyNTZ2LTEyOGgtMjU2ek02NDAgMTI4djEyOGgzODR2LTEyOGgtMzg0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icnNzIiB1bmljb2RlPSImI3hmMDllOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM4NCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek04OTYgNjlxMiAtMjggLTE3IC00OHEtMTggLTIxIC00NyAtMjFoLTEzNXEtMjUgMCAtNDMgMTYuNXQtMjAgNDEuNXEtMjIgMjI5IC0xODQuNSAzOTEuNXQtMzkxLjUgMTg0LjVxLTI1IDIgLTQxLjUgMjB0LTE2LjUgNDN2MTM1cTAgMjkgMjEgNDdxMTcgMTcgNDMgMTdoNXExNjAgLTEzIDMwNiAtODAuNQ0KdDI1OSAtMTgxLjVxMTE0IC0xMTMgMTgxLjUgLTI1OXQ4MC41IC0zMDZ6TTE0MDggNjdxMiAtMjcgLTE4IC00N3EtMTggLTIwIC00NiAtMjBoLTE0M3EtMjYgMCAtNDQuNSAxNy41dC0xOS41IDQyLjVxLTEyIDIxNSAtMTAxIDQwOC41dC0yMzEuNSAzMzZ0LTMzNiAyMzEuNXQtNDA4LjUgMTAycS0yNSAxIC00Mi41IDE5LjV0LTE3LjUgNDMuNXYxNDNxMCAyOCAyMCA0NnExOCAxOCA0NCAxOGgzcTI2MiAtMTMgNTAxLjUgLTEyMHQ0MjUuNSAtMjk0DQpxMTg3IC0xODYgMjk0IC00MjUuNXQxMjAgLTUwMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGRkIiB1bmljb2RlPSImI3hmMGEwOyIgDQpkPSJNMTA0MCAzMjBxMCAtMzMgLTIzLjUgLTU2LjV0LTU2LjUgLTIzLjV0LTU2LjUgMjMuNXQtMjMuNSA1Ni41dDIzLjUgNTYuNXQ1Ni41IDIzLjV0NTYuNSAtMjMuNXQyMy41IC01Ni41ek0xMjk2IDMyMHEwIC0zMyAtMjMuNSAtNTYuNXQtNTYuNSAtMjMuNXQtNTYuNSAyMy41dC0yMy41IDU2LjV0MjMuNSA1Ni41dDU2LjUgMjMuNXQ1Ni41IC0yMy41dDIzLjUgLTU2LjV6TTE0MDggMTYwdjMyMHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjUNCmgtMTIxNnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTMyMHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDEyMTZxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTc4IDY0MGgxMTgwbC0xNTcgNDgycS00IDEzIC0xNiAyMS41dC0yNiA4LjVoLTc4MnEtMTQgMCAtMjYgLTguNXQtMTYgLTIxLjV6TTE1MzYgNDgwdi0zMjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTEyMTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjMyMHEwIDI1IDE2IDc1DQpsMTk3IDYwNnExNyA1MyA2MyA4NnQxMDEgMzNoNzgycTU1IDAgMTAxIC0zM3Q2MyAtODZsMTk3IC02MDZxMTYgLTUwIDE2IC03NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJ1bGxob3JuIiB1bmljb2RlPSImI3hmMGExOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2NjQgODk2cTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41dC0zNy41IC05MC41dC05MC41IC0zNy41di0zODRxMCAtNTIgLTM4IC05MHQtOTAgLTM4cS00MTcgMzQ3IC04MTIgMzgwcS01OCAtMTkgLTkxIC02NnQtMzEgLTEwMC41dDQwIC05Mi41cS0yMCAtMzMgLTIzIC02NS41dDYgLTU4dDMzLjUgLTU1dDQ4IC01MHQ2MS41IC01MC41cS0yOSAtNTggLTExMS41IC04M3QtMTY4LjUgLTExLjV0LTEzMiA1NS41cS03IDIzIC0yOS41IDg3LjUNCnQtMzIgOTQuNXQtMjMgODl0LTE1IDEwMXQzLjUgOTguNXQyMiAxMTAuNWgtMTIycS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxOTJxMCA2NiA0NyAxMTN0MTEzIDQ3aDQ4MHE0MzUgMCA4OTYgMzg0cTUyIDAgOTAgLTM4dDM4IC05MHYtMzg0ek0xNTM2IDI5MnY5NTRxLTM5NCAtMzAyIC03NjggLTM0M3YtMjcwcTM3NyAtNDIgNzY4IC0zNDF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiZWxsIiB1bmljb2RlPSImI3hmMGEyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTkxMiAtMTYwcTAgMTYgLTE2IDE2cS01OSAwIC0xMDEuNSA0Mi41dC00Mi41IDEwMS41cTAgMTYgLTE2IDE2dC0xNiAtMTZxMCAtNzMgNTEuNSAtMTI0LjV0MTI0LjUgLTUxLjVxMTYgMCAxNiAxNnpNMjQ2IDEyOGgxMzAwcS0yNjYgMzAwIC0yNjYgODMycTAgNTEgLTI0IDEwNXQtNjkgMTAzdC0xMjEuNSA4MC41dC0xNjkuNSAzMS41dC0xNjkuNSAtMzEuNXQtMTIxLjUgLTgwLjV0LTY5IC0xMDN0LTI0IC0xMDVxMCAtNTMyIC0yNjYgLTgzMnoNCk0xNzI4IDEyOHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTQ0OHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxaC00NDhxLTUyIDAgLTkwIDM4dC0zOCA5MHE1MCA0MiA5MSA4OHQ4NSAxMTkuNXQ3NC41IDE1OC41dDUwIDIwNnQxOS41IDI2MHEwIDE1MiAxMTcgMjgyLjV0MzA3IDE1OC41cS04IDE5IC04IDM5cTAgNDAgMjggNjh0NjggMjh0NjggLTI4dDI4IC02OHEwIC0yMCAtOCAtMzlxMTkwIC0yOCAzMDcgLTE1OC41DQp0MTE3IC0yODIuNXEwIC0xMzkgMTkuNSAtMjYwdDUwIC0yMDZ0NzQuNSAtMTU4LjV0ODUgLTExOS41dDkxIC04OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNlcnRpZmljYXRlIiB1bmljb2RlPSImI3hmMGEzOyIgDQpkPSJNMTM3NiA2NDBsMTM4IC0xMzVxMzAgLTI4IDIwIC03MHEtMTIgLTQxIC01MiAtNTFsLTE4OCAtNDhsNTMgLTE4NnExMiAtNDEgLTE5IC03MHEtMjkgLTMxIC03MCAtMTlsLTE4NiA1M2wtNDggLTE4OHEtMTAgLTQwIC01MSAtNTJxLTEyIC0yIC0xOSAtMnEtMzEgMCAtNTEgMjJsLTEzNSAxMzhsLTEzNSAtMTM4cS0yOCAtMzAgLTcwIC0yMHEtNDEgMTEgLTUxIDUybC00OCAxODhsLTE4NiAtNTNxLTQxIC0xMiAtNzAgMTlxLTMxIDI5IC0xOSA3MA0KbDUzIDE4NmwtMTg4IDQ4cS00MCAxMCAtNTIgNTFxLTEwIDQyIDIwIDcwbDEzOCAxMzVsLTEzOCAxMzVxLTMwIDI4IC0yMCA3MHExMiA0MSA1MiA1MWwxODggNDhsLTUzIDE4NnEtMTIgNDEgMTkgNzBxMjkgMzEgNzAgMTlsMTg2IC01M2w0OCAxODhxMTAgNDEgNTEgNTFxNDEgMTIgNzAgLTE5bDEzNSAtMTM5bDEzNSAxMzlxMjkgMzAgNzAgMTlxNDEgLTEwIDUxIC01MWw0OCAtMTg4bDE4NiA1M3E0MSAxMiA3MCAtMTlxMzEgLTI5IDE5IC03MA0KbC01MyAtMTg2bDE4OCAtNDhxNDAgLTEwIDUyIC01MXExMCAtNDIgLTIwIC03MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImhhbmRfcmlnaHQiIHVuaWNvZGU9IiYjeGYwYTQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjU2IDE5MnEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE2NjQgNzY4cTAgNTEgLTM5IDg5LjV0LTg5IDM4LjVoLTU3NnEwIDIwIDE1IDQ4LjV0MzMgNTV0MzMgNjh0MTUgODQuNXEwIDY3IC00NC41IDk3LjV0LTExNS41IDMwLjVxLTI0IDAgLTkwIC0xMzlxLTI0IC00NCAtMzcgLTY1cS00MCAtNjQgLTExMiAtMTQ1cS03MSAtODEgLTEwMSAtMTA2DQpxLTY5IC01NyAtMTQwIC01N2gtMzJ2LTY0MGgzMnE3MiAwIDE2NyAtMzJ0MTkzLjUgLTY0dDE3OS41IC0zMnExODkgMCAxODkgMTY3cTAgMjYgLTUgNTZxMzAgMTYgNDcuNSA1Mi41dDE3LjUgNzMuNXQtMTggNjlxNTMgNTAgNTMgMTE5cTAgMjUgLTEwIDU1LjV0LTI1IDQ3LjVoMzMxcTUyIDAgOTAgMzh0MzggOTB6TTE3OTIgNzY5cTAgLTEwNSAtNzUuNSAtMTgxdC0xODAuNSAtNzZoLTE2OXEtNCAtNjIgLTM3IC0xMTlxMyAtMjEgMyAtNDMNCnEwIC0xMDEgLTYwIC0xNzhxMSAtMTM5IC04NSAtMjE5LjV0LTIyNyAtODAuNXEtMTMzIDAgLTMyMiA2OXEtMTY0IDU5IC0yMjMgNTloLTI4OHEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV2NjQwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNWgyODhxMTAgMCAyMS41IDQuNXQyMy41IDE0dDIyLjUgMTh0MjQgMjIuNXQyMC41IDIxLjV0MTkgMjEuNXQxNCAxN3E2NSA3NCAxMDAgMTI5cTEzIDIxIDMzIDYydDM3IDcydDQwLjUgNjN0NTUgNDkuNQ0KdDY5LjUgMTcuNXExMjUgMCAyMDYuNSAtNjd0ODEuNSAtMTg5cTAgLTY4IC0yMiAtMTI4aDM3NHExMDQgMCAxODAgLTc2dDc2IC0xNzl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJoYW5kX2xlZnQiIHVuaWNvZGU9IiYjeGYwYTU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTM3NiAxMjhoMzJ2NjQwaC0zMnEtMzUgMCAtNjcuNSAxMnQtNjIuNSAzN3QtNTAgNDZ0LTQ5IDU0cS04IDkgLTEyIDE0cS03MiA4MSAtMTEyIDE0NXEtMTQgMjIgLTM4IDY4cS0xIDMgLTEwLjUgMjIuNXQtMTguNSAzNnQtMjAgMzUuNXQtMjEuNSAzMC41dC0xOC41IDExLjVxLTcxIDAgLTExNS41IC0zMC41dC00NC41IC05Ny41cTAgLTQzIDE1IC04NC41dDMzIC02OHQzMyAtNTV0MTUgLTQ4LjVoLTU3NnEtNTAgMCAtODkgLTM4LjUNCnQtMzkgLTg5LjVxMCAtNTIgMzggLTkwdDkwIC0zOGgzMzFxLTE1IC0xNyAtMjUgLTQ3LjV0LTEwIC01NS41cTAgLTY5IDUzIC0xMTlxLTE4IC0zMiAtMTggLTY5dDE3LjUgLTczLjV0NDcuNSAtNTIuNXEtNCAtMjQgLTQgLTU2cTAgLTg1IDQ4LjUgLTEyNnQxMzUuNSAtNDFxODQgMCAxODMgMzJ0MTk0IDY0dDE2NyAzMnpNMTY2NCAxOTJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1eg0KTTE3OTIgNzY4di02NDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjVoLTI4OHEtNTkgMCAtMjIzIC01OXEtMTkwIC02OSAtMzE3IC02OXEtMTQyIDAgLTIzMCA3Ny41dC04NyAyMTcuNWwxIDVxLTYxIDc2IC02MSAxNzhxMCAyMiAzIDQzcS0zMyA1NyAtMzcgMTE5aC0xNjlxLTEwNSAwIC0xODAuNSA3NnQtNzUuNSAxODFxMCAxMDMgNzYgMTc5dDE4MCA3NmgzNzRxLTIyIDYwIC0yMiAxMjhxMCAxMjIgODEuNSAxODl0MjA2LjUgNjcNCnEzOCAwIDY5LjUgLTE3LjV0NTUgLTQ5LjV0NDAuNSAtNjN0MzcgLTcydDMzIC02MnEzNSAtNTUgMTAwIC0xMjlxMiAtMyAxNCAtMTd0MTkgLTIxLjV0MjAuNSAtMjEuNXQyNCAtMjIuNXQyMi41IC0xOHQyMy41IC0xNHQyMS41IC00LjVoMjg4cTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaGFuZF91cCIgdW5pY29kZT0iJiN4ZjBhNjsiIA0KZD0iTTEyODAgLTY0cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTQwOCA3MDBxMCAxODkgLTE2NyAxODlxLTI2IDAgLTU2IC01cS0xNiAzMCAtNTIuNSA0Ny41dC03My41IDE3LjV0LTY5IC0xOHEtNTAgNTMgLTExOSA1M3EtMjUgMCAtNTUuNSAtMTB0LTQ3LjUgLTI1djMzMXEwIDUyIC0zOCA5MHQtOTAgMzhxLTUxIDAgLTg5LjUgLTM5dC0zOC41IC04OXYtNTc2DQpxLTIwIDAgLTQ4LjUgMTV0LTU1IDMzdC02OCAzM3QtODQuNSAxNXEtNjcgMCAtOTcuNSAtNDQuNXQtMzAuNSAtMTE1LjVxMCAtMjQgMTM5IC05MHE0NCAtMjQgNjUgLTM3cTY0IC00MCAxNDUgLTExMnE4MSAtNzEgMTA2IC0xMDFxNTcgLTY5IDU3IC0xNDB2LTMyaDY0MHYzMnEwIDcyIDMyIDE2N3Q2NCAxOTMuNXQzMiAxNzkuNXpNMTUzNiA3MDVxMCAtMTMzIC02OSAtMzIycS01OSAtMTY0IC01OSAtMjIzdi0yODhxMCAtNTMgLTM3LjUgLTkwLjUNCnQtOTAuNSAtMzcuNWgtNjQwcS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXYyODhxMCAxMCAtNC41IDIxLjV0LTE0IDIzLjV0LTE4IDIyLjV0LTIyLjUgMjR0LTIxLjUgMjAuNXQtMjEuNSAxOXQtMTcgMTRxLTc0IDY1IC0xMjkgMTAwcS0yMSAxMyAtNjIgMzN0LTcyIDM3dC02MyA0MC41dC00OS41IDU1dC0xNy41IDY5LjVxMCAxMjUgNjcgMjA2LjV0MTg5IDgxLjVxNjggMCAxMjggLTIydjM3NHEwIDEwNCA3NiAxODB0MTc5IDc2DQpxMTA1IDAgMTgxIC03NS41dDc2IC0xODAuNXYtMTY5cTYyIC00IDExOSAtMzdxMjEgMyA0MyAzcTEwMSAwIDE3OCAtNjBxMTM5IDEgMjE5LjUgLTg1dDgwLjUgLTIyN3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImhhbmRfZG93biIgdW5pY29kZT0iJiN4ZjBhNzsiIA0KZD0iTTE0MDggNTc2cTAgODQgLTMyIDE4M3QtNjQgMTk0dC0zMiAxNjd2MzJoLTY0MHYtMzJxMCAtMzUgLTEyIC02Ny41dC0zNyAtNjIuNXQtNDYgLTUwdC01NCAtNDlxLTkgLTggLTE0IC0xMnEtODEgLTcyIC0xNDUgLTExMnEtMjIgLTE0IC02OCAtMzhxLTMgLTEgLTIyLjUgLTEwLjV0LTM2IC0xOC41dC0zNS41IC0yMHQtMzAuNSAtMjEuNXQtMTEuNSAtMTguNXEwIC03MSAzMC41IC0xMTUuNXQ5Ny41IC00NC41cTQzIDAgODQuNSAxNXQ2OCAzMw0KdDU1IDMzdDQ4LjUgMTV2LTU3NnEwIC01MCAzOC41IC04OXQ4OS41IC0zOXE1MiAwIDkwIDM4dDM4IDkwdjMzMXE0NiAtMzUgMTAzIC0zNXE2OSAwIDExOSA1M3EzMiAtMTggNjkgLTE4dDczLjUgMTcuNXQ1Mi41IDQ3LjVxMjQgLTQgNTYgLTRxODUgMCAxMjYgNDguNXQ0MSAxMzUuNXpNMTI4MCAxMzQ0cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXpNMTUzNiA1ODANCnEwIC0xNDIgLTc3LjUgLTIzMHQtMjE3LjUgLTg3bC01IDFxLTc2IC02MSAtMTc4IC02MXEtMjIgMCAtNDMgM3EtNTQgLTMwIC0xMTkgLTM3di0xNjlxMCAtMTA1IC03NiAtMTgwLjV0LTE4MSAtNzUuNXEtMTAzIDAgLTE3OSA3NnQtNzYgMTgwdjM3NHEtNTQgLTIyIC0xMjggLTIycS0xMjEgMCAtMTg4LjUgODEuNXQtNjcuNSAyMDYuNXEwIDM4IDE3LjUgNjkuNXQ0OS41IDU1dDYzIDQwLjV0NzIgMzd0NjIgMzNxNTUgMzUgMTI5IDEwMA0KcTMgMiAxNyAxNHQyMS41IDE5dDIxLjUgMjAuNXQyMi41IDI0dDE4IDIyLjV0MTQgMjMuNXQ0LjUgMjEuNXYyODhxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDY0MHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXYtMjg4cTAgLTU5IDU5IC0yMjNxNjkgLTE5MCA2OSAtMzE3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2lyY2xlX2Fycm93X2xlZnQiIHVuaWNvZGU9IiYjeGYwYTg7IiANCmQ9Ik0xMjgwIDU3NnYxMjhxMCAyNiAtMTkgNDV0LTQ1IDE5aC01MDJsMTg5IDE4OXExOSAxOSAxOSA0NXQtMTkgNDVsLTkxIDkxcS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtMzYyIC0zNjJsLTkxIC05MXEtMTggLTE4IC0xOCAtNDV0MTggLTQ1bDkxIC05MWwzNjIgLTM2MnExOCAtMTggNDUgLTE4dDQ1IDE4bDkxIDkxcTE4IDE4IDE4IDQ1dC0xOCA0NWwtMTg5IDE4OWg1MDJxMjYgMCA0NSAxOXQxOSA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9hcnJvd19yaWdodCIgdW5pY29kZT0iJiN4ZjBhOTsiIA0KZD0iTTEyODUgNjQwcTAgMjcgLTE4IDQ1bC05MSA5MWwtMzYyIDM2MnEtMTggMTggLTQ1IDE4dC00NSAtMThsLTkxIC05MXEtMTggLTE4IC0xOCAtNDV0MTggLTQ1bDE4OSAtMTg5aC01MDJxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0xMjhxMCAtMjYgMTkgLTQ1dDQ1IC0xOWg1MDJsLTE4OSAtMTg5cS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsOTEgLTkxcTE4IC0xOCA0NSAtMTh0NDUgMThsMzYyIDM2Mmw5MSA5MXExOCAxOCAxOCA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9hcnJvd191cCIgdW5pY29kZT0iJiN4ZjBhYTsiIA0KZD0iTTEyODQgNjQxcTAgMjcgLTE4IDQ1bC0zNjIgMzYybC05MSA5MXEtMTggMTggLTQ1IDE4dC00NSAtMThsLTkxIC05MWwtMzYyIC0zNjJxLTE4IC0xOCAtMTggLTQ1dDE4IC00NWw5MSAtOTFxMTggLTE4IDQ1IC0xOHQ0NSAxOGwxODkgMTg5di01MDJxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXY1MDJsMTg5IC0xODlxMTkgLTE5IDQ1IC0xOXQ0NSAxOWw5MSA5MXExOCAxOCAxOCA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNpcmNsZV9hcnJvd19kb3duIiB1bmljb2RlPSImI3hmMGFiOyIgDQpkPSJNMTI4NCA2MzlxMCAyNyAtMTggNDVsLTkxIDkxcS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtMTg5IC0xODl2NTAycTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtNTAybC0xODkgMTg5cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtOTEgLTkxcS0xOCAtMTggLTE4IC00NXQxOCAtNDVsMzYyIC0zNjJsOTEgLTkxcTE4IC0xOCA0NSAtMTh0NDUgMThsOTEgOTFsMzYyIDM2MnExOCAxOCAxOCA0NXpNMTUzNiA2NDANCnEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imdsb2JlIiB1bmljb2RlPSImI3hmMGFjOyIgDQpkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNMTA0MiA4ODdxLTIgLTEgLTkuNSAtOS41dC0xMy41IC05LjVxMiAwIDQuNSA1dDUgMTF0My41IDdxNiA3IDIyIDE1cTE0IDYgNTIgMTJxMzQgOCA1MSAtMTENCnEtMiAyIDkuNSAxM3QxNC41IDEycTMgMiAxNSA0LjV0MTUgNy41bDIgMjJxLTEyIC0xIC0xNy41IDd0LTYuNSAyMXEwIC0yIC02IC04cTAgNyAtNC41IDh0LTExLjUgLTF0LTkgLTFxLTEwIDMgLTE1IDcuNXQtOCAxNi41dC00IDE1cS0yIDUgLTkuNSAxMXQtOS41IDEwcS0xIDIgLTIuNSA1LjV0LTMgNi41dC00IDUuNXQtNS41IDIuNXQtNyAtNXQtNy41IC0xMHQtNC41IC01cS0zIDIgLTYgMS41dC00LjUgLTF0LTQuNSAtM3QtNSAtMy41DQpxLTMgLTIgLTguNSAtM3QtOC41IC0ycTE1IDUgLTEgMTFxLTEwIDQgLTE2IDNxOSA0IDcuNSAxMnQtOC41IDE0aDVxLTEgNCAtOC41IDguNXQtMTcuNSA4LjV0LTEzIDZxLTggNSAtMzQgOS41dC0zMyAwLjVxLTUgLTYgLTQuNSAtMTAuNXQ0IC0xNHQzLjUgLTEyLjVxMSAtNiAtNS41IC0xM3QtNi41IC0xMnEwIC03IDE0IC0xNS41dDEwIC0yMS41cS0zIC04IC0xNiAtMTZ0LTE2IC0xMnEtNSAtOCAtMS41IC0xOC41dDEwLjUgLTE2LjUNCnEyIC0yIDEuNSAtNHQtMy41IC00LjV0LTUuNSAtNHQtNi41IC0zLjVsLTMgLTJxLTExIC01IC0yMC41IDZ0LTEzLjUgMjZxLTcgMjUgLTE2IDMwcS0yMyA4IC0yOSAtMXEtNSAxMyAtNDEgMjZxLTI1IDkgLTU4IDRxNiAxIDAgMTVxLTcgMTUgLTE5IDEycTMgNiA0IDE3LjV0MSAxMy41cTMgMTMgMTIgMjNxMSAxIDcgOC41dDkuNSAxMy41dDAuNSA2cTM1IC00IDUwIDExcTUgNSAxMS41IDE3dDEwLjUgMTdxOSA2IDE0IDUuNXQxNC41IC01LjUNCnQxNC41IC01cTE0IC0xIDE1LjUgMTF0LTcuNSAyMHExMiAtMSAzIDE3cS00IDcgLTggOXEtMTIgNCAtMjcgLTVxLTggLTQgMiAtOHEtMSAxIC05LjUgLTEwLjV0LTE2LjUgLTE3LjV0LTE2IDVxLTEgMSAtNS41IDEzLjV0LTkuNSAxMy41cS04IDAgLTE2IC0xNXEzIDggLTExIDE1dC0yNCA4cTE5IDEyIC04IDI3cS03IDQgLTIwLjUgNXQtMTkuNSAtNHEtNSAtNyAtNS41IC0xMS41dDUgLTh0MTAuNSAtNS41dDExLjUgLTR0OC41IC0zDQpxMTQgLTEwIDggLTE0cS0yIC0xIC04LjUgLTMuNXQtMTEuNSAtNC41dC02IC00cS0zIC00IDAgLTE0dC0yIC0xNHEtNSA1IC05IDE3LjV0LTcgMTYuNXE3IC05IC0yNSAtNmwtMTAgMXEtNCAwIC0xNiAtMnQtMjAuNSAtMXQtMTMuNSA4cS00IDggMCAyMHExIDQgNCAycS00IDMgLTExIDkuNXQtMTAgOC41cS00NiAtMTUgLTk0IC00MXE2IC0xIDEyIDFxNSAyIDEzIDYuNXQxMCA1LjVxMzQgMTQgNDIgN2w1IDVxMTQgLTE2IDIwIC0yNQ0KcS03IDQgLTMwIDFxLTIwIC02IC0yMiAtMTJxNyAtMTIgNSAtMThxLTQgMyAtMTEuNSAxMHQtMTQuNSAxMXQtMTUgNXEtMTYgMCAtMjIgLTFxLTE0NiAtODAgLTIzNSAtMjIycTcgLTcgMTIgLThxNCAtMSA1IC05dDIuNSAtMTF0MTEuNSAzcTkgLTggMyAtMTlxMSAxIDQ0IC0yN3ExOSAtMTcgMjEgLTIxcTMgLTExIC0xMCAtMThxLTEgMiAtOSA5dC05IDRxLTMgLTUgMC41IC0xOC41dDEwLjUgLTEyLjVxLTcgMCAtOS41IC0xNnQtMi41IC0zNS41DQp0LTEgLTIzLjVsMiAtMXEtMyAtMTIgNS41IC0zNC41dDIxLjUgLTE5LjVxLTEzIC0zIDIwIC00M3E2IC04IDggLTlxMyAtMiAxMiAtNy41dDE1IC0xMHQxMCAtMTAuNXE0IC01IDEwIC0yMi41dDE0IC0yMy41cS0yIC02IDkuNSAtMjB0MTAuNSAtMjNxLTEgMCAtMi41IC0xdC0yLjUgLTFxMyAtNyAxNS41IC0xNHQxNS41IC0xM3ExIC0zIDIgLTEwdDMgLTExdDggLTJxMiAyMCAtMjQgNjJxLTE1IDI1IC0xNyAyOXEtMyA1IC01LjUgMTUuNQ0KdC00LjUgMTQuNXEyIDAgNiAtMS41dDguNSAtMy41dDcuNSAtNHQyIC0zcS0zIC03IDIgLTE3LjV0MTIgLTE4LjV0MTcgLTE5dDEyIC0xM3E2IC02IDE0IC0xOS41dDAgLTEzLjVxOSAwIDIwIC0xMC41dDE3IC0xOS41cTUgLTggOCAtMjZ0NSAtMjRxMiAtNyA4LjUgLTEzLjV0MTIuNSAtOS41bDE2IC04dDEzIC03cTUgLTIgMTguNSAtMTAuNXQyMS41IC0xMS41cTEwIC00IDE2IC00dDE0LjUgMi41dDEzLjUgMy41cTE1IDIgMjkgLTE1dDIxIC0yMQ0KcTM2IC0xOSA1NSAtMTFxLTIgLTEgMC41IC03LjV0OCAtMTUuNXQ5IC0xNC41dDUuNSAtOC41cTUgLTYgMTggLTE1dDE4IC0xNXE2IDQgNyA5cS0zIC04IDcgLTIwdDE4IC0xMHExNCAzIDE0IDMycS0zMSAtMTUgLTQ5IDE4cTAgMSAtMi41IDUuNXQtNCA4LjV0LTIuNSA4LjV0MCA3LjV0NSAzcTkgMCAxMCAzLjV0LTIgMTIuNXQtNCAxM3EtMSA4IC0xMSAyMHQtMTIgMTVxLTUgLTkgLTE2IC04dC0xNiA5cTAgLTEgLTEuNSAtNS41dC0xLjUgLTYuNQ0KcS0xMyAwIC0xNSAxcTEgMyAyLjUgMTcuNXQzLjUgMjIuNXExIDQgNS41IDEydDcuNSAxNC41dDQgMTIuNXQtNC41IDkuNXQtMTcuNSAyLjVxLTE5IC0xIC0yNiAtMjBxLTEgLTMgLTMgLTEwLjV0LTUgLTExLjV0LTkgLTdxLTcgLTMgLTI0IC0ydC0yNCA1cS0xMyA4IC0yMi41IDI5dC05LjUgMzdxMCAxMCAyLjUgMjYuNXQzIDI1dC01LjUgMjQuNXEzIDIgOSA5LjV0MTAgMTAuNXEyIDEgNC41IDEuNXQ0LjUgMHQ0IDEuNXQzIDZxLTEgMSAtNCAzDQpxLTMgMyAtNCAzcTcgLTMgMjguNSAxLjV0MjcuNSAtMS41cTE1IC0xMSAyMiAycTAgMSAtMi41IDkuNXQtMC41IDEzLjVxNSAtMjcgMjkgLTlxMyAtMyAxNS41IC01dDE3LjUgLTVxMyAtMiA3IC01LjV0NS41IC00LjV0NSAwLjV0OC41IDYuNXExMCAtMTQgMTIgLTI0cTExIC00MCAxOSAtNDRxNyAtMyAxMSAtMnQ0LjUgOS41dDAgMTR0LTEuNSAxMi41bC0xIDh2MThsLTEgOHEtMTUgMyAtMTguNSAxMnQxLjUgMTguNXQxNSAxOC41cTEgMSA4IDMuNQ0KdDE1LjUgNi41dDEyLjUgOHEyMSAxOSAxNSAzNXE3IDAgMTEgOXEtMSAwIC01IDN0LTcuNSA1dC00LjUgMnE5IDUgMiAxNnE1IDMgNy41IDExdDcuNSAxMHE5IC0xMiAyMSAtMnE4IDggMSAxNnE1IDcgMjAuNSAxMC41dDE4LjUgOS41cTcgLTIgOCAydDEgMTJ0MyAxMnE0IDUgMTUgOXQxMyA1bDE3IDExcTMgNCAwIDRxMTggLTIgMzEgMTFxMTAgMTEgLTYgMjBxMyA2IC0zIDkuNXQtMTUgNS41cTMgMSAxMS41IDAuNXQxMC41IDEuNQ0KcTE1IDEwIC03IDE2cS0xNyA1IC00MyAtMTJ6TTg3OSAxMHEyMDYgMzYgMzUxIDE4OXEtMyAzIC0xMi41IDQuNXQtMTIuNSAzLjVxLTE4IDcgLTI0IDhxMSA3IC0yLjUgMTN0LTggOXQtMTIuNSA4dC0xMSA3cS0yIDIgLTcgNnQtNyA1LjV0LTcuNSA0LjV0LTguNSAydC0xMCAtMWwtMyAtMXEtMyAtMSAtNS41IC0yLjV0LTUuNSAtM3QtNCAtM3QwIC0yLjVxLTIxIDE3IC0zNiAyMnEtNSAxIC0xMSA1LjV0LTEwLjUgN3QtMTAgMS41dC0xMS41IC03DQpxLTUgLTUgLTYgLTE1dC0yIC0xM3EtNyA1IDAgMTcuNXQyIDE4LjVxLTMgNiAtMTAuNSA0LjV0LTEyIC00LjV0LTExLjUgLTguNXQtOSAtNi41dC04LjUgLTUuNXQtOC41IC03LjVxLTMgLTQgLTYgLTEydC01IC0xMXEtMiA0IC0xMS41IDYuNXQtOS41IDUuNXEyIC0xMCA0IC0zNXQ1IC0zOHE3IC0zMSAtMTIgLTQ4cS0yNyAtMjUgLTI5IC00MHEtNCAtMjIgMTIgLTI2cTAgLTcgLTggLTIwLjV0LTcgLTIxLjVxMCAtNiAyIC0xNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9IndyZW5jaCIgdW5pY29kZT0iJiN4ZjBhZDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0zODQgNjRxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xMDI4IDQ4NGwtNjgyIC02ODJxLTM3IC0zNyAtOTAgLTM3cS01MiAwIC05MSAzN2wtMTA2IDEwOHEtMzggMzYgLTM4IDkwcTAgNTMgMzggOTFsNjgxIDY4MXEzOSAtOTggMTE0LjUgLTE3My41dDE3My41IC0xMTQuNXpNMTY2MiA5MTlxMCAtMzkgLTIzIC0xMDZxLTQ3IC0xMzQgLTE2NC41IC0yMTcuNQ0KdC0yNTguNSAtODMuNXEtMTg1IDAgLTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXQxMzEuNSAzMTYuNXQzMTYuNSAxMzEuNXE1OCAwIDEyMS41IC0xNi41dDEwNy41IC00Ni41cTE2IC0xMSAxNiAtMjh0LTE2IC0yOGwtMjkzIC0xNjl2LTIyNGwxOTMgLTEwN3E1IDMgNzkgNDguNXQxMzUuNSA4MXQ3MC41IDM1LjVxMTUgMCAyMy41IC0xMHQ4LjUgLTI1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGFza3MiIHVuaWNvZGU9IiYjeGYwYWU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTAyNCAxMjhoNjQwdjEyOGgtNjQwdi0xMjh6TTY0MCA2NDBoMTAyNHYxMjhoLTEwMjR2LTEyOHpNMTI4MCAxMTUyaDM4NHYxMjhoLTM4NHYtMTI4ek0xNzkyIDMyMHYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNzkyIDgzMnYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTkNCnQtMTkgNDV2MjU2cTAgMjYgMTkgNDV0NDUgMTloMTY2NHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTE3OTIgMTM0NHYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTY2NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDE2NjRxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlsdGVyIiB1bmljb2RlPSImI3hmMGIwOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDMgMTI0MXExNyAtNDEgLTE0IC03MGwtNDkzIC00OTN2LTc0MnEwIC00MiAtMzkgLTU5cS0xMyAtNSAtMjUgLTVxLTI3IDAgLTQ1IDE5bC0yNTYgMjU2cS0xOSAxOSAtMTkgNDV2NDg2bC00OTMgNDkzcS0zMSAyOSAtMTQgNzBxMTcgMzkgNTkgMzloMTI4MHE0MiAwIDU5IC0zOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJyaWVmY2FzZSIgdW5pY29kZT0iJiN4ZjBiMTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02NDAgMTI4MGg1MTJ2MTI4aC01MTJ2LTEyOHpNMTc5MiA2NDB2LTQ4MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTQ3MnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2NDgwaDY3MnYtMTYwcTAgLTI2IDE5IC00NXQ0NSAtMTloMzIwcTI2IDAgNDUgMTl0MTkgNDV2MTYwaDY3MnpNMTAyNCA2NDB2LTEyOGgtMjU2djEyOGgyNTZ6TTE3OTIgMTEyMHYtMzg0aC0xNzkydjM4NHEwIDY2IDQ3IDExM3QxMTMgNDdoMzUydjE2MHEwIDQwIDI4IDY4DQp0NjggMjhoNTc2cTQwIDAgNjggLTI4dDI4IC02OHYtMTYwaDM1MnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZ1bGxzY3JlZW4iIHVuaWNvZGU9IiYjeGYwYjI7IiANCmQ9Ik0xMjgzIDk5NWwtMzU1IC0zNTVsMzU1IC0zNTVsMTQ0IDE0NHEyOSAzMSA3MCAxNHEzOSAtMTcgMzkgLTU5di00NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC00NDhxLTQyIDAgLTU5IDQwcS0xNyAzOSAxNCA2OWwxNDQgMTQ0bC0zNTUgMzU1bC0zNTUgLTM1NWwxNDQgLTE0NHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDE0NCAtMTQ0DQpsMzU1IDM1NWwtMzU1IDM1NWwtMTQ0IC0xNDRxLTE5IC0xOSAtNDUgLTE5cS0xMiAwIC0yNCA1cS00MCAxNyAtNDAgNTl2NDQ4cTAgMjYgMTkgNDV0NDUgMTloNDQ4cTQyIDAgNTkgLTQwcTE3IC0zOSAtMTQgLTY5bC0xNDQgLTE0NGwzNTUgLTM1NWwzNTUgMzU1bC0xNDQgMTQ0cS0zMSAzMCAtMTQgNjlxMTcgNDAgNTkgNDBoNDQ4cTI2IDAgNDUgLTE5dDE5IC00NXYtNDQ4cTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjYgMCAtNDUgMTl6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imdyb3VwIiB1bmljb2RlPSImI3hmMGMwOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTU5MyA2NDBxLTE2MiAtNSAtMjY1IC0xMjhoLTEzNHEtODIgMCAtMTM4IDQwLjV0LTU2IDExOC41cTAgMzUzIDEyNCAzNTNxNiAwIDQzLjUgLTIxdDk3LjUgLTQyLjV0MTE5IC0yMS41cTY3IDAgMTMzIDIzcS01IC0zNyAtNSAtNjZxMCAtMTM5IDgxIC0yNTZ6TTE2NjQgM3EwIC0xMjAgLTczIC0xODkuNXQtMTk0IC02OS41aC04NzRxLTEyMSAwIC0xOTQgNjkuNXQtNzMgMTg5LjVxMCA1MyAzLjUgMTAzLjV0MTQgMTA5dDI2LjUgMTA4LjUNCnQ0MyA5Ny41dDYyIDgxdDg1LjUgNTMuNXQxMTEuNSAyMHExMCAwIDQzIC0yMS41dDczIC00OHQxMDcgLTQ4dDEzNSAtMjEuNXQxMzUgMjEuNXQxMDcgNDh0NzMgNDh0NDMgMjEuNXE2MSAwIDExMS41IC0yMHQ4NS41IC01My41dDYyIC04MXQ0MyAtOTcuNXQyNi41IC0xMDguNXQxNCAtMTA5dDMuNSAtMTAzLjV6TTY0MCAxMjgwcTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODF0NzUgMTgxdDE4MSA3NXQxODEgLTc1DQp0NzUgLTE4MXpNMTM0NCA4OTZxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXQtMjcxLjUgMTEyLjV0LTExMi41IDI3MS41dDExMi41IDI3MS41dDI3MS41IDExMi41dDI3MS41IC0xMTIuNXQxMTIuNSAtMjcxLjV6TTE5MjAgNjcxcTAgLTc4IC01NiAtMTE4LjV0LTEzOCAtNDAuNWgtMTM0cS0xMDMgMTIzIC0yNjUgMTI4cTgxIDExNyA4MSAyNTZxMCAyOSAtNSA2NnE2NiAtMjMgMTMzIC0yM3E1OSAwIDExOSAyMS41dDk3LjUgNDIuNQ0KdDQzLjUgMjFxMTI0IDAgMTI0IC0zNTN6TTE3OTIgMTI4MHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxdDc1IDE4MXQxODEgNzV0MTgxIC03NXQ3NSAtMTgxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGluayIgdW5pY29kZT0iJiN4ZjBjMTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNDU2IDMyMHEwIDQwIC0yOCA2OGwtMjA4IDIwOHEtMjggMjggLTY4IDI4cS00MiAwIC03MiAtMzJxMyAtMyAxOSAtMTguNXQyMS41IC0yMS41dDE1IC0xOXQxMyAtMjUuNXQzLjUgLTI3LjVxMCAtNDAgLTI4IC02OHQtNjggLTI4cS0xNSAwIC0yNy41IDMuNXQtMjUuNSAxM3QtMTkgMTV0LTIxLjUgMjEuNXQtMTguNSAxOXEtMzMgLTMxIC0zMyAtNzNxMCAtNDAgMjggLTY4bDIwNiAtMjA3cTI3IC0yNyA2OCAtMjdxNDAgMCA2OCAyNg0KbDE0NyAxNDZxMjggMjggMjggNjd6TTc1MyAxMDI1cTAgNDAgLTI4IDY4bC0yMDYgMjA3cS0yOCAyOCAtNjggMjhxLTM5IDAgLTY4IC0yN2wtMTQ3IC0xNDZxLTI4IC0yOCAtMjggLTY3cTAgLTQwIDI4IC02OGwyMDggLTIwOHEyNyAtMjcgNjggLTI3cTQyIDAgNzIgMzFxLTMgMyAtMTkgMTguNXQtMjEuNSAyMS41dC0xNSAxOXQtMTMgMjUuNXQtMy41IDI3LjVxMCA0MCAyOCA2OHQ2OCAyOHExNSAwIDI3LjUgLTMuNXQyNS41IC0xM3QxOSAtMTUNCnQyMS41IC0yMS41dDE4LjUgLTE5cTMzIDMxIDMzIDczek0xNjQ4IDMyMHEwIC0xMjAgLTg1IC0yMDNsLTE0NyAtMTQ2cS04MyAtODMgLTIwMyAtODNxLTEyMSAwIC0yMDQgODVsLTIwNiAyMDdxLTgzIDgzIC04MyAyMDNxMCAxMjMgODggMjA5bC04OCA4OHEtODYgLTg4IC0yMDggLTg4cS0xMjAgMCAtMjA0IDg0bC0yMDggMjA4cS04NCA4NCAtODQgMjA0dDg1IDIwM2wxNDcgMTQ2cTgzIDgzIDIwMyA4M3ExMjEgMCAyMDQgLTg1bDIwNiAtMjA3DQpxODMgLTgzIDgzIC0yMDNxMCAtMTIzIC04OCAtMjA5bDg4IC04OHE4NiA4OCAyMDggODhxMTIwIDAgMjA0IC04NGwyMDggLTIwOHE4NCAtODQgODQgLTIwNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNsb3VkIiB1bmljb2RlPSImI3hmMGMyOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE5MjAgMzg0cTAgLTE1OSAtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjVoLTEwODhxLTE4NSAwIC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxMzIgNzEgMjQxLjV0MTg3IDE2My41cS0yIDI4IC0yIDQzcTAgMjEyIDE1MCAzNjJ0MzYyIDE1MHExNTggMCAyODYuNSAtODh0MTg3LjUgLTIzMHE3MCA2MiAxNjYgNjJxMTA2IDAgMTgxIC03NXQ3NSAtMTgxcTAgLTc1IC00MSAtMTM4cTEyOSAtMzAgMjEzIC0xMzQuNXQ4NCAtMjM5LjV6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJlYWtlciIgdW5pY29kZT0iJiN4ZjBjMzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNTI3IDg4cTU2IC04OSAyMS41IC0xNTIuNXQtMTQwLjUgLTYzLjVoLTExNTJxLTEwNiAwIC0xNDAuNSA2My41dDIxLjUgMTUyLjVsNTAzIDc5M3YzOTloLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloNTEycTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTY0di0zOTl6TTc0OCA4MTNsLTI3MiAtNDI5aDcxMmwtMjcyIDQyOWwtMjAgMzF2Mzd2Mzk5aC0xMjh2LTM5OXYtMzd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjdXQiIHVuaWNvZGU9IiYjeGYwYzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNOTYwIDY0MHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEyNjAgNTc2bDUwNyAtMzk4cTI4IC0yMCAyNSAtNTZxLTUgLTM1IC0zNSAtNTFsLTEyOCAtNjRxLTEzIC03IC0yOSAtN3EtMTcgMCAtMzEgOGwtNjkwIDM4N2wtMTEwIC02NnEtOCAtNCAtMTIgLTVxMTQgLTQ5IDEwIC05N3EtNyAtNzcgLTU2IC0xNDcuNXQtMTMyIC0xMjMuNXEtMTMyIC04NCAtMjc3IC04NA0KcS0xMzYgMCAtMjIyIDc4cS05MCA4NCAtNzkgMjA3cTcgNzYgNTYgMTQ3dDEzMSAxMjRxMTMyIDg0IDI3OCA4NHE4MyAwIDE1MSAtMzFxOSAxMyAyMiAyMmwxMjIgNzNsLTEyMiA3M3EtMTMgOSAtMjIgMjJxLTY4IC0zMSAtMTUxIC0zMXEtMTQ2IDAgLTI3OCA4NHEtODIgNTMgLTEzMSAxMjR0LTU2IDE0N3EtNSA1OSAxNS41IDExM3Q2My41IDkzcTg1IDc5IDIyMiA3OXExNDUgMCAyNzcgLTg0cTgzIC01MiAxMzIgLTEyM3Q1NiAtMTQ4DQpxNCAtNDggLTEwIC05N3E0IC0xIDEyIC01bDExMCAtNjZsNjkwIDM4N3ExNCA4IDMxIDhxMTYgMCAyOSAtN2wxMjggLTY0cTMwIC0xNiAzNSAtNTFxMyAtMzYgLTI1IC01NnpNNTc5IDgzNnE0NiA0MiAyMSAxMDh0LTEwNiAxMTdxLTkyIDU5IC0xOTIgNTlxLTc0IDAgLTExMyAtMzZxLTQ2IC00MiAtMjEgLTEwOHQxMDYgLTExN3E5MiAtNTkgMTkyIC01OXE3NCAwIDExMyAzNnpNNDk0IDkxcTgxIDUxIDEwNiAxMTd0LTIxIDEwOA0KcS0zOSAzNiAtMTEzIDM2cS0xMDAgMCAtMTkyIC01OXEtODEgLTUxIC0xMDYgLTExN3QyMSAtMTA4cTM5IC0zNiAxMTMgLTM2cTEwMCAwIDE5MiA1OXpNNjcyIDcwNGw5NiAtNTh2MTFxMCAzNiAzMyA1NmwxNCA4bC03OSA0N2wtMjYgLTI2cS0zIC0zIC0xMCAtMTF0LTEyIC0xMnEtMiAtMiAtNCAtMy41dC0zIC0yLjV6TTg5NiA0ODBsOTYgLTMybDczNiA1NzZsLTEyOCA2NGwtNzY4IC00MzF2LTExM2wtMTYwIC05Nmw5IC04cTIgLTIgNyAtNg0KcTQgLTQgMTEgLTEydDExIC0xMmwyNiAtMjZ6TTE2MDAgNjRsMTI4IDY0bC01MjAgNDA4bC0xNzcgLTEzOHEtMiAtMyAtMTMgLTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb3B5IiB1bmljb2RlPSImI3hmMGM1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2OTYgMTE1MnE0MCAwIDY4IC0yOHQyOCAtNjh2LTEyMTZxMCAtNDAgLTI4IC02OHQtNjggLTI4aC05NjBxLTQwIDAgLTY4IDI4dC0yOCA2OHYyODhoLTU0NHEtNDAgMCAtNjggMjh0LTI4IDY4djY3MnEwIDQwIDIwIDg4dDQ4IDc2bDQwOCA0MDhxMjggMjggNzYgNDh0ODggMjBoNDE2cTQwIDAgNjggLTI4dDI4IC02OHYtMzI4cTY4IDQwIDEyOCA0MGg0MTZ6TTExNTIgOTM5bC0yOTkgLTI5OWgyOTl2Mjk5ek01MTIgMTMyM2wtMjk5IC0yOTkNCmgyOTl2Mjk5ek03MDggNjc2bDMxNiAzMTZ2NDE2aC0zODR2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTQxNnYtNjQwaDUxMnYyNTZxMCA0MCAyMCA4OHQ0OCA3NnpNMTY2NCAtMTI4djExNTJoLTM4NHYtNDE2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtNDE2di02NDBoODk2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGFwZXJfY2xpcCIgdW5pY29kZT0iJiN4ZjBjNjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xNDA0IDE1MXEwIC0xMTcgLTc5IC0xOTZ0LTE5NiAtNzlxLTEzNSAwIC0yMzUgMTAwbC03NzcgNzc2cS0xMTMgMTE1IC0xMTMgMjcxcTAgMTU5IDExMCAyNzB0MjY5IDExMXExNTggMCAyNzMgLTExM2w2MDUgLTYwNnExMCAtMTAgMTAgLTIycTAgLTE2IC0zMC41IC00Ni41dC00Ni41IC0zMC41cS0xMyAwIC0yMyAxMGwtNjA2IDYwN3EtNzkgNzcgLTE4MSA3N3EtMTA2IDAgLTE3OSAtNzV0LTczIC0xODFxMCAtMTA1IDc2IC0xODENCmw3NzYgLTc3N3E2MyAtNjMgMTQ1IC02M3E2NCAwIDEwNiA0MnQ0MiAxMDZxMCA4MiAtNjMgMTQ1bC01ODEgNTgxcS0yNiAyNCAtNjAgMjRxLTI5IDAgLTQ4IC0xOXQtMTkgLTQ4cTAgLTMyIDI1IC01OWw0MTAgLTQxMHExMCAtMTAgMTAgLTIycTAgLTE2IC0zMSAtNDd0LTQ3IC0zMXEtMTIgMCAtMjIgMTBsLTQxMCA0MTBxLTYzIDYxIC02MyAxNDlxMCA4MiA1NyAxMzl0MTM5IDU3cTg4IDAgMTQ5IC02M2w1ODEgLTU4MXExMDAgLTk4IDEwMCAtMjM1DQp6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzYXZlIiB1bmljb2RlPSImI3hmMGM3OyIgDQpkPSJNMzg0IDBoNzY4djM4NGgtNzY4di0zODR6TTEyODAgMGgxMjh2ODk2cTAgMTQgLTEwIDM4LjV0LTIwIDM0LjVsLTI4MSAyODFxLTEwIDEwIC0zNCAyMHQtMzkgMTB2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTU3NnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtMTI4di0xMjgwaDEyOHY0MTZxMCA0MCAyOCA2OHQ2OCAyOGg4MzJxNDAgMCA2OCAtMjh0MjggLTY4di00MTZ6TTg5NiA5Mjh2MzIwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNQ0KaC0xOTJxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0zMjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxOTJxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTUzNiA4OTZ2LTkyOHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxMzQ0cTAgNDAgMjggNjh0NjggMjhoOTI4cTQwIDAgODggLTIwdDc2IC00OGwyODAgLTI4MHEyOCAtMjggNDggLTc2dDIwIC04OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNpZ25fYmxhbmsiIHVuaWNvZGU9IiYjeGYwYzg7IiANCmQ9Ik0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlb3JkZXIiIHVuaWNvZGU9IiYjeGYwYzk7IiANCmQ9Ik0xNTM2IDE5MnYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNTM2IDcwNHYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xNTM2IDEyMTZ2LTEyOHEwIC0yNiAtMTkgLTQ1DQp0LTQ1IC0xOWgtMTQwOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idWwiIHVuaWNvZGU9IiYjeGYwY2E7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzg0IDEyOHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTM4NCA2NDBxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNzkyIDIyNHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTIxNnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41DQp0MjIuNSA5LjVoMTIxNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTM4NCAxMTUycTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMTc5MiA3MzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEyMTZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoNCk0xNzkyIDEyNDh2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEyMTZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im9sIiB1bmljb2RlPSImI3hmMGNiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4MSAtODRxMCAtODAgLTU0LjUgLTEyNnQtMTM1LjUgLTQ2cS0xMDYgMCAtMTcyIDY2bDU3IDg4cTQ5IC00NSAxMDYgLTQ1cTI5IDAgNTAuNSAxNC41dDIxLjUgNDIuNXEwIDY0IC0xMDUgNTZsLTI2IDU2cTggMTAgMzIuNSA0My41dDQyLjUgNTR0MzcgMzguNXYxcS0xNiAwIC00OC41IC0xdC00OC41IC0xdi01M2gtMTA2djE1MmgzMzN2LTg4bC05NSAtMTE1cTUxIC0xMiA4MSAtNDl0MzAgLTg4ek0zODMgNTQzdi0xNTloLTM2Mg0KcS02IDM2IC02IDU0cTAgNTEgMjMuNSA5M3Q1Ni41IDY4dDY2IDQ3LjV0NTYuNSA0My41dDIzLjUgNDVxMCAyNSAtMTQuNSAzOC41dC0zOS41IDEzLjVxLTQ2IDAgLTgxIC01OGwtODUgNTlxMjQgNTEgNzEuNSA3OS41dDEwNS41IDI4LjVxNzMgMCAxMjMgLTQxLjV0NTAgLTExMi41cTAgLTUwIC0zNCAtOTEuNXQtNzUgLTY0LjV0LTc1LjUgLTUwLjV0LTM1LjUgLTUyLjVoMTI3djYwaDEwNXpNMTc5MiAyMjR2LTE5MnEwIC0xMyAtOS41IC0yMi41DQp0LTIyLjUgLTkuNWgtMTIxNnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDE0IDkgMjN0MjMgOWgxMjE2cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDExMjN2LTk5aC0zMzV2OTloMTA3cTAgNDEgMC41IDEyMS41dDAuNSAxMjEuNXYxMmgtMnEtOCAtMTcgLTUwIC01NGwtNzEgNzZsMTM2IDEyN2gxMDZ2LTQwNGgxMDh6TTE3OTIgNzM2di0xOTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xMjE2DQpxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxNCA5IDIzdDIzIDloMTIxNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgMTI0OHYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMTIxNnEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDEyMTZxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RyaWtldGhyb3VnaCIgdW5pY29kZT0iJiN4ZjBjYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzYwIDY0MHExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNzI4cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE3Mjh6TTQ4MyA3MDRxLTI4IDM1IC01MSA4MHEtNDggOTggLTQ4IDE4OHEwIDE4MSAxMzQgMzA5cTEzMyAxMjcgMzkzIDEyN3E1MCAwIDE2NyAtMTlxNjYgLTEyIDE3NyAtNDhxMTAgLTM4IDIxIC0xMThxMTQgLTEyMyAxNCAtMTgzcTAgLTE4IC01IC00NWwtMTIgLTNsLTg0IDYNCmwtMTQgMnEtNTAgMTQ5IC0xMDMgMjA1cS04OCA5MSAtMjEwIDkxcS0xMTQgMCAtMTgyIC01OXEtNjcgLTU4IC02NyAtMTQ2cTAgLTczIDY2IC0xNDB0Mjc5IC0xMjlxNjkgLTIwIDE3MyAtNjZxNTggLTI4IDk1IC01MmgtNzQzek05OTAgNDQ4aDQxMXE3IC0zOSA3IC05MnEwIC0xMTEgLTQxIC0yMTJxLTIzIC01NiAtNzEgLTEwNHEtMzcgLTM1IC0xMDkgLTgxcS04MCAtNDggLTE1MyAtNjZxLTgwIC0yMSAtMjAzIC0yMXEtMTE0IDAgLTE5NSAyMw0KbC0xNDAgNDBxLTU3IDE2IC03MiAyOHEtOCA4IC04IDIydjEzcTAgMTA4IC0yIDE1NnEtMSAzMCAwIDY4bDIgMzd2NDRsMTAyIDJxMTUgLTM0IDMwIC03MXQyMi41IC01NnQxMi41IC0yN3EzNSAtNTcgODAgLTk0cTQzIC0zNiAxMDUgLTU3cTU5IC0yMiAxMzIgLTIycTY0IDAgMTM5IDI3cTc3IDI2IDEyMiA4NnE0NyA2MSA0NyAxMjlxMCA4NCAtODEgMTU3cS0zNCAyOSAtMTM3IDcxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5kZXJsaW5lIiB1bmljb2RlPSImI3hmMGNkOyIgDQpkPSJNNDggMTMxM3EtMzcgMiAtNDUgNGwtMyA4OHExMyAxIDQwIDFxNjAgMCAxMTIgLTRxMTMyIC03IDE2NiAtN3E4NiAwIDE2OCAzcTExNiA0IDE0NiA1cTU2IDAgODYgMmwtMSAtMTRsMiAtNjR2LTlxLTYwIC05IC0xMjQgLTlxLTYwIDAgLTc5IC0yNXEtMTMgLTE0IC0xMyAtMTMycTAgLTEzIDAuNSAtMzIuNXQwLjUgLTI1LjVsMSAtMjI5bDE0IC0yODBxNiAtMTI0IDUxIC0yMDJxMzUgLTU5IDk2IC05MnE4OCAtNDcgMTc3IC00Nw0KcTEwNCAwIDE5MSAyOHE1NiAxOCA5OSA1MXE0OCAzNiA2NSA2NHEzNiA1NiA1MyAxMTRxMjEgNzMgMjEgMjI5cTAgNzkgLTMuNSAxMjh0LTExIDEyMi41dC0xMy41IDE1OS41bC00IDU5cS01IDY3IC0yNCA4OHEtMzQgMzUgLTc3IDM0bC0xMDAgLTJsLTE0IDNsMiA4Nmg4NGwyMDUgLTEwcTc2IC0zIDE5NiAxMGwxOCAtMnE2IC0zOCA2IC01MXEwIC03IC00IC0zMXEtNDUgLTEyIC04NCAtMTNxLTczIC0xMSAtNzkgLTE3cS0xNSAtMTUgLTE1IC00MQ0KcTAgLTcgMS41IC0yN3QxLjUgLTMxcTggLTE5IDIyIC0zOTZxNiAtMTk1IC0xNSAtMzA0cS0xNSAtNzYgLTQxIC0xMjJxLTM4IC02NSAtMTEyIC0xMjNxLTc1IC01NyAtMTgyIC04OXEtMTA5IC0zMyAtMjU1IC0zM3EtMTY3IDAgLTI4NCA0NnEtMTE5IDQ3IC0xNzkgMTIycS02MSA3NiAtODMgMTk1cS0xNiA4MCAtMTYgMjM3djMzM3EwIDE4OCAtMTcgMjEzcS0yNSAzNiAtMTQ3IDM5ek0xNTM2IC05NnY2NHEwIDE0IC05IDIzdC0yMyA5aC0xNDcyDQpxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloMTQ3MnExNCAwIDIzIDl0OSAyM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRhYmxlIiB1bmljb2RlPSImI3hmMGNlOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTUxMiAxNjB2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek01MTIgNTQ0djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkycTAgLTE0IDkgLTIzdDIzIC05aDMyMHExNCAwIDIzIDl0OSAyM3pNMTAyNCAxNjB2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzDQp2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTUxMiA5Mjh2MTkycTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xMDI0IDU0NHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgMTYwdjE5Mg0KcTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xMDI0IDkyOHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgNTQ0djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05dC05IC0yM3YtMTkyDQpxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek0xNTM2IDkyOHYxOTJxMCAxNCAtOSAyM3QtMjMgOWgtMzIwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTI0OHYtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTM0NHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTM0NHE2NiAwIDExMyAtNDd0NDcgLTExMw0KeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWFnaWMiIHVuaWNvZGU9IiYjeGYwZDA7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTE5MCA5NTVsMjkzIDI5M2wtMTA3IDEwN2wtMjkzIC0yOTN6TTE2MzcgMTI0OHEwIC0yNyAtMTggLTQ1bC0xMjg2IC0xMjg2cS0xOCAtMTggLTQ1IC0xOHQtNDUgMThsLTE5OCAxOThxLTE4IDE4IC0xOCA0NXQxOCA0NWwxMjg2IDEyODZxMTggMTggNDUgMTh0NDUgLTE4bDE5OCAtMTk4cTE4IC0xOCAxOCAtNDV6TTI4NiAxNDM4bDk4IC0zMGwtOTggLTMwbC0zMCAtOThsLTMwIDk4bC05OCAzMGw5OCAzMGwzMCA5OHpNNjM2IDEyNzYNCmwxOTYgLTYwbC0xOTYgLTYwbC02MCAtMTk2bC02MCAxOTZsLTE5NiA2MGwxOTYgNjBsNjAgMTk2ek0xNTY2IDc5OGw5OCAtMzBsLTk4IC0zMGwtMzAgLTk4bC0zMCA5OGwtOTggMzBsOTggMzBsMzAgOTh6TTkyNiAxNDM4bDk4IC0zMGwtOTggLTMwbC0zMCAtOThsLTMwIDk4bC05OCAzMGw5OCAzMGwzMCA5OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRydWNrIiB1bmljb2RlPSImI3hmMGQxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCAxMjhxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHQzOCAtOTB0OTAgLTM4dDkwIDM4dDM4IDkwek0yNTYgNjQwaDM4NHYyNTZoLTE1OHEtMTMgMCAtMjIgLTlsLTE5NSAtMTk1cS05IC05IC05IC0yMnYtMzB6TTE1MzYgMTI4cTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTB0MzggLTkwdDkwIC0zOHQ5MCAzOHQzOCA5MHpNMTc5MiAxMjE2di0xMDI0cTAgLTE1IC00IC0yNi41dC0xMy41IC0xOC41DQp0LTE2LjUgLTExLjV0LTIzLjUgLTZ0LTIyLjUgLTJ0LTI1LjUgMHQtMjIuNSAwLjVxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODEgNzV0LTc1IDE4MWgtMzg0cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTY0cS0zIDAgLTIyLjUgLTAuNXQtMjUuNSAwdC0yMi41IDJ0LTIzLjUgNnQtMTYuNSAxMS41dC0xMy41IDE4LjV0LTQgMjYuNXEwIDI2IDE5IDQ1dDQ1IDE5djMyMHEwIDggLTAuNSAzNXQwIDM4DQp0Mi41IDM0LjV0Ni41IDM3dDE0IDMwLjV0MjIuNSAzMGwxOTggMTk4cTE5IDE5IDUwLjUgMzJ0NTguNSAxM2gxNjB2MTkycTAgMjYgMTkgNDV0NDUgMTloMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwaW50ZXJlc3QiIHVuaWNvZGU9IiYjeGYwZDI7IiANCmQ9Ik0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3EtMTExIDAgLTIxOCAzMnE1OSA5MyA3OCAxNjRxOSAzNCA1NCAyMTFxMjAgLTM5IDczIC02Ny41dDExNCAtMjguNXExMjEgMCAyMTYgNjguNXQxNDcgMTg4LjV0NTIgMjcwcTAgMTE0IC01OS41IDIxNHQtMTcyLjUgMTYzdC0yNTUgNjNxLTEwNSAwIC0xOTYgLTI5dC0xNTQuNSAtNzd0LTEwOSAtMTEwLjV0LTY3IC0xMjkuNXQtMjEuNSAtMTM0DQpxMCAtMTA0IDQwIC0xODN0MTE3IC0xMTFxMzAgLTEyIDM4IDIwcTIgNyA4IDMxdDggMzBxNiAyMyAtMTEgNDNxLTUxIDYxIC01MSAxNTFxMCAxNTEgMTA0LjUgMjU5LjV0MjczLjUgMTA4LjVxMTUxIDAgMjM1LjUgLTgydDg0LjUgLTIxM3EwIC0xNzAgLTY4LjUgLTI4OXQtMTc1LjUgLTExOXEtNjEgMCAtOTggNDMuNXQtMjMgMTA0LjVxOCAzNSAyNi41IDkzLjV0MzAgMTAzdDExLjUgNzUuNXEwIDUwIC0yNyA4M3QtNzcgMzMNCnEtNjIgMCAtMTA1IC01N3QtNDMgLTE0MnEwIC03MyAyNSAtMTIybC05OSAtNDE4cS0xNyAtNzAgLTEzIC0xNzdxLTIwNiA5MSAtMzMzIDI4MXQtMTI3IDQyM3EwIDIwOSAxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwaW50ZXJlc3Rfc2lnbiIgdW5pY29kZT0iJiN4ZjBkMzsiIA0KZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC03MjVxODUgMTIyIDEwOCAyMTBxOSAzNCA1MyAyMDlxMjEgLTM5IDczLjUgLTY3dDExMi41IC0yOHExODEgMCAyOTUuNSAxNDcuNXQxMTQuNSAzNzMuNXEwIDg0IC0zNSAxNjIuNXQtOTYuNSAxMzl0LTE1Mi41IDk3dC0xOTcgMzYuNXEtMTA0IDAgLTE5NC41IC0yOC41dC0xNTMgLTc2LjUNCnQtMTA3LjUgLTEwOS41dC02Ni41IC0xMjh0LTIxLjUgLTEzMi41cTAgLTEwMiAzOS41IC0xODB0MTE2LjUgLTExMHExMyAtNSAyMy41IDB0MTQuNSAxOXExMCA0NCAxNSA2MXE2IDIzIC0xMSA0MnEtNTAgNjIgLTUwIDE1MHEwIDE1MCAxMDMuNSAyNTYuNXQyNzAuNSAxMDYuNXExNDkgMCAyMzIuNSAtODF0ODMuNSAtMjEwcTAgLTE2OCAtNjcuNSAtMjg2dC0xNzMuNSAtMTE4cS02MCAwIC05NyA0My41dC0yMyAxMDMuNXE4IDM0IDI2LjUgOTIuNQ0KdDI5LjUgMTAydDExIDc0LjVxMCA0OSAtMjYuNSA4MS41dC03NS41IDMyLjVxLTYxIDAgLTEwMy41IC01Ni41dC00Mi41IC0xMzkuNXEwIC03MiAyNCAtMTIxbC05OCAtNDE0cS0yNCAtMTAwIC03IC0yNTRoLTE4M3EtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnb29nbGVfcGx1c19zaWduIiB1bmljb2RlPSImI3hmMGQ0OyIgDQpkPSJNOTE3IDYzMXEwIDI2IC02IDY0aC0zNjJ2LTEzMmgyMTdxLTMgLTI0IC0xNi41IC01MHQtMzcuNSAtNTN0LTY2LjUgLTQ0LjV0LTk2LjUgLTE3LjVxLTk5IDAgLTE2OSA3MXQtNzAgMTcxdDcwIDE3MXQxNjkgNzFxOTIgMCAxNTMgLTU5bDEwNCAxMDFxLTEwOCAxMDAgLTI1NyAxMDBxLTE2MCAwIC0yNzIgLTExMi41dC0xMTIgLTI3MS41dDExMiAtMjcxLjV0MjcyIC0xMTIuNXExNjUgMCAyNjYuNSAxMDV0MTAxLjUgMjcwek0xMjYyIDU4NQ0KaDEwOXYxMTBoLTEwOXYxMTBoLTExMHYtMTEwaC0xMTB2LTExMGgxMTB2LTExMGgxMTB2MTEwek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imdvb2dsZV9wbHVzIiB1bmljb2RlPSImI3hmMGQ1OyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE0MzcgNjIzcTAgLTIwOCAtODcgLTM3MC41dC0yNDggLTI1NHQtMzY5IC05MS41cS0xNDkgMCAtMjg1IDU4dC0yMzQgMTU2dC0xNTYgMjM0dC01OCAyODV0NTggMjg1dDE1NiAyMzR0MjM0IDE1NnQyODUgNThxMjg2IDAgNDkxIC0xOTJsLTE5OSAtMTkxcS0xMTcgMTEzIC0yOTIgMTEzcS0xMjMgMCAtMjI3LjUgLTYydC0xNjUuNSAtMTY4LjV0LTYxIC0yMzIuNXQ2MSAtMjMyLjV0MTY1LjUgLTE2OC41dDIyNy41IC02Mg0KcTgzIDAgMTUyLjUgMjN0MTE0LjUgNTcuNXQ3OC41IDc4LjV0NDkgODN0MjEuNSA3NGgtNDE2djI1Mmg2OTJxMTIgLTYzIDEyIC0xMjJ6TTIzMDQgNzQ1di0yMTBoLTIwOXYtMjA5aC0yMTB2MjA5aC0yMDl2MjEwaDIwOXYyMDloMjEwdi0yMDloMjA5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibW9uZXkiIHVuaWNvZGU9IiYjeGYwZDY7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNNzY4IDM4NGgzODR2OTZoLTEyOHY0NDhoLTExNGwtMTQ4IC0xMzdsNzcgLTgwcTQyIDM3IDU1IDU3aDJ2LTI4OGgtMTI4di05NnpNMTI4MCA2NDBxMCAtNzAgLTIxIC0xNDJ0LTU5LjUgLTEzNHQtMTAxLjUgLTEwMXQtMTM4IC0zOXQtMTM4IDM5dC0xMDEuNSAxMDF0LTU5LjUgMTM0dC0yMSAxNDJ0MjEgMTQydDU5LjUgMTM0dDEwMS41IDEwMXQxMzggMzl0MTM4IC0zOXQxMDEuNSAtMTAxdDU5LjUgLTEzNHQyMSAtMTQyek0xNzkyIDM4NA0KdjUxMnEtMTA2IDAgLTE4MSA3NXQtNzUgMTgxaC0xMTUycTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXYtNTEycTEwNiAwIDE4MSAtNzV0NzUgLTE4MWgxMTUycTAgMTA2IDc1IDE4MXQxODEgNzV6TTE5MjAgMTIxNnYtMTE1MnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE3OTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMTUycTAgMjYgMTkgNDV0NDUgMTloMTc5MnEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjYXJldF9kb3duIiB1bmljb2RlPSImI3hmMGQ3OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTEwMjQgODMycTAgLTI2IC0xOSAtNDVsLTQ0OCAtNDQ4cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTQ0OCA0NDhxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWg4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2FyZXRfdXAiIHVuaWNvZGU9IiYjeGYwZDg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAyNCAzMjBxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC04OTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NWw0NDggNDQ4cTE5IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2FyZXRfbGVmdCIgdW5pY29kZT0iJiN4ZjBkOTsiIGhvcml6LWFkdi14PSI2NDAiIA0KZD0iTTY0MCAxMDg4di04OTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOWwtNDQ4IDQ0OHEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDQ0OCA0NDhxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhcmV0X3JpZ2h0IiB1bmljb2RlPSImI3hmMGRhOyIgaG9yaXotYWR2LXg9IjY0MCIgDQpkPSJNNTc2IDY0MHEwIC0yNiAtMTkgLTQ1bC00NDggLTQ0OHEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5dC0xOSA0NXY4OTZxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTlsNDQ4IC00NDhxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvbHVtbnMiIHVuaWNvZGU9IiYjeGYwZGI7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTYwIDBoNjA4djExNTJoLTY0MHYtMTEyMHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41ek0xNTM2IDMydjExMjBoLTY0MHYtMTE1Mmg2MDhxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTY2NCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMzQ0cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMjE2cTAgNjYgNDcgMTEzdDExMyA0N2gxMzQ0cTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydCIgdW5pY29kZT0iJiN4ZjBkYzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0xMDI0IDQ0OHEwIC0yNiAtMTkgLTQ1bC00NDggLTQ0OHEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC00NDggNDQ4cS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTloODk2cTI2IDAgNDUgLTE5dDE5IC00NXpNMTAyNCA4MzJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC04OTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NWw0NDggNDQ4cTE5IDE5IDQ1IDE5dDQ1IC0xOWw0NDggLTQ0OHExOSAtMTkgMTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF9kb3duIiB1bmljb2RlPSImI3hmMGRkOyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTEwMjQgNDQ4cTAgLTI2IC0xOSAtNDVsLTQ0OCAtNDQ4cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTQ0OCA0NDhxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOWg4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF91cCIgdW5pY29kZT0iJiN4ZjBkZTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0xMDI0IDgzMnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTg5NnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1bDQ0OCA0NDhxMTkgMTkgNDUgMTl0NDUgLTE5bDQ0OCAtNDQ4cTE5IC0xOSAxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbnZlbG9wZV9hbHQiIHVuaWNvZGU9IiYjeGYwZTA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiA4MjZ2LTc5NHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTQ3MnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2Nzk0cTQ0IC00OSAxMDEgLTg3cTM2MiAtMjQ2IDQ5NyAtMzQ1cTU3IC00MiA5Mi41IC02NS41dDk0LjUgLTQ4dDExMCAtMjQuNWgxaDFxNTEgMCAxMTAgMjQuNXQ5NC41IDQ4dDkyLjUgNjUuNXExNzAgMTIzIDQ5OCAzNDVxNTcgMzkgMTAwIDg3ek0xNzkyIDExMjBxMCAtNzkgLTQ5IC0xNTF0LTEyMiAtMTIzDQpxLTM3NiAtMjYxIC00NjggLTMyNXEtMTAgLTcgLTQyLjUgLTMwLjV0LTU0IC0zOHQtNTIgLTMyLjV0LTU3LjUgLTI3dC01MCAtOWgtMWgtMXEtMjMgMCAtNTAgOXQtNTcuNSAyN3QtNTIgMzIuNXQtNTQgMzh0LTQyLjUgMzAuNXEtOTEgNjQgLTI2MiAxODIuNXQtMjA1IDE0Mi41cS02MiA0MiAtMTE3IDExNS41dC01NSAxMzYuNXEwIDc4IDQxLjUgMTMwdDExOC41IDUyaDE0NzJxNjUgMCAxMTIuNSAtNDd0NDcuNSAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGlua2VkaW4iIHVuaWNvZGU9IiYjeGYwZTE7IiANCmQ9Ik0zNDkgOTExdi05OTFoLTMzMHY5OTFoMzMwek0zNzAgMTIxN3ExIC03MyAtNTAuNSAtMTIydC0xMzUuNSAtNDloLTJxLTgyIDAgLTEzMiA0OXQtNTAgMTIycTAgNzQgNTEuNSAxMjIuNXQxMzQuNSA0OC41dDEzMyAtNDguNXQ1MSAtMTIyLjV6TTE1MzYgNDg4di01NjhoLTMyOXY1MzBxMCAxMDUgLTQwLjUgMTY0LjV0LTEyNi41IDU5LjVxLTYzIDAgLTEwNS41IC0zNC41dC02My41IC04NS41cS0xMSAtMzAgLTExIC04MXYtNTUzaC0zMjkNCnEyIDM5OSAyIDY0N3QtMSAyOTZsLTEgNDhoMzI5di0xNDRoLTJxMjAgMzIgNDEgNTZ0NTYuNSA1MnQ4NyA0My41dDExNC41IDE1LjVxMTcxIDAgMjc1IC0xMTMuNXQxMDQgLTMzMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5kbyIgdW5pY29kZT0iJiN4ZjBlMjsiIA0KZD0iTTE1MzYgNjQwcTAgLTE1NiAtNjEgLTI5OHQtMTY0IC0yNDV0LTI0NSAtMTY0dC0yOTggLTYxcS0xNzIgMCAtMzI3IDcyLjV0LTI2NCAyMDQuNXEtNyAxMCAtNi41IDIyLjV0OC41IDIwLjVsMTM3IDEzOHExMCA5IDI1IDlxMTYgLTIgMjMgLTEycTczIC05NSAxNzkgLTE0N3QyMjUgLTUycTEwNCAwIDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5LjUgMTYzLjUNCnQtMTYzLjUgMTA5LjV0LTE5OC41IDQwLjVxLTk4IDAgLTE4OCAtMzUuNXQtMTYwIC0xMDEuNWwxMzcgLTEzOHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDEzMCAtMTI5cTEwNyAxMDEgMjQ0LjUgMTU2LjV0Mjg0LjUgNTUuNXExNTYgMCAyOTggLTYxdDI0NSAtMTY0dDE2NCAtMjQ1dDYxIC0yOTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsZWdhbCIgdW5pY29kZT0iJiN4ZjBlMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzcxIDBxMCAtNTMgLTM3IC05MGwtMTA3IC0xMDhxLTM5IC0zNyAtOTEgLTM3cS01MyAwIC05MCAzN2wtMzYzIDM2NHEtMzggMzYgLTM4IDkwcTAgNTMgNDMgOTZsLTI1NiAyNTZsLTEyNiAtMTI2cS0xNCAtMTQgLTM0IC0xNHQtMzQgMTRxMiAtMiAxMi41IC0xMnQxMi41IC0xM3QxMCAtMTEuNXQxMCAtMTMuNXQ2IC0xMy41dDUuNSAtMTYuNXQxLjUgLTE4cTAgLTM4IC0yOCAtNjhxLTMgLTMgLTE2LjUgLTE4dC0xOSAtMjAuNQ0KdC0xOC41IC0xNi41dC0yMiAtMTUuNXQtMjIgLTl0LTI2IC00LjVxLTQwIDAgLTY4IDI4bC00MDggNDA4cS0yOCAyOCAtMjggNjhxMCAxMyA0LjUgMjZ0OSAyMnQxNS41IDIydDE2LjUgMTguNXQyMC41IDE5dDE4IDE2LjVxMzAgMjggNjggMjhxMTAgMCAxOCAtMS41dDE2LjUgLTUuNXQxMy41IC02dDEzLjUgLTEwdDExLjUgLTEwdDEzIC0xMi41dDEyIC0xMi41cS0xNCAxNCAtMTQgMzR0MTQgMzRsMzQ4IDM0OHExNCAxNCAzNCAxNHQzNCAtMTQNCnEtMiAyIC0xMi41IDEydC0xMi41IDEzdC0xMCAxMS41dC0xMCAxMy41dC02IDEzLjV0LTUuNSAxNi41dC0xLjUgMThxMCAzOCAyOCA2OHEzIDMgMTYuNSAxOHQxOSAyMC41dDE4LjUgMTYuNXQyMiAxNS41dDIyIDl0MjYgNC41cTQwIDAgNjggLTI4bDQwOCAtNDA4cTI4IC0yOCAyOCAtNjhxMCAtMTMgLTQuNSAtMjZ0LTkgLTIydC0xNS41IC0yMnQtMTYuNSAtMTguNXQtMjAuNSAtMTl0LTE4IC0xNi41cS0zMCAtMjggLTY4IC0yOA0KcS0xMCAwIC0xOCAxLjV0LTE2LjUgNS41dC0xMy41IDZ0LTEzLjUgMTB0LTExLjUgMTB0LTEzIDEyLjV0LTEyIDEyLjVxMTQgLTE0IDE0IC0zNHQtMTQgLTM0bC0xMjYgLTEyNmwyNTYgLTI1NnE0MyA0MyA5NiA0M3E1MiAwIDkxIC0zN2wzNjMgLTM2M3EzNyAtMzkgMzcgLTkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZGFzaGJvYXJkIiB1bmljb2RlPSImI3hmMGU0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4NCAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTU3NiA4MzJxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMDQgMzUxbDEwMSAzODJxNiAyNiAtNy41IDQ4LjV0LTM4LjUgMjkuNQ0KdC00OCAtNi41dC0zMCAtMzkuNWwtMTAxIC0zODJxLTYwIC01IC0xMDcgLTQzLjV0LTYzIC05OC41cS0yMCAtNzcgMjAgLTE0NnQxMTcgLTg5dDE0NiAyMHQ4OSAxMTdxMTYgNjAgLTYgMTE3dC03MiA5MXpNMTY2NCAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMjQgMTAyNHEwIDUzIC0zNy41IDkwLjUNCnQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNDcyIDgzMnEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTc5MiAzODRxMCAtMjYxIC0xNDEgLTQ4M3EtMTkgLTI5IC01NCAtMjloLTE0MDJxLTM1IDAgLTU0IDI5DQpxLTE0MSAyMjEgLTE0MSA0ODNxMCAxODIgNzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudF9hbHQiIHVuaWNvZGU9IiYjeGYwZTU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDExNTJxLTIwNCAwIC0zODEuNSAtNjkuNXQtMjgyIC0xODcuNXQtMTA0LjUgLTI1NXEwIC0xMTIgNzEuNSAtMjEzLjV0MjAxLjUgLTE3NS41bDg3IC01MGwtMjcgLTk2cS0yNCAtOTEgLTcwIC0xNzJxMTUyIDYzIDI3NSAxNzFsNDMgMzhsNTcgLTZxNjkgLTggMTMwIC04cTIwNCAwIDM4MS41IDY5LjV0MjgyIDE4Ny41dDEwNC41IDI1NXQtMTA0LjUgMjU1dC0yODIgMTg3LjV0LTM4MS41IDY5LjV6TTE3OTIgNjQwDQpxMCAtMTc0IC0xMjAgLTMyMS41dC0zMjYgLTIzM3QtNDUwIC04NS41cS03MCAwIC0xNDUgOHEtMTk4IC0xNzUgLTQ2MCAtMjQycS00OSAtMTQgLTExNCAtMjJoLTVxLTE1IDAgLTI3IDEwLjV0LTE2IDI3LjV2MXEtMyA0IC0wLjUgMTJ0MiAxMHQ0LjUgOS41bDYgOXQ3IDguNXQ4IDlxNyA4IDMxIDM0LjV0MzQuNSAzOHQzMSAzOS41dDMyLjUgNTF0MjcgNTl0MjYgNzZxLTE1NyA4OSAtMjQ3LjUgMjIwdC05MC41IDI4MXEwIDE3NCAxMjAgMzIxLjUNCnQzMjYgMjMzdDQ1MCA4NS41dDQ1MCAtODUuNXQzMjYgLTIzM3QxMjAgLTMyMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29tbWVudHNfYWx0IiB1bmljb2RlPSImI3hmMGU2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTcwNCAxMTUycS0xNTMgMCAtMjg2IC01MnQtMjExLjUgLTE0MXQtNzguNSAtMTkxcTAgLTgyIDUzIC0xNTh0MTQ5IC0xMzJsOTcgLTU2bC0zNSAtODRxMzQgMjAgNjIgMzlsNDQgMzFsNTMgLTEwcTc4IC0xNCAxNTMgLTE0cTE1MyAwIDI4NiA1MnQyMTEuNSAxNDF0NzguNSAxOTF0LTc4LjUgMTkxdC0yMTEuNSAxNDF0LTI4NiA1MnpNNzA0IDEyODBxMTkxIDAgMzUzLjUgLTY4LjV0MjU2LjUgLTE4Ni41dDk0IC0yNTd0LTk0IC0yNTcNCnQtMjU2LjUgLTE4Ni41dC0zNTMuNSAtNjguNXEtODYgMCAtMTc2IDE2cS0xMjQgLTg4IC0yNzggLTEyOHEtMzYgLTkgLTg2IC0xNmgtM3EtMTEgMCAtMjAuNSA4dC0xMS41IDIxcS0xIDMgLTEgNi41dDAuNSA2LjV0MiA2bDIuNSA1dDMuNSA1LjV0NCA1dDQuNSA1dDQgNC41cTUgNiAyMyAyNXQyNiAyOS41dDIyLjUgMjl0MjUgMzguNXQyMC41IDQ0cS0xMjQgNzIgLTE5NSAxNzd0LTcxIDIyNHEwIDEzOSA5NCAyNTd0MjU2LjUgMTg2LjUNCnQzNTMuNSA2OC41ek0xNTI2IDExMXExMCAtMjQgMjAuNSAtNDR0MjUgLTM4LjV0MjIuNSAtMjl0MjYgLTI5LjV0MjMgLTI1cTEgLTEgNCAtNC41dDQuNSAtNXQ0IC01dDMuNSAtNS41bDIuNSAtNXQyIC02dDAuNSAtNi41dC0xIC02LjVxLTMgLTE0IC0xMyAtMjJ0LTIyIC03cS01MCA3IC04NiAxNnEtMTU0IDQwIC0yNzggMTI4cS05MCAtMTYgLTE3NiAtMTZxLTI3MSAwIC00NzIgMTMycTU4IC00IDg4IC00cTE2MSAwIDMwOSA0NXQyNjQgMTI5DQpxMTI1IDkyIDE5MiAyMTJ0NjcgMjU0cTAgNzcgLTIzIDE1MnExMjkgLTcxIDIwNCAtMTc4dDc1IC0yMzBxMCAtMTIwIC03MSAtMjI0LjV0LTE5NSAtMTc2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJib2x0IiB1bmljb2RlPSImI3hmMGU3OyIgaG9yaXotYWR2LXg9Ijg5NiIgDQpkPSJNODg1IDk3MHExOCAtMjAgNyAtNDRsLTU0MCAtMTE1N3EtMTMgLTI1IC00MiAtMjVxLTQgMCAtMTQgMnEtMTcgNSAtMjUuNSAxOXQtNC41IDMwbDE5NyA4MDhsLTQwNiAtMTAxcS00IC0xIC0xMiAtMXEtMTggMCAtMzEgMTFxLTE4IDE1IC0xMyAzOWwyMDEgODI1cTQgMTQgMTYgMjN0MjggOWgzMjhxMTkgMCAzMiAtMTIuNXQxMyAtMjkuNXEwIC04IC01IC0xOGwtMTcxIC00NjNsMzk2IDk4cTggMiAxMiAycTE5IDAgMzQgLTE1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2l0ZW1hcCIgdW5pY29kZT0iJiN4ZjBlODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDI4OHYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMzIwcS00MCAwIC02OCAyOHQtMjggNjh2MzIwcTAgNDAgMjggNjh0NjggMjhoOTZ2MTkyaC01MTJ2LTE5Mmg5NnE0MCAwIDY4IC0yOHQyOCAtNjh2LTMyMHEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDk2djE5MmgtNTEydi0xOTJoOTZxNDAgMCA2OCAtMjh0MjggLTY4di0zMjANCnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTMyMHEtNDAgMCAtNjggMjh0LTI4IDY4djMyMHEwIDQwIDI4IDY4dDY4IDI4aDk2djE5MnEwIDUyIDM4IDkwdDkwIDM4aDUxMnYxOTJoLTk2cS00MCAwIC02OCAyOHQtMjggNjh2MzIwcTAgNDAgMjggNjh0NjggMjhoMzIwcTQwIDAgNjggLTI4dDI4IC02OHYtMzIwcTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTZ2LTE5Mmg1MTJxNTIgMCA5MCAtMzh0MzggLTkwdi0xOTJoOTZxNDAgMCA2OCAtMjh0MjggLTY4DQp6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bWJyZWxsYSIgdW5pY29kZT0iJiN4ZjBlOTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik04OTYgNzA4di01ODBxMCAtMTA0IC03NiAtMTgwdC0xODAgLTc2dC0xODAgNzZ0LTc2IDE4MHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDVxMCAtNTAgMzkgLTg5dDg5IC0zOXQ4OSAzOXQzOSA4OXY1ODBxMzMgMTEgNjQgMTF0NjQgLTExek0xNjY0IDY4MXEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTExIDAgLTIzIDEwcS00OSA0NiAtOTMgNjl0LTEwMiAyM3EtNjggMCAtMTI4IC0zN3QtMTAzIC05Nw0KcS03IC0xMCAtMTcuNSAtMjh0LTE0LjUgLTI0cS0xMSAtMTcgLTI4IC0xN3EtMTggMCAtMjkgMTdxLTQgNiAtMTQuNSAyNHQtMTcuNSAyOHEtNDMgNjAgLTEwMi41IDk3dC0xMjcuNSAzN3QtMTI3LjUgLTM3dC0xMDIuNSAtOTdxLTcgLTEwIC0xNy41IC0yOHQtMTQuNSAtMjRxLTExIC0xNyAtMjkgLTE3cS0xNyAwIC0yOCAxN3EtNCA2IC0xNC41IDI0dC0xNy41IDI4cS00MyA2MCAtMTAzIDk3dC0xMjggMzdxLTU4IDAgLTEwMiAtMjN0LTkzIC02OQ0KcS0xMiAtMTAgLTIzIC0xMHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41cTAgNSAxIDdxNDUgMTgzIDE3Mi41IDMxOS41dDI5OCAyMDQuNXQzNjAuNSA2OHExNDAgMCAyNzQuNSAtNDB0MjQ2LjUgLTExMy41dDE5NC41IC0xODd0MTE1LjUgLTI1MS41cTEgLTIgMSAtN3pNODk2IDE0MDh2LTk4cS00MiAyIC02NCAydC02NCAtMnY5OHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwYXN0ZSIgdW5pY29kZT0iJiN4ZjBlYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03NjggLTEyOGg4OTZ2NjQwaC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTM4NHYtMTE1MnpNMTAyNCAxMzEydjY0cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtNzA0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtNjRxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg3MDRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTI4MCA2NDBoMjk5bC0yOTkgMjk5di0yOTl6TTE3OTIgNTEydi02NzJxMCAtNDAgLTI4IC02OHQtNjggLTI4DQpoLTk2MHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MGgtNTQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTM0NHEwIDQwIDI4IDY4dDY4IDI4aDEwODhxNDAgMCA2OCAtMjh0MjggLTY4di0zMjhxMjEgLTEzIDM2IC0yOGw0MDggLTQwOHEyOCAtMjggNDggLTc2dDIwIC04OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImxpZ2h0X2J1bGIiIHVuaWNvZGU9IiYjeGYwZWI7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNzM2IDk2MHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjV0LTIyLjUgOS41dC05LjUgMjIuNXEwIDQ2IC01NCA3MXQtMTA2IDI1cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV0OS41IDIyLjV0MjIuNSA5LjVxNTAgMCA5OS41IC0xNnQ4NyAtNTR0MzcuNSAtOTB6TTg5NiA5NjBxMCA3MiAtMzQuNSAxMzR0LTkwIDEwMS41dC0xMjMgNjJ0LTEzNi41IDIyLjV0LTEzNi41IC0yMi41dC0xMjMgLTYydC05MCAtMTAxLjV0LTM0LjUgLTEzNA0KcTAgLTEwMSA2OCAtMTgwcTEwIC0xMSAzMC41IC0zM3QzMC41IC0zM3ExMjggLTE1MyAxNDEgLTI5OGgyMjhxMTMgMTQ1IDE0MSAyOThxMTAgMTEgMzAuNSAzM3QzMC41IDMzcTY4IDc5IDY4IDE4MHpNMTAyNCA5NjBxMCAtMTU1IC0xMDMgLTI2OHEtNDUgLTQ5IC03NC41IC04N3QtNTkuNSAtOTUuNXQtMzQgLTEwNy41cTQ3IC0yOCA0NyAtODJxMCAtMzcgLTI1IC02NHEyNSAtMjcgMjUgLTY0cTAgLTUyIC00NSAtODFxMTMgLTIzIDEzIC00Nw0KcTAgLTQ2IC0zMS41IC03MXQtNzcuNSAtMjVxLTIwIC00NCAtNjAgLTcwdC04NyAtMjZ0LTg3IDI2dC02MCA3MHEtNDYgMCAtNzcuNSAyNXQtMzEuNSA3MXEwIDI0IDEzIDQ3cS00NSAyOSAtNDUgODFxMCAzNyAyNSA2NHEtMjUgMjcgLTI1IDY0cTAgNTQgNDcgODJxLTQgNTAgLTM0IDEwNy41dC01OS41IDk1LjV0LTc0LjUgODdxLTEwMyAxMTMgLTEwMyAyNjhxMCA5OSA0NC41IDE4NC41dDExNyAxNDJ0MTY0IDg5dDE4Ni41IDMyLjUNCnQxODYuNSAtMzIuNXQxNjQgLTg5dDExNyAtMTQydDQ0LjUgLTE4NC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZXhjaGFuZ2UiIHVuaWNvZGU9IiYjeGYwZWM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAzNTJ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTEzNzZ2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVxLTEyIDAgLTI0IDEwbC0zMTkgMzIwcS05IDkgLTkgMjJxMCAxNCA5IDIzbDMyMCAzMjBxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJoMTM3NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTE3OTIgODk2cTAgLTE0IC05IC0yM2wtMzIwIC0zMjBxLTkgLTkgLTIzIC05DQpxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJoLTEzNzZxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxOTJxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzc2djE5MnEwIDE0IDkgMjN0MjMgOXExMiAwIDI0IC0xMGwzMTkgLTMxOXE5IC05IDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2xvdWRfZG93bmxvYWQiIHVuaWNvZGU9IiYjeGYwZWQ7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTI4MCA2MDhxMCAxNCAtOSAyM3QtMjMgOWgtMjI0djM1MnEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTE5MnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTM1MmgtMjI0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXEwIC0xNCA5IC0yM2wzNTIgLTM1MnE5IC05IDIzIC05dDIzIDlsMzUxIDM1MXExMCAxMiAxMCAyNHpNMTkyMCAzODRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtMTA4OA0KcS0xODUgMCAtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTMwIDcwIDI0MHQxODggMTY1cS0yIDMwIC0yIDQzcTAgMjEyIDE1MCAzNjJ0MzYyIDE1MHExNTYgMCAyODUuNSAtODd0MTg4LjUgLTIzMXE3MSA2MiAxNjYgNjJxMTA2IDAgMTgxIC03NXQ3NSAtMTgxcTAgLTc2IC00MSAtMTM4cTEzMCAtMzEgMjEzLjUgLTEzNS41dDgzLjUgLTIzOC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2xvdWRfdXBsb2FkIiB1bmljb2RlPSImI3hmMGVlOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTEyODAgNjcycTAgMTQgLTkgMjNsLTM1MiAzNTJxLTkgOSAtMjMgOXQtMjMgLTlsLTM1MSAtMzUxcS0xMCAtMTIgLTEwIC0yNHEwIC0xNCA5IC0yM3QyMyAtOWgyMjR2LTM1MnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE5MnExMyAwIDIyLjUgOS41dDkuNSAyMi41djM1MmgyMjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTkyMCAzODRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtMTA4OA0KcS0xODUgMCAtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTMwIDcwIDI0MHQxODggMTY1cS0yIDMwIC0yIDQzcTAgMjEyIDE1MCAzNjJ0MzYyIDE1MHExNTYgMCAyODUuNSAtODd0MTg4LjUgLTIzMXE3MSA2MiAxNjYgNjJxMTA2IDAgMTgxIC03NXQ3NSAtMTgxcTAgLTc2IC00MSAtMTM4cTEzMCAtMzEgMjEzLjUgLTEzNS41dDgzLjUgLTIzOC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXNlcl9tZCIgdW5pY29kZT0iJiN4ZjBmMDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0zODQgMTkycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTE0MDggMTMxcTAgLTEyMSAtNzMgLTE5MHQtMTk0IC02OWgtODc0cS0xMjEgMCAtMTk0IDY5dC03MyAxOTBxMCA2OCA1LjUgMTMxdDI0IDEzOHQ0Ny41IDEzMi41dDgxIDEwM3QxMjAgNjAuNXEtMjIgLTUyIC0yMiAtMTIwdi0yMDNxLTU4IC0yMCAtOTMgLTcwdC0zNSAtMTExcTAgLTgwIDU2IC0xMzZ0MTM2IC01Ng0KdDEzNiA1NnQ1NiAxMzZxMCA2MSAtMzUuNSAxMTF0LTkyLjUgNzB2MjAzcTAgNjIgMjUgOTNxMTMyIC0xMDQgMjk1IC0xMDR0Mjk1IDEwNHEyNSAtMzEgMjUgLTkzdi02NHEtMTA2IDAgLTE4MSAtNzV0LTc1IC0xODF2LTg5cS0zMiAtMjkgLTMyIC03MXEwIC00MCAyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4cTAgNDIgLTMyIDcxdjg5cTAgNTIgMzggOTB0OTAgMzh0OTAgLTM4dDM4IC05MHYtODlxLTMyIC0yOSAtMzIgLTcxcTAgLTQwIDI4IC02OA0KdDY4IC0yOHQ2OCAyOHQyOCA2OHEwIDQyIC0zMiA3MXY4OXEwIDY4IC0zNC41IDEyNy41dC05My41IDkzLjVxMCAxMCAwLjUgNDIuNXQwIDQ4dC0yLjUgNDEuNXQtNyA0N3QtMTMgNDBxNjggLTE1IDEyMCAtNjAuNXQ4MSAtMTAzdDQ3LjUgLTEzMi41dDI0IC0xMzh0NS41IC0xMzF6TTEwODggMTAyNHEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41dC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjUNCnQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3RldGhvc2NvcGUiIHVuaWNvZGU9IiYjeGYwZjE7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNDA4IDgzMnEwIC02MiAtMzUuNSAtMTExdC05Mi41IC03MHYtMzk1cTAgLTE1OSAtMTMxLjUgLTI3MS41dC0zMTYuNSAtMTEyLjV0LTMxNi41IDExMi41dC0xMzEuNSAyNzEuNXYxMzJxLTE2NCAyMCAtMjc0IDEyOHQtMTEwIDI1MnY1MTJxMCAyNiAxOSA0NXQ0NSAxOXE2IDAgMTYgLTJxMTcgMzAgNDcgNDgNCnQ2NSAxOHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXQtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXEtMzMgMCAtNjQgMTh2LTQwMnEwIC0xMDYgOTQgLTE4MXQyMjYgLTc1dDIyNiA3NXQ5NCAxODF2NDAycS0zMSAtMTggLTY0IC0xOHEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXEzNSAwIDY1IC0xOHQ0NyAtNDhxMTAgMiAxNiAycTI2IDAgNDUgLTE5dDE5IC00NXYtNTEycTAgLTE0NCAtMTEwIC0yNTINCnQtMjc0IC0xMjh2LTEzMnEwIC0xMDYgOTQgLTE4MXQyMjYgLTc1dDIyNiA3NXQ5NCAxODF2Mzk1cS01NyAyMSAtOTIuNSA3MHQtMzUuNSAxMTFxMCA4MCA1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN1aXRjYXNlIiB1bmljb2RlPSImI3hmMGYyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCAxMTUyaDUxMnYxMjhoLTUxMnYtMTI4ek0yODggMTE1MnYtMTI4MGgtNjRxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djgzMnEwIDkyIDY2IDE1OHQxNTggNjZoNjR6TTE0MDggMTE1MnYtMTI4MGgtMTAyNHYxMjgwaDEyOHYxNjBxMCA0MCAyOCA2OHQ2OCAyOGg1NzZxNDAgMCA2OCAtMjh0MjggLTY4di0xNjBoMTI4ek0xNzkyIDkyOHYtODMycTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC02NHYxMjgwaDY0cTkyIDAgMTU4IC02Ng0KdDY2IC0xNTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJiZWxsX2FsdCIgdW5pY29kZT0iJiN4ZjBmMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05MTIgLTE2MHEwIDE2IC0xNiAxNnEtNTkgMCAtMTAxLjUgNDIuNXQtNDIuNSAxMDEuNXEwIDE2IC0xNiAxNnQtMTYgLTE2cTAgLTczIDUxLjUgLTEyNC41dDEyNC41IC01MS41cTE2IDAgMTYgMTZ6TTE3MjggMTI4cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNDQ4cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTQ0OHEtNTIgMCAtOTAgMzh0LTM4IDkwcTUwIDQyIDkxIDg4dDg1IDExOS41dDc0LjUgMTU4LjUNCnQ1MCAyMDZ0MTkuNSAyNjBxMCAxNTIgMTE3IDI4Mi41dDMwNyAxNTguNXEtOCAxOSAtOCAzOXEwIDQwIDI4IDY4dDY4IDI4dDY4IC0yOHQyOCAtNjhxMCAtMjAgLTggLTM5cTE5MCAtMjggMzA3IC0xNTguNXQxMTcgLTI4Mi41cTAgLTEzOSAxOS41IC0yNjB0NTAgLTIwNnQ3NC41IC0xNTguNXQ4NSAtMTE5LjV0OTEgLTg4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29mZmVlIiB1bmljb2RlPSImI3hmMGY0OyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE2NjQgODk2cTAgODAgLTU2IDEzNnQtMTM2IDU2aC02NHYtMzg0aDY0cTgwIDAgMTM2IDU2dDU2IDEzNnpNMCAxMjhoMTc5MnEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzVoLTEyODBxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXpNMTg1NiA4OTZxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNWgtNjR2LTMycTAgLTkyIC02NiAtMTU4dC0xNTggLTY2aC03MDRxLTkyIDAgLTE1OCA2NnQtNjYgMTU4djczNnEwIDI2IDE5IDQ1DQp0NDUgMTloMTE1MnExNTkgMCAyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9vZCIgdW5pY29kZT0iJiN4ZjBmNTsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik02NDAgMTQ3MnYtNjQwcTAgLTYxIC0zNS41IC0xMTF0LTkyLjUgLTcwdi03NzlxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0xMjhxLTUyIDAgLTkwIDM4dC0zOCA5MHY3NzlxLTU3IDIwIC05Mi41IDcwdC0zNS41IDExMXY2NDBxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di00MTZxMCAtMjYgMTkgLTQ1dDQ1IC0xOXQ0NSAxOXQxOSA0NXY0MTZxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di00MTZxMCAtMjYgMTkgLTQ1DQp0NDUgLTE5dDQ1IDE5dDE5IDQ1djQxNnEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTE0MDggMTQ3MnYtMTYwMHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTEyOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjUxMmgtMjI0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2ODAwcTAgMTMyIDk0IDIyNnQyMjYgOTRoMjU2cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZpbGVfdGV4dF9hbHQiIHVuaWNvZGU9IiYjeGYwZjY7IiANCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgweg0KTTM4NCA3MzZxMCAxNCA5IDIzdDIzIDloNzA0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTcwNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHpNMTEyMCA1MTJxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDcwNHpNMTEyMCAyNTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNzA0DQpxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNzA0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnVpbGRpbmciIHVuaWNvZGU9IiYjeGYwZjc7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMzg0IDIyNHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNNjQwIDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0zODQgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMTE1MiAyMjR2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNODk2IDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTY0MCA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDk5MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTExNTIgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTg5NiA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoNCk02NDAgOTkydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTM4NCAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNMTE1MiA3MzZ2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNODk2IDk5MnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTY0MCAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgOTkydi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNODk2IDEyNDh2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTE1MiAxMjQ4di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNODk2IC0xMjhoMzg0djE1MzZoLTExNTJ2LTE1MzZoMzg0djIyNHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDMyMHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTIyNHpNMTQwOCAxNDcydi0xNjY0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djE2NjRxMCAyNiAxOSA0NXQ0NSAxOWgxMjgwcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imhvc3BpdGFsIiB1bmljb2RlPSImI3hmMGY4OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM4NCAyMjR2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDQ4MHYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTY0MCA0ODB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMzg0IDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTExNTIgMjI0di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTg5NiA0ODB2LTY0cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtNjRxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXY2NHEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDY0cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXoNCk02NDAgNzM2di02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6TTExNTIgNDgwdi02NHEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTY0cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2NjRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV6DQpNODk2IDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xMTUyIDczNnYtNjRxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC02NHEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djY0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoNjRxMTMgMCAyMi41IC05LjV0OS41IC0yMi41eg0KTTg5NiAtMTI4aDM4NHYxMTUyaC0yNTZ2LTMycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtNDQ4cS00MCAwIC02OCAyOHQtMjggNjh2MzJoLTI1NnYtMTE1MmgzODR2MjI0cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzIwcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMjI0ek04OTYgMTA1NnYzMjBxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC02NHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2aC0xMjh2OTZxMCAxMyAtOS41IDIyLjUNCnQtMjIuNSA5LjVoLTY0cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtMzIwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXY5NmgxMjh2LTk2cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoNjRxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTQwOCAxMDg4di0xMjgwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTI4MHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyODBxMCAyNiAxOSA0NXQ0NSAxOWgzMjANCnYyODhxMCA0MCAyOCA2OHQ2OCAyOGg0NDhxNDAgMCA2OCAtMjh0MjggLTY4di0yODhoMzIwcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFtYnVsYW5jZSIgdW5pY29kZT0iJiN4ZjBmOTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik02NDAgMTI4cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0yNTYgNjQwaDM4NHYyNTZoLTE1OHEtMTQgLTIgLTIyIC05bC0xOTUgLTE5NXEtNyAtMTIgLTkgLTIydi0zMHpNMTUzNiAxMjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41DQp0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTY2NCA4MDB2MTkycTAgMTQgLTkgMjN0LTIzIDloLTIyNHYyMjRxMCAxNCAtOSAyM3QtMjMgOWgtMTkycS0xNCAwIC0yMyAtOXQtOSAtMjN2LTIyNGgtMjI0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTE5MnEwIC0xNCA5IC0yM3QyMyAtOWgyMjR2LTIyNHEwIC0xNCA5IC0yM3QyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN2MjI0aDIyNHExNCAwIDIzIDl0OSAyM3pNMTkyMCAxMzQ0di0xMTUyDQpxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xOTJxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODEgNzV0LTc1IDE4MWgtMzg0cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NXQtMTgxIDc1dC03NSAxODFoLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5djQxNnEwIDI2IDEzIDU4dDMyIDUxbDE5OCAxOThxMTkgMTkgNTEgMzJ0NTggMTNoMTYwdjMyMHEwIDI2IDE5IDQ1dDQ1IDE5aDExNTJxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWVka2l0IiB1bmljb2RlPSImI3hmMGZhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyODAgNDE2djE5MnEwIDE0IC05IDIzdC0yMyA5aC0yMjR2MjI0cTAgMTQgLTkgMjN0LTIzIDloLTE5MnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yMjRoLTIyNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMjI0di0yMjRxMCAtMTQgOSAtMjN0MjMgLTloMTkycTE0IDAgMjMgOXQ5IDIzdjIyNGgyMjRxMTQgMCAyMyA5dDkgMjN6TTY0MCAxMTUyaDUxMnYxMjhoLTUxMnYtMTI4ek0yNTYgMTE1MnYtMTI4MGgtMzINCnEtOTIgMCAtMTU4IDY2dC02NiAxNTh2ODMycTAgOTIgNjYgMTU4dDE1OCA2NmgzMnpNMTQ0MCAxMTUydi0xMjgwaC0xMDg4djEyODBoMTYwdjE2MHEwIDQwIDI4IDY4dDY4IDI4aDU3NnE0MCAwIDY4IC0yOHQyOCAtNjh2LTE2MGgxNjB6TTE3OTIgOTI4di04MzJxMCAtOTIgLTY2IC0xNTh0LTE1OCAtNjZoLTMydjEyODBoMzJxOTIgMCAxNTggLTY2dDY2IC0xNTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmaWdodGVyX2pldCIgdW5pY29kZT0iJiN4ZjBmYjsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xOTIwIDU3NnEtMSAtMzIgLTI4OCAtOTZsLTM1MiAtMzJsLTIyNCAtNjRoLTY0bC0yOTMgLTM1Mmg2OXEyNiAwIDQ1IC00LjV0MTkgLTExLjV0LTE5IC0xMS41dC00NSAtNC41aC05NmgtMTYwaC02NHYzMmg2NHY0MTZoLTE2MGwtMTkyIC0yMjRoLTk2bC0zMiAzMnYxOTJoMzJ2MzJoMTI4djhsLTE5MiAyNHYxMjhsMTkyIDI0djhoLTEyOHYzMmgtMzJ2MTkybDMyIDMyaDk2bDE5MiAtMjI0aDE2MHY0MTZoLTY0djMyaDY0aDE2MGg5Ng0KcTI2IDAgNDUgLTQuNXQxOSAtMTEuNXQtMTkgLTExLjV0LTQ1IC00LjVoLTY5bDI5MyAtMzUyaDY0bDIyNCAtNjRsMzUyIC0zMnExMjggLTI4IDIwMCAtNTJ0ODAgLTM0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYmVlciIgdW5pY29kZT0iJiN4ZjBmYzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik02NDAgNjQwdjM4NGgtMjU2di0yNTZxMCAtNTMgMzcuNSAtOTAuNXQ5MC41IC0zNy41aDEyOHpNMTY2NCAxOTJ2LTE5MmgtMTE1MnYxOTJsMTI4IDE5MmgtMTI4cS0xNTkgMCAtMjcxLjUgMTEyLjV0LTExMi41IDI3MS41djMyMGwtNjQgNjRsMzIgMTI4aDQ4MGwzMiAxMjhoOTYwbDMyIC0xOTJsLTY0IC0zMnYtODAweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaF9zaWduIiB1bmljb2RlPSImI3hmMGZkOyIgDQpkPSJNMTI4MCAxOTJ2ODk2cTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMzIwaC01MTJ2MzIwcTAgMjYgLTE5IDQ1dC00NSAxOWgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtODk2cTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV2MzIwaDUxMnYtMzIwcTAgLTI2IDE5IC00NXQ0NSAtMTloMTI4cTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMGZlIiB1bmljb2RlPSImI3hmMGZlOyIgDQpkPSJNMTI4MCA1NzZ2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtMzIwdjMyMHEwIDI2IC0xOSA0NXQtNDUgMTloLTEyOHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTMyMGgtMzIwcS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloMzIwdi0zMjBxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjhxMjYgMCA0NSAxOXQxOSA0NXYzMjBoMzIwcTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3VibGVfYW5nbGVfbGVmdCIgdW5pY29kZT0iJiN4ZjEwMDsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik02MjcgMTYwcTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMzkzIC0zOTNsMzkzIC0zOTNxMTAgLTEwIDEwIC0yM3pNMTAxMSAxNjBxMCAtMTMgLTEwIC0yM2wtNTAgLTUwcS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTQ2NiA0NjZxLTEwIDEwIC0xMCAyMw0KdDEwIDIzbDQ2NiA0NjZxMTAgMTAgMjMgMTB0MjMgLTEwbDUwIC01MHExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTM5MyAtMzkzbDM5MyAtMzkzcTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkb3VibGVfYW5nbGVfcmlnaHQiIHVuaWNvZGU9IiYjeGYxMDE7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNTk1IDU3NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDM5MyAzOTNsLTM5MyAzOTNxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3pNOTc5IDU3NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzDQpsMzkzIDM5M2wtMzkzIDM5M3EtMTAgMTAgLTEwIDIzdDEwIDIzbDUwIDUwcTEwIDEwIDIzIDEwdDIzIC0xMGw0NjYgLTQ2NnExMCAtMTAgMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZG91YmxlX2FuZ2xlX3VwIiB1bmljb2RlPSImI3hmMTAyOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTEwNzUgMjI0cTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0zOTMgMzkzbC0zOTMgLTM5M3EtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDQ2NiA0NjZxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN6TTEwNzUgNjA4cTAgLTEzIC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0zOTMgMzkzbC0zOTMgLTM5Mw0KcS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTUwIDUwcS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImRvdWJsZV9hbmdsZV9kb3duIiB1bmljb2RlPSImI3hmMTAzOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTEwNzUgNjcycTAgLTEzIC0xMCAtMjNsLTQ2NiAtNDY2cS0xMCAtMTAgLTIzIC0xMHQtMjMgMTBsLTQ2NiA0NjZxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsMzkzIC0zOTNsMzkzIDM5M3ExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6TTEwNzUgMTA1NnEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjMNCnQxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsMzkzIC0zOTNsMzkzIDM5M3ExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmdsZV9sZWZ0IiB1bmljb2RlPSImI3hmMTA0OyIgaG9yaXotYWR2LXg9IjY0MCIgDQpkPSJNNjI3IDk5MnEwIC0xMyAtMTAgLTIzbC0zOTMgLTM5M2wzOTMgLTM5M3ExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmdsZV9yaWdodCIgdW5pY29kZT0iJiN4ZjEwNTsiIGhvcml6LWFkdi14PSI2NDAiIA0KZD0iTTU5NSA1NzZxMCAtMTMgLTEwIC0yM2wtNDY2IC00NjZxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNTAgNTBxLTEwIDEwIC0xMCAyM3QxMCAyM2wzOTMgMzkzbC0zOTMgMzkzcS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhbmdsZV91cCIgdW5pY29kZT0iJiN4ZjEwNjsiIGhvcml6LWFkdi14PSIxMTUyIiANCmQ9Ik0xMDc1IDM1MnEwIC0xMyAtMTAgLTIzbC01MCAtNTBxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMzkzIDM5M2wtMzkzIC0zOTNxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNTAgNTBxLTEwIDEwIC0xMCAyM3QxMCAyM2w0NjYgNDY2cTEwIDEwIDIzIDEwdDIzIC0xMGw0NjYgLTQ2NnExMCAtMTAgMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYW5nbGVfZG93biIgdW5pY29kZT0iJiN4ZjEwNzsiIGhvcml6LWFkdi14PSIxMTUyIiANCmQ9Ik0xMDc1IDgwMHEwIC0xMyAtMTAgLTIzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDM5MyAtMzkzbDM5MyAzOTNxMTAgMTAgMjMgMTB0MjMgLTEwbDUwIC01MHExMCAtMTAgMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZGVza3RvcCIgdW5pY29kZT0iJiN4ZjEwODsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xNzkyIDU0NHY4MzJxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC0xNjAwcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtODMycTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTYwMHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xOTIwIDEzNzZ2LTEwODhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTU0NHEwIC0zNyAxNiAtNzcuNXQzMiAtNzF0MTYgLTQzLjVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5DQp0LTE5IDQ1cTAgMTQgMTYgNDR0MzIgNzB0MTYgNzhoLTU0NHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTYwMHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImxhcHRvcCIgdW5pY29kZT0iJiN4ZjEwOTsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik00MTYgMjU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y3MDRxMCA2NiA0NyAxMTN0MTEzIDQ3aDEwODhxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTcwNHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTA4OHpNMzg0IDExMjB2LTcwNHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDEwODhxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXY3MDRxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC0xMDg4cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXoNCk0xNzYwIDE5MmgxNjB2LTk2cTAgLTQwIC00NyAtNjh0LTExMyAtMjhoLTE2MDBxLTY2IDAgLTExMyAyOHQtNDcgNjh2OTZoMTYwaDE2MDB6TTEwNDAgOTZxMTYgMCAxNiAxNnQtMTYgMTZoLTE2MHEtMTYgMCAtMTYgLTE2dDE2IC0xNmgxNjB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0YWJsZXQiIHVuaWNvZGU9IiYjeGYxMGE7IiBob3Jpei1hZHYteD0iMTE1MiIgDQpkPSJNNjQwIDEyOHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTEwMjQgMjg4djk2MHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTgzMnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2MHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDgzMnExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMTUyIDEyNDh2LTEwODhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTgzMg0KcS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2g4MzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtb2JpbGVfcGhvbmUiIHVuaWNvZGU9IiYjeGYxMGI7IiBob3Jpei1hZHYteD0iNzY4IiANCmQ9Ik00NjQgMTI4cTAgMzMgLTIzLjUgNTYuNXQtNTYuNSAyMy41dC01Ni41IC0yMy41dC0yMy41IC01Ni41dDIzLjUgLTU2LjV0NTYuNSAtMjMuNXQ1Ni41IDIzLjV0MjMuNSA1Ni41ek02NzIgMjg4djcwNHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTUxMnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTcwNHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDUxMnExMyAwIDIyLjUgOS41dDkuNSAyMi41ek00ODAgMTEzNg0KcTAgMTYgLTE2IDE2aC0xNjBxLTE2IDAgLTE2IC0xNnQxNiAtMTZoMTYwcTE2IDAgMTYgMTZ6TTc2OCAxMTUydi0xMDI0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtNTEycS01MiAwIC05MCAzOHQtMzggOTB2MTAyNHEwIDUyIDM4IDkwdDkwIDM4aDUxMnE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGVfYmxhbmsiIHVuaWNvZGU9IiYjeGYxMGM7IiANCmQ9Ik03NjggMTE4NHEtMTQ4IDAgLTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzN0LTczIDI3M3QtMTk4IDE5OHQtMjczIDczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwMw0KdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icXVvdGVfbGVmdCIgdW5pY29kZT0iJiN4ZjEwZDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik03NjggNTc2di0zODRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZoLTM4NHEtODAgMCAtMTM2IDU2dC01NiAxMzZ2NzA0cTAgMTA0IDQwLjUgMTk4LjV0MTA5LjUgMTYzLjV0MTYzLjUgMTA5LjV0MTk4LjUgNDAuNWg2NHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTY0cS0xMDYgMCAtMTgxIC03NXQtNzUgLTE4MXYtMzJxMCAtNDAgMjggLTY4dDY4IC0yOGgyMjRxODAgMCAxMzYgLTU2dDU2IC0xMzZ6DQpNMTY2NCA1NzZ2LTM4NHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NmgtMzg0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnY3MDRxMCAxMDQgNDAuNSAxOTguNXQxMDkuNSAxNjMuNXQxNjMuNSAxMDkuNXQxOTguNSA0MC41aDY0cTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNjRxLTEwNiAwIC0xODEgLTc1dC03NSAtMTgxdi0zMnEwIC00MCAyOCAtNjh0NjggLTI4aDIyNHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InF1b3RlX3JpZ2h0IiB1bmljb2RlPSImI3hmMTBlOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTc2OCAxMjE2di03MDRxMCAtMTA0IC00MC41IC0xOTguNXQtMTA5LjUgLTE2My41dC0xNjMuNSAtMTA5LjV0LTE5OC41IC00MC41aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDY0cTEwNiAwIDE4MSA3NXQ3NSAxODF2MzJxMCA0MCAtMjggNjh0LTY4IDI4aC0yMjRxLTgwIDAgLTEzNiA1NnQtNTYgMTM2djM4NHEwIDgwIDU2IDEzNnQxMzYgNTZoMzg0cTgwIDAgMTM2IC01NnQ1NiAtMTM2ek0xNjY0IDEyMTYNCnYtNzA0cTAgLTEwNCAtNDAuNSAtMTk4LjV0LTEwOS41IC0xNjMuNXQtMTYzLjUgLTEwOS41dC0xOTguNSAtNDAuNWgtNjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg2NHExMDYgMCAxODEgNzV0NzUgMTgxdjMycTAgNDAgLTI4IDY4dC02OCAyOGgtMjI0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnYzODRxMCA4MCA1NiAxMzZ0MTM2IDU2aDM4NHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNwaW5uZXIiIHVuaWNvZGU9IiYjeGYxMTA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNTI2IDE0MnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXEtNTIgMCAtOTAgMzh0LTM4IDkwcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTEwMjQgLTY0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMzIwIDY0MHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNQ0KdC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTUyMiAxNDJxMCAtNTIgLTM4IC05MHQtOTAgLTM4cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNNTU4IDExMzhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDd0LTExMyA0N3QtNDcgMTEzdDQ3IDExM3QxMTMgNDd0MTEzIC00N3Q0NyAtMTEzeg0KTTE3MjggNjQwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTA4OCAxMzQ0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMTYxOCAxMTM4cTAgLTkzIC02NiAtMTU4LjV0LTE1OCAtNjUuNXEtOTMgMCAtMTU4LjUgNjUuNXQtNjUuNSAxNTguNQ0KcTAgOTIgNjUuNSAxNTh0MTU4LjUgNjZxOTIgMCAxNTggLTY2dDY2IC0xNTh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaXJjbGUiIHVuaWNvZGU9IiYjeGYxMTE7IiANCmQ9Ik0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJlcGx5IiB1bmljb2RlPSImI3hmMTEyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNDE2cTAgLTE2NiAtMTI3IC00NTFxLTMgLTcgLTEwLjUgLTI0dC0xMy41IC0zMHQtMTMgLTIycS0xMiAtMTcgLTI4IC0xN3EtMTUgMCAtMjMuNSAxMHQtOC41IDI1cTAgOSAyLjUgMjYuNXQyLjUgMjMuNXE1IDY4IDUgMTIzcTAgMTAxIC0xNy41IDE4MXQtNDguNSAxMzguNXQtODAgMTAxdC0xMDUuNSA2OS41dC0xMzMgNDIuNXQtMTU0IDIxLjV0LTE3NS41IDZoLTIyNHYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTkNCmwtNTEyIDUxMnEtMTkgMTkgLTE5IDQ1dDE5IDQ1bDUxMiA1MTJxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXYtMjU2aDIyNHE3MTMgMCA4NzUgLTQwM3E1MyAtMTM0IDUzIC0zMzN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJnaXRodWJfYWx0IiB1bmljb2RlPSImI3hmMTEzOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTY0MCAzMjBxMCAtNDAgLTEyLjUgLTgydC00MyAtNzZ0LTcyLjUgLTM0dC03Mi41IDM0dC00MyA3NnQtMTIuNSA4MnQxMi41IDgydDQzIDc2dDcyLjUgMzR0NzIuNSAtMzR0NDMgLTc2dDEyLjUgLTgyek0xMjgwIDMyMHEwIC00MCAtMTIuNSAtODJ0LTQzIC03NnQtNzIuNSAtMzR0LTcyLjUgMzR0LTQzIDc2dC0xMi41IDgydDEyLjUgODJ0NDMgNzZ0NzIuNSAzNHQ3Mi41IC0zNHQ0MyAtNzZ0MTIuNSAtODJ6TTE0NDAgMzIwDQpxMCAxMjAgLTY5IDIwNHQtMTg3IDg0cS00MSAwIC0xOTUgLTIxcS03MSAtMTEgLTE1NyAtMTF0LTE1NyAxMXEtMTUyIDIxIC0xOTUgMjFxLTExOCAwIC0xODcgLTg0dC02OSAtMjA0cTAgLTg4IDMyIC0xNTMuNXQ4MSAtMTAzdDEyMiAtNjB0MTQwIC0yOS41dDE0OSAtN2gxNjhxODIgMCAxNDkgN3QxNDAgMjkuNXQxMjIgNjB0ODEgMTAzdDMyIDE1My41ek0xNjY0IDQ5NnEwIC0yMDcgLTYxIC0zMzFxLTM4IC03NyAtMTA1LjUgLTEzM3QtMTQxIC04Ng0KdC0xNzAgLTQ3LjV0LTE3MS41IC0yMnQtMTY3IC00LjVxLTc4IDAgLTE0MiAzdC0xNDcuNSAxMi41dC0xNTIuNSAzMHQtMTM3IDUxLjV0LTEyMSA4MXQtODYgMTE1cS02MiAxMjMgLTYyIDMzMXEwIDIzNyAxMzYgMzk2cS0yNyA4MiAtMjcgMTcwcTAgMTE2IDUxIDIxOHExMDggMCAxOTAgLTM5LjV0MTg5IC0xMjMuNXExNDcgMzUgMzA5IDM1cTE0OCAwIDI4MCAtMzJxMTA1IDgyIDE4NyAxMjF0MTg5IDM5cTUxIC0xMDIgNTEgLTIxOA0KcTAgLTg3IC0yNyAtMTY4cTEzNiAtMTYwIDEzNiAtMzk4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9sZGVyX2Nsb3NlX2FsdCIgdW5pY29kZT0iJiN4ZjExNDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNTM2IDIyNHY3MDRxMCA0MCAtMjggNjh0LTY4IDI4aC03MDRxLTQwIDAgLTY4IDI4dC0yOCA2OHY2NHEwIDQwIC0yOCA2OHQtNjggMjhoLTMyMHEtNDAgMCAtNjggLTI4dC0yOCAtNjh2LTk2MHEwIC00MCAyOCAtNjh0NjggLTI4aDEyMTZxNDAgMCA2OCAyOHQyOCA2OHpNMTY2NCA5Mjh2LTcwNHEwIC05MiAtNjYgLTE1OHQtMTU4IC02NmgtMTIxNnEtOTIgMCAtMTU4IDY2dC02NiAxNTh2OTYwcTAgOTIgNjYgMTU4dDE1OCA2NmgzMjANCnE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMzJoNjcycTkyIDAgMTU4IC02NnQ2NiAtMTU4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZm9sZGVyX29wZW5fYWx0IiB1bmljb2RlPSImI3hmMTE1OyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE3ODEgNjA1cTAgMzUgLTUzIDM1aC0xMDg4cS00MCAwIC04NS41IC0yMS41dC03MS41IC01Mi41bC0yOTQgLTM2M3EtMTggLTI0IC0xOCAtNDBxMCAtMzUgNTMgLTM1aDEwODhxNDAgMCA4NiAyMnQ3MSA1M2wyOTQgMzYzcTE4IDIyIDE4IDM5ek02NDAgNzY4aDc2OHYxNjBxMCA0MCAtMjggNjh0LTY4IDI4aC01NzZxLTQwIDAgLTY4IDI4dC0yOCA2OHY2NHEwIDQwIC0yOCA2OHQtNjggMjhoLTMyMHEtNDAgMCAtNjggLTI4dC0yOCAtNjgNCnYtODUzbDI1NiAzMTVxNDQgNTMgMTE2IDg3LjV0MTQwIDM0LjV6TTE5MDkgNjA1cTAgLTYyIC00NiAtMTIwbC0yOTUgLTM2M3EtNDMgLTUzIC0xMTYgLTg3LjV0LTE0MCAtMzQuNWgtMTA4OHEtOTIgMCAtMTU4IDY2dC02NiAxNTh2OTYwcTAgOTIgNjYgMTU4dDE1OCA2NmgzMjBxOTIgMCAxNTggLTY2dDY2IC0xNTh2LTMyaDU0NHE5MiAwIDE1OCAtNjZ0NjYgLTE1OHYtMTYwaDE5MnE1NCAwIDk5IC0yNC41dDY3IC03MC41cTE1IC0zMiAxNSAtNjh6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImV4cGFuZF9hbHQiIHVuaWNvZGU9IiYjeGYxMTY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29sbGFwc2VfYWx0IiB1bmljb2RlPSImI3hmMTE3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNtaWxlIiB1bmljb2RlPSImI3hmMTE4OyIgDQpkPSJNMTEzNCA0NjFxLTM3IC0xMjEgLTEzOCAtMTk1dC0yMjggLTc0dC0yMjggNzR0LTEzOCAxOTVxLTggMjUgNCA0OC41dDM4IDMxLjVxMjUgOCA0OC41IC00dDMxLjUgLTM4cTI1IC04MCA5Mi41IC0xMjkuNXQxNTEuNSAtNDkuNXQxNTEuNSA0OS41dDkyLjUgMTI5LjVxOCAyNiAzMiAzOHQ0OSA0dDM3IC0zMS41dDQgLTQ4LjV6TTY0MCA4OTZxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41DQp0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTExNTIgODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTQwOCA2NDBxMCAxMzAgLTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF0LTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41DQp0NTEgLTI0OC41dDEzNi41IC0yMDR0MjA0IC0xMzYuNXQyNDguNSAtNTF0MjQ4LjUgNTF0MjA0IDEzNi41dDEzNi41IDIwNHQ1MSAyNDguNXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmcm93biIgdW5pY29kZT0iJiN4ZjExOTsiIA0KZD0iTTExMzQgMzA3cTggLTI1IC00IC00OC41dC0zNyAtMzEuNXQtNDkgNHQtMzIgMzhxLTI1IDgwIC05Mi41IDEyOS41dC0xNTEuNSA0OS41dC0xNTEuNSAtNDkuNXQtOTIuNSAtMTI5LjVxLTggLTI2IC0zMS41IC0zOHQtNDguNSAtNHEtMjYgOCAtMzggMzEuNXQtNCA0OC41cTM3IDEyMSAxMzggMTk1dDIyOCA3NHQyMjggLTc0dDEzOCAtMTk1ek02NDAgODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjUNCnQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xMTUyIDg5NnEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE0MDggNjQwcTAgMTMwIC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxdC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDQNCnQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWVoIiB1bmljb2RlPSImI3hmMTFhOyIgDQpkPSJNMTE1MiA0NDhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NDBxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWg2NDBxMjYgMCA0NSAtMTl0MTkgLTQ1ek02NDAgODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTE1MiA4OTZxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNQ0KdC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE0MDggNjQwcTAgMTMwIC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxdC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDR0LTUxIC0yNDguNXQ1MSAtMjQ4LjV0MTM2LjUgLTIwNHQyMDQgLTEzNi41dDI0OC41IC01MXQyNDguNSA1MXQyMDQgMTM2LjV0MTM2LjUgMjA0dDUxIDI0OC41ek0xNTM2IDY0MA0KcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZ2FtZXBhZCIgdW5pY29kZT0iJiN4ZjExYjsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik04MzIgNDQ4djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xOTJ2MTkycTAgMTQgLTkgMjN0LTIzIDloLTEyOHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xOTJoLTE5MnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMjhxMCAtMTQgOSAtMjN0MjMgLTloMTkydi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMTI4cTE0IDAgMjMgOXQ5IDIzdjE5MmgxOTJxMTQgMCAyMyA5dDkgMjN6TTE0MDggMzg0cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41DQp0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE2NjQgNjQwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xOTIwIDUxMnEwIC0yMTIgLTE1MCAtMzYydC0zNjIgLTE1MHEtMTkyIDAgLTMzOCAxMjhoLTIyMHEtMTQ2IC0xMjggLTMzOCAtMTI4cS0yMTIgMCAtMzYyIDE1MA0KdC0xNTAgMzYydDE1MCAzNjJ0MzYyIDE1MGg4OTZxMjEyIDAgMzYyIC0xNTB0MTUwIC0zNjJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJrZXlib2FyZCIgdW5pY29kZT0iJiN4ZjExYzsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0zODQgMzY4di05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNNTEyIDYyNHYtOTZxMCAtMTYgLTE2IC0xNmgtMjI0cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDIyNHExNiAwIDE2IC0xNnpNMzg0IDg4MHYtOTZxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTE0MDggMzY4di05NnEwIC0xNiAtMTYgLTE2DQpoLTg2NHEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg4NjRxMTYgMCAxNiAtMTZ6TTc2OCA2MjR2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek02NDAgODgwdi05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTAyNCA2MjR2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2DQpoOTZxMTYgMCAxNiAtMTZ6TTg5NiA4ODB2LTk2cTAgLTE2IC0xNiAtMTZoLTk2cS0xNiAwIC0xNiAxNnY5NnEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek0xMjgwIDYyNHYtOTZxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTE2NjQgMzY4di05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTE1MiA4ODB2LTk2DQpxMCAtMTYgLTE2IC0xNmgtOTZxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ6TTE0MDggODgwdi05NnEwIC0xNiAtMTYgLTE2aC05NnEtMTYgMCAtMTYgMTZ2OTZxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnpNMTY2NCA4ODB2LTM1MnEwIC0xNiAtMTYgLTE2aC0yMjRxLTE2IDAgLTE2IDE2djk2cTAgMTYgMTYgMTZoMTEydjI0MHEwIDE2IDE2IDE2aDk2cTE2IDAgMTYgLTE2ek0xNzkyIDEyOHY4OTZoLTE2NjR2LTg5Ng0KaDE2NjR6TTE5MjAgMTAyNHYtODk2cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC0xNjY0cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXY4OTZxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDE2NjRxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmbGFnX2FsdCIgdW5pY29kZT0iJiN4ZjExZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDQ5MXY2MTZxLTE2OSAtOTEgLTMwNiAtOTFxLTgyIDAgLTE0NSAzMnEtMTAwIDQ5IC0xODQgNzYuNXQtMTc4IDI3LjVxLTE3MyAwIC00MDMgLTEyN3YtNTk5cTI0NSAxMTMgNDMzIDExM3E1NSAwIDEwMy41IC03LjV0OTggLTI2dDc3IC0zMXQ4Mi41IC0zOS41bDI4IC0xNHE0NCAtMjIgMTAxIC0yMnExMjAgMCAyOTMgOTJ6TTMyMCAxMjgwcTAgLTM1IC0xNy41IC02NHQtNDYuNSAtNDZ2LTEyNjZxMCAtMTQgLTkgLTIzdC0yMyAtOQ0KaC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMjY2cS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xNzkyIDEyMTZ2LTc2M3EwIC0zOSAtMzUgLTU3cS0xMCAtNSAtMTcgLTlxLTIxOCAtMTE2IC0zNjkgLTExNnEtODggMCAtMTU4IDM1bC0yOCAxNHEtNjQgMzMgLTk5IDQ4dC05MSAyOXQtMTE0IDE0cS0xMDIgMCAtMjM1LjUgLTQ0dC0yMjguNSAtMTAyDQpxLTE1IC05IC0zMyAtOXEtMTYgMCAtMzIgOHEtMzIgMTkgLTMyIDU2djc0MnEwIDM1IDMxIDU1cTM1IDIxIDc4LjUgNDIuNXQxMTQgNTJ0MTUyLjUgNDkuNXQxNTUgMTlxMTEyIDAgMjA5IC0zMXQyMDkgLTg2cTM4IC0xOSA4OSAtMTlxMTIyIDAgMzEwIDExMnEyMiAxMiAzMSAxN3EzMSAxNiA2MiAtMnEzMSAtMjAgMzEgLTU1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmxhZ19jaGVja2VyZWQiIHVuaWNvZGU9IiYjeGYxMWU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODMyIDUzNnYxOTJxLTE4MSAtMTYgLTM4NCAtMTE3di0xODVxMjA1IDk2IDM4NCAxMTB6TTgzMiA5NTR2MTk3cS0xNzIgLTggLTM4NCAtMTI2di0xODlxMjE1IDExMSAzODQgMTE4ek0xNjY0IDQ5MXYxODRxLTIzNSAtMTE2IC0zODQgLTcxdjIyNHEtMjAgNiAtMzkgMTVxLTUgMyAtMzMgMTd0LTM0LjUgMTd0LTMxLjUgMTV0LTM0LjUgMTUuNXQtMzIuNSAxM3QtMzYgMTIuNXQtMzUgOC41dC0zOS41IDcuNXQtMzkuNSA0dC00NCAyDQpxLTIzIDAgLTQ5IC0zdi0yMjJoMTlxMTAyIDAgMTkyLjUgLTI5dDE5Ny41IC04MnExOSAtOSAzOSAtMTV2LTE4OHE0MiAtMTcgOTEgLTE3cTEyMCAwIDI5MyA5MnpNMTY2NCA5MTh2MTg5cS0xNjkgLTkxIC0zMDYgLTkxcS00NSAwIC03OCA4di0xOTZxMTQ4IC00MiAzODQgOTB6TTMyMCAxMjgwcTAgLTM1IC0xNy41IC02NHQtNDYuNSAtNDZ2LTEyNjZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTI2Ng0KcS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41ek0xNzkyIDEyMTZ2LTc2M3EwIC0zOSAtMzUgLTU3cS0xMCAtNSAtMTcgLTlxLTIxOCAtMTE2IC0zNjkgLTExNnEtODggMCAtMTU4IDM1bC0yOCAxNHEtNjQgMzMgLTk5IDQ4dC05MSAyOXQtMTE0IDE0cS0xMDIgMCAtMjM1LjUgLTQ0dC0yMjguNSAtMTAycS0xNSAtOSAtMzMgLTlxLTE2IDAgLTMyIDgNCnEtMzIgMTkgLTMyIDU2djc0MnEwIDM1IDMxIDU1cTM1IDIxIDc4LjUgNDIuNXQxMTQgNTJ0MTUyLjUgNDkuNXQxNTUgMTlxMTEyIDAgMjA5IC0zMXQyMDkgLTg2cTM4IC0xOSA4OSAtMTlxMTIyIDAgMzEwIDExMnEyMiAxMiAzMSAxN3EzMSAxNiA2MiAtMnEzMSAtMjAgMzEgLTU1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idGVybWluYWwiIHVuaWNvZGU9IiYjeGYxMjA7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNTg1IDU1M2wtNDY2IC00NjZxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtNTAgNTBxLTEwIDEwIC0xMCAyM3QxMCAyM2wzOTMgMzkzbC0zOTMgMzkzcS0xMCAxMCAtMTAgMjN0MTAgMjNsNTAgNTBxMTAgMTAgMjMgMTB0MjMgLTEwbDQ2NiAtNDY2cTEwIC0xMCAxMCAtMjN0LTEwIC0yM3pNMTY2NCA5NnYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTYwcS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2MHExNCAwIDIzIC05DQp0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2RlIiB1bmljb2RlPSImI3hmMTIxOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTYxNyAxMzdsLTUwIC01MHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC00NjYgNDY2cS0xMCAxMCAtMTAgMjN0MTAgMjNsNDY2IDQ2NnExMCAxMCAyMyAxMHQyMyAtMTBsNTAgLTUwcTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMzkzIC0zOTNsMzkzIC0zOTNxMTAgLTEwIDEwIC0yM3QtMTAgLTIzek0xMjA4IDEyMDRsLTM3MyAtMTI5MXEtNCAtMTMgLTE1LjUgLTE5LjV0LTIzLjUgLTIuNWwtNjIgMTdxLTEzIDQgLTE5LjUgMTUuNXQtMi41IDI0LjUNCmwzNzMgMTI5MXE0IDEzIDE1LjUgMTkuNXQyMy41IDIuNWw2MiAtMTdxMTMgLTQgMTkuNSAtMTUuNXQyLjUgLTI0LjV6TTE4NjUgNTUzbC00NjYgLTQ2NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC01MCA1MHEtMTAgMTAgLTEwIDIzdDEwIDIzbDM5MyAzOTNsLTM5MyAzOTNxLTEwIDEwIC0xMCAyM3QxMCAyM2w1MCA1MHExMCAxMCAyMyAxMHQyMyAtMTBsNDY2IC00NjZxMTAgLTEwIDEwIC0yM3QtMTAgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icmVwbHlfYWxsIiB1bmljb2RlPSImI3hmMTIyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCA0NTR2LTcwcTAgLTQyIC0zOSAtNTlxLTEzIC01IC0yNSAtNXEtMjcgMCAtNDUgMTlsLTUxMiA1MTJxLTE5IDE5IC0xOSA0NXQxOSA0NWw1MTIgNTEycTI5IDMxIDcwIDE0cTM5IC0xNyAzOSAtNTl2LTY5bC0zOTcgLTM5OHEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1ek0xNzkyIDQxNnEwIC01OCAtMTcgLTEzMy41dC0zOC41IC0xMzh0LTQ4IC0xMjV0LTQwLjUgLTkwLjVsLTIwIC00MHEtOCAtMTcgLTI4IC0xN3EtNiAwIC05IDENCnEtMjUgOCAtMjMgMzRxNDMgNDAwIC0xMDYgNTY1cS02NCA3MSAtMTcwLjUgMTEwLjV0LTI2Ny41IDUyLjV2LTI1MXEwIC00MiAtMzkgLTU5cS0xMyAtNSAtMjUgLTVxLTI3IDAgLTQ1IDE5bC01MTIgNTEycS0xOSAxOSAtMTkgNDV0MTkgNDVsNTEyIDUxMnEyOSAzMSA3MCAxNHEzOSAtMTcgMzkgLTU5di0yNjJxNDExIC0yOCA1OTkgLTIyMXExNjkgLTE3MyAxNjkgLTUwOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN0YXJfaGFsZl9lbXB0eSIgdW5pY29kZT0iJiN4ZjEyMzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMTg2IDU3OWwyNTcgMjUwbC0zNTYgNTJsLTY2IDEwbC0zMCA2MGwtMTU5IDMyMnYtOTYzbDU5IC0zMWwzMTggLTE2OGwtNjAgMzU1bC0xMiA2NnpNMTYzOCA4NDFsLTM2MyAtMzU0bDg2IC01MDBxNSAtMzMgLTYgLTUxLjV0LTM0IC0xOC41cS0xNyAwIC00MCAxMmwtNDQ5IDIzNmwtNDQ5IC0yMzZxLTIzIC0xMiAtNDAgLTEycS0yMyAwIC0zNCAxOC41dC02IDUxLjVsODYgNTAwbC0zNjQgMzU0cS0zMiAzMiAtMjMgNTkuNXQ1NCAzNC41DQpsNTAyIDczbDIyNSA0NTVxMjAgNDEgNDkgNDFxMjggMCA0OSAtNDFsMjI1IC00NTVsNTAyIC03M3E0NSAtNyA1NCAtMzQuNXQtMjQgLTU5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb2NhdGlvbl9hcnJvdyIgdW5pY29kZT0iJiN4ZjEyNDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xNDAxIDExODdsLTY0MCAtMTI4MHEtMTcgLTM1IC01NyAtMzVxLTUgMCAtMTUgMnEtMjIgNSAtMzUuNSAyMi41dC0xMy41IDM5LjV2NTc2aC01NzZxLTIyIDAgLTM5LjUgMTMuNXQtMjIuNSAzNS41dDQgNDJ0MjkgMzBsMTI4MCA2NDBxMTMgNyAyOSA3cTI3IDAgNDUgLTE5cTE1IC0xNCAxOC41IC0zNC41dC02LjUgLTM5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjcm9wIiB1bmljb2RlPSImI3hmMTI1OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTU1NyAyNTZoNTk1djU5NXpNNTEyIDMwMWw1OTUgNTk1aC01OTV2LTU5NXpNMTY2NCAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0yMjR2LTIyNHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC04NjRxLTE0IDAgLTIzIDl0LTkgMjN2ODY0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDIyNHYyMjRxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjMNCnYtMjI0aDg1MWwyNDYgMjQ3cTEwIDkgMjMgOXQyMyAtOXE5IC0xMCA5IC0yM3QtOSAtMjNsLTI0NyAtMjQ2di04NTFoMjI0cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjb2RlX2ZvcmsiIHVuaWNvZGU9IiYjeGYxMjY7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMjg4IDY0cTAgNDAgLTI4IDY4dC02OCAyOHQtNjggLTI4dC0yOCAtNjh0MjggLTY4dDY4IC0yOHQ2OCAyOHQyOCA2OHpNMjg4IDEyMTZxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek05MjggMTA4OHEwIDQwIC0yOCA2OHQtNjggMjh0LTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh0NjggMjh0MjggNjh6TTEwMjQgMTA4OHEwIC01MiAtMjYgLTk2LjV0LTcwIC02OS41DQpxLTIgLTI4NyAtMjI2IC00MTRxLTY3IC0zOCAtMjAzIC04MXEtMTI4IC00MCAtMTY5LjUgLTcxdC00MS41IC0xMDB2LTI2cTQ0IC0yNSA3MCAtNjkuNXQyNiAtOTYuNXEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA1MiAyNiA5Ni41dDcwIDY5LjV2ODIwcS00NCAyNSAtNzAgNjkuNXQtMjYgOTYuNXEwIDgwIDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2cTAgLTUyIC0yNiAtOTYuNXQtNzAgLTY5LjV2LTQ5Nw0KcTU0IDI2IDE1NCA1N3E1NSAxNyA4Ny41IDI5LjV0NzAuNSAzMXQ1OSAzOS41dDQwLjUgNTF0MjggNjkuNXQ4LjUgOTEuNXEtNDQgMjUgLTcwIDY5LjV0LTI2IDk2LjVxMCA4MCA1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVubGluayIgdW5pY29kZT0iJiN4ZjEyNzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik00MzkgMjY1bC0yNTYgLTI1NnEtMTEgLTkgLTIzIC05dC0yMyA5cS05IDEwIC05IDIzdDkgMjNsMjU2IDI1NnExMCA5IDIzIDl0MjMgLTlxOSAtMTAgOSAtMjN0LTkgLTIzek02MDggMjI0di0zMjBxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3YzMjBxMCAxNCA5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTM4NCA0NDhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzIwcS0xNCAwIC0yMyA5dC05IDIzdDkgMjN0MjMgOWgzMjANCnExNCAwIDIzIC05dDkgLTIzek0xNjQ4IDMyMHEwIC0xMjAgLTg1IC0yMDNsLTE0NyAtMTQ2cS04MyAtODMgLTIwMyAtODNxLTEyMSAwIC0yMDQgODVsLTMzNCAzMzVxLTIxIDIxIC00MiA1NmwyMzkgMThsMjczIC0yNzRxMjcgLTI3IDY4IC0yNy41dDY4IDI2LjVsMTQ3IDE0NnEyOCAyOCAyOCA2N3EwIDQwIC0yOCA2OGwtMjc0IDI3NWwxOCAyMzlxMzUgLTIxIDU2IC00MmwzMzYgLTMzNnE4NCAtODYgODQgLTIwNHpNMTAzMSAxMDQ0bC0yMzkgLTE4DQpsLTI3MyAyNzRxLTI4IDI4IC02OCAyOHEtMzkgMCAtNjggLTI3bC0xNDcgLTE0NnEtMjggLTI4IC0yOCAtNjdxMCAtNDAgMjggLTY4bDI3NCAtMjc0bC0xOCAtMjQwcS0zNSAyMSAtNTYgNDJsLTMzNiAzMzZxLTg0IDg2IC04NCAyMDRxMCAxMjAgODUgMjAzbDE0NyAxNDZxODMgODMgMjAzIDgzcTEyMSAwIDIwNCAtODVsMzM0IC0zMzVxMjEgLTIxIDQyIC01NnpNMTY2NCA5NjBxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzIwcS0xNCAwIC0yMyA5DQp0LTkgMjN0OSAyM3QyMyA5aDMyMHExNCAwIDIzIC05dDkgLTIzek0xMTIwIDE1MDR2LTMyMHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdjMyMHEwIDE0IDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNMTUyNyAxMzUzbC0yNTYgLTI1NnEtMTEgLTkgLTIzIC05dC0yMyA5cS05IDEwIC05IDIzdDkgMjNsMjU2IDI1NnExMCA5IDIzIDl0MjMgLTlxOSAtMTAgOSAtMjN0LTkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icXVlc3Rpb24iIHVuaWNvZGU9IiYjeGYxMjg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNzA0IDI4MHYtMjQwcTAgLTE2IC0xMiAtMjh0LTI4IC0xMmgtMjQwcS0xNiAwIC0yOCAxMnQtMTIgMjh2MjQwcTAgMTYgMTIgMjh0MjggMTJoMjQwcTE2IDAgMjggLTEydDEyIC0yOHpNMTAyMCA4ODBxMCAtNTQgLTE1LjUgLTEwMXQtMzUgLTc2LjV0LTU1IC01OS41dC01Ny41IC00My41dC02MSAtMzUuNXEtNDEgLTIzIC02OC41IC02NXQtMjcuNSAtNjdxMCAtMTcgLTEyIC0zMi41dC0yOCAtMTUuNWgtMjQwcS0xNSAwIC0yNS41IDE4LjUNCnQtMTAuNSAzNy41djQ1cTAgODMgNjUgMTU2LjV0MTQzIDEwOC41cTU5IDI3IDg0IDU2dDI1IDc2cTAgNDIgLTQ2LjUgNzR0LTEwNy41IDMycS02NSAwIC0xMDggLTI5cS0zNSAtMjUgLTEwNyAtMTE1cS0xMyAtMTYgLTMxIC0xNnEtMTIgMCAtMjUgOGwtMTY0IDEyNXEtMTMgMTAgLTE1LjUgMjV0NS41IDI4cTE2MCAyNjYgNDY0IDI2NnE4MCAwIDE2MSAtMzF0MTQ2IC04M3QxMDYgLTEyNy41dDQxIC0xNTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8yNzkiIHVuaWNvZGU9IiYjeGYxMjk7IiBob3Jpei1hZHYteD0iNjQwIiANCmQ9Ik02NDAgMTkydi0xMjhxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxMjhxMCAyNiAxOSA0NXQ0NSAxOWg2NHYzODRoLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV2MTI4cTAgMjYgMTkgNDV0NDUgMTloMzg0cTI2IDAgNDUgLTE5dDE5IC00NXYtNTc2aDY0cTI2IDAgNDUgLTE5dDE5IC00NXpNNTEyIDEzNDR2LTE5MnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djE5Mg0KcTAgMjYgMTkgNDV0NDUgMTloMjU2cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImV4Y2xhbWF0aW9uIiB1bmljb2RlPSImI3hmMTJhOyIgaG9yaXotYWR2LXg9IjY0MCIgDQpkPSJNNTEyIDI4OHYtMjI0cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2MjI0cTAgMjYgMTkgNDV0NDUgMTloMjU2cTI2IDAgNDUgLTE5dDE5IC00NXpNNTQyIDEzNDRsLTI4IC03NjhxLTEgLTI2IC0yMC41IC00NXQtNDUuNSAtMTloLTI1NnEtMjYgMCAtNDUuNSAxOXQtMjAuNSA0NWwtMjggNzY4cS0xIDI2IDE3LjUgNDV0NDQuNSAxOWgzMjBxMjYgMCA0NC41IC0xOXQxNy41IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InN1cGVyc2NyaXB0IiB1bmljb2RlPSImI3hmMTJiOyIgDQpkPSJNODk3IDE2N3YtMTY3aC0yNDhsLTE1OSAyNTJsLTI0IDQycS04IDkgLTExIDIxaC0zcS0xIC0zIC0yLjUgLTYuNXQtMy41IC04dC0zIC02LjVxLTEwIC0yMCAtMjUgLTQ0bC0xNTUgLTI1MGgtMjU4djE2N2gxMjhsMTk3IDI5MWwtMTg1IDI3MmgtMTM3djE2OGgyNzZsMTM5IC0yMjhxMiAtNCAyMyAtNDJxOCAtOSAxMSAtMjFoM3EzIDkgMTEgMjFsMjUgNDJsMTQwIDIyOGgyNTd2LTE2OGgtMTI1bC0xODQgLTI2N2wyMDQgLTI5NmgxMDl6DQpNMTUzNCA4NDZ2LTIwNmgtNTE0bC0zIDI3cS00IDI4IC00IDQ2cTAgNjQgMjYgMTE3dDY1IDg2LjV0ODQgNjV0ODQgNTQuNXQ2NSA1NHQyNiA2NHEwIDM4IC0yOS41IDYyLjV0LTcwLjUgMjQuNXEtNTEgMCAtOTcgLTM5cS0xNCAtMTEgLTM2IC0zOGwtMTA1IDkycTI2IDM3IDYzIDY2cTgzIDY1IDE4OCA2NXExMTAgMCAxNzggLTU5LjV0NjggLTE1OC41cTAgLTU2IC0yNC41IC0xMDN0LTYyIC03Ni41dC04MS41IC01OC41dC04MiAtNTAuNQ0KdC02NS41IC01MS41dC0zMC41IC02M2gyMzJ2ODBoMTI2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3Vic2NyaXB0IiB1bmljb2RlPSImI3hmMTJjOyIgDQpkPSJNODk3IDE2N3YtMTY3aC0yNDhsLTE1OSAyNTJsLTI0IDQycS04IDkgLTExIDIxaC0zcS0xIC0zIC0yLjUgLTYuNXQtMy41IC04dC0zIC02LjVxLTEwIC0yMCAtMjUgLTQ0bC0xNTUgLTI1MGgtMjU4djE2N2gxMjhsMTk3IDI5MWwtMTg1IDI3MmgtMTM3djE2OGgyNzZsMTM5IC0yMjhxMiAtNCAyMyAtNDJxOCAtOSAxMSAtMjFoM3EzIDkgMTEgMjFsMjUgNDJsMTQwIDIyOGgyNTd2LTE2OGgtMTI1bC0xODQgLTI2N2wyMDQgLTI5NmgxMDl6DQpNMTUzNiAtNTB2LTIwNmgtNTE0bC00IDI3cS0zIDQ1IC0zIDQ2cTAgNjQgMjYgMTE3dDY1IDg2LjV0ODQgNjV0ODQgNTQuNXQ2NSA1NHQyNiA2NHEwIDM4IC0yOS41IDYyLjV0LTcwLjUgMjQuNXEtNTEgMCAtOTcgLTM5cS0xNCAtMTEgLTM2IC0zOGwtMTA1IDkycTI2IDM3IDYzIDY2cTgwIDY1IDE4OCA2NXExMTAgMCAxNzggLTU5LjV0NjggLTE1OC41cTAgLTY2IC0zNC41IC0xMTguNXQtODQgLTg2dC05OS41IC02Mi41dC04NyAtNjN0LTQxIC03Mw0KaDIzMnY4MGgxMjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMjgzIiB1bmljb2RlPSImI3hmMTJkOyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTg5NiAxMjhsMzM2IDM4NGgtNzY4bC0zMzYgLTM4NGg3Njh6TTE5MDkgMTIwNXExNSAtMzQgOS41IC03MS41dC0zMC41IC02NS41bC04OTYgLTEwMjRxLTM4IC00NCAtOTYgLTQ0aC03NjhxLTM4IDAgLTY5LjUgMjAuNXQtNDcuNSA1NC41cS0xNSAzNCAtOS41IDcxLjV0MzAuNSA2NS41bDg5NiAxMDI0cTM4IDQ0IDk2IDQ0aDc2OHEzOCAwIDY5LjUgLTIwLjV0NDcuNSAtNTQuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InB1enpsZV9waWVjZSIgdW5pY29kZT0iJiN4ZjEyZTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjY0IDQzOHEwIC04MSAtNDQuNSAtMTM1dC0xMjMuNSAtNTRxLTQxIDAgLTc3LjUgMTcuNXQtNTkgMzh0LTU2LjUgMzh0LTcxIDE3LjVxLTExMCAwIC0xMTAgLTEyNHEwIC0zOSAxNiAtMTE1dDE1IC0xMTV2LTVxLTIyIDAgLTMzIC0xcS0zNCAtMyAtOTcuNSAtMTEuNXQtMTE1LjUgLTEzLjV0LTk4IC01cS02MSAwIC0xMDMgMjYuNXQtNDIgODMuNXEwIDM3IDE3LjUgNzF0MzggNTYuNXQzOCA1OXQxNy41IDc3LjVxMCA3OSAtNTQgMTIzLjUNCnQtMTM1IDQ0LjVxLTg0IDAgLTE0MyAtNDUuNXQtNTkgLTEyNy41cTAgLTQzIDE1IC04M3QzMy41IC02NC41dDMzLjUgLTUzdDE1IC01MC41cTAgLTQ1IC00NiAtODlxLTM3IC0zNSAtMTE3IC0zNXEtOTUgMCAtMjQ1IDI0cS05IDIgLTI3LjUgNHQtMjcuNSA0bC0xMyAycS0xIDAgLTMgMXEtMiAwIC0yIDF2MTAyNHEyIC0xIDE3LjUgLTMuNXQzNCAtNXQyMS41IC0zLjVxMTUwIC0yNCAyNDUgLTI0cTgwIDAgMTE3IDM1cTQ2IDQ0IDQ2IDg5DQpxMCAyMiAtMTUgNTAuNXQtMzMuNSA1M3QtMzMuNSA2NC41dC0xNSA4M3EwIDgyIDU5IDEyNy41dDE0NCA0NS41cTgwIDAgMTM0IC00NC41dDU0IC0xMjMuNXEwIC00MSAtMTcuNSAtNzcuNXQtMzggLTU5dC0zOCAtNTYuNXQtMTcuNSAtNzFxMCAtNTcgNDIgLTgzLjV0MTAzIC0yNi41cTY0IDAgMTgwIDE1dDE2MyAxN3YtMnEtMSAtMiAtMy41IC0xNy41dC01IC0zNHQtMy41IC0yMS41cS0yNCAtMTUwIC0yNCAtMjQ1cTAgLTgwIDM1IC0xMTcNCnE0NCAtNDYgODkgLTQ2cTIyIDAgNTAuNSAxNXQ1MyAzMy41dDY0LjUgMzMuNXQ4MyAxNXE4MiAwIDEyNy41IC01OXQ0NS41IC0xNDN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJtaWNyb3Bob25lIiB1bmljb2RlPSImI3hmMTMwOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTExNTIgODMydi0xMjhxMCAtMjIxIC0xNDcuNSAtMzg0LjV0LTM2NC41IC0xODcuNXYtMTMyaDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC02NDBxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZ2MTMycS0yMTcgMjQgLTM2NC41IDE4Ny41dC0xNDcuNSAzODQuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjhxMCAtMTg1IDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjUNCnQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1ek04OTYgMTIxNnYtNTEycTAgLTEzMiAtOTQgLTIyNnQtMjI2IC05NHQtMjI2IDk0dC05NCAyMjZ2NTEycTAgMTMyIDk0IDIyNnQyMjYgOTR0MjI2IC05NHQ5NCAtMjI2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWljcm9waG9uZV9vZmYiIHVuaWNvZGU9IiYjeGYxMzE7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMjcxIDU5MWwtMTAxIC0xMDFxLTQyIDEwMyAtNDIgMjE0djEyOHEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV2LTEyOHEwIC01MyAxNSAtMTEzek0xMzg1IDExOTNsLTM2MSAtMzYxdi0xMjhxMCAtMTMyIC05NCAtMjI2dC0yMjYgLTk0cS01NSAwIC0xMDkgMTlsLTk2IC05NnE5NyAtNTEgMjA1IC01MXExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXYxMjhxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0xMjgNCnEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di0xMzJoMjU2cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTY0MHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDI1NnYxMzJxLTEyNSAxMyAtMjM1IDgxbC0yNTQgLTI1NHEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC04MiA4MnEtMTAgMTAgLTEwIDIzdDEwIDIzbDEyMzQgMTIzNHExMCAxMCAyMyAxMHQyMyAtMTBsODIgLTgycTEwIC0xMCAxMCAtMjMNCnQtMTAgLTIzek0xMDA1IDEzMjVsLTYyMSAtNjIxdjUxMnEwIDEzMiA5NCAyMjZ0MjI2IDk0cTEwMiAwIDE4NC41IC01OXQxMTYuNSAtMTUyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2hpZWxkIiB1bmljb2RlPSImI3hmMTMyOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEwODggNTc2djY0MGgtNDQ4di0xMTM3cTExOSA2MyAyMTMgMTM3cTIzNSAxODQgMjM1IDM2MHpNMTI4MCAxMzQ0di03NjhxMCAtODYgLTMzLjUgLTE3MC41dC04MyAtMTUwdC0xMTggLTEyNy41dC0xMjYuNSAtMTAzdC0xMjEgLTc3LjV0LTg5LjUgLTQ5LjV0LTQyLjUgLTIwcS0xMiAtNiAtMjYgLTZ0LTI2IDZxLTE2IDcgLTQyLjUgMjB0LTg5LjUgNDkuNXQtMTIxIDc3LjV0LTEyNi41IDEwM3QtMTE4IDEyNy41dC04MyAxNTANCnQtMzMuNSAxNzAuNXY3NjhxMCAyNiAxOSA0NXQ0NSAxOWgxMTUycTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNhbGVuZGFyX2VtcHR5IiB1bmljb2RlPSImI3hmMTMzOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTEyOCAtMTI4aDE0MDh2MTAyNGgtMTQwOHYtMTAyNHpNNTEyIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTE1MnYtMTI4MA0KcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgxMjhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZmlyZV9leHRpbmd1aXNoZXIiIHVuaWNvZGU9IiYjeGYxMzQ7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNNTEyIDEzNDRxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNDA4IDEzNzZ2LTMyMHEwIC0xNiAtMTIgLTI1cS04IC03IC0yMCAtN3EtNCAwIC03IDFsLTQ0OCA5NnEtMTEgMiAtMTggMTF0LTcgMjBoLTI1NnYtMTAycTExMSAtMjMgMTgzLjUgLTExMXQ3Mi41IC0yMDN2LTgwMHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djgwMA0KcTAgMTA2IDYyLjUgMTkwLjV0MTYxLjUgMTE0LjV2MTExaC0zMnEtNTkgMCAtMTE1IC0yMy41dC05MS41IC01M3QtNjYgLTY2LjV0LTQwLjUgLTUzLjV0LTE0IC0yNC41cS0xNyAtMzUgLTU3IC0zNXEtMTYgMCAtMjkgN3EtMjMgMTIgLTMxLjUgMzd0My41IDQ5cTUgMTAgMTQuNSAyNnQzNy41IDUzLjV0NjAuNSA3MHQ4NSA2N3QxMDguNSA1Mi41cS0yNSA0MiAtMjUgODZxMCA2NiA0NyAxMTN0MTEzIDQ3dDExMyAtNDd0NDcgLTExMw0KcTAgLTMzIC0xNCAtNjRoMzAycTAgMTEgNyAyMHQxOCAxMWw0NDggOTZxMyAxIDcgMXExMiAwIDIwIC03cTEyIC05IDEyIC0yNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InJvY2tldCIgdW5pY29kZT0iJiN4ZjEzNTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNDQwIDEwODhxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek0xNjY0IDEzNzZxMCAtMjQ5IC03NS41IC00MzAuNXQtMjUzLjUgLTM2MC41cS04MSAtODAgLTE5NSAtMTc2bC0yMCAtMzc5cS0yIC0xNiAtMTYgLTI2bC0zODQgLTIyNHEtNyAtNCAtMTYgLTRxLTEyIDAgLTIzIDlsLTY0IDY0cS0xMyAxNCAtOCAzMmw4NSAyNzZsLTI4MSAyODFsLTI3NiAtODVxLTMgLTEgLTkgLTENCnEtMTQgMCAtMjMgOWwtNjQgNjRxLTE3IDE5IC01IDM5bDIyNCAzODRxMTAgMTQgMjYgMTZsMzc5IDIwcTk2IDExNCAxNzYgMTk1cTE4OCAxODcgMzU4IDI1OHQ0MzEgNzFxMTQgMCAyNCAtOS41dDEwIC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibWF4Y2RuIiB1bmljb2RlPSImI3hmMTM2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDUgNzYzbC0xNjQgLTc2M2gtMzM0bDE3OCA4MzJxMTMgNTYgLTE1IDg4cS0yNyAzMyAtODMgMzNoLTE2OWwtMjA0IC05NTNoLTMzNGwyMDQgOTUzaC0yODZsLTIwNCAtOTUzaC0zMzRsMjA0IDk1M2wtMTUzIDMyN2gxMjc2cTEwMSAwIDE4OS41IC00MC41dDE0Ny41IC0xMTMuNXE2MCAtNzMgODEgLTE2OC41dDAgLTE5NC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9zaWduX2xlZnQiIHVuaWNvZGU9IiYjeGYxMzc7IiANCmQ9Ik05MDkgMTQxbDEwMiAxMDJxMTkgMTkgMTkgNDV0LTE5IDQ1bC0zMDcgMzA3bDMwNyAzMDdxMTkgMTkgMTkgNDV0LTE5IDQ1bC0xMDIgMTAycS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtNDU0IC00NTRxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWw0NTQgLTQ1NHExOSAtMTkgNDUgLTE5dDQ1IDE5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNQ0KdC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hldnJvbl9zaWduX3JpZ2h0IiB1bmljb2RlPSImI3hmMTM4OyIgDQpkPSJNNzE3IDE0MWw0NTQgNDU0cTE5IDE5IDE5IDQ1dC0xOSA0NWwtNDU0IDQ1NHEtMTkgMTkgLTQ1IDE5dC00NSAtMTlsLTEwMiAtMTAycS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMzA3IC0zMDdsLTMwNyAtMzA3cS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMTAyIC0xMDJxMTkgLTE5IDQ1IC0xOXQ0NSAxOXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjUNCnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fc2lnbl91cCIgdW5pY29kZT0iJiN4ZjEzOTsiIA0KZD0iTTExNjUgMzk3bDEwMiAxMDJxMTkgMTkgMTkgNDV0LTE5IDQ1bC00NTQgNDU0cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtNDU0IC00NTRxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWwxMDIgLTEwMnExOSAtMTkgNDUgLTE5dDQ1IDE5bDMwNyAzMDdsMzA3IC0zMDdxMTkgLTE5IDQ1IC0xOXQ0NSAxOXpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjUNCnQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNoZXZyb25fc2lnbl9kb3duIiB1bmljb2RlPSImI3hmMTNhOyIgDQpkPSJNODEzIDIzN2w0NTQgNDU0cTE5IDE5IDE5IDQ1dC0xOSA0NWwtMTAyIDEwMnEtMTkgMTkgLTQ1IDE5dC00NSAtMTlsLTMwNyAtMzA3bC0zMDcgMzA3cS0xOSAxOSAtNDUgMTl0LTQ1IC0xOWwtMTAyIC0xMDJxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWw0NTQgLTQ1NHExOSAtMTkgNDUgLTE5dDQ1IDE5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNQ0KdC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaHRtbDUiIHVuaWNvZGU9IiYjeGYxM2I7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNMTEzMCA5MzlsMTYgMTc1aC04ODRsNDcgLTUzNGg2MTJsLTIyIC0yMjhsLTE5NyAtNTNsLTE5NiA1M2wtMTMgMTQwaC0xNzVsMjIgLTI3OGwzNjIgLTEwMGg0djFsMzU5IDk5bDUwIDU0NGgtNjQ0bC0xNSAxODFoNjc0ek0wIDE0MDhoMTQwOGwtMTI4IC0xNDM4bC01NzggLTE2MmwtNTc0IDE2MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNzczMiIHVuaWNvZGU9IiYjeGYxM2M7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjc1IDE0MDhoMTUwNWwtMjY2IC0xMzMzbC04MDQgLTI2N2wtNjk4IDI2N2w3MSAzNTZoMjk3bC0yOSAtMTQ3bDQyMiAtMTYxbDQ4NiAxNjFsNjggMzM5aC0xMjA4bDU4IDI5N2gxMjA5bDM4IDE5MWgtMTIwOHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFuY2hvciIgdW5pY29kZT0iJiN4ZjEzZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05NjAgMTI4MHEwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1dDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTE3OTIgMzUydi0zNTJxMCAtMjIgLTIwIC0zMHEtOCAtMiAtMTIgLTJxLTEyIDAgLTIzIDlsLTkzIDkzcS0xMTkgLTE0MyAtMzE4LjUgLTIyNi41dC00MjkuNSAtODMuNXQtNDI5LjUgODMuNXQtMzE4LjUgMjI2LjVsLTkzIC05M3EtOSAtOSAtMjMgLTlxLTQgMCAtMTIgMnEtMjAgOCAtMjAgMzB2MzUyDQpxMCAxNCA5IDIzdDIzIDloMzUycTIyIDAgMzAgLTIwcTggLTE5IC03IC0zNWwtMTAwIC0xMDBxNjcgLTkxIDE4OS41IC0xNTMuNXQyNzEuNSAtODIuNXY2NDdoLTE5MnEtMjYgMCAtNDUgMTl0LTE5IDQ1djEyOHEwIDI2IDE5IDQ1dDQ1IDE5aDE5MnYxNjNxLTU4IDM0IC05MyA5Mi41dC0zNSAxMjguNXEwIDEwNiA3NSAxODF0MTgxIDc1dDE4MSAtNzV0NzUgLTE4MXEwIC03MCAtMzUgLTEyOC41dC05MyAtOTIuNXYtMTYzaDE5MnEyNiAwIDQ1IC0xOQ0KdDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTkydi02NDdxMTQ5IDIwIDI3MS41IDgyLjV0MTg5LjUgMTUzLjVsLTEwMCAxMDBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMzUycTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmxvY2tfYWx0IiB1bmljb2RlPSImI3hmMTNlOyIgaG9yaXotYWR2LXg9IjExNTIiIA0KZD0iTTEwNTYgNzY4cTQwIDAgNjggLTI4dDI4IC02OHYtNTc2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtOTYwcS00MCAwIC02OCAyOHQtMjggNjh2NTc2cTAgNDAgMjggNjh0NjggMjhoMzJ2MzIwcTAgMTg1IDEzMS41IDMxNi41dDMxNi41IDEzMS41dDMxNi41IC0xMzEuNXQxMzEuNSAtMzE2LjVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC02NHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MQ0Kdi0zMjBoNzM2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnVsbHNleWUiIHVuaWNvZGU9IiYjeGYxNDA7IiANCmQ9Ik0xMDI0IDY0MHEwIC0xMDYgLTc1IC0xODF0LTE4MSAtNzV0LTE4MSA3NXQtNzUgMTgxdDc1IDE4MXQxODEgNzV0MTgxIC03NXQ3NSAtMTgxek0xMTUyIDY0MHEwIDE1OSAtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41ek0xMjgwIDY0MHEwIC0yMTIgLTE1MCAtMzYydC0zNjIgLTE1MHQtMzYyIDE1MA0KdC0xNTAgMzYydDE1MCAzNjJ0MzYyIDE1MHQzNjIgLTE1MHQxNTAgLTM2MnpNMTQwOCA2NDBxMCAxMzAgLTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF0LTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV6TTE1MzYgNjQwDQpxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbGxpcHNpc19ob3Jpem9udGFsIiB1bmljb2RlPSImI3hmMTQxOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM4NCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTg5NiA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTE0MDggODAwdi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xOTINCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJlbGxpcHNpc192ZXJ0aWNhbCIgdW5pY29kZT0iJiN4ZjE0MjsiIGhvcml6LWFkdi14PSIzODQiIA0KZD0iTTM4NCAyODh2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTM4NCA4MDB2LTE5MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTE5MnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6TTM4NCAxMzEydi0xOTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xOTINCnEtNDAgMCAtNjggMjh0LTI4IDY4djE5MnEwIDQwIDI4IDY4dDY4IDI4aDE5MnE0MCAwIDY4IC0yOHQyOCAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzAzIiB1bmljb2RlPSImI3hmMTQzOyIgDQpkPSJNNTEyIDI1NnEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNODYzIDE2MnEtMTMgMjMzIC0xNzYuNSAzOTYuNXQtMzk2LjUgMTc2LjVxLTE0IDEgLTI0IC05dC0xMCAtMjN2LTEyOHEwIC0xMyA4LjUgLTIydDIxLjUgLTEwcTE1NCAtMTEgMjY0IC0xMjF0MTIxIC0yNjRxMSAtMTMgMTAgLTIxLjV0MjIgLTguNWgxMjgNCnExMyAwIDIzIDEwdDkgMjR6TTEyNDcgMTYxcS01IDE1NCAtNTYgMjk3LjV0LTEzOS41IDI2MHQtMjA1IDIwNXQtMjYwIDEzOS41dC0yOTcuNSA1NnEtMTQgMSAtMjMgLTlxLTEwIC0xMCAtMTAgLTIzdi0xMjhxMCAtMTMgOSAtMjJ0MjIgLTEwcTIwNCAtNyAzNzggLTExMS41dDI3OC41IC0yNzguNXQxMTEuNSAtMzc4cTEgLTEzIDEwIC0yMnQyMiAtOWgxMjhxMTMgMCAyMyAxMHExMSA5IDkgMjN6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJwbGF5X3NpZ24iIHVuaWNvZGU9IiYjeGYxNDQ7IiANCmQ9Ik03NjggMTQwOHEyMDkgMCAzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41dC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzek0xMTUyIDU4NXEzMiAxOCAzMiA1NXQtMzIgNTVsLTU0NCAzMjBxLTMxIDE5IC02NCAxcS0zMiAtMTkgLTMyIC01NnYtNjQwcTAgLTM3IDMyIC01Ng0KcTE2IC04IDMyIC04cTE3IDAgMzIgOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InRpY2tldCIgdW5pY29kZT0iJiN4ZjE0NTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMDI0IDEwODRsMzE2IC0zMTZsLTU3MiAtNTcybC0zMTYgMzE2ek04MTMgMTA1bDYxOCA2MThxMTkgMTkgMTkgNDV0LTE5IDQ1bC0zNjIgMzYycS0xOCAxOCAtNDUgMTh0LTQ1IC0xOGwtNjE4IC02MThxLTE5IC0xOSAtMTkgLTQ1dDE5IC00NWwzNjIgLTM2MnExOCAtMTggNDUgLTE4dDQ1IDE4ek0xNzAyIDc0MmwtOTA3IC05MDhxLTM3IC0zNyAtOTAuNSAtMzd0LTkwLjUgMzdsLTEyNiAxMjZxNTYgNTYgNTYgMTM2dC01NiAxMzYNCnQtMTM2IDU2dC0xMzYgLTU2bC0xMjUgMTI2cS0zNyAzNyAtMzcgOTAuNXQzNyA5MC41bDkwNyA5MDZxMzcgMzcgOTAuNSAzN3Q5MC41IC0zN2wxMjUgLTEyNXEtNTYgLTU2IC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnQxMzYgNTZsMTI2IC0xMjVxMzcgLTM3IDM3IC05MC41dC0zNyAtOTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1pbnVzX3NpZ25fYWx0IiB1bmljb2RlPSImI3hmMTQ2OyIgDQpkPSJNMTI4MCA1NzZ2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOWgtODk2cS0yNiAwIC00NSAtMTl0LTE5IC00NXYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTloODk2cTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41DQp0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJjaGVja19taW51cyIgdW5pY29kZT0iJiN4ZjE0NzsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xMTUyIDczNnYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtODMycS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDgzMnExNCAwIDIzIC05dDkgLTIzek0xMjgwIDI4OHY4MzJxMCA2NiAtNDcgMTEzdC0xMTMgNDdoLTgzMnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3YtODMycTAgLTY2IDQ3IC0xMTN0MTEzIC00N2g4MzJxNjYgMCAxMTMgNDd0NDcgMTEzek0xNDA4IDExMjB2LTgzMnEwIC0xMTkgLTg0LjUgLTIwMy41DQp0LTIwMy41IC04NC41aC04MzJxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djgzMnEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoODMycTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGV2ZWxfdXAiIHVuaWNvZGU9IiYjeGYxNDg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAxOCA5MzNxLTE4IC0zNyAtNTggLTM3aC0xOTJ2LTg2NHEwIC0xNCAtOSAtMjN0LTIzIC05aC03MDRxLTIxIDAgLTI5IDE4cS04IDIwIDQgMzVsMTYwIDE5MnE5IDExIDI1IDExaDMyMHY2NDBoLTE5MnEtNDAgMCAtNTggMzdxLTE3IDM3IDkgNjhsMzIwIDM4NHExOCAyMiA0OSAyMnQ0OSAtMjJsMzIwIC0zODRxMjcgLTMyIDkgLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibGV2ZWxfZG93biIgdW5pY29kZT0iJiN4ZjE0OTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0zMiAxMjgwaDcwNHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIzLjV2LTg2M2gxOTJxNDAgMCA1OCAtMzd0LTkgLTY5bC0zMjAgLTM4NHEtMTggLTIyIC00OSAtMjJ0LTQ5IDIybC0zMjAgMzg0cS0yNiAzMSAtOSA2OXExOCAzNyA1OCAzN2gxOTJ2NjQwaC0zMjBxLTE0IDAgLTI1IDExbC0xNjAgMTkycS0xMyAxNCAtNCAzNHE5IDE5IDI5IDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY2hlY2tfc2lnbiIgdW5pY29kZT0iJiN4ZjE0YTsiIA0KZD0iTTY4NSAyMzdsNjE0IDYxNHExOSAxOSAxOSA0NXQtMTkgNDVsLTEwMiAxMDJxLTE5IDE5IC00NSAxOXQtNDUgLTE5bC00NjcgLTQ2N2wtMjExIDIxMXEtMTkgMTkgLTQ1IDE5dC00NSAtMTlsLTEwMiAtMTAycS0xOSAtMTkgLTE5IC00NXQxOSAtNDVsMzU4IC0zNThxMTkgLTE5IDQ1IC0xOXQ0NSAxOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjUNCnQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImVkaXRfc2lnbiIgdW5pY29kZT0iJiN4ZjE0YjsiIA0KZD0iTTQwNCA0MjhsMTUyIC0xNTJsLTUyIC01MmgtNTZ2OTZoLTk2djU2ek04MTggODE4cTE0IC0xMyAtMyAtMzBsLTI5MSAtMjkxcS0xNyAtMTcgLTMwIC0zcS0xNCAxMyAzIDMwbDI5MSAyOTFxMTcgMTcgMzAgM3pNNTQ0IDEyOGw1NDQgNTQ0bC0yODggMjg4bC01NDQgLTU0NHYtMjg4aDI4OHpNMTE1MiA3MzZsOTIgOTJxMjggMjggMjggNjh0LTI4IDY4bC0xNTIgMTUycS0yOCAyOCAtNjggMjh0LTY4IC0yOGwtOTIgLTkyek0xNTM2IDExMjANCnYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzMxMiIgdW5pY29kZT0iJiN4ZjE0YzsiIA0KZD0iTTEyODAgNjA4djQ4MHEwIDI2IC0xOSA0NXQtNDUgMTloLTQ4MHEtNDIgMCAtNTkgLTM5cS0xNyAtNDEgMTQgLTcwbDE0NCAtMTQ0bC01MzQgLTUzNHEtMTkgLTE5IC0xOSAtNDV0MTkgLTQ1bDEwMiAtMTAycTE5IC0xOSA0NSAtMTl0NDUgMTlsNTM0IDUzNGwxNDQgLTE0NHExOCAtMTkgNDUgLTE5cTEyIDAgMjUgNXEzOSAxNyAzOSA1OXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MA0KcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNoYXJlX3NpZ24iIHVuaWNvZGU9IiYjeGYxNGQ7IiANCmQ9Ik0xMDA1IDQzNWwzNTIgMzUycTE5IDE5IDE5IDQ1dC0xOSA0NWwtMzUyIDM1MnEtMzAgMzEgLTY5IDE0cS00MCAtMTcgLTQwIC01OXYtMTYwcS0xMTkgMCAtMjE2IC0xOS41dC0xNjIuNSAtNTF0LTExNCAtNzl0LTc2LjUgLTk1LjV0LTQ0LjUgLTEwOXQtMjEuNSAtMTExLjV0LTUgLTExMC41cTAgLTE4MSAxNjcgLTQwNHExMSAtMTIgMjUgLTEycTcgMCAxMyAzcTIyIDkgMTkgMzNxLTQ0IDM1NCA2MiA0NzNxNDYgNTIgMTMwIDc1LjUNCnQyMjQgMjMuNXYtMTYwcTAgLTQyIDQwIC01OXExMiAtNSAyNCAtNXEyNiAwIDQ1IDE5ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImNvbXBhc3MiIHVuaWNvZGU9IiYjeGYxNGU7IiANCmQ9Ik02NDAgNDQ4bDI1NiAxMjhsLTI1NiAxMjh2LTI1NnpNMTAyNCAxMDM5di01NDJsLTUxMiAtMjU2djU0MnpNMTMxMiA2NDBxMCAxNDggLTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzDQp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29sbGFwc2UiIHVuaWNvZGU9IiYjeGYxNTA7IiANCmQ9Ik0xMTQ1IDg2MXExOCAtMzUgLTUgLTY2bC0zMjAgLTQ0OHEtMTkgLTI3IC01MiAtMjd0LTUyIDI3bC0zMjAgNDQ4cS0yMyAzMSAtNSA2NnExNyAzNSA1NyAzNWg2NDBxNDAgMCA1NyAtMzV6TTEyODAgMTYwdjk2MHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTk2MHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2MHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDk2MHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNTM2IDExMjANCnYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iY29sbGFwc2VfdG9wIiB1bmljb2RlPSImI3hmMTUxOyIgDQpkPSJNMTE0NSA0MTlxLTE3IC0zNSAtNTcgLTM1aC02NDBxLTQwIDAgLTU3IDM1cS0xOCAzNSA1IDY2bDMyMCA0NDhxMTkgMjcgNTIgMjd0NTIgLTI3bDMyMCAtNDQ4cTIzIC0zMSA1IC02NnpNMTI4MCAxNjB2OTYwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtOTYwcS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtOTYwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoOTYwcTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTE1MzYgMTEyMHYtOTYwDQpxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzE3IiB1bmljb2RlPSImI3hmMTUyOyIgDQpkPSJNMTA4OCA2NDBxMCAtMzMgLTI3IC01MmwtNDQ4IC0zMjBxLTMxIC0yMyAtNjYgLTVxLTM1IDE3IC0zNSA1N3Y2NDBxMCA0MCAzNSA1N3EzNSAxOCA2NiAtNWw0NDggLTMyMHEyNyAtMTkgMjcgLTUyek0xMjgwIDE2MHY5NjBxMCAxNCAtOSAyM3QtMjMgOWgtOTYwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2MHEwIC0xNCA5IC0yM3QyMyAtOWg5NjBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjUNCnQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJldXIiIHVuaWNvZGU9IiYjeGYxNTM7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNOTc2IDIyOWwzNSAtMTU5cTMgLTEyIC0zIC0yMi41dC0xNyAtMTQuNWwtNSAtMXEtNCAtMiAtMTAuNSAtMy41dC0xNiAtNC41dC0yMS41IC01LjV0LTI1LjUgLTV0LTMwIC01dC0zMy41IC00LjV0LTM2LjUgLTN0LTM4LjUgLTFxLTIzNCAwIC00MDkgMTMwLjV0LTIzOCAzNTEuNWgtOTVxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxMTNxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg2NnEtMiA1NyAxIDEwNWgtNjdxLTE0IDAgLTIzIDkNCnQtOSAyM3YxMTRxMCAxNCA5IDIzdDIzIDloOThxNjcgMjEwIDI0My41IDMzOHQ0MDAuNSAxMjhxMTAyIDAgMTk0IC0yM3ExMSAtMyAyMCAtMTVxNiAtMTEgMyAtMjRsLTQzIC0xNTlxLTMgLTEzIC0xNCAtMTkuNXQtMjQgLTIuNWwtNCAxcS00IDEgLTExLjUgMi41bC0xNy41IDMuNXQtMjIuNSAzLjV0LTI2IDN0LTI5IDIuNXQtMjkuNSAxcS0xMjYgMCAtMjI2IC02NHQtMTUwIC0xNzZoNDY4cTE2IDAgMjUgLTEycTEwIC0xMiA3IC0yNg0KbC0yNCAtMTE0cS01IC0yNiAtMzIgLTI2aC00ODhxLTMgLTM3IDAgLTEwNWg0NTlxMTUgMCAyNSAtMTJxOSAtMTIgNiAtMjdsLTI0IC0xMTJxLTIgLTExIC0xMSAtMTguNXQtMjAgLTcuNWgtMzg3cTQ4IC0xMTcgMTQ5LjUgLTE4NS41dDIyOC41IC02OC41cTE4IDAgMzYgMS41dDMzLjUgMy41dDI5LjUgNC41dDI0LjUgNXQxOC41IDQuNWwxMiAzbDUgMnExMyA1IDI2IC0ycTEyIC03IDE1IC0yMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImdicCIgdW5pY29kZT0iJiN4ZjE1NDsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik0xMDIwIDM5OXYtMzY3cTAgLTE0IC05IC0yM3QtMjMgLTloLTk1NnEtMTQgMCAtMjMgOXQtOSAyM3YxNTBxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWg5N3YzODNoLTk1cS0xNCAwIC0yMyA5LjV0LTkgMjIuNXYxMzFxMCAxNCA5IDIzdDIzIDloOTV2MjIzcTAgMTcxIDEyMy41IDI4MnQzMTQuNSAxMTFxMTg1IDAgMzM1IC0xMjVxOSAtOCAxMCAtMjAuNXQtNyAtMjIuNWwtMTAzIC0xMjdxLTkgLTExIC0yMiAtMTJxLTEzIC0yIC0yMyA3DQpxLTUgNSAtMjYgMTl0LTY5IDMydC05MyAxOHEtODUgMCAtMTM3IC00N3QtNTIgLTEyM3YtMjE1aDMwNXExMyAwIDIyLjUgLTl0OS41IC0yM3YtMTMxcTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMzA1di0zNzloNDE0djE4MXEwIDEzIDkgMjIuNXQyMyA5LjVoMTYycTE0IDAgMjMgLTkuNXQ5IC0yMi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idXNkIiB1bmljb2RlPSImI3hmMTU1OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTk3OCAzNTFxMCAtMTUzIC05OS41IC0yNjMuNXQtMjU4LjUgLTEzNi41di0xNzVxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTM1cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTc1cS02NiA5IC0xMjcuNSAzMXQtMTAxLjUgNDQuNXQtNzQgNDh0LTQ2LjUgMzcuNXQtMTcuNSAxOHEtMTcgMjEgLTIgNDFsMTAzIDEzNXE3IDEwIDIzIDEycTE1IDIgMjQgLTlsMiAtMnExMTMgLTk5IDI0MyAtMTI1cTM3IC04IDc0IC04cTgxIDAgMTQyLjUgNDMNCnQ2MS41IDEyMnEwIDI4IC0xNSA1M3QtMzMuNSA0MnQtNTguNSAzNy41dC02NiAzMnQtODAgMzIuNXEtMzkgMTYgLTYxLjUgMjV0LTYxLjUgMjYuNXQtNjIuNSAzMXQtNTYuNSAzNS41dC01My41IDQyLjV0LTQzLjUgNDl0LTM1LjUgNTh0LTIxIDY2LjV0LTguNSA3OHEwIDEzOCA5OCAyNDJ0MjU1IDEzNHYxODBxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgxMzVxMTQgMCAyMyAtOXQ5IC0yM3YtMTc2cTU3IC02IDExMC41IC0yM3Q4NyAtMzMuNQ0KdDYzLjUgLTM3LjV0MzkgLTI5dDE1IC0xNHExNyAtMTggNSAtMzhsLTgxIC0xNDZxLTggLTE1IC0yMyAtMTZxLTE0IC0zIC0yNyA3cS0zIDMgLTE0LjUgMTJ0LTM5IDI2LjV0LTU4LjUgMzJ0LTc0LjUgMjZ0LTg1LjUgMTEuNXEtOTUgMCAtMTU1IC00M3QtNjAgLTExMXEwIC0yNiA4LjUgLTQ4dDI5LjUgLTQxLjV0MzkuNSAtMzN0NTYgLTMxdDYwLjUgLTI3dDcwIC0yNy41cTUzIC0yMCA4MSAtMzEuNXQ3NiAtMzV0NzUuNSAtNDIuNXQ2MiAtNTANCnQ1MyAtNjMuNXQzMS41IC03Ni41dDEzIC05NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImluciIgdW5pY29kZT0iJiN4ZjE1NjsiIGhvcml6LWFkdi14PSI4OTgiIA0KZD0iTTg5OCAxMDY2di0xMDJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTY4cS0yMyAtMTQ0IC0xMjkgLTIzNHQtMjc2IC0xMTBxMTY3IC0xNzggNDU5IC01MzZxMTQgLTE2IDQgLTM0cS04IC0xOCAtMjkgLTE4aC0xOTVxLTE2IDAgLTI1IDEycS0zMDYgMzY3IC00OTggNTcxcS05IDkgLTkgMjJ2MTI3cTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMTEycTEzMiAwIDIxMi41IDQzdDEwMi41IDEyNWgtNDI3cS0xNCAwIC0yMyA5dC05IDIzdjEwMg0KcTAgMTQgOSAyM3QyMyA5aDQxM3EtNTcgMTEzIC0yNjggMTEzaC0xNDVxLTEzIDAgLTIyLjUgOS41dC05LjUgMjIuNXYxMzNxMCAxNCA5IDIzdDIzIDloODMycTE0IDAgMjMgLTl0OSAtMjN2LTEwMnEwIC0xNCAtOSAtMjN0LTIzIC05aC0yMzNxNDcgLTYxIDY0IC0xNDRoMTcxcTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJqcHkiIHVuaWNvZGU9IiYjeGYxNTc7IiBob3Jpei1hZHYteD0iMTAyNyIgDQpkPSJNNjAzIDBoLTE3MnEtMTMgMCAtMjIuNSA5dC05LjUgMjN2MzMwaC0yODhxLTEzIDAgLTIyLjUgOXQtOS41IDIzdjEwM3EwIDEzIDkuNSAyMi41dDIyLjUgOS41aDI4OHY4NWgtMjg4cS0xMyAwIC0yMi41IDl0LTkuNSAyM3YxMDRxMCAxMyA5LjUgMjIuNXQyMi41IDkuNWgyMTRsLTMyMSA1NzhxLTggMTYgMCAzMnExMCAxNiAyOCAxNmgxOTRxMTkgMCAyOSAtMThsMjE1IC00MjVxMTkgLTM4IDU2IC0xMjVxMTAgMjQgMzAuNSA2OHQyNy41IDYxDQpsMTkxIDQyMHE4IDE5IDI5IDE5aDE5MXExNyAwIDI3IC0xNnE5IC0xNCAxIC0zMWwtMzEzIC01NzloMjE1cTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMTA0cTAgLTE0IC05LjUgLTIzdC0yMi41IC05aC0yOTB2LTg1aDI5MHExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTEwM3EwIC0xNCAtOS41IC0yM3QtMjIuNSAtOWgtMjkwdi0zMzBxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icnViIiB1bmljb2RlPSImI3hmMTU4OyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEwNDMgOTcxcTAgMTAwIC02NSAxNjJ0LTE3MSA2MmgtMzIwdi00NDhoMzIwcTEwNiAwIDE3MSA2MnQ2NSAxNjJ6TTEyODAgOTcxcTAgLTE5MyAtMTI2LjUgLTMxNXQtMzI2LjUgLTEyMmgtMzQwdi0xMThoNTA1cTE0IDAgMjMgLTl0OSAtMjN2LTEyOHEwIC0xNCAtOSAtMjN0LTIzIC05aC01MDV2LTE5MnEwIC0xNCAtOS41IC0yM3QtMjIuNSAtOWgtMTY3cS0xNCAwIC0yMyA5dC05IDIzdjE5MmgtMjI0cS0xNCAwIC0yMyA5dC05IDIzdjEyOA0KcTAgMTQgOSAyM3QyMyA5aDIyNHYxMThoLTIyNHEtMTQgMCAtMjMgOXQtOSAyM3YxNDlxMCAxMyA5IDIyLjV0MjMgOS41aDIyNHY2MjlxMCAxNCA5IDIzdDIzIDloNTM5cTIwMCAwIDMyNi41IC0xMjJ0MTI2LjUgLTMxNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImtydyIgdW5pY29kZT0iJiN4ZjE1OTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik01MTQgMzQxbDgxIDI5OWgtMTU5bDc1IC0zMDBxMSAtMSAxIC0zdDEgLTNxMCAxIDAuNSAzLjV0MC41IDMuNXpNNjMwIDc2OGwzNSAxMjhoLTI5MmwzMiAtMTI4aDIyNXpNODIyIDc2OGgxMzlsLTM1IDEyOGgtNzB6TTEyNzEgMzQwbDc4IDMwMGgtMTYybDgxIC0yOTlxMCAtMSAwLjUgLTMuNXQxLjUgLTMuNXEwIDEgMC41IDN0MC41IDN6TTEzODIgNzY4bDMzIDEyOGgtMjk3bDM0IC0xMjhoMjMwek0xNzkyIDczNnYtNjRxMCAtMTQgLTkgLTIzDQp0LTIzIC05aC0yMTNsLTE2NCAtNjE2cS03IC0yNCAtMzEgLTI0aC0xNTlxLTI0IDAgLTMxIDI0bC0xNjYgNjE2aC0yMDlsLTE2NyAtNjE2cS03IC0yNCAtMzEgLTI0aC0xNTlxLTExIDAgLTE5LjUgN3QtMTAuNSAxN2wtMTYwIDYxNmgtMjA4cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE3NWwtMzMgMTI4aC0xNDJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTA5bC04OSAzNDRxLTUgMTUgNSAyOA0KcTEwIDEyIDI2IDEyaDEzN3EyNiAwIDMxIC0yNGw5MCAtMzYwaDM1OWw5NyAzNjBxNyAyNCAzMSAyNGgxMjZxMjQgMCAzMSAtMjRsOTggLTM2MGgzNjVsOTMgMzYwcTUgMjQgMzEgMjRoMTM3cTE2IDAgMjYgLTEycTEwIC0xMyA1IC0yOGwtOTEgLTM0NGgxMTFxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTQ1bC0zNCAtMTI4aDE3OXExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYnRjIiB1bmljb2RlPSImI3hmMTVhOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTExNjcgODk2cTE4IC0xODIgLTEzMSAtMjU4cTExNyAtMjggMTc1IC0xMDN0NDUgLTIxNHEtNyAtNzEgLTMyLjUgLTEyNXQtNjQuNSAtODl0LTk3IC01OC41dC0xMjEuNSAtMzQuNXQtMTQ1LjUgLTE1di0yNTVoLTE1NHYyNTFxLTgwIDAgLTEyMiAxdi0yNTJoLTE1NHYyNTVxLTE4IDAgLTU0IDAuNXQtNTUgMC41aC0yMDBsMzEgMTgzaDExMXE1MCAwIDU4IDUxdjQwMmgxNnEtNiAxIC0xNiAxdjI4N3EtMTMgNjggLTg5IDY4aC0xMTF2MTY0DQpsMjEyIC0xcTY0IDAgOTcgMXYyNTJoMTU0di0yNDdxODIgMiAxMjIgMnYyNDVoMTU0di0yNTJxNzkgLTcgMTQwIC0yMi41dDExMyAtNDV0ODIuNSAtNzh0MzYuNSAtMTE0LjV6TTk1MiAzNTFxMCAzNiAtMTUgNjR0LTM3IDQ2dC01Ny41IDMwLjV0LTY1LjUgMTguNXQtNzQgOXQtNjkgM3QtNjQuNSAtMXQtNDcuNSAtMXYtMzM4cTggMCAzNyAtMC41dDQ4IC0wLjV0NTMgMS41dDU4LjUgNHQ1NyA4LjV0NTUuNSAxNHQ0Ny41IDIxdDM5LjUgMzANCnQyNC41IDQwdDkuNSA1MXpNODgxIDgyN3EwIDMzIC0xMi41IDU4LjV0LTMwLjUgNDJ0LTQ4IDI4dC01NSAxNi41dC02MS41IDh0LTU4IDIuNXQtNTQgLTF0LTM5LjUgLTAuNXYtMzA3cTUgMCAzNC41IC0wLjV0NDYuNSAwdDUwIDJ0NTUgNS41dDUxLjUgMTF0NDguNSAxOC41dDM3IDI3dDI3IDM4LjV0OSA1MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZpbGUiIHVuaWNvZGU9IiYjeGYxNWI7IiANCmQ9Ik0xMDI0IDEwMjR2NDcycTIyIC0xNCAzNiAtMjhsNDA4IC00MDhxMTQgLTE0IDI4IC0zNmgtNDcyek04OTYgOTkycTAgLTQwIDI4IC02OHQ2OCAtMjhoNTQ0di0xMDU2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4MDB2LTU0NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZpbGVfdGV4dCIgdW5pY29kZT0iJiN4ZjE1YzsiIA0KZD0iTTE0NjggMTA2MHExNCAtMTQgMjggLTM2aC00NzJ2NDcycTIyIC0xNCAzNiAtMjh6TTk5MiA4OTZoNTQ0di0xMDU2cTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4MDB2LTU0NHEwIC00MCAyOCAtNjh0NjggLTI4ek0xMTUyIDE2MHY2NHEwIDE0IC05IDIzdC0yMyA5aC03MDRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNzA0DQpxMTQgMCAyMyA5dDkgMjN6TTExNTIgNDE2djY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDRxMTQgMCAyMyA5dDkgMjN6TTExNTIgNjcydjY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDRxMTQgMCAyMyA5dDkgMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0X2J5X2FscGhhYmV0IiB1bmljb2RlPSImI3hmMTVkOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTExOTEgMTEyOGgxNzdsLTcyIDIxOGwtMTIgNDdxLTIgMTYgLTIgMjBoLTRsLTMgLTIwcTAgLTEgLTMuNSAtMTh0LTcuNSAtMjl6TTczNiA5NnEwIC0xMiAtMTAgLTI0bC0zMTkgLTMxOXEtMTAgLTkgLTIzIC05cS0xMiAwIC0yMyA5bC0zMjAgMzIwcS0xNSAxNiAtNyAzNXE4IDIwIDMwIDIwaDE5MnYxMzc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzdi0xMzc2aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNTcyIC0yMw0Kdi0yMzNoLTU4NHY5MGwzNjkgNTI5cTEyIDE4IDIxIDI3bDExIDl2M3EtMiAwIC02LjUgLTAuNXQtNy41IC0wLjVxLTEyIC0zIC0zMCAtM2gtMjMydi0xMTVoLTEyMHYyMjloNTY3di04OWwtMzY5IC01MzBxLTYgLTggLTIxIC0yNmwtMTEgLTExdi0ybDE0IDJxOSAyIDMwIDJoMjQ4djExOWgxMjF6TTE2NjEgODc0di0xMDZoLTI4OHYxMDZoNzVsLTQ3IDE0NGgtMjQzbC00NyAtMTQ0aDc1di0xMDZoLTI4N3YxMDZoNzBsMjMwIDY2MmgxNjINCmwyMzAgLTY2Mmg3MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zMjkiIHVuaWNvZGU9IiYjeGYxNWU7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTE5MSAxMDRoMTc3bC03MiAyMThsLTEyIDQ3cS0yIDE2IC0yIDIwaC00bC0zIC0yMHEwIC0xIC0zLjUgLTE4dC03LjUgLTI5ek03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTY2MSAtMTUwDQp2LTEwNmgtMjg4djEwNmg3NWwtNDcgMTQ0aC0yNDNsLTQ3IC0xNDRoNzV2LTEwNmgtMjg3djEwNmg3MGwyMzAgNjYyaDE2MmwyMzAgLTY2Mmg3MHpNMTU3MiAxMDAxdi0yMzNoLTU4NHY5MGwzNjkgNTI5cTEyIDE4IDIxIDI3bDExIDl2M3EtMiAwIC02LjUgLTAuNXQtNy41IC0wLjVxLTEyIC0zIC0zMCAtM2gtMjMydi0xMTVoLTEyMHYyMjloNTY3di04OWwtMzY5IC01MzBxLTYgLTggLTIxIC0yNmwtMTEgLTEwdi0zbDE0IDNxOSAxIDMwIDFoMjQ4DQp2MTE5aDEyMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNvcnRfYnlfYXR0cmlidXRlcyIgdW5pY29kZT0iJiN4ZjE2MDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiAtMzJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC04MzJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDgzMg0KcTE0IDAgMjMgLTl0OSAtMjN6TTE2MDAgNDgwdi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjQwcS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWg2NDBxMTQgMCAyMyAtOXQ5IC0yM3pNMTQwOCA5OTJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC00NDhxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDQ0OHExNCAwIDIzIC05dDkgLTIzek0xMjE2IDE1MDR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0yNTYNCnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMjU2cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzb3J0X2J5X2F0dHJpYnV0ZXNfYWx0IiB1bmljb2RlPSImI3hmMTYxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyMTYgLTMydi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMjU2cS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgyNTZxMTQgMCAyMyAtOXQ5IC0yM3pNNzM2IDk2cTAgLTEyIC0xMCAtMjRsLTMxOSAtMzE5cS0xMCAtOSAtMjMgLTlxLTEyIDAgLTIzIDlsLTMyMCAzMjBxLTE1IDE2IC03IDM1cTggMjAgMzAgMjBoMTkydjEzNzZxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTEzNzZoMTkyDQpxMTQgMCAyMyAtOXQ5IC0yM3pNMTQwOCA0ODB2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC00NDhxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDQ0OHExNCAwIDIzIC05dDkgLTIzek0xNjAwIDk5MnYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTY0MHEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloNjQwcTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgMTUwNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTgzMg0KcS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWg4MzJxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InNvcnRfYnlfb3JkZXIiIHVuaWNvZGU9IiYjeGYxNjI7IiANCmQ9Ik0xMzQ2IDIyM3EwIDYzIC00NCAxMTZ0LTEwMyA1M3EtNTIgMCAtODMgLTM3dC0zMSAtOTR0MzYuNSAtOTV0MTA0LjUgLTM4cTUwIDAgODUgMjd0MzUgNjh6TTczNiA5NnEwIC0xMiAtMTAgLTI0bC0zMTkgLTMxOXEtMTAgLTkgLTIzIC05cS0xMiAwIC0yMyA5bC0zMjAgMzIwcS0xNSAxNiAtNyAzNXE4IDIwIDMwIDIwaDE5MnYxMzc2cTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzdi0xMzc2aDE5MnExNCAwIDIzIC05dDkgLTIzDQp6TTE0ODYgMTY1cTAgLTYyIC0xMyAtMTIxLjV0LTQxIC0xMTR0LTY4IC05NS41dC05OC41IC02NS41dC0xMjcuNSAtMjQuNXEtNjIgMCAtMTA4IDE2cS0yNCA4IC00MiAxNWwzOSAxMTNxMTUgLTcgMzEgLTExcTM3IC0xMyA3NSAtMTNxODQgMCAxMzQuNSA1OC41dDY2LjUgMTQ1LjVoLTJxLTIxIC0yMyAtNjEuNSAtMzd0LTg0LjUgLTE0cS0xMDYgMCAtMTczIDcxLjV0LTY3IDE3Mi41cTAgMTA1IDcyIDE3OHQxODEgNzNxMTIzIDAgMjA1IC05NC41DQp0ODIgLTI1Mi41ek0xNDU2IDg4MnYtMTE0aC00Njl2MTE0aDE2N3Y0MzJxMCA3IDAuNSAxOXQwLjUgMTd2MTZoLTJsLTcgLTEycS04IC0xMyAtMjYgLTMxbC02MiAtNThsLTgyIDg2bDE5MiAxODVoMTIzdi02NTRoMTY1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic29ydF9ieV9vcmRlcl9hbHQiIHVuaWNvZGU9IiYjeGYxNjM7IiANCmQ9Ik0xMzQ2IDEyNDdxMCA2MyAtNDQgMTE2dC0xMDMgNTNxLTUyIDAgLTgzIC0zN3QtMzEgLTk0dDM2LjUgLTk1dDEwNC41IC0zOHE1MCAwIDg1IDI3dDM1IDY4ek03MzYgOTZxMCAtMTIgLTEwIC0yNGwtMzE5IC0zMTlxLTEwIC05IC0yMyAtOXEtMTIgMCAtMjMgOWwtMzIwIDMyMHEtMTUgMTYgLTcgMzVxOCAyMCAzMCAyMGgxOTJ2MTM3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTM3NmgxOTJxMTQgMCAyMyAtOQ0KdDkgLTIzek0xNDU2IC0xNDJ2LTExNGgtNDY5djExNGgxNjd2NDMycTAgNyAwLjUgMTl0MC41IDE3djE2aC0ybC03IC0xMnEtOCAtMTMgLTI2IC0zMWwtNjIgLTU4bC04MiA4NmwxOTIgMTg1aDEyM3YtNjU0aDE2NXpNMTQ4NiAxMTg5cTAgLTYyIC0xMyAtMTIxLjV0LTQxIC0xMTR0LTY4IC05NS41dC05OC41IC02NS41dC0xMjcuNSAtMjQuNXEtNjIgMCAtMTA4IDE2cS0yNCA4IC00MiAxNWwzOSAxMTNxMTUgLTcgMzEgLTExcTM3IC0xMyA3NSAtMTMNCnE4NCAwIDEzNC41IDU4LjV0NjYuNSAxNDUuNWgtMnEtMjEgLTIzIC02MS41IC0zN3QtODQuNSAtMTRxLTEwNiAwIC0xNzMgNzEuNXQtNjcgMTcyLjVxMCAxMDUgNzIgMTc4dDE4MSA3M3ExMjMgMCAyMDUgLTk0LjV0ODIgLTI1Mi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzMzNCIgdW5pY29kZT0iJiN4ZjE2NDsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0yNTYgMTkycTAgMjYgLTE5IDQ1dC00NSAxOXEtMjcgMCAtNDUuNSAtMTl0LTE4LjUgLTQ1cTAgLTI3IDE4LjUgLTQ1LjV0NDUuNSAtMTguNXEyNiAwIDQ1IDE4LjV0MTkgNDUuNXpNNDE2IDcwNHYtNjQwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjg4cS0yNiAwIC00NSAxOXQtMTkgNDV2NjQwcTAgMjYgMTkgNDV0NDUgMTloMjg4cTI2IDAgNDUgLTE5dDE5IC00NXpNMTYwMCA3MDRxMCAtODYgLTU1IC0xNDlxMTUgLTQ0IDE1IC03Ng0KcTMgLTc2IC00MyAtMTM3cTE3IC01NiAwIC0xMTdxLTE1IC01NyAtNTQgLTk0cTkgLTExMiAtNDkgLTE4MXEtNjQgLTc2IC0xOTcgLTc4aC0zNmgtNzZoLTE3cS02NiAwIC0xNDQgMTUuNXQtMTIxLjUgMjl0LTEyMC41IDM5LjVxLTEyMyA0MyAtMTU4IDQ0cS0yNiAxIC00NSAxOS41dC0xOSA0NC41djY0MXEwIDI1IDE4IDQzLjV0NDMgMjAuNXEyNCAyIDc2IDU5dDEwMSAxMjFxNjggODcgMTAxIDEyMHExOCAxOCAzMSA0OHQxNy41IDQ4LjUNCnQxMy41IDYwLjVxNyAzOSAxMi41IDYxdDE5LjUgNTJ0MzQgNTBxMTkgMTkgNDUgMTlxNDYgMCA4Mi41IC0xMC41dDYwIC0yNnQ0MCAtNDAuNXQyNCAtNDV0MTIgLTUwdDUgLTQ1dDAuNSAtMzlxMCAtMzggLTkuNSAtNzZ0LTE5IC02MHQtMjcuNSAtNTZxLTMgLTYgLTEwIC0xOHQtMTEgLTIydC04IC0yNGgyNzdxNzggMCAxMzUgLTU3dDU3IC0xMzV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzM1IiB1bmljb2RlPSImI3hmMTY1OyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTI1NiA5NjBxMCAtMjYgLTE5IC00NXQtNDUgLTE5cS0yNyAwIC00NS41IDE5dC0xOC41IDQ1cTAgMjcgMTguNSA0NS41dDQ1LjUgMTguNXEyNiAwIDQ1IC0xOC41dDE5IC00NS41ek00MTYgNDQ4djY0MHEwIDI2IC0xOSA0NXQtNDUgMTloLTI4OHEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTY0MHEwIC0yNiAxOSAtNDV0NDUgLTE5aDI4OHEyNiAwIDQ1IDE5dDE5IDQ1ek0xNTQ1IDU5N3E1NSAtNjEgNTUgLTE0OXEtMSAtNzggLTU3LjUgLTEzNQ0KdC0xMzQuNSAtNTdoLTI3N3E0IC0xNCA4IC0yNHQxMSAtMjJ0MTAgLTE4cTE4IC0zNyAyNyAtNTd0MTkgLTU4LjV0MTAgLTc2LjVxMCAtMjQgLTAuNSAtMzl0LTUgLTQ1dC0xMiAtNTB0LTI0IC00NXQtNDAgLTQwLjV0LTYwIC0yNnQtODIuNSAtMTAuNXEtMjYgMCAtNDUgMTlxLTIwIDIwIC0zNCA1MHQtMTkuNSA1MnQtMTIuNSA2MXEtOSA0MiAtMTMuNSA2MC41dC0xNy41IDQ4LjV0LTMxIDQ4cS0zMyAzMyAtMTAxIDEyMHEtNDkgNjQgLTEwMSAxMjENCnQtNzYgNTlxLTI1IDIgLTQzIDIwLjV0LTE4IDQzLjV2NjQxcTAgMjYgMTkgNDQuNXQ0NSAxOS41cTM1IDEgMTU4IDQ0cTc3IDI2IDEyMC41IDM5LjV0MTIxLjUgMjl0MTQ0IDE1LjVoMTdoNzZoMzZxMTMzIC0yIDE5NyAtNzhxNTggLTY5IDQ5IC0xODFxMzkgLTM3IDU0IC05NHExNyAtNjEgMCAtMTE3cTQ2IC02MSA0MyAtMTM3cTAgLTMyIC0xNSAtNzZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ5b3V0dWJlX3NpZ24iIHVuaWNvZGU9IiYjeGYxNjY7IiANCmQ9Ik05MTkgMjMzdjE1N3EwIDUwIC0yOSA1MHEtMTcgMCAtMzMgLTE2di0yMjRxMTYgLTE2IDMzIC0xNnEyOSAwIDI5IDQ5ek0xMTAzIDM1NWg2NnYzNHEwIDUxIC0zMyA1MXQtMzMgLTUxdi0zNHpNNTMyIDYyMXYtNzBoLTgwdi00MjNoLTc0djQyM2gtNzh2NzBoMjMyek03MzMgNDk1di0zNjdoLTY3djQwcS0zOSAtNDUgLTc2IC00NXEtMzMgMCAtNDIgMjhxLTYgMTcgLTYgNTR2MjkwaDY2di0yNzBxMCAtMjQgMSAtMjZxMSAtMTUgMTUgLTE1DQpxMjAgMCA0MiAzMXYyODBoNjd6TTk4NSAzODR2LTE0NnEwIC01MiAtNyAtNzNxLTEyIC00MiAtNTMgLTQycS0zNSAwIC02OCA0MXYtMzZoLTY3djQ5M2g2N3YtMTYxcTMyIDQwIDY4IDQwcTQxIDAgNTMgLTQycTcgLTIxIDcgLTc0ek0xMjM2IDI1NXYtOXEwIC0yOSAtMiAtNDNxLTMgLTIyIC0xNSAtNDBxLTI3IC00MCAtODAgLTQwcS01MiAwIC04MSAzOHEtMjEgMjcgLTIxIDg2djEyOXEwIDU5IDIwIDg2cTI5IDM4IDgwIDM4dDc4IC0zOA0KcTIxIC0yOSAyMSAtODZ2LTc2aC0xMzN2LTY1cTAgLTUxIDM0IC01MXEyNCAwIDMwIDI2cTAgMSAwLjUgN3QwLjUgMTYuNXYyMS41aDY4ek03ODUgMTA3OXYtMTU2cTAgLTUxIC0zMiAtNTF0LTMyIDUxdjE1NnEwIDUyIDMyIDUydDMyIC01MnpNMTMxOCAzNjZxMCAxNzcgLTE5IDI2MHEtMTAgNDQgLTQzIDczLjV0LTc2IDM0LjVxLTEzNiAxNSAtNDEyIDE1cS0yNzUgMCAtNDExIC0xNXEtNDQgLTUgLTc2LjUgLTM0LjV0LTQyLjUgLTczLjUNCnEtMjAgLTg3IC0yMCAtMjYwcTAgLTE3NiAyMCAtMjYwcTEwIC00MyA0Mi41IC03M3Q3NS41IC0zNXExMzcgLTE1IDQxMiAtMTV0NDEyIDE1cTQzIDUgNzUuNSAzNXQ0Mi41IDczcTIwIDg0IDIwIDI2MHpNNTYzIDEwMTdsOTAgMjk2aC03NWwtNTEgLTE5NWwtNTMgMTk1aC03OHE3IC0yMyAyMyAtNjlsMjQgLTY5cTM1IC0xMDMgNDYgLTE1OHYtMjAxaDc0djIwMXpNODUyIDkzNnYxMzBxMCA1OCAtMjEgODdxLTI5IDM4IC03OCAzOA0KcS01MSAwIC03OCAtMzhxLTIxIC0yOSAtMjEgLTg3di0xMzBxMCAtNTggMjEgLTg3cTI3IC0zOCA3OCAtMzhxNDkgMCA3OCAzOHEyMSAyNyAyMSA4N3pNMTAzMyA4MTZoNjd2MzcwaC02N3YtMjgzcS0yMiAtMzEgLTQyIC0zMXEtMTUgMCAtMTYgMTZxLTEgMiAtMSAyNnYyNzJoLTY3di0yOTNxMCAtMzcgNiAtNTVxMTEgLTI3IDQzIC0yN3EzNiAwIDc3IDQ1di00MHpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjUNCmgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InlvdXR1YmUiIHVuaWNvZGU9IiYjeGYxNjc7IiANCmQ9Ik05NzEgMjkydi0yMTFxMCAtNjcgLTM5IC02N3EtMjMgMCAtNDUgMjJ2MzAxcTIyIDIyIDQ1IDIycTM5IDAgMzkgLTY3ek0xMzA5IDI5MXYtNDZoLTkwdjQ2cTAgNjggNDUgNjh0NDUgLTY4ek0zNDMgNTA5aDEwN3Y5NGgtMzEydi05NGgxMDV2LTU2OWgxMDB2NTY5ek02MzEgLTYwaDg5djQ5NGgtODl2LTM3OHEtMzAgLTQyIC01NyAtNDJxLTE4IDAgLTIxIDIxcS0xIDMgLTEgMzV2MzY0aC04OXYtMzkxcTAgLTQ5IDggLTczDQpxMTIgLTM3IDU4IC0zN3E0OCAwIDEwMiA2MXYtNTR6TTEwNjAgODh2MTk3cTAgNzMgLTkgOTlxLTE3IDU2IC03MSA1NnEtNTAgMCAtOTMgLTU0djIxN2gtODl2LTY2M2g4OXY0OHE0NSAtNTUgOTMgLTU1cTU0IDAgNzEgNTVxOSAyNyA5IDEwMHpNMTM5OCA5OHYxM2gtOTFxMCAtNTEgLTIgLTYxcS03IC0zNiAtNDAgLTM2cS00NiAwIC00NiA2OXY4N2gxNzl2MTAzcTAgNzkgLTI3IDExNnEtMzkgNTEgLTEwNiA1MXEtNjggMCAtMTA3IC01MQ0KcS0yOCAtMzcgLTI4IC0xMTZ2LTE3M3EwIC03OSAyOSAtMTE2cTM5IC01MSAxMDggLTUxcTcyIDAgMTA4IDUzcTE4IDI3IDIxIDU0cTIgOSAyIDU4ek03OTAgMTAxMXYyMTBxMCA2OSAtNDMgNjl0LTQzIC02OXYtMjEwcTAgLTcwIDQzIC03MHQ0MyA3MHpNMTUwOSAyNjBxMCAtMjM0IC0yNiAtMzUwcS0xNCAtNTkgLTU4IC05OXQtMTAyIC00NnEtMTg0IC0yMSAtNTU1IC0yMXQtNTU1IDIxcS01OCA2IC0xMDIuNSA0NnQtNTcuNSA5OQ0KcS0yNiAxMTIgLTI2IDM1MHEwIDIzNCAyNiAzNTBxMTQgNTkgNTggOTl0MTAzIDQ3cTE4MyAyMCA1NTQgMjB0NTU1IC0yMHE1OCAtNyAxMDIuNSAtNDd0NTcuNSAtOTlxMjYgLTExMiAyNiAtMzUwek01MTEgMTUzNmgxMDJsLTEyMSAtMzk5di0yNzFoLTEwMHYyNzFxLTE0IDc0IC02MSAyMTJxLTM3IDEwMyAtNjUgMTg3aDEwNmw3MSAtMjYzek04ODEgMTIwM3YtMTc1cTAgLTgxIC0yOCAtMTE4cS0zOCAtNTEgLTEwNiAtNTFxLTY3IDAgLTEwNSA1MQ0KcS0yOCAzOCAtMjggMTE4djE3NXEwIDgwIDI4IDExN3EzOCA1MSAxMDUgNTFxNjggMCAxMDYgLTUxcTI4IC0zNyAyOCAtMTE3ek0xMjE2IDEzNjV2LTQ5OWgtOTF2NTVxLTUzIC02MiAtMTAzIC02MnEtNDYgMCAtNTkgMzdxLTggMjQgLTggNzV2Mzk0aDkxdi0zNjdxMCAtMzMgMSAtMzVxMyAtMjIgMjEgLTIycTI3IDAgNTcgNDN2MzgxaDkxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ieGluZyIgdW5pY29kZT0iJiN4ZjE2ODsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik01OTcgODY5cS0xMCAtMTggLTI1NyAtNDU2cS0yNyAtNDYgLTY1IC00NmgtMjM5cS0yMSAwIC0zMSAxN3QwIDM2bDI1MyA0NDhxMSAwIDAgMWwtMTYxIDI3OXEtMTIgMjIgLTEgMzdxOSAxNSAzMiAxNWgyMzlxNDAgMCA2NiAtNDV6TTE0MDMgMTUxMXExMSAtMTYgMCAtMzdsLTUyOCAtOTM0di0xbDMzNiAtNjE1cTExIC0yMCAxIC0zN3EtMTAgLTE1IC0zMiAtMTVoLTIzOXEtNDIgMCAtNjYgNDVsLTMzOSA2MjJxMTggMzIgNTMxIDk0Mg0KcTI1IDQ1IDY0IDQ1aDI0MXEyMiAwIDMxIC0xNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Inhpbmdfc2lnbiIgdW5pY29kZT0iJiN4ZjE2OTsiIA0KZD0iTTY4NSA3NzFxMCAxIC0xMjYgMjIycS0yMSAzNCAtNTIgMzRoLTE4NHEtMTggMCAtMjYgLTExcS03IC0xMiAxIC0yOWwxMjUgLTIxNnYtMWwtMTk2IC0zNDZxLTkgLTE0IDAgLTI4cTggLTEzIDI0IC0xM2gxODVxMzEgMCA1MCAzNnpNMTMwOSAxMjY4cS03IDEyIC0yNCAxMmgtMTg3cS0zMCAwIC00OSAtMzVsLTQxMSAtNzI5cTEgLTIgMjYyIC00ODFxMjAgLTM1IDUyIC0zNWgxODRxMTggMCAyNSAxMnE4IDEzIC0xIDI4bC0yNjAgNDc2djENCmw0MDkgNzIzcTggMTYgMCAyOHpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ5b3V0dWJlX3BsYXkiIHVuaWNvZGU9IiYjeGYxNmE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNzExIDQwOGw0ODQgMjUwbC00ODQgMjUzdi01MDN6TTg5NiAxMjcwcTE2OCAwIDMyNC41IC00LjV0MjI5LjUgLTkuNWw3MyAtNHExIDAgMTcgLTEuNXQyMyAtM3QyMy41IC00LjV0MjguNSAtOHQyOCAtMTN0MzEgLTE5LjV0MjkgLTI2LjVxNiAtNiAxNS41IC0xOC41dDI5IC01OC41dDI2LjUgLTEwMXE4IC02NCAxMi41IC0xMzYuNXQ1LjUgLTExMy41di00MHYtMTM2cTEgLTE0NSAtMTggLTI5MHEtNyAtNTUgLTI1IC05OS41dC0zMiAtNjEuNQ0KbC0xNCAtMTdxLTE0IC0xNSAtMjkgLTI2LjV0LTMxIC0xOXQtMjggLTEyLjV0LTI4LjUgLTh0LTI0IC00LjV0LTIzIC0zdC0xNi41IC0xLjVxLTI1MSAtMTkgLTYyNyAtMTlxLTIwNyAyIC0zNTkuNSA2LjV0LTIwMC41IDcuNWwtNDkgNGwtMzYgNHEtMzYgNSAtNTQuNSAxMHQtNTEgMjF0LTU2LjUgNDFxLTYgNiAtMTUuNSAxOC41dC0yOSA1OC41dC0yNi41IDEwMXEtOCA2NCAtMTIuNSAxMzYuNXQtNS41IDExMy41djQwdjEzNg0KcS0xIDE0NSAxOCAyOTBxNyA1NSAyNSA5OS41dDMyIDYxLjVsMTQgMTdxMTQgMTUgMjkgMjYuNXQzMSAxOS41dDI4IDEzdDI4LjUgOHQyMy41IDQuNXQyMyAzdDE3IDEuNXEyNTEgMTggNjI3IDE4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZHJvcGJveCIgdW5pY29kZT0iJiN4ZjE2YjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik00MDIgODI5bDQ5NCAtMzA1bC0zNDIgLTI4NWwtNDkwIDMxOXpNMTM4OCAyNzR2LTEwOGwtNDkwIC0yOTN2LTFsLTEgMWwtMSAtMXYxbC00ODkgMjkzdjEwOGwxNDcgLTk2bDM0MiAyODR2MmwxIC0xbDEgMXYtMmwzNDMgLTI4NHpNNTU0IDE0MThsMzQyIC0yODVsLTQ5NCAtMzA0bC0zMzggMjcwek0xMzkwIDgyOWwzMzggLTI3MWwtNDg5IC0zMTlsLTM0MyAyODV6TTEyMzkgMTQxOGw0ODkgLTMxOWwtMzM4IC0yNzBsLTQ5NCAzMDR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFja2V4Y2hhbmdlIiB1bmljb2RlPSImI3hmMTZjOyIgDQpkPSJNMTI4OSAtOTZoLTExMTh2NDgwaC0xNjB2LTY0MGgxNDM4djY0MGgtMTYwdi00ODB6TTM0NyA0MjhsMzMgMTU3bDc4MyAtMTY1bC0zMyAtMTU2ek00NTAgODAybDY3IDE0Nmw3MjUgLTMzOWwtNjcgLTE0NXpNNjUxIDExNThsMTAyIDEyM2w2MTQgLTUxM2wtMTAyIC0xMjN6TTEwNDggMTUzNmw0NzcgLTY0MWwtMTI4IC05NmwtNDc3IDY0MXpNMzMwIDY1djE1OWg4MDB2LTE1OWgtODAweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iaW5zdGFncmFtIiB1bmljb2RlPSImI3hmMTZkOyIgDQpkPSJNMTAyNCA2NDBxMCAxMDYgLTc1IDE4MXQtMTgxIDc1dC0xODEgLTc1dC03NSAtMTgxdDc1IC0xODF0MTgxIC03NXQxODEgNzV0NzUgMTgxek0xMTYyIDY0MHEwIC0xNjQgLTExNSAtMjc5dC0yNzkgLTExNXQtMjc5IDExNXQtMTE1IDI3OXQxMTUgMjc5dDI3OSAxMTV0Mjc5IC0xMTV0MTE1IC0yNzl6TTEyNzAgMTA1MHEwIC0zOCAtMjcgLTY1dC02NSAtMjd0LTY1IDI3dC0yNyA2NXQyNyA2NXQ2NSAyN3Q2NSAtMjd0MjcgLTY1ek03NjggMTI3MA0KcS03IDAgLTc2LjUgMC41dC0xMDUuNSAwdC05Ni41IC0zdC0xMDMgLTEwdC03MS41IC0xOC41cS01MCAtMjAgLTg4IC01OHQtNTggLTg4cS0xMSAtMjkgLTE4LjUgLTcxLjV0LTEwIC0xMDN0LTMgLTk2LjV0MCAtMTA1LjV0MC41IC03Ni41dC0wLjUgLTc2LjV0MCAtMTA1LjV0MyAtOTYuNXQxMCAtMTAzdDE4LjUgLTcxLjVxMjAgLTUwIDU4IC04OHQ4OCAtNThxMjkgLTExIDcxLjUgLTE4LjV0MTAzIC0xMHQ5Ni41IC0zdDEwNS41IDB0NzYuNSAwLjUNCnQ3Ni41IC0wLjV0MTA1LjUgMHQ5Ni41IDN0MTAzIDEwdDcxLjUgMTguNXE1MCAyMCA4OCA1OHQ1OCA4OHExMSAyOSAxOC41IDcxLjV0MTAgMTAzdDMgOTYuNXQwIDEwNS41dC0wLjUgNzYuNXQwLjUgNzYuNXQwIDEwNS41dC0zIDk2LjV0LTEwIDEwM3QtMTguNSA3MS41cS0yMCA1MCAtNTggODh0LTg4IDU4cS0yOSAxMSAtNzEuNSAxOC41dC0xMDMgMTB0LTk2LjUgM3QtMTA1LjUgMHQtNzYuNSAtMC41ek0xNTM2IDY0MHEwIC0yMjkgLTUgLTMxNw0KcS0xMCAtMjA4IC0xMjQgLTMyMnQtMzIyIC0xMjRxLTg4IC01IC0zMTcgLTV0LTMxNyA1cS0yMDggMTAgLTMyMiAxMjR0LTEyNCAzMjJxLTUgODggLTUgMzE3dDUgMzE3cTEwIDIwOCAxMjQgMzIydDMyMiAxMjRxODggNSAzMTcgNXQzMTcgLTVxMjA4IC0xMCAzMjIgLTEyNHQxMjQgLTMyMnE1IC04OCA1IC0zMTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmbGlja3IiIHVuaWNvZGU9IiYjeGYxNmU7IiANCmQ9Ik0xMjQ4IDE0MDhxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHpNNjk4IDY0MHEwIDg4IC02MiAxNTB0LTE1MCA2MnQtMTUwIC02MnQtNjIgLTE1MHQ2MiAtMTUwdDE1MCAtNjJ0MTUwIDYydDYyIDE1MHpNMTI2MiA2NDBxMCA4OCAtNjIgMTUwDQp0LTE1MCA2MnQtMTUwIC02MnQtNjIgLTE1MHQ2MiAtMTUwdDE1MCAtNjJ0MTUwIDYydDYyIDE1MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFkbiIgdW5pY29kZT0iJiN4ZjE3MDsiIA0KZD0iTTc2OCA5MTRsMjAxIC0zMDZoLTQwMnpNMTEzMyAzODRoOTRsLTQ1OSA2OTFsLTQ1OSAtNjkxaDk0bDEwNCAxNjBoNTIyek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxNzEiIHVuaWNvZGU9IiYjeGYxNzE7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNODE1IDY3N3E4IC02MyAtNTAuNSAtMTAxdC0xMTEuNSAtNnEtMzkgMTcgLTUzLjUgNTh0LTAuNSA4MnQ1MiA1OHEzNiAxOCA3Mi41IDEydDY0IC0zNS41dDI3LjUgLTY3LjV6TTkyNiA2OThxLTE0IDEwNyAtMTEzIDE2NHQtMTk3IDEzcS02MyAtMjggLTEwMC41IC04OC41dC0zNC41IC0xMjkuNXE0IC05MSA3Ny41IC0xNTV0MTY1LjUgLTU2cTkxIDggMTUyIDg0dDUwIDE2OHpNMTE2NSAxMjQwcS0yMCAyNyAtNTYgNDQuNXQtNTggMjINCnQtNzEgMTIuNXEtMjkxIDQ3IC01NjYgLTJxLTQzIC03IC02NiAtMTJ0LTU1IC0yMnQtNTAgLTQzcTMwIC0yOCA3NiAtNDUuNXQ3My41IC0yMnQ4Ny41IC0xMS41cTIyOCAtMjkgNDQ4IC0xcTYzIDggODkuNSAxMnQ3Mi41IDIxLjV0NzUgNDYuNXpNMTIyMiAyMDVxLTggLTI2IC0xNS41IC03Ni41dC0xNCAtODR0LTI4LjUgLTcwdC01OCAtNTYuNXEtODYgLTQ4IC0xODkuNSAtNzEuNXQtMjAyIC0yMnQtMjAxLjUgMTguNXEtNDYgOCAtODEuNSAxOA0KdC03Ni41IDI3dC03MyA0My41dC01MiA2MS41cS0yNSA5NiAtNTcgMjkybDYgMTZsMTggOXEyMjMgLTE0OCA1MDYuNSAtMTQ4dDUwNy41IDE0OHEyMSAtNiAyNCAtMjN0LTUgLTQ1dC04IC0zN3pNMTQwMyAxMTY2cS0yNiAtMTY3IC0xMTEgLTY1NXEtNSAtMzAgLTI3IC01NnQtNDMuNSAtNDB0LTU0LjUgLTMxcS0yNTIgLTEyNiAtNjEwIC04OHEtMjQ4IDI3IC0zOTQgMTM5cS0xNSAxMiAtMjUuNSAyNi41dC0xNyAzNXQtOSAzNHQtNiAzOS41DQp0LTUuNSAzNXEtOSA1MCAtMjYuNSAxNTB0LTI4IDE2MS41dC0yMy41IDE0Ny41dC0yMiAxNThxMyAyNiAxNy41IDQ4LjV0MzEuNSAzNy41dDQ1IDMwdDQ2IDIyLjV0NDggMTguNXExMjUgNDYgMzEzIDY0cTM3OSAzNyA2NzYgLTUwcTE1NSAtNDYgMjE1IC0xMjJxMTYgLTIwIDE2LjUgLTUxdC01LjUgLTU0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYml0YnVja2V0X3NpZ24iIHVuaWNvZGU9IiYjeGYxNzI7IiANCmQ9Ik04NDggNjY2cTAgNDMgLTQxIDY2dC03NyAxcS00MyAtMjAgLTQyLjUgLTcyLjV0NDMuNSAtNzAuNXEzOSAtMjMgODEgNHQzNiA3MnpNOTI4IDY4MnE4IC02NiAtMzYgLTEyMXQtMTEwIC02MXQtMTE5IDQwdC01NiAxMTNxLTIgNDkgMjUuNSA5M3Q3Mi41IDY0cTcwIDMxIDE0MS41IC0xMHQ4MS41IC0xMTh6TTExMDAgMTA3M3EtMjAgLTIxIC01My41IC0zNHQtNTMgLTE2dC02My41IC04cS0xNTUgLTIwIC0zMjQgMHEtNDQgNiAtNjMgOS41DQp0LTUyLjUgMTZ0LTU0LjUgMzIuNXExMyAxOSAzNiAzMXQ0MCAxNS41dDQ3IDguNXExOTggMzUgNDA4IDFxMzMgLTUgNTEgLTguNXQ0MyAtMTZ0MzkgLTMxLjV6TTExNDIgMzI3cTAgNyA1LjUgMjYuNXQzIDMydC0xNy41IDE2LjVxLTE2MSAtMTA2IC0zNjUgLTEwNnQtMzY2IDEwNmwtMTIgLTZsLTUgLTEycTI2IC0xNTQgNDEgLTIxMHE0NyAtODEgMjA0IC0xMDhxMjQ5IC00NiA0MjggNTNxMzQgMTkgNDkgNTEuNXQyMi41IDg1LjV0MTIuNSA3MXoNCk0xMjcyIDEwMjBxOSA1MyAtOCA3NXEtNDMgNTUgLTE1NSA4OHEtMjE2IDYzIC00ODcgMzZxLTEzMiAtMTIgLTIyNiAtNDZxLTM4IC0xNSAtNTkuNSAtMjV0LTQ3IC0zNHQtMjkuNSAtNTRxOCAtNjggMTkgLTEzOHQyOSAtMTcxdDI0IC0xMzdxMSAtNSA1IC0zMXQ3IC0zNnQxMiAtMjd0MjIgLTI4cTEwNSAtODAgMjg0IC0xMDBxMjU5IC0yOCA0NDAgNjNxMjQgMTMgMzkuNSAyM3QzMSAyOXQxOS41IDQwcTQ4IDI2NyA4MCA0NzN6TTE1MzYgMTEyMA0Kdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0dW1ibHIiIHVuaWNvZGU9IiYjeGYxNzM7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNOTQ0IDIwN2w4MCAtMjM3cS0yMyAtMzUgLTExMSAtNjZ0LTE3NyAtMzJxLTEwNCAtMiAtMTkwLjUgMjZ0LTE0Mi41IDc0dC05NSAxMDZ0LTU1LjUgMTIwdC0xNi41IDExOHY1NDRoLTE2OHYyMTVxNzIgMjYgMTI5IDY5LjV0OTEgOTB0NTggMTAydDM0IDk5dDE1IDg4LjVxMSA1IDQuNSA4LjV0Ny41IDMuNWgyNDR2LTQyNGgzMzN2LTI1MmgtMzM0di01MThxMCAtMzAgNi41IC01NnQyMi41IC01Mi41dDQ5LjUgLTQxLjV0ODEuNSAtMTQNCnE3OCAyIDEzNCAyOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InR1bWJscl9zaWduIiB1bmljb2RlPSImI3hmMTc0OyIgDQpkPSJNMTEzNiA3NWwtNjIgMTgzcS00NCAtMjIgLTEwMyAtMjJxLTM2IC0xIC02MiAxMC41dC0zOC41IDMxLjV0LTE3LjUgNDAuNXQtNSA0My41djM5OGgyNTd2MTk0aC0yNTZ2MzI2aC0xODhxLTggMCAtOSAtMTBxLTUgLTQ0IC0xNy41IC04N3QtMzkgLTk1dC03NyAtOTV0LTExOC41IC02OHYtMTY1aDEzMHYtNDE4cTAgLTU3IDIxLjUgLTExNXQ2NSAtMTExdDEyMSAtODUuNXQxNzYuNSAtMzAuNXE2OSAxIDEzNi41IDI1dDg1LjUgNTB6DQpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb25nX2Fycm93X2Rvd24iIHVuaWNvZGU9IiYjeGYxNzU7IiBob3Jpei1hZHYteD0iNzY4IiANCmQ9Ik03NjUgMjM3cTggLTE5IC01IC0zNWwtMzUwIC0zODRxLTEwIC0xMCAtMjMgLTEwcS0xNCAwIC0yNCAxMGwtMzU1IDM4NHEtMTMgMTYgLTUgMzVxOSAxOSAyOSAxOWgyMjR2MTI0OHEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtMTI0OGgyMjRxMjEgMCAyOSAtMTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb25nX2Fycm93X3VwIiB1bmljb2RlPSImI3hmMTc2OyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzY1IDEwNDNxLTkgLTE5IC0yOSAtMTloLTIyNHYtMTI0OHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTI0OGgtMjI0cS0yMSAwIC0yOSAxOXQ1IDM1bDM1MCAzODRxMTAgMTAgMjMgMTBxMTQgMCAyNCAtMTBsMzU1IC0zODRxMTMgLTE2IDUgLTM1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ibG9uZ19hcnJvd19sZWZ0IiB1bmljb2RlPSImI3hmMTc3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNzM2di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTI0OHYtMjI0cTAgLTIxIC0xOSAtMjl0LTM1IDVsLTM4NCAzNTBxLTEwIDEwIC0xMCAyM3EwIDE0IDEwIDI0bDM4NCAzNTRxMTYgMTQgMzUgNnExOSAtOSAxOSAtMjl2LTIyNGgxMjQ4cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsb25nX2Fycm93X3JpZ2h0IiB1bmljb2RlPSImI3hmMTc4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3MjggNjQzcTAgLTE0IC0xMCAtMjRsLTM4NCAtMzU0cS0xNiAtMTQgLTM1IC02cS0xOSA5IC0xOSAyOXYyMjRoLTEyNDhxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDEyNDh2MjI0cTAgMjEgMTkgMjl0MzUgLTVsMzg0IC0zNTBxMTAgLTEwIDEwIC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFwcGxlIiB1bmljb2RlPSImI3hmMTc5OyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTEzOTMgMzIxcS0zOSAtMTI1IC0xMjMgLTI1MHEtMTI5IC0xOTYgLTI1NyAtMTk2cS00OSAwIC0xNDAgMzJxLTg2IDMyIC0xNTEgMzJxLTYxIDAgLTE0MiAtMzNxLTgxIC0zNCAtMTMyIC0zNHEtMTUyIDAgLTMwMSAyNTlxLTE0NyAyNjEgLTE0NyA1MDNxMCAyMjggMTEzIDM3NHExMTMgMTQ0IDI4NCAxNDRxNzIgMCAxNzcgLTMwcTEwNCAtMzAgMTM4IC0zMHE0NSAwIDE0MyAzNHExMDIgMzQgMTczIDM0cTExOSAwIDIxMyAtNjUNCnE1MiAtMzYgMTA0IC0xMDBxLTc5IC02NyAtMTE0IC0xMThxLTY1IC05NCAtNjUgLTIwN3EwIC0xMjQgNjkgLTIyM3QxNTggLTEyNnpNMTAxNyAxNDk0cTAgLTYxIC0yOSAtMTM2cS0zMCAtNzUgLTkzIC0xMzhxLTU0IC01NCAtMTA4IC03MnEtMzcgLTExIC0xMDQgLTE3cTMgMTQ5IDc4IDI1N3E3NCAxMDcgMjUwIDE0OHExIC0zIDIuNSAtMTF0Mi41IC0xMXEwIC00IDAuNSAtMTB0MC41IC0xMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9IndpbmRvd3MiIHVuaWNvZGU9IiYjeGYxN2E7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNNjgyIDUzMHYtNjUxbC02ODIgOTR2NTU3aDY4MnpNNjgyIDEyNzN2LTY1OWgtNjgydjU2NXpNMTY2NCA1MzB2LTc4NmwtOTA3IDEyNXY2NjFoOTA3ek0xNjY0IDE0MDh2LTc5NGgtOTA3djY2OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImFuZHJvaWQiIHVuaWNvZGU9IiYjeGYxN2I7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNNDkzIDEwNTNxMTYgMCAyNy41IDExLjV0MTEuNSAyNy41dC0xMS41IDI3LjV0LTI3LjUgMTEuNXQtMjcgLTExLjV0LTExIC0yNy41dDExIC0yNy41dDI3IC0xMS41ek05MTUgMTA1M3ExNiAwIDI3IDExLjV0MTEgMjcuNXQtMTEgMjcuNXQtMjcgMTEuNXQtMjcuNSAtMTEuNXQtMTEuNSAtMjcuNXQxMS41IC0yNy41dDI3LjUgLTExLjV6TTEwMyA4NjlxNDIgMCA3MiAtMzB0MzAgLTcydi00MzBxMCAtNDMgLTI5LjUgLTczdC03Mi41IC0zMA0KdC03MyAzMHQtMzAgNzN2NDMwcTAgNDIgMzAgNzJ0NzMgMzB6TTExNjMgODUwdi02NjZxMCAtNDYgLTMyIC03OHQtNzcgLTMyaC03NXYtMjI3cTAgLTQzIC0zMCAtNzN0LTczIC0zMHQtNzMgMzB0LTMwIDczdjIyN2gtMTM4di0yMjdxMCAtNDMgLTMwIC03M3QtNzMgLTMwcS00MiAwIC03MiAzMHQtMzAgNzNsLTEgMjI3aC03NHEtNDYgMCAtNzggMzJ0LTMyIDc4djY2Nmg5MTh6TTkzMSAxMjU1cTEwNyAtNTUgMTcxIC0xNTMuNXQ2NCAtMjE1LjUNCmgtOTI1cTAgMTE3IDY0IDIxNS41dDE3MiAxNTMuNWwtNzEgMTMxcS03IDEzIDUgMjBxMTMgNiAyMCAtNmw3MiAtMTMycTk1IDQyIDIwMSA0MnQyMDEgLTQybDcyIDEzMnE3IDEyIDIwIDZxMTIgLTcgNSAtMjB6TTE0MDggNzY3di00MzBxMCAtNDMgLTMwIC03M3QtNzMgLTMwcS00MiAwIC03MiAzMHQtMzAgNzN2NDMwcTAgNDMgMzAgNzIuNXQ3MiAyOS41cTQzIDAgNzMgLTI5LjV0MzAgLTcyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJsaW51eCIgdW5pY29kZT0iJiN4ZjE3YzsiIA0KZD0iTTY2MyAxMTI1cS0xMSAtMSAtMTUuNSAtMTAuNXQtOC41IC05LjVxLTUgLTEgLTUgNXEwIDEyIDE5IDE1aDEwek03NTAgMTExMXEtNCAtMSAtMTEuNSA2LjV0LTE3LjUgNC41cTI0IDExIDMyIC0ycTMgLTYgLTMgLTl6TTM5OSA2ODRxLTQgMSAtNiAtM3QtNC41IC0xMi41dC01LjUgLTEzLjV0LTEwIC0xM3EtMTAgLTExIC0xIC0xMnE0IC0xIDEyLjUgN3QxMi41IDE4cTEgMyAyIDd0MiA2dDEuNSA0LjV0MC41IDR2M3QtMSAyLjV0LTMgMnoNCk0xMjU0IDMyNXEwIDE4IC01NSA0MnE0IDE1IDcuNSAyNy41dDUgMjZ0MyAyMS41dDAuNSAyMi41dC0xIDE5LjV0LTMuNSAyMnQtNCAyMC41dC01IDI1dC01LjUgMjYuNXEtMTAgNDggLTQ3IDEwM3QtNzIgNzVxMjQgLTIwIDU3IC04M3E4NyAtMTYyIDU0IC0yNzhxLTExIC00MCAtNTAgLTQycS0zMSAtNCAtMzguNSAxOC41dC04IDgzLjV0LTExLjUgMTA3cS05IDM5IC0xOS41IDY5dC0xOS41IDQ1LjV0LTE1LjUgMjQuNXQtMTMgMTV0LTcuNSA3DQpxLTE0IDYyIC0zMSAxMDN0LTI5LjUgNTZ0LTIzLjUgMzN0LTE1IDQwcS00IDIxIDYgNTMuNXQ0LjUgNDkuNXQtNDQuNSAyNXEtMTUgMyAtNDQuNSAxOHQtMzUuNSAxNnEtOCAxIC0xMSAyNnQ4IDUxdDM2IDI3cTM3IDMgNTEgLTMwdDQgLTU4cS0xMSAtMTkgLTIgLTI2LjV0MzAgLTAuNXExMyA0IDEzIDM2djM3cS01IDMwIC0xMy41IDUwdC0yMSAzMC41dC0yMy41IDE1dC0yNyA3LjVxLTEwNyAtOCAtODkgLTEzNHEwIC0xNSAtMSAtMTUNCnEtOSA5IC0yOS41IDEwLjV0LTMzIC0wLjV0LTE1LjUgNXExIDU3IC0xNiA5MHQtNDUgMzRxLTI3IDEgLTQxLjUgLTI3LjV0LTE2LjUgLTU5LjVxLTEgLTE1IDMuNSAtMzd0MTMgLTM3LjV0MTUuNSAtMTMuNXExMCAzIDE2IDE0cTQgOSAtNyA4cS03IDAgLTE1LjUgMTQuNXQtOS41IDMzLjVxLTEgMjIgOSAzN3QzNCAxNHExNyAwIDI3IC0yMXQ5LjUgLTM5dC0xLjUgLTIycS0yMiAtMTUgLTMxIC0yOXEtOCAtMTIgLTI3LjUgLTIzLjUNCnQtMjAuNSAtMTIuNXEtMTMgLTE0IC0xNS41IC0yN3Q3LjUgLTE4cTE0IC04IDI1IC0xOS41dDE2IC0xOXQxOC41IC0xM3QzNS41IC02LjVxNDcgLTIgMTAyIDE1cTIgMSAyMyA3dDM0LjUgMTAuNXQyOS41IDEzdDIxIDE3LjVxOSAxNCAyMCA4cTUgLTMgNi41IC04LjV0LTMgLTEydC0xNi41IC05LjVxLTIwIC02IC01Ni41IC0yMS41dC00NS41IC0xOS41cS00NCAtMTkgLTcwIC0yM3EtMjUgLTUgLTc5IDJxLTEwIDIgLTkgLTJ0MTcgLTE5DQpxMjUgLTIzIDY3IC0yMnExNyAxIDM2IDd0MzYgMTR0MzMuNSAxNy41dDMwIDE3dDI0LjUgMTJ0MTcuNSAyLjV0OC41IC0xMXEwIC0yIC0xIC00LjV0LTQgLTV0LTYgLTQuNXQtOC41IC01dC05IC00LjV0LTEwIC01dC05LjUgLTQuNXEtMjggLTE0IC02Ny41IC00NHQtNjYuNSAtNDN0LTQ5IC0xcS0yMSAxMSAtNjMgNzNxLTIyIDMxIC0yNSAyMnEtMSAtMyAtMSAtMTBxMCAtMjUgLTE1IC01Ni41dC0yOS41IC01NS41dC0yMSAtNTh0MTEuNSAtNjMNCnEtMjMgLTYgLTYyLjUgLTkwdC00Ny41IC0xNDFxLTIgLTE4IC0xLjUgLTY5dC01LjUgLTU5cS04IC0yNCAtMjkgLTNxLTMyIDMxIC0zNiA5NHEtMiAyOCA0IDU2cTQgMTkgLTEgMThxLTIgLTEgLTQgLTVxLTM2IC02NSAxMCAtMTY2cTUgLTEyIDI1IC0yOHQyNCAtMjBxMjAgLTIzIDEwNCAtOTAuNXQ5MyAtNzYuNXExNiAtMTUgMTcuNSAtMzh0LTE0IC00M3QtNDUuNSAtMjNxOCAtMTUgMjkgLTQ0LjV0MjggLTU0dDcgLTcwLjVxNDYgMjQgNyA5Mg0KcS00IDggLTEwLjUgMTZ0LTkuNSAxMnQtMiA2cTMgNSAxMyA5LjV0MjAgLTIuNXE0NiAtNTIgMTY2IC0zNnExMzMgMTUgMTc3IDg3cTIzIDM4IDM0IDMwcTEyIC02IDEwIC01MnEtMSAtMjUgLTIzIC05MnEtOSAtMjMgLTYgLTM3LjV0MjQgLTE1LjVxMyAxOSAxNC41IDc3dDEzLjUgOTBxMiAyMSAtNi41IDczLjV0LTcuNSA5N3QyMyA3MC41cTE1IDE4IDUxIDE4cTEgMzcgMzQuNSA1M3Q3Mi41IDEwLjV0NjAgLTIyLjV6TTYyNiAxMTUyDQpxMyAxNyAtMi41IDMwdC0xMS41IDE1cS05IDIgLTkgLTdxMiAtNSA1IC02cTEwIDAgNyAtMTVxLTMgLTIwIDggLTIwcTMgMCAzIDN6TTEwNDUgOTU1cS0yIDggLTYuNSAxMS41dC0xMyA1dC0xNC41IDUuNXEtNSAzIC05LjUgOHQtNyA4dC01LjUgNi41dC00IDR0LTQgLTEuNXEtMTQgLTE2IDcgLTQzLjV0MzkgLTMxLjVxOSAtMSAxNC41IDh0My41IDIwek04NjcgMTE2OHEwIDExIC01IDE5LjV0LTExIDEyLjV0LTkgM3EtNiAwIC04IC0ydDAgLTQNCnQ1IC0zcTE0IC00IDE4IC0zMXEwIC0zIDggMnEyIDIgMiAzek05MjEgMTQwMXEwIDIgLTIuNSA1dC05IDd0LTkuNSA2cS0xNSAxNSAtMjQgMTVxLTkgLTEgLTExLjUgLTcuNXQtMSAtMTN0LTAuNSAtMTIuNXEtMSAtNCAtNiAtMTAuNXQtNiAtOXQzIC04LjVxNCAtMyA4IDB0MTEgOXQxNSA5cTEgMSA5IDF0MTUgMnQ5IDd6TTE0ODYgNjBxMjAgLTEyIDMxIC0yNC41dDEyIC0yNHQtMi41IC0yMi41dC0xNS41IC0yMnQtMjMuNSAtMTkuNQ0KdC0zMCAtMTguNXQtMzEuNSAtMTYuNXQtMzIgLTE1LjV0LTI3IC0xM3EtMzggLTE5IC04NS41IC01NnQtNzUuNSAtNjRxLTE3IC0xNiAtNjggLTE5LjV0LTg5IDE0LjVxLTE4IDkgLTI5LjUgMjMuNXQtMTYuNSAyNS41dC0yMiAxOS41dC00NyA5LjVxLTQ0IDEgLTEzMCAxcS0xOSAwIC01NyAtMS41dC01OCAtMi41cS00NCAtMSAtNzkuNSAtMTV0LTUzLjUgLTMwdC00My41IC0yOC41dC01My41IC0xMS41cS0yOSAxIC0xMTEgMzF0LTE0NiA0Mw0KcS0xOSA0IC01MSA5LjV0LTUwIDl0LTM5LjUgOS41dC0zMy41IDE0LjV0LTE3IDE5LjVxLTEwIDIzIDcgNjYuNXQxOCA1NC41cTEgMTYgLTQgNDB0LTEwIDQyLjV0LTQuNSAzNi41dDEwLjUgMjdxMTQgMTIgNTcgMTR0NjAgMTJxMzAgMTggNDIgMzV0MTIgNTFxMjEgLTczIC0zMiAtMTA2cS0zMiAtMjAgLTgzIC0xNXEtMzQgMyAtNDMgLTEwcS0xMyAtMTUgNSAtNTdxMiAtNiA4IC0xOHQ4LjUgLTE4dDQuNSAtMTd0MSAtMjJxMCAtMTUgLTE3IC00OQ0KdC0xNCAtNDhxMyAtMTcgMzcgLTI2cTIwIC02IDg0LjUgLTE4LjV0OTkuNSAtMjAuNXEyNCAtNiA3NCAtMjJ0ODIuNSAtMjN0NTUuNSAtNHE0MyA2IDY0LjUgMjh0MjMgNDh0LTcuNSA1OC41dC0xOSA1MnQtMjAgMzYuNXEtMTIxIDE5MCAtMTY5IDI0MnEtNjggNzQgLTExMyA0MHEtMTEgLTkgLTE1IDE1cS0zIDE2IC0yIDM4cTEgMjkgMTAgNTJ0MjQgNDd0MjIgNDJxOCAyMSAyNi41IDcydDI5LjUgNzh0MzAgNjF0MzkgNTQNCnExMTAgMTQzIDEyNCAxOTVxLTEyIDExMiAtMTYgMzEwcS0yIDkwIDI0IDE1MS41dDEwNiAxMDQuNXEzOSAyMSAxMDQgMjFxNTMgMSAxMDYgLTEzLjV0ODkgLTQxLjVxNTcgLTQyIDkxLjUgLTEyMS41dDI5LjUgLTE0Ny41cS01IC05NSAzMCAtMjE0cTM0IC0xMTMgMTMzIC0yMThxNTUgLTU5IDk5LjUgLTE2M3Q1OS41IC0xOTFxOCAtNDkgNSAtODQuNXQtMTIgLTU1LjV0LTIwIC0yMnEtMTAgLTIgLTIzLjUgLTE5dC0yNyAtMzUuNQ0KdC00MC41IC0zMy41dC02MSAtMTRxLTE4IDEgLTMxLjUgNXQtMjIuNSAxMy41dC0xMy41IDE1LjV0LTExLjUgMjAuNXQtOSAxOS41cS0yMiAzNyAtNDEgMzB0LTI4IC00OXQ3IC05N3EyMCAtNzAgMSAtMTk1cS0xMCAtNjUgMTggLTEwMC41dDczIC0zM3Q4NSAzNS41cTU5IDQ5IDg5LjUgNjYuNXQxMDMuNSA0Mi41cTUzIDE4IDc3IDM2LjV0MTguNSAzNC41dC0yNSAyOC41dC01MS41IDIzLjVxLTMzIDExIC00OS41IDQ4dC0xNSA3Mi41DQp0MTUuNSA0Ny41cTEgLTMxIDggLTU2LjV0MTQuNSAtNDAuNXQyMC41IC0yOC41dDIxIC0xOXQyMS41IC0xM3QxNi41IC05LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJkcmliYmxlIiB1bmljb2RlPSImI3hmMTdkOyIgDQpkPSJNMTAyNCAzNnEtNDIgMjQxIC0xNDAgNDk4aC0ybC0yIC0xcS0xNiAtNiAtNDMgLTE2LjV0LTEwMSAtNDl0LTEzNyAtODJ0LTEzMSAtMTE0LjV0LTEwMyAtMTQ4bC0xNSAxMXExODQgLTE1MCA0MTggLTE1MHExMzIgMCAyNTYgNTJ6TTgzOSA2NDNxLTIxIDQ5IC01MyAxMTFxLTMxMSAtOTMgLTY3MyAtOTNxLTEgLTcgLTEgLTIxcTAgLTEyNCA0NCAtMjM2LjV0MTI0IC0yMDEuNXE1MCA4OSAxMjMuNSAxNjYuNXQxNDIuNSAxMjQuNXQxMzAuNSA4MQ0KdDk5LjUgNDhsMzcgMTNxNCAxIDEzIDMuNXQxMyA0LjV6TTczMiA4NTVxLTEyMCAyMTMgLTI0NCAzNzhxLTEzOCAtNjUgLTIzNCAtMTg2dC0xMjggLTI3MnEzMDIgMCA2MDYgODB6TTE0MTYgNTM2cS0yMTAgNjAgLTQwOSAyOXE4NyAtMjM5IDEyOCAtNDY5cTExMSA3NSAxODUgMTg5LjV0OTYgMjUwLjV6TTYxMSAxMjc3cS0xIDAgLTIgLTFxMSAxIDIgMXpNMTIwMSAxMTMycS0xODUgMTY0IC00MzMgMTY0cS03NiAwIC0xNTUgLTE5DQpxMTMxIC0xNzAgMjQ2IC0zODJxNjkgMjYgMTMwIDYwLjV0OTYuNSA2MS41dDY1LjUgNTd0MzcuNSA0MC41ek0xNDI0IDY0N3EtMyAyMzIgLTE0OSA0MTBsLTEgLTFxLTkgLTEyIC0xOSAtMjQuNXQtNDMuNSAtNDQuNXQtNzEgLTYwLjV0LTEwMCAtNjV0LTEzMS41IC02NC41cTI1IC01MyA0NCAtOTVxMiAtNSA2LjUgLTE3dDcuNSAtMTdxMzYgNSA3NC41IDd0NzMuNSAydDY5IC0xLjV0NjQgLTR0NTYuNSAtNS41dDQ4IC02LjV0MzYuNSAtNg0KdDI1IC00LjV6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic2t5cGUiIHVuaWNvZGU9IiYjeGYxN2U7IiANCmQ9Ik0xMTczIDQ3M3EwIDUwIC0xOS41IDkxLjV0LTQ4LjUgNjguNXQtNzMgNDl0LTgyLjUgMzR0LTg3LjUgMjNsLTEwNCAyNHEtMzAgNyAtNDQgMTAuNXQtMzUgMTEuNXQtMzAgMTZ0LTE2LjUgMjF0LTcuNSAzMHEwIDc3IDE0NCA3N3E0MyAwIDc3IC0xMnQ1NCAtMjguNXQzOCAtMzMuNXQ0MCAtMjl0NDggLTEycTQ3IDAgNzUuNSAzMnQyOC41IDc3cTAgNTUgLTU2IDk5LjV0LTE0MiA2Ny41dC0xODIgMjNxLTY4IDAgLTEzMiAtMTUuNQ0KdC0xMTkuNSAtNDd0LTg5IC04N3QtMzMuNSAtMTI4LjVxMCAtNjEgMTkgLTEwNi41dDU2IC03NS41dDgwIC00OC41dDEwMyAtMzIuNWwxNDYgLTM2cTkwIC0yMiAxMTIgLTM2cTMyIC0yMCAzMiAtNjBxMCAtMzkgLTQwIC02NC41dC0xMDUgLTI1LjVxLTUxIDAgLTkxLjUgMTZ0LTY1IDM4LjV0LTQ1LjUgNDV0LTQ2IDM4LjV0LTU0IDE2cS01MCAwIC03NS41IC0zMHQtMjUuNSAtNzVxMCAtOTIgMTIyIC0xNTcuNXQyOTEgLTY1LjUNCnE3MyAwIDE0MCAxOC41dDEyMi41IDUzLjV0ODguNSA5My41dDMzIDEzMS41ek0xNTM2IDI1NnEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41cS0xMzAgMCAtMjM0IDgwcS03NyAtMTYgLTE1MCAtMTZxLTE0MyAwIC0yNzMuNSA1NS41dC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41cTAgNzMgMTYgMTUwcS04MCAxMDQgLTgwIDIzNHEwIDE1OSAxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXExMzAgMCAyMzQgLTgwDQpxNzcgMTYgMTUwIDE2cTE0MyAwIDI3My41IC01NS41dDIyNSAtMTUwdDE1MCAtMjI1dDU1LjUgLTI3My41cTAgLTczIC0xNiAtMTUwcTgwIC0xMDQgODAgLTIzNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZvdXJzcXVhcmUiIHVuaWNvZGU9IiYjeGYxODA7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTAwMCAxMTAybDM3IDE5NHE1IDIzIC05IDQwdC0zNSAxN2gtNzEycS0yMyAwIC0zOC41IC0xN3QtMTUuNSAtMzd2LTExMDFxMCAtNyA2IC0xbDI5MSAzNTJxMjMgMjYgMzggMzMuNXQ0OCA3LjVoMjM5cTIyIDAgMzcgMTQuNXQxOCAyOS41cTI0IDEzMCAzNyAxOTFxNCAyMSAtMTEuNSA0MHQtMzYuNSAxOWgtMjk0cS0yOSAwIC00OCAxOXQtMTkgNDh2NDJxMCAyOSAxOSA0Ny41dDQ4IDE4LjVoMzQ2cTE4IDAgMzUgMTMuNXQyMCAyOS41eg0KTTEyMjcgMTMyNHEtMTUgLTczIC01My41IC0yNjYuNXQtNjkuNSAtMzUwdC0zNSAtMTczLjVxLTYgLTIyIC05IC0zMi41dC0xNCAtMzIuNXQtMjQuNSAtMzN0LTM4LjUgLTIxdC01OCAtMTBoLTI3MXEtMTMgMCAtMjIgLTEwcS04IC05IC00MjYgLTQ5NHEtMjIgLTI1IC01OC41IC0yOC41dC00OC41IDUuNXEtNTUgMjIgLTU1IDk4djE0MTBxMCA1NSAzOCAxMDIuNXQxMjAgNDcuNWg4ODhxOTUgMCAxMjcgLTUzdDEwIC0xNTl6TTEyMjcgMTMyNA0KbC0xNTggLTc5MHE0IDE3IDM1IDE3My41dDY5LjUgMzUwdDUzLjUgMjY2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ0cmVsbG8iIHVuaWNvZGU9IiYjeGYxODE7IiANCmQ9Ik03MDQgMTkydjEwMjRxMCAxNCAtOSAyM3QtMjMgOWgtNDgwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEwMjRxMCAtMTQgOSAtMjN0MjMgLTloNDgwcTE0IDAgMjMgOXQ5IDIzek0xMzc2IDU3NnY2NDBxMCAxNCAtOSAyM3QtMjMgOWgtNDgwcS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0MHEwIC0xNCA5IC0yM3QyMyAtOWg0ODBxMTQgMCAyMyA5dDkgMjN6TTE1MzYgMTM0NHYtMTQwOHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE0MDgNCnEtMjYgMCAtNDUgMTl0LTE5IDQ1djE0MDhxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImZlbWFsZSIgdW5pY29kZT0iJiN4ZjE4MjsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMjgwIDQ4MHEwIC00MCAtMjggLTY4dC02OCAtMjhxLTUxIDAgLTgwIDQzbC0yMjcgMzQxaC00NXYtMTMybDI0NyAtNDExcTkgLTE1IDkgLTMzcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTkydi0yNzJxMCAtNDYgLTMzIC03OXQtNzkgLTMzaC0xNjBxLTQ2IDAgLTc5IDMzdC0zMyA3OXYyNzJoLTE5MnEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMTggOSAzM2wyNDcgNDExdjEzMmgtNDVsLTIyNyAtMzQxcS0yOSAtNDMgLTgwIC00Mw0KcS00MCAwIC02OCAyOHQtMjggNjhxMCAyOSAxNiA1M2wyNTYgMzg0cTczIDEwNyAxNzYgMTA3aDM4NHExMDMgMCAxNzYgLTEwN2wyNTYgLTM4NHExNiAtMjQgMTYgLTUzek04NjQgMTI4MHEwIC05MyAtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41dC0xNTguNSA2NS41dC02NS41IDE1OC41dDY1LjUgMTU4LjV0MTU4LjUgNjUuNXQxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Im1hbGUiIHVuaWNvZGU9IiYjeGYxODM7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAyNCA4MzJ2LTQxNnEwIC00MCAtMjggLTY4dC02OCAtMjh0LTY4IDI4dC0yOCA2OHYzNTJoLTY0di05MTJxMCAtNDYgLTMzIC03OXQtNzkgLTMzdC03OSAzM3QtMzMgNzl2NDY0aC02NHYtNDY0cTAgLTQ2IC0zMyAtNzl0LTc5IC0zM3QtNzkgMzN0LTMzIDc5djkxMmgtNjR2LTM1MnEwIC00MCAtMjggLTY4dC02OCAtMjh0LTY4IDI4dC0yOCA2OHY0MTZxMCA4MCA1NiAxMzZ0MTM2IDU2aDY0MHE4MCAwIDEzNiAtNTZ0NTYgLTEzNnoNCk03MzYgMTI4MHEwIC05MyAtNjUuNSAtMTU4LjV0LTE1OC41IC02NS41dC0xNTguNSA2NS41dC02NS41IDE1OC41dDY1LjUgMTU4LjV0MTU4LjUgNjUuNXQxNTguNSAtNjUuNXQ2NS41IC0xNTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImdpdHRpcCIgdW5pY29kZT0iJiN4ZjE4NDsiIA0KZD0iTTc3MyAyMzRsMzUwIDQ3M3ExNiAyMiAyNC41IDU5dC02IDg1dC02MS41IDc5cS00MCAyNiAtODMgMjUuNXQtNzMuNSAtMTcuNXQtNTQuNSAtNDVxLTM2IC00MCAtOTYgLTQwcS01OSAwIC05NSA0MHEtMjQgMjggLTU0LjUgNDV0LTczLjUgMTcuNXQtODQgLTI1LjVxLTQ2IC0zMSAtNjAuNSAtNzl0LTYgLTg1dDI0LjUgLTU5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzDQp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0ic3VuIiB1bmljb2RlPSImI3hmMTg1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE0NzIgNjQwcTAgMTE3IC00NS41IDIyMy41dC0xMjMgMTg0dC0xODQgMTIzdC0yMjMuNSA0NS41dC0yMjMuNSAtNDUuNXQtMTg0IC0xMjN0LTEyMyAtMTg0dC00NS41IC0yMjMuNXQ0NS41IC0yMjMuNXQxMjMgLTE4NHQxODQgLTEyM3QyMjMuNSAtNDUuNXQyMjMuNSA0NS41dDE4NCAxMjN0MTIzIDE4NHQ0NS41IDIyMy41ek0xNzQ4IDM2M3EtNCAtMTUgLTIwIC0yMGwtMjkyIC05NnYtMzA2cTAgLTE2IC0xMyAtMjZxLTE1IC0xMCAtMjkgLTQNCmwtMjkyIDk0bC0xODAgLTI0OHEtMTAgLTEzIC0yNiAtMTN0LTI2IDEzbC0xODAgMjQ4bC0yOTIgLTk0cS0xNCAtNiAtMjkgNHEtMTMgMTAgLTEzIDI2djMwNmwtMjkyIDk2cS0xNiA1IC0yMCAyMHEtNSAxNyA0IDI5bDE4MCAyNDhsLTE4MCAyNDhxLTkgMTMgLTQgMjlxNCAxNSAyMCAyMGwyOTIgOTZ2MzA2cTAgMTYgMTMgMjZxMTUgMTAgMjkgNGwyOTIgLTk0bDE4MCAyNDhxOSAxMiAyNiAxMnQyNiAtMTJsMTgwIC0yNDhsMjkyIDk0DQpxMTQgNiAyOSAtNHExMyAtMTAgMTMgLTI2di0zMDZsMjkyIC05NnExNiAtNSAyMCAtMjBxNSAtMTYgLTQgLTI5bC0xODAgLTI0OGwxODAgLTI0OHE5IC0xMiA0IC0yOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zNjYiIHVuaWNvZGU9IiYjeGYxODY7IiANCmQ9Ik0xMjYyIDIzM3EtNTQgLTkgLTExMCAtOXEtMTgyIDAgLTMzNyA5MHQtMjQ1IDI0NXQtOTAgMzM3cTAgMTkyIDEwNCAzNTdxLTIwMSAtNjAgLTMyOC41IC0yMjl0LTEyNy41IC0zODRxMCAtMTMwIDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxcTE0NCAwIDI3My41IDYxLjV0MjIwLjUgMTcxLjV6TTE0NjUgMzE4cS05NCAtMjAzIC0yODMuNSAtMzI0LjV0LTQxMy41IC0xMjEuNXEtMTU2IDAgLTI5OCA2MQ0KdC0yNDUgMTY0dC0xNjQgMjQ1dC02MSAyOThxMCAxNTMgNTcuNSAyOTIuNXQxNTYgMjQxLjV0MjM1LjUgMTY0LjV0MjkwIDY4LjVxNDQgMiA2MSAtMzlxMTggLTQxIC0xNSAtNzJxLTg2IC03OCAtMTMxLjUgLTE4MS41dC00NS41IC0yMTguNXEwIC0xNDggNzMgLTI3M3QxOTggLTE5OHQyNzMgLTczcTExOCAwIDIyOCA1MXE0MSAxOCA3MiAtMTNxMTQgLTE0IDE3LjUgLTM0dC00LjUgLTM4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYXJjaGl2ZSIgdW5pY29kZT0iJiN4ZjE4NzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMDg4IDcwNHEwIDI2IC0xOSA0NXQtNDUgMTloLTI1NnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1dDQ1IC0xOWgyNTZxMjYgMCA0NSAxOXQxOSA0NXpNMTY2NCA4OTZ2LTk2MHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE0MDhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY5NjBxMCAyNiAxOSA0NXQ0NSAxOWgxNDA4cTI2IDAgNDUgLTE5dDE5IC00NXpNMTcyOCAxMzQ0di0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xNTM2DQpxLTI2IDAgLTQ1IDE5dC0xOSA0NXYyNTZxMCAyNiAxOSA0NXQ0NSAxOWgxNTM2cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImJ1ZyIgdW5pY29kZT0iJiN4ZjE4ODsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNjMyIDU3NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTIyNHEwIC0xNzEgLTY3IC0yOTBsMjA4IC0yMDlxMTkgLTE5IDE5IC00NXQtMTkgLTQ1cS0xOCAtMTkgLTQ1IC0xOXQtNDUgMTlsLTE5OCAxOTdxLTUgLTUgLTE1IC0xM3QtNDIgLTI4LjV0LTY1IC0zNi41dC04MiAtMjl0LTk3IC0xM3Y4OTZoLTEyOHYtODk2cS01MSAwIC0xMDEuNSAxMy41dC04NyAzM3QtNjYgMzl0LTQzLjUgMzIuNWwtMTUgMTRsLTE4MyAtMjA3DQpxLTIwIC0yMSAtNDggLTIxcS0yNCAwIC00MyAxNnEtMTkgMTggLTIwLjUgNDQuNXQxNS41IDQ2LjVsMjAyIDIyN3EtNTggMTE0IC01OCAyNzRoLTIyNHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDIyNHYyOTRsLTE3MyAxNzNxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTlsMTczIC0xNzNoODQ0bDE3MyAxNzNxMTkgMTkgNDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1bC0xNzMgLTE3M3YtMjk0aDIyNHEyNiAwIDQ1IC0xOQ0KdDE5IC00NXpNMTE1MiAxMTUyaC02NDBxMCAxMzMgOTMuNSAyMjYuNXQyMjYuNSA5My41dDIyNi41IC05My41dDkzLjUgLTIyNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idmsiIHVuaWNvZGU9IiYjeGYxODk7IiBob3Jpei1hZHYteD0iMTkyMCIgDQpkPSJNMTkxNyAxMDE2cTIzIC02NCAtMTUwIC0yOTRxLTI0IC0zMiAtNjUgLTg1cS00MCAtNTEgLTU1IC03MnQtMzAuNSAtNDkuNXQtMTIgLTQydDEzIC0zNC41dDMyLjUgLTQzdDU3IC01M3E0IC0yIDUgLTRxMTQxIC0xMzEgMTkxIC0yMjFxMyAtNSA2LjUgLTEyLjV0NyAtMjYuNXQtMC41IC0zNHQtMjUgLTI3LjV0LTU5IC0xMi41bC0yNTYgLTRxLTI0IC01IC01NiA1dC01MiAyMmwtMjAgMTJxLTMwIDIxIC03MCA2NHQtNjguNSA3Ny41dC02MSA1OA0KdC01Ni41IDE1LjVxLTMgLTEgLTggLTMuNXQtMTcgLTE0LjV0LTIxLjUgLTI5LjV0LTE3IC01MnQtNi41IC03Ny41cTAgLTE1IC0zLjUgLTI3LjV0LTcuNSAtMTguNWwtNCAtNXEtMTggLTE5IC01MyAtMjJoLTExNXEtNzEgLTQgLTE0NiAxNi41dC0xMzEuNSA1M3QtMTAzIDY2dC03MC41IDU3LjVsLTI1IDI0cS0xMCAxMCAtMjcuNSAzMHQtNzEuNSA5MXQtMTA2IDE1MXQtMTIyLjUgMjExdC0xMzAuNSAyNzJxLTYgMTYgLTYgMjd0MyAxNmw0IDYNCnExNSAxOSA1NyAxOWwyNzQgMnExMiAtMiAyMyAtNi41dDE2IC04LjVsNSAtM3ExNiAtMTEgMjQgLTMycTIwIC01MCA0NiAtMTAzLjV0NDEgLTgxLjVsMTYgLTI5cTI5IC02MCA1NiAtMTA0dDQ4LjUgLTY4LjV0NDEuNSAtMzguNXQzNCAtMTR0MjcgNXEyIDEgNSA1dDEyIDIydDEzLjUgNDd0OS41IDgxdDAgMTI1cS0yIDQwIC05IDczdC0xNCA0NmwtNiAxMnEtMjUgMzQgLTg1IDQzcS0xMyAyIDUgMjRxMTYgMTkgMzggMzBxNTMgMjYgMjM5IDI0DQpxODIgLTEgMTM1IC0xM3EyMCAtNSAzMy41IC0xMy41dDIwLjUgLTI0dDEwLjUgLTMydDMuNSAtNDUuNXQtMSAtNTV0LTIuNSAtNzAuNXQtMS41IC04Mi41cTAgLTExIC0xIC00MnQtMC41IC00OHQzLjUgLTQwLjV0MTEuNSAtMzl0MjIuNSAtMjQuNXE4IC0yIDE3IC00dDI2IDExdDM4IDM0LjV0NTIgNjd0NjggMTA3LjVxNjAgMTA0IDEwNyAyMjVxNCAxMCAxMCAxNy41dDExIDEwLjVsNCAzbDUgMi41dDEzIDN0MjAgMC41bDI4OCAyDQpxMzkgNSA2NCAtMi41dDMxIC0xNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0id2VpYm8iIHVuaWNvZGU9IiYjeGYxOGE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjc1IDI1MnEyMSAzNCAxMSA2OXQtNDUgNTBxLTM0IDE0IC03MyAxdC02MCAtNDZxLTIyIC0zNCAtMTMgLTY4LjV0NDMgLTUwLjV0NzQuNSAtMi41dDYyLjUgNDcuNXpNNzY5IDM3M3E4IDEzIDMuNSAyNi41dC0xNy41IDE4LjVxLTE0IDUgLTI4LjUgLTAuNXQtMjEuNSAtMTguNXEtMTcgLTMxIDEzIC00NXExNCAtNSAyOSAwLjV0MjIgMTguNXpNOTQzIDI2NnEtNDUgLTEwMiAtMTU4IC0xNTB0LTIyNCAtMTINCnEtMTA3IDM0IC0xNDcuNSAxMjYuNXQ2LjUgMTg3LjVxNDcgOTMgMTUxLjUgMTM5dDIxMC41IDE5cTExMSAtMjkgMTU4LjUgLTExOS41dDIuNSAtMTkwLjV6TTEyNTUgNDI2cS05IDk2IC04OSAxNzB0LTIwOC41IDEwOXQtMjc0LjUgMjFxLTIyMyAtMjMgLTM2OS41IC0xNDEuNXQtMTMyLjUgLTI2NC41cTkgLTk2IDg5IC0xNzB0MjA4LjUgLTEwOXQyNzQuNSAtMjFxMjIzIDIzIDM2OS41IDE0MS41dDEzMi41IDI2NC41ek0xNTYzIDQyMg0KcTAgLTY4IC0zNyAtMTM5LjV0LTEwOSAtMTM3dC0xNjguNSAtMTE3LjV0LTIyNiAtODN0LTI3MC41IC0zMXQtMjc1IDMzLjV0LTI0MC41IDkzdC0xNzEuNSAxNTF0LTY1IDE5OS41cTAgMTE1IDY5LjUgMjQ1dDE5Ny41IDI1OHExNjkgMTY5IDM0MS41IDIzNnQyNDYuNSAtN3E2NSAtNjQgMjAgLTIwOXEtNCAtMTQgLTEgLTIwdDEwIC03dDE0LjUgMC41dDEzLjUgMy41bDYgMnExMzkgNTkgMjQ2IDU5dDE1MyAtNjFxNDUgLTYzIDAgLTE3OA0KcS0yIC0xMyAtNC41IC0yMHQ0LjUgLTEyLjV0MTIgLTcuNXQxNyAtNnE1NyAtMTggMTAzIC00N3Q4MCAtODEuNXQzNCAtMTE2LjV6TTE0ODkgMTA0NnE0MiAtNDcgNTQuNSAtMTA4LjV0LTYuNSAtMTE3LjVxLTggLTIzIC0yOS41IC0zNHQtNDQuNSAtNHEtMjMgOCAtMzQgMjkuNXQtNCA0NC41cTIwIDYzIC0yNCAxMTF0LTEwNyAzNXEtMjQgLTUgLTQ1IDh0LTI1IDM3cS01IDI0IDggNDQuNXQzNyAyNS41cTYwIDEzIDExOSAtNS41dDEwMSAtNjUuNXoNCk0xNjcwIDEyMDlxODcgLTk2IDExMi41IC0yMjIuNXQtMTMuNSAtMjQxLjVxLTkgLTI3IC0zNCAtNDB0LTUyIC00dC00MCAzNHQtNSA1MnEyOCA4MiAxMCAxNzJ0LTgwIDE1OHEtNjIgNjkgLTE0OCA5NS41dC0xNzMgOC41cS0yOCAtNiAtNTIgOS41dC0zMCA0My41dDkuNSA1MS41dDQzLjUgMjkuNXExMjMgMjYgMjQ0IC0xMS41dDIwOCAtMTM0LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJyZW5yZW4iIHVuaWNvZGU9IiYjeGYxOGI7IiANCmQ9Ik0xMTMzIC0zNHEtMTcxIC05NCAtMzY4IC05NHEtMTk2IDAgLTM2NyA5NHExMzggODcgMjM1LjUgMjExdDEzMS41IDI2OHEzNSAtMTQ0IDEzMi41IC0yNjh0MjM1LjUgLTIxMXpNNjM4IDEzOTR2LTQ4NXEwIC0yNTIgLTEyNi41IC00NTkuNXQtMzMwLjUgLTMwNi41cS0xODEgMjE1IC0xODEgNDk1cTAgMTg3IDgzLjUgMzQ5LjV0MjI5LjUgMjY5LjV0MzI1IDEzN3pNMTUzNiA2MzhxMCAtMjgwIC0xODEgLTQ5NQ0KcS0yMDQgOTkgLTMzMC41IDMwNi41dC0xMjYuNSA0NTkuNXY0ODVxMTc5IC0zMCAzMjUgLTEzN3QyMjkuNSAtMjY5LjV0ODMuNSAtMzQ5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzcyIiB1bmljb2RlPSImI3hmMThjOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTE0MDIgNDMzcS0zMiAtODAgLTc2IC0xMzh0LTkxIC04OC41dC05OSAtNDYuNXQtMTAxLjUgLTE0LjV0LTk2LjUgOC41dC04Ni41IDIydC02OS41IDI3LjV0LTQ2IDIyLjVsLTE3IDEwcS0xMTMgLTIyOCAtMjg5LjUgLTM1OS41dC0zODQuNSAtMTMyLjVxLTE5IDAgLTMyIDEzdC0xMyAzMnQxMyAzMS41dDMyIDEyLjVxMTczIDEgMzIyLjUgMTA3LjV0MjUxLjUgMjk0LjVxLTM2IC0xNCAtNzIgLTIzdC04MyAtMTN0LTkxIDIuNXQtOTMgMjguNQ0KdC05MiA1OXQtODQuNSAxMDB0LTc0LjUgMTQ2cTExNCA0NyAyMTQgNTd0MTY3LjUgLTcuNXQxMjQuNSAtNTYuNXQ4OC41IC03N3Q1Ni41IC04MnE1MyAxMzEgNzkgMjkxcS03IC0xIC0xOCAtMi41dC00Ni41IC0yLjV0LTY5LjUgMC41dC04MS41IDEwdC04OC41IDIzdC04NCA0Mi41dC03NSA2NXQtNTQuNSA5NC41dC0yOC41IDEyNy41cTcwIDI4IDEzMy41IDM2LjV0MTEyLjUgLTF0OTIgLTMwdDczLjUgLTUwdDU2IC02MXQ0MiAtNjN0MjcuNSAtNTYNCnQxNiAtMzkuNWw0IC0xNnExMiAxMjIgMTIgMTk1cS04IDYgLTIxLjUgMTZ0LTQ5IDQ0LjV0LTYzLjUgNzEuNXQtNTQgOTN0LTMzIDExMi41dDEyIDEyN3Q3MCAxMzguNXE3MyAtMjUgMTI3LjUgLTYxLjV0ODQuNSAtNzYuNXQ0OCAtODV0MjAuNSAtODl0LTAuNSAtODUuNXQtMTMgLTc2LjV0LTE5IC02MnQtMTcgLTQybC03IC0xNXExIC00IDEgLTUwdC0xIC03MnEzIDcgMTAgMTguNXQzMC41IDQzdDUwLjUgNTh0NzEgNTUuNXQ5MS41IDQ0LjUNCnQxMTIgMTQuNXQxMzIuNSAtMjRxLTIgLTc4IC0yMS41IC0xNDEuNXQtNTAgLTEwNC41dC02OS41IC03MS41dC04MS41IC00NS41dC04NC41IC0yNHQtODAgLTkuNXQtNjcuNSAxdC00Ni41IDQuNWwtMTcgM3EtMjMgLTE0NyAtNzMgLTI4M3E2IDcgMTggMTguNXQ0OS41IDQxdDc3LjUgNTIuNXQ5OS41IDQydDExNy41IDIwdDEyOSAtMjMuNXQxMzcgLTc3LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJzdGFja19leGNoYW5nZSIgdW5pY29kZT0iJiN4ZjE4ZDsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMjU5IDI4M3YtNjZxMCAtODUgLTU3LjUgLTE0NC41dC0xMzguNSAtNTkuNWgtNTdsLTI2MCAtMjY5djI2OWgtNTI5cS04MSAwIC0xMzguNSA1OS41dC01Ny41IDE0NC41djY2aDEyMzh6TTEyNTkgNjA5di0yNTVoLTEyMzh2MjU1aDEyMzh6TTEyNTkgOTM3di0yNTVoLTEyMzh2MjU1aDEyMzh6TTEyNTkgMTA3N3YtNjdoLTEyMzh2NjdxMCA4NCA1Ny41IDE0My41dDEzOC41IDU5LjVoODQ2cTgxIDAgMTM4LjUgLTU5LjV0NTcuNSAtMTQzLjV6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zNzQiIHVuaWNvZGU9IiYjeGYxOGU7IiANCmQ9Ik0xMTUyIDY0MHEwIC0xNCAtOSAtMjNsLTMyMCAtMzIwcS05IC05IC0yMyAtOXEtMTMgMCAtMjIuNSA5LjV0LTkuNSAyMi41djE5MmgtMzUycS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzUydjE5MnEwIDE0IDkgMjN0MjMgOXExMiAwIDI0IC0xMGwzMTkgLTMxOXE5IC05IDkgLTIzek0xMzEyIDY0MHEwIDE0OCAtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4DQp0LTczIC0yNzN0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczdDI3MyA3M3QxOTggMTk4dDczIDI3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJhcnJvd19jaXJjbGVfYWx0X2xlZnQiIHVuaWNvZGU9IiYjeGYxOTA7IiANCmQ9Ik0xMTUyIDczNnYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMzUydi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOXEtMTIgMCAtMjQgMTBsLTMxOSAzMTlxLTkgOSAtOSAyM3Q5IDIzbDMyMCAzMjBxOSA5IDIzIDlxMTMgMCAyMi41IC05LjV0OS41IC0yMi41di0xOTJoMzUycTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXpNMTMxMiA2NDBxMCAxNDggLTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OA0KdC03MyAtMjczdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3QyNzMgNzN0MTk4IDE5OHQ3MyAyNzN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM3NiIgdW5pY29kZT0iJiN4ZjE5MTsiIA0KZD0iTTEwMjQgOTYwdi02NDBxMCAtMjYgLTE5IC00NXQtNDUgLTE5cS0yMCAwIC0zNyAxMmwtNDQ4IDMyMHEtMjcgMTkgLTI3IDUydDI3IDUybDQ0OCAzMjBxMTcgMTIgMzcgMTJxMjYgMCA0NSAtMTl0MTkgLTQ1ek0xMjgwIDE2MHY5NjBxMCAxMyAtOS41IDIyLjV0LTIyLjUgOS41aC05NjBxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di05NjBxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWg5NjBxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXoNCk0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImRvdF9jaXJjbGVfYWx0IiB1bmljb2RlPSImI3hmMTkyOyIgDQpkPSJNMTAyNCA2NDBxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1dDE4MSAtNzV0NzUgLTE4MXpNNzY4IDExODRxLTE0OCAwIC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3M3Q3MyAtMjczdDE5OCAtMTk4dDI3MyAtNzN0MjczIDczdDE5OCAxOTh0NzMgMjczdC03MyAyNzN0LTE5OCAxOTh0LTI3MyA3M3pNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjUNCnQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zNzgiIHVuaWNvZGU9IiYjeGYxOTM7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTAyMyAzNDlsMTAyIC0yMDRxLTU4IC0xNzkgLTIxMCAtMjkwdC0zMzkgLTExMXEtMTU2IDAgLTI4OC41IDc3LjV0LTIxMCAyMTB0LTc3LjUgMjg4LjVxMCAxODEgMTA0LjUgMzMwdDI3NC41IDIxMWwxNyAtMTMxcS0xMjIgLTU0IC0xOTUgLTE2NS41dC03MyAtMjQ0LjVxMCAtMTg1IDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjVxMTI2IDAgMjMyLjUgNjV0MTY1IDE3NS41dDQ5LjUgMjM2LjV6TTE1NzEgMjQ5bDU4IC0xMTRsLTI1NiAtMTI4DQpxLTEzIC03IC0yOSAtN3EtNDAgMCAtNTcgMzVsLTIzOSA0NzdoLTQ3MnEtMjQgMCAtNDIuNSAxNi41dC0yMS41IDQwLjVsLTk2IDc3OXEtMiAxNyA2IDQycTE0IDUxIDU3IDgyLjV0OTcgMzEuNXE2NiAwIDExMyAtNDd0NDcgLTExM3EwIC02OSAtNTIgLTExNy41dC0xMjAgLTQxLjVsMzcgLTI4OWg0MjN2LTEyOGgtNDA3bDE2IC0xMjhoNDU1cTQwIDAgNTcgLTM1bDIyOCAtNDU1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idmltZW9fc3F1YXJlIiB1bmljb2RlPSImI3hmMTk0OyIgDQpkPSJNMTI5MiA4OThxMTAgMjE2IC0xNjEgMjIycS0yMzEgOCAtMzEyIC0yNjFxNDQgMTkgODIgMTlxODUgMCA3NCAtOTZxLTQgLTU3IC03NCAtMTY3dC0xMDUgLTExMHEtNDMgMCAtODIgMTY5cS0xMyA1NCAtNDUgMjU1cS0zMCAxODkgLTE2MCAxNzdxLTU5IC03IC0xNjQgLTEwMGwtODEgLTcybC04MSAtNzJsNTIgLTY3cTc2IDUyIDg3IDUycTU3IDAgMTA3IC0xNzlxMTUgLTU1IDQ1IC0xNjQuNXQ0NSAtMTY0LjVxNjggLTE3OSAxNjQgLTE3OQ0KcTE1NyAwIDM4MyAyOTRxMjIwIDI4MyAyMjYgNDQ0ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zODAiIHVuaWNvZGU9IiYjeGYxOTU7IiBob3Jpei1hZHYteD0iMTE1MiIgDQpkPSJNMTE1MiA3MDRxMCAtMTkxIC05NC41IC0zNTN0LTI1Ni41IC0yNTYuNXQtMzUzIC05NC41aC0xNjBxLTE0IDAgLTIzIDl0LTkgMjN2NjExbC0yMTUgLTY2cS0zIC0xIC05IC0xcS0xMCAwIC0xOSA2cS0xMyAxMCAtMTMgMjZ2MTI4cTAgMjMgMjMgMzFsMjMzIDcxdjkzbC0yMTUgLTY2cS0zIC0xIC05IC0xcS0xMCAwIC0xOSA2cS0xMyAxMCAtMTMgMjZ2MTI4cTAgMjMgMjMgMzFsMjMzIDcxdjI1MHEwIDE0IDkgMjN0MjMgOWgxNjANCnExNCAwIDIzIC05dDkgLTIzdi0xODFsMzc1IDExNnExNSA1IDI4IC01dDEzIC0yNnYtMTI4cTAgLTIzIC0yMyAtMzFsLTM5MyAtMTIxdi05M2wzNzUgMTE2cTE1IDUgMjggLTV0MTMgLTI2di0xMjhxMCAtMjMgLTIzIC0zMWwtMzkzIC0xMjF2LTQ4N3ExODggMTMgMzE4IDE1MXQxMzAgMzI4cTAgMTQgOSAyM3QyMyA5aDE2MHExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0icGx1c19zcXVhcmVfbyIgdW5pY29kZT0iJiN4ZjE5NjsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik0xMTUyIDczNnYtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMzUydi0zNTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MzUyaC0zNTJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMzUydjM1MnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi0zNTJoMzUycTE0IDAgMjMgLTl0OSAtMjN6TTEyODAgMjg4djgzMnEwIDY2IC00NyAxMTN0LTExMyA0N2gtODMyDQpxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN2LTgzMnEwIC02NiA0NyAtMTEzdDExMyAtNDdoODMycTY2IDAgMTEzIDQ3dDQ3IDExM3pNMTQwOCAxMTIwdi04MzJxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTgzMnEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2ODMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg4MzJxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzgyIiB1bmljb2RlPSImI3hmMTk3OyIgaG9yaXotYWR2LXg9IjIxNzYiIA0KZD0iTTYyMCA0MTZxLTExMCAtNjQgLTI2OCAtNjRoLTEyOHY2NGgtNjRxLTEzIDAgLTIyLjUgMjMuNXQtOS41IDU2LjVxMCAyNCA3IDQ5cS01OCAyIC05Ni41IDEwLjV0LTM4LjUgMjAuNXQzOC41IDIwLjV0OTYuNSAxMC41cS03IDI1IC03IDQ5cTAgMzMgOS41IDU2LjV0MjIuNSAyMy41aDY0djY0aDEyOHExNTggMCAyNjggLTY0aDExMTNxNDIgLTcgMTA2LjUgLTE4dDgwLjUgLTE0cTg5IC0xNSAxNTAgLTQwLjV0ODMuNSAtNDcuNXQyMi41IC00MA0KdC0yMi41IC00MHQtODMuNSAtNDcuNXQtMTUwIC00MC41cS0xNiAtMyAtODAuNSAtMTR0LTEwNi41IC0xOGgtMTExM3pNMTczOSA2NjhxNTMgLTM2IDUzIC05MnQtNTMgLTkybDgxIC0zMHE2OCA0OCA2OCAxMjJ0LTY4IDEyMnpNNjI1IDQwMGgxMDE1cS0yMTcgLTM4IC00NTYgLTgwcS01NyAwIC0xMTMgLTI0dC04MyAtNDhsLTI4IC0yNGwtMjg4IC0yODhxLTI2IC0yNiAtNzAuNSAtNDV0LTg5LjUgLTE5aC05NmwtOTMgNDY0aDI5DQpxMTU3IDAgMjczIDY0ek0zNTIgODE2aC0yOWw5MyA0NjRoOTZxNDYgMCA5MCAtMTl0NzAgLTQ1bDI4OCAtMjg4cTQgLTQgMTEgLTEwLjV0MzAuNSAtMjN0NDguNSAtMjl0NjEuNSAtMjN0NzIuNSAtMTAuNWw0NTYgLTgwaC0xMDE1cS0xMTYgNjQgLTI3MyA2NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zODMiIHVuaWNvZGU9IiYjeGYxOTg7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTUxOSA3NjBxNjIgMCAxMDMuNSAtNDAuNXQ0MS41IC0xMDEuNXEwIC05NyAtOTMgLTEzMGwtMTcyIC01OWw1NiAtMTY3cTcgLTIxIDcgLTQ3cTAgLTU5IC00MiAtMTAydC0xMDEgLTQzcS00NyAwIC04NS41IDI3dC01My41IDcybC01NSAxNjVsLTMxMCAtMTA2bDU1IC0xNjRxOCAtMjQgOCAtNDdxMCAtNTkgLTQyIC0xMDJ0LTEwMiAtNDNxLTQ3IDAgLTg1IDI3dC01MyA3MmwtNTUgMTYzbC0xNTMgLTUzcS0yOSAtOSAtNTAgLTkNCnEtNjEgMCAtMTAxLjUgNDB0LTQwLjUgMTAxcTAgNDcgMjcuNSA4NXQ3MS41IDUzbDE1NiA1M2wtMTA1IDMxM2wtMTU2IC01NHEtMjYgLTggLTQ4IC04cS02MCAwIC0xMDEgNDAuNXQtNDEgMTAwLjVxMCA0NyAyNy41IDg1dDcxLjUgNTNsMTU3IDUzbC01MyAxNTlxLTggMjQgLTggNDdxMCA2MCA0MiAxMDIuNXQxMDIgNDIuNXE0NyAwIDg1IC0yN3Q1MyAtNzJsNTQgLTE2MGwzMTAgMTA1bC01NCAxNjBxLTggMjQgLTggNDdxMCA1OSA0Mi41IDEwMg0KdDEwMS41IDQzcTQ3IDAgODUuNSAtMjcuNXQ1My41IC03MS41bDUzIC0xNjFsMTYyIDU1cTIxIDYgNDMgNnE2MCAwIDEwMi41IC0zOS41dDQyLjUgLTk4LjVxMCAtNDUgLTMwIC04MS41dC03NCAtNTEuNWwtMTU3IC01NGwxMDUgLTMxNmwxNjQgNTZxMjQgOCA0NiA4ek03MjUgNDk4bDMxMCAxMDVsLTEwNSAzMTVsLTMxMCAtMTA3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4NCIgdW5pY29kZT0iJiN4ZjE5OTsiIA0KZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwek0xMjgwIDM1MnY0MzZxLTMxIC0zNSAtNjQgLTU1cS0zNCAtMjIgLTEzMi41IC04NXQtMTUxLjUgLTk5cS05OCAtNjkgLTE2NCAtNjl2MHYwcS02NiAwIC0xNjQgNjkNCnEtNDcgMzIgLTE0MiA5Mi41dC0xNDIgOTIuNXEtMTIgOCAtMzMgMjd0LTMxIDI3di00MzZxMCAtNDAgMjggLTY4dDY4IC0yOGg4MzJxNDAgMCA2OCAyOHQyOCA2OHpNMTI4MCA5MjVxMCA0MSAtMjcuNSA3MHQtNjguNSAyOWgtODMycS00MCAwIC02OCAtMjh0LTI4IC02OHEwIC0zNyAzMC41IC03Ni41dDY3LjUgLTY0LjVxNDcgLTMyIDEzNy41IC04OXQxMjkuNSAtODNxMyAtMiAxNyAtMTEuNXQyMSAtMTR0MjEgLTEzdDIzLjUgLTEzDQp0MjEuNSAtOS41dDIyLjUgLTcuNXQyMC41IC0yLjV0MjAuNSAyLjV0MjIuNSA3LjV0MjEuNSA5LjV0MjMuNSAxM3QyMSAxM3QyMSAxNHQxNyAxMS41bDI2NyAxNzRxMzUgMjMgNjYuNSA2Mi41dDMxLjUgNzMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zODUiIHVuaWNvZGU9IiYjeGYxOWE7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTI3IDY0MHEwIDE2MyA2NyAzMTNsMzY3IC0xMDA1cS0xOTYgOTUgLTMxNSAyODF0LTExOSA0MTF6TTE0MTUgNjc5cTAgLTE5IC0yLjUgLTM4LjV0LTEwIC00OS41dC0xMS41IC00NHQtMTcuNSAtNTl0LTE3LjUgLTU4bC03NiAtMjU2bC0yNzggODI2cTQ2IDMgODggOHExOSAyIDI2IDE4LjV0LTIuNSAzMXQtMjguNSAxMy41bC0yMDUgLTEwcS03NSAxIC0yMDIgMTBxLTEyIDEgLTIwLjUgLTV0LTExLjUgLTE1dC0xLjUgLTE4LjV0OSAtMTYuNQ0KdDE5LjUgLThsODAgLThsMTIwIC0zMjhsLTE2OCAtNTA0bC0yODAgODMycTQ2IDMgODggOHExOSAyIDI2IDE4LjV0LTIuNSAzMXQtMjguNSAxMy41bC0yMDUgLTEwcS03IDAgLTIzIDAuNXQtMjYgMC41cTEwNSAxNjAgMjc0LjUgMjUzLjV0MzY3LjUgOTMuNXExNDcgMCAyODAuNSAtNTN0MjM4LjUgLTE0OWgtMTBxLTU1IDAgLTkyIC00MC41dC0zNyAtOTUuNXEwIC0xMiAyIC0yNHQ0IC0yMS41dDggLTIzdDkgLTIxdDEyIC0yMi41dDEyLjUgLTIxDQp0MTQuNSAtMjR0MTQgLTIzcTYzIC0xMDcgNjMgLTIxMnpNOTA5IDU3M2wyMzcgLTY0N3ExIC02IDUgLTExcS0xMjYgLTQ0IC0yNTUgLTQ0cS0xMTIgMCAtMjE3IDMyek0xNTcwIDEwMDlxOTUgLTE3NCA5NSAtMzY5cTAgLTIwOSAtMTA0IC0zODUuNXQtMjc5IC0yNzguNWwyMzUgNjc4cTU5IDE2OSA1OSAyNzZxMCA0MiAtNiA3OXpNODk2IDE1MzZxMTgyIDAgMzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4dC03MSAtMzQ4dC0xOTEgLTI4Ng0KdC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTg5NiAtMjE1cTE3MyAwIDMzMS41IDY4dDI3MyAxODIuNXQxODIuNSAyNzN0NjggMzMxLjV0LTY4IDMzMS41dC0xODIuNSAyNzN0LTI3MyAxODIuNXQtMzMxLjUgNjh0LTMzMS41IC02OHQtMjczIC0xODIuNXQtMTgyLjUgLTI3M3QtNjggLTMzMS41dDY4IC0zMzEuNXQxODIuNSAtMjczDQp0MjczIC0xODIuNXQzMzEuNSAtNjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzg2IiB1bmljb2RlPSImI3hmMTliOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwODYgMTUzNnYtMTUzNmwtMjcyIC0xMjhxLTIyOCAyMCAtNDE0IDEwMnQtMjkzIDIwOC41dC0xMDcgMjcyLjVxMCAxNDAgMTAwLjUgMjYzLjV0Mjc1IDIwNS41dDM5MS41IDEwOHYtMTcycS0yMTcgLTM4IC0zNTYuNSAtMTUwdC0xMzkuNSAtMjU1cTAgLTE1MiAxNTQuNSAtMjY3dDM4OC41IC0xNDV2MTM2MHpNMTc1NSA5NTRsMzcgLTM5MGwtNTI1IDExNGwxNDcgODNxLTExOSA3MCAtMjgwIDk5djE3MnEyNzcgLTMzIDQ4MSAtMTU3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4NyIgdW5pY29kZT0iJiN4ZjE5YzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik05NjAgMTUzNmw5NjAgLTM4NHYtMTI4aC0xMjhxMCAtMjYgLTIwLjUgLTQ1dC00OC41IC0xOWgtMTUyNnEtMjggMCAtNDguNSAxOXQtMjAuNSA0NWgtMTI4djEyOHpNMjU2IDg5NmgyNTZ2LTc2OGgxMjh2NzY4aDI1NnYtNzY4aDEyOHY3NjhoMjU2di03NjhoMTI4djc2OGgyNTZ2LTc2OGg1OXEyOCAwIDQ4LjUgLTE5dDIwLjUgLTQ1di02NGgtMTY2NHY2NHEwIDI2IDIwLjUgNDV0NDguNSAxOWg1OXY3Njh6TTE4NTEgLTY0DQpxMjggMCA0OC41IC0xOXQyMC41IC00NXYtMTI4aC0xOTIwdjEyOHEwIDI2IDIwLjUgNDV0NDguNSAxOWgxNzgyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4OCIgdW5pY29kZT0iJiN4ZjE5ZDsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0xNzc0IDcwMGwxOCAtMzE2cTQgLTY5IC04MiAtMTI4dC0yMzUgLTkzLjV0LTMyMyAtMzQuNXQtMzIzIDM0LjV0LTIzNSA5My41dC04MiAxMjhsMTggMzE2bDU3NCAtMTgxcTIyIC03IDQ4IC03dDQ4IDd6TTIzMDQgMTAyNHEwIC0yMyAtMjIgLTMxbC0xMTIwIC0zNTJxLTQgLTEgLTEwIC0xdC0xMCAxbC02NTIgMjA2cS00MyAtMzQgLTcxIC0xMTEuNXQtMzQgLTE3OC41cTYzIC0zNiA2MyAtMTA5cTAgLTY5IC01OCAtMTA3bDU4IC00MzMNCnEyIC0xNCAtOCAtMjVxLTkgLTExIC0yNCAtMTFoLTE5MnEtMTUgMCAtMjQgMTFxLTEwIDExIC04IDI1bDU4IDQzM3EtNTggMzggLTU4IDEwN3EwIDczIDY1IDExMXExMSAyMDcgOTggMzMwbC0zMzMgMTA0cS0yMiA4IC0yMiAzMXQyMiAzMWwxMTIwIDM1MnE0IDEgMTAgMXQxMCAtMWwxMTIwIC0zNTJxMjIgLTggMjIgLTMxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM4OSIgdW5pY29kZT0iJiN4ZjE5ZTsiIA0KZD0iTTg1OSA1NzlsMTMgLTcwN3EtNjIgMTEgLTEwNSAxMXEtNDEgMCAtMTA1IC0xMWwxMyA3MDdxLTQwIDY5IC0xNjguNSAyOTUuNXQtMjE2LjUgMzc0LjV0LTE4MSAyODdxNTggLTE1IDEwOCAtMTVxNDQgMCAxMTEgMTVxNjMgLTExMSAxMzMuNSAtMjI5LjV0MTY3IC0yNzYuNXQxMzguNSAtMjI3cTM3IDYxIDEwOS41IDE3Ny41dDExNy41IDE5MHQxMDUgMTc2dDEwNyAxODkuNXE1NCAtMTQgMTA3IC0xNHE1NiAwIDExNCAxNHYwDQpxLTI4IC0zOSAtNjAgLTg4LjV0LTQ5LjUgLTc4LjV0LTU2LjUgLTk2dC00OSAtODRxLTE0NiAtMjQ4IC0zNTMgLTYxMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxQTAiIHVuaWNvZGU9IiYjeGYxYTA7IiANCmQ9Ik03NjggNzUwaDcyNXExMiAtNjcgMTIgLTEyOHEwIC0yMTcgLTkxIC0zODcuNXQtMjU5LjUgLTI2Ni41dC0zODYuNSAtOTZxLTE1NyAwIC0yOTkgNjAuNXQtMjQ1IDE2My41dC0xNjMuNSAyNDV0LTYwLjUgMjk5dDYwLjUgMjk5dDE2My41IDI0NXQyNDUgMTYzLjV0Mjk5IDYwLjVxMzAwIDAgNTE1IC0yMDFsLTIwOSAtMjAxcS0xMjMgMTE5IC0zMDYgMTE5cS0xMjkgMCAtMjM4LjUgLTY1dC0xNzMuNSAtMTc2LjV0LTY0IC0yNDMuNQ0KdDY0IC0yNDMuNXQxNzMuNSAtMTc2LjV0MjM4LjUgLTY1cTg3IDAgMTYwIDI0dDEyMCA2MHQ4MiA4MnQ1MS41IDg3dDIyLjUgNzhoLTQzNnYyNjR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMWExIiB1bmljb2RlPSImI3hmMWExOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwOTUgMzY5cTE2IC0xNiAwIC0zMXEtNjIgLTYyIC0xOTkgLTYydC0xOTkgNjJxLTE2IDE1IDAgMzFxNiA2IDE1IDZ0MTUgLTZxNDggLTQ5IDE2OSAtNDlxMTIwIDAgMTY5IDQ5cTYgNiAxNSA2dDE1IC02ek03ODggNTUwcTAgLTM3IC0yNiAtNjN0LTYzIC0yNnQtNjMuNSAyNnQtMjYuNSA2M3EwIDM4IDI2LjUgNjR0NjMuNSAyNnQ2MyAtMjYuNXQyNiAtNjMuNXpNMTE4MyA1NTBxMCAtMzcgLTI2LjUgLTYzdC02My41IC0yNnQtNjMgMjYNCnQtMjYgNjN0MjYgNjMuNXQ2MyAyNi41dDYzLjUgLTI2dDI2LjUgLTY0ek0xNDM0IDY3MHEwIDQ5IC0zNSA4NHQtODUgMzV0LTg2IC0zNnEtMTMwIDkwIC0zMTEgOTZsNjMgMjgzbDIwMCAtNDVxMCAtMzcgMjYgLTYzdDYzIC0yNnQ2My41IDI2LjV0MjYuNSA2My41dC0yNi41IDYzLjV0LTYzLjUgMjYuNXEtNTQgMCAtODAgLTUwbC0yMjEgNDlxLTE5IDUgLTI1IC0xNmwtNjkgLTMxMnEtMTgwIC03IC0zMDkgLTk3cS0zNSAzNyAtODcgMzcNCnEtNTAgMCAtODUgLTM1dC0zNSAtODRxMCAtMzUgMTguNSAtNjR0NDkuNSAtNDRxLTYgLTI3IC02IC01NnEwIC0xNDIgMTQwIC0yNDN0MzM3IC0xMDFxMTk4IDAgMzM4IDEwMXQxNDAgMjQzcTAgMzIgLTcgNTdxMzAgMTUgNDggNDMuNXQxOCA2My41ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MQ0KdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzkyIiB1bmljb2RlPSImI3hmMWEyOyIgDQpkPSJNOTM5IDQwN3ExMyAtMTMgMCAtMjZxLTUzIC01MyAtMTcxIC01M3QtMTcxIDUzcS0xMyAxMyAwIDI2cTUgNiAxMyA2dDEzIC02cTQyIC00MiAxNDUgLTQydDE0NSA0MnE1IDYgMTMgNnQxMyAtNnpNNjc2IDU2M3EwIC0zMSAtMjMgLTU0dC01NCAtMjN0LTU0IDIzdC0yMyA1NHEwIDMyIDIyLjUgNTQuNXQ1NC41IDIyLjV0NTQuNSAtMjIuNXQyMi41IC01NC41ek0xMDE0IDU2M3EwIC0zMSAtMjMgLTU0dC01NCAtMjN0LTU0IDIzdC0yMyA1NA0KcTAgMzIgMjIuNSA1NC41dDU0LjUgMjIuNXQ1NC41IC0yMi41dDIyLjUgLTU0LjV6TTEyMjkgNjY2cTAgNDIgLTMwIDcydC03MyAzMHEtNDIgMCAtNzMgLTMxcS0xMTMgNzggLTI2NyA4Mmw1NCAyNDNsMTcxIC0zOXExIC0zMiAyMy41IC01NHQ1My41IC0yMnEzMiAwIDU0LjUgMjIuNXQyMi41IDU0LjV0LTIyLjUgNTQuNXQtNTQuNSAyMi41cS00OCAwIC02OSAtNDNsLTE4OSA0MnEtMTcgNSAtMjEgLTEzbC02MCAtMjY4cS0xNTQgLTYgLTI2NSAtODMNCnEtMzAgMzIgLTc0IDMycS00MyAwIC03MyAtMzB0LTMwIC03MnEwIC0zMCAxNiAtNTV0NDIgLTM4cS01IC0yNSAtNSAtNDhxMCAtMTIyIDEyMCAtMjA4LjV0Mjg5IC04Ni41cTE3MCAwIDI5MCA4Ni41dDEyMCAyMDguNXEwIDI1IC02IDQ5cTI1IDEzIDQwLjUgMzcuNXQxNS41IDU0LjV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MA0KcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzkzIiB1bmljb2RlPSImI3hmMWEzOyIgDQpkPSJNODY2IDY5N2w5MCAyN3Y2MnEwIDc5IC01OCAxMzV0LTEzOCA1NnQtMTM4IC01NS41dC01OCAtMTM0LjV2LTI4M3EwIC0yMCAtMTQgLTMzLjV0LTMzIC0xMy41dC0zMi41IDEzLjV0LTEzLjUgMzMuNXYxMjBoLTE1MXYtMTIycTAgLTgyIDU3LjUgLTEzOXQxMzkuNSAtNTdxODEgMCAxMzguNSA1Ni41dDU3LjUgMTM2LjV2MjgwcTAgMTkgMTMuNSAzM3QzMy41IDE0cTE5IDAgMzIuNSAtMTR0MTMuNSAtMzN2LTU0ek0xMTk5IDUwMnYxMjJoLTE1MA0Kdi0xMjZxMCAtMjAgLTEzLjUgLTMzLjV0LTMzLjUgLTEzLjVxLTE5IDAgLTMyLjUgMTR0LTEzLjUgMzN2MTIzbC05MCAtMjZsLTYwIDI4di0xMjNxMCAtODAgNTggLTEzN3QxMzkgLTU3dDEzOC41IDU3dDU3LjUgMTM5ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDMNCnQzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjFhNCIgdW5pY29kZT0iJiN4ZjFhNDsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xMDYyIDgyNHYxMThxMCA0MiAtMzAgNzJ0LTcyIDMwdC03MiAtMzB0LTMwIC03MnYtNjEycTAgLTE3NSAtMTI2IC0yOTl0LTMwMyAtMTI0cS0xNzggMCAtMzAzLjUgMTI1LjV0LTEyNS41IDMwMy41djI2NmgzMjh2LTI2MnEwIC00MyAzMCAtNzIuNXQ3MiAtMjkuNXQ3MiAyOS41dDMwIDcyLjV2NjIwcTAgMTcxIDEyNi41IDI5MnQzMDEuNSAxMjFxMTc2IDAgMzAyIC0xMjJ0MTI2IC0yOTR2LTEzNmwtMTk1IC01OHpNMTU5MiA2MDJoMzI4DQp2LTI2NnEwIC0xNzggLTEyNS41IC0zMDMuNXQtMzAzLjUgLTEyNS41cS0xNzcgMCAtMzAzIDEyNC41dC0xMjYgMzAwLjV2MjY4bDEzMSAtNjFsMTk1IDU4di0yNzBxMCAtNDIgMzAgLTcxLjV0NzIgLTI5LjV0NzIgMjkuNXQzMCA3MS41djI3NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zOTUiIHVuaWNvZGU9IiYjeGYxYTU7IiANCmQ9Ik0xNDcyIDE2MHY0ODBoLTcwNHY3MDRoLTQ4MHEtOTMgMCAtMTU4LjUgLTY1LjV0LTY1LjUgLTE1OC41di00ODBoNzA0di03MDRoNDgwcTkzIDAgMTU4LjUgNjUuNXQ2NS41IDE1OC41ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNQ0KdDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzM5NiIgdW5pY29kZT0iJiN4ZjFhNjsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0zMjggMTI1NGgyMDR2LTk4M2gtNTMydjY5N2gzMjh2Mjg2ek0zMjggNDM1djM2OWgtMTIzdi0zNjloMTIzek02MTQgOTY4di02OTdoMjA1djY5N2gtMjA1ek02MTQgMTI1NHYtMjA0aDIwNXYyMDRoLTIwNXpNOTAxIDk2OGg1MzN2LTk0MmgtNTMzdjE2M2gzMjh2ODJoLTMyOHY2OTd6TTEyMjkgNDM1djM2OWgtMTIzdi0zNjloMTIzek0xNTE2IDk2OGg1MzJ2LTk0MmgtNTMydjE2M2gzMjd2ODJoLTMyN3Y2OTd6TTE4NDMgNDM1djM2OWgtMTIzDQp2LTM2OWgxMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzk3IiB1bmljb2RlPSImI3hmMWE3OyIgDQpkPSJNMTA0NiA1MTZxMCAtNjQgLTM4IC0xMDl0LTkxIC00NXEtNDMgMCAtNzAgMTV2Mjc3cTI4IDE3IDcwIDE3cTUzIDAgOTEgLTQ1LjV0MzggLTEwOS41ek03MDMgOTQ0cTAgLTY0IC0zOCAtMTA5LjV0LTkxIC00NS41cS00MyAwIC03MCAxNXYyNzdxMjggMTcgNzAgMTdxNTMgMCA5MSAtNDV0MzggLTEwOXpNMTI2NSA1MTNxMCAxMzQgLTg4IDIyOXQtMjEzIDk1cS0yMCAwIC0zOSAtM3EtMjMgLTc4IC03OCAtMTM2cS04NyAtOTUgLTIxMSAtMTAxDQp2LTYzNmwyMTEgNDF2MjA2cTUxIC0xOSAxMTcgLTE5cTEyNSAwIDIxMyA5NXQ4OCAyMjl6TTkyMiA5NDBxMCAxMzQgLTg4LjUgMjI5dC0yMTMuNSA5NXEtNzQgMCAtMTQxIC0zNmgtMTg2di04NDBsMjExIDQxdjIwNnE1NSAtMTkgMTE2IC0xOXExMjUgMCAyMTMuNSA5NXQ4OC41IDIyOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwDQpxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il8zOTgiIHVuaWNvZGU9IiYjeGYxYTg7IiBob3Jpei1hZHYteD0iMjAzOCIgDQpkPSJNMTIyMiA2MDdxNzUgMyAxNDMuNSAtMjAuNXQxMTggLTU4LjV0MTAxIC05NC41dDg0IC0xMDh0NzUuNSAtMTIwLjVxMzMgLTU2IDc4LjUgLTEwOXQ3NS41IC04MC41dDk5IC04OC41cS00OCAtMzAgLTEwOC41IC01Ny41dC0xMzguNSAtNTl0LTExNCAtNDcuNXEtNDQgMzcgLTc0IDExNXQtNDMuNSAxNjQuNXQtMzMgMTgwLjV0LTQyLjUgMTY4LjV0LTcyLjUgMTIzdC0xMjIuNSA0OC41bC0xMCAtMmwtNiAtNHE0IC01IDEzIC0xNA0KcTYgLTUgMjggLTIzLjV0MjUuNSAtMjJ0MTkgLTE4dDE4IC0yMC41dDExLjUgLTIxdDEwLjUgLTI3LjV0NC41IC0zMXQ0IC00MC41bDEgLTMzcTEgLTI2IC0yLjUgLTU3LjV0LTcuNSAtNTJ0LTEyLjUgLTU4LjV0LTExLjUgLTUzcS0zNSAxIC0xMDEgLTkuNXQtOTggLTEwLjVxLTM5IDAgLTcyIDEwcS0yIDE2IC0yIDQ3cTAgNzQgMyA5NnEyIDEzIDMxLjUgNDEuNXQ1NyA1OXQyNi41IDUxLjVxLTI0IDIgLTQzIC0yNA0KcS0zNiAtNTMgLTExMS41IC05OS41dC0xMzYuNSAtNDYuNXEtMjUgMCAtNzUuNSA2M3QtMTA2LjUgMTM5LjV0LTg0IDk2LjVxLTYgNCAtMjcgMzBxLTQ4MiAtMTEyIC01MTMgLTExMnEtMTYgMCAtMjggMTF0LTEyIDI3cTAgMTUgOC41IDI2LjV0MjIuNSAxNC41bDQ4NiAxMDZxLTggMTQgLTggMjV0NS41IDE3LjV0MTYgMTEuNXQyMCA3dDIzIDQuNXQxOC41IDQuNXE0IDEgMTUuNSA3LjV0MTcuNSA2LjVxMTUgMCAyOCAtMTZ0MjAgLTMzDQpxMTYzIDM3IDE3MiAzN3ExNyAwIDI5LjUgLTExdDEyLjUgLTI4cTAgLTE1IC04LjUgLTI2dC0yMy41IC0xNGwtMTgyIC00MGwtMSAtMTZxLTEgLTI2IDgxLjUgLTExNy41dDEwNC41IC05MS41cTQ3IDAgMTE5IDgwdDcyIDEyOXEwIDM2IC0yMy41IDUzdC01MSAxOC41dC01MSAxMS41dC0yMy41IDM0cTAgMTYgMTAgMzRsLTY4IDE5cTQzIDQ0IDQzIDExN3EwIDI2IC01IDU4cTgyIDE2IDE0NCAxNnE0NCAwIDcxLjUgLTEuNXQ0OC41IC04LjUNCnQzMSAtMTMuNXQyMC41IC0yNC41dDE1LjUgLTMzLjV0MTcgLTQ3LjV0MjQgLTYwbDUwIDI1cS0zIC00MCAtMjMgLTYwdC00Mi41IC0yMXQtNDAgLTYuNXQtMTYuNSAtMjAuNXpNMTI4MiA4NDJxLTUgNSAtMTMuNSAxNS41dC0xMiAxNC41dC0xMC41IDExLjV0LTEwIDEwLjVsLTggOHQtOC41IDcuNXQtOCA1dC04LjUgNC41cS03IDMgLTE0LjUgNXQtMjAuNSAyLjV0LTIyIDAuNWgtMzIuNWgtMzcuNXEtMTI2IDAgLTIxNyAtNDMNCnExNiAzMCAzNiA0Ni41dDU0IDI5LjV0NjUuNSAzNnQ0NiAzNi41dDUwIDU1dDQzLjUgNTAuNXExMiAtOSAyOCAtMzEuNXQzMiAtMzYuNXQzOCAtMTNsMTIgMXYtNzZsMjIgLTFxMjQ3IDk1IDM3MSAxOTBxMjggMjEgNTAgMzl0NDIuNSAzNy41dDMzIDMxdDI5LjUgMzR0MjQgMzF0MjQuNSAzN3QyMyAzOHQyNyA0Ny41dDI5LjUgNTNsNyA5cS0yIC01MyAtNDMgLTEzOXEtNzkgLTE2NSAtMjA1IC0yNjR0LTMwNiAtMTQycS0xNCAtMyAtNDIgLTcuNQ0KdC01MCAtOS41dC0zOSAtMTRxMyAtMTkgMjQuNSAtNDZ0MjEuNSAtMzRxMCAtMTEgLTI2IC0zMHpNMTA2MSAtNzlxMzkgMjYgMTMxLjUgNDcuNXQxNDYuNSAyMS41cTkgMCAyMi41IC0xNS41dDI4IC00Mi41dDI2IC01MHQyNCAtNTF0MTQuNSAtMzNxLTEyMSAtNDUgLTI0NCAtNDVxLTYxIDAgLTEyNSAxMXpNODIyIDU2OGw0OCAxMmwxMDkgLTE3N2wtNzMgLTQ4ek0xMzIzIDUxcTMgLTE1IDMgLTE2cTAgLTcgLTE3LjUgLTE0LjV0LTQ2IC0xMw0KdC01NCAtOS41dC01My41IC03LjV0LTMyIC00LjVsLTcgNDNxMjEgMiA2MC41IDguNXQ3MiAxMHQ2MC41IDMuNWgxNHpNODY2IDY3OWwtOTYgLTIwbC02IDE3cTEwIDEgMzIuNSA3dDM0LjUgNnExOSAwIDM1IC0xMHpNMTA2MSA0NWgzMWwxMCAtODNsLTQxIC0xMnY5NXpNMTk1MCAxNTM1djF2LTF6TTE5NTAgMTUzNWwtMSAtNWwtMiAtMmwxIDN6TTE5NTAgMTUzNWwxIDF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfMzk5IiB1bmljb2RlPSImI3hmMWE5OyIgDQpkPSJNMTE2NyAtNTBxLTUgMTkgLTI0IDVxLTMwIC0yMiAtODcgLTM5dC0xMzEgLTE3cS0xMjkgMCAtMTkzIDQ5cS01IDQgLTEzIDRxLTExIDAgLTI2IC0xMnEtNyAtNiAtNy41IC0xNnQ3LjUgLTIwcTM0IC0zMiA4Ny41IC00NnQxMDIuNSAtMTIuNXQ5OSA0LjVxNDEgNCA4NC41IDIwLjV0NjUgMzB0MjguNSAyMC41cTEyIDEyIDcgMjl6TTExMjggNjVxLTE5IDQ3IC0zOSA2MXEtMjMgMTUgLTc2IDE1cS00NyAwIC03MSAtMTANCnEtMjkgLTEyIC03OCAtNTZxLTI2IC0yNCAtMTIgLTQ0cTkgLTggMTcuNSAtNC41dDMxLjUgMjMuNXEzIDIgMTAuNSA4LjV0MTAuNSA4LjV0MTAgN3QxMS41IDd0MTIuNSA1dDE1IDQuNXQxNi41IDIuNXQyMC41IDFxMjcgMCA0NC41IC03LjV0MjMgLTE0LjV0MTMuNSAtMjJxMTAgLTE3IDEyLjUgLTIwdDEyLjUgMXEyMyAxMiAxNCAzNHpNMTQ4MyAzNDZxMCAyMiAtNSA0NC41dC0xNi41IDQ1dC0zNCAzNi41dC01Mi41IDE0DQpxLTMzIDAgLTk3IC00MS41dC0xMjkgLTgzLjV0LTEwMSAtNDJxLTI3IC0xIC02My41IDE5dC03NiA0OXQtODMuNSA1OHQtMTAwIDQ5dC0xMTEgMTlxLTExNSAtMSAtMTk3IC03OC41dC04NCAtMTc4LjVxLTIgLTExMiA3NCAtMTY0cTI5IC0yMCA2Mi41IC0yOC41dDEwMy41IC04LjVxNTcgMCAxMzIgMzIuNXQxMzQgNzF0MTIwIDcwLjV0OTMgMzFxMjYgLTEgNjUgLTMxLjV0NzEuNSAtNjd0NjggLTY3LjV0NTUuNSAtMzJxMzUgLTMgNTguNSAxNA0KdDU1LjUgNjNxMjggNDEgNDIuNSAxMDF0MTQuNSAxMDZ6TTE1MzYgNTA2cTAgLTE2NCAtNjIgLTMwNC41dC0xNjYgLTIzNnQtMjQyLjUgLTE0OS41dC0yOTAuNSAtNTR0LTI5MyA1Ny41dC0yNDcuNSAxNTd0LTE3MC41IDI0MS41dC02NCAzMDJxMCA4OSAxOS41IDE3Mi41dDQ5IDE0NS41dDcwLjUgMTE4LjV0NzguNSA5NHQ3OC41IDY5LjV0NjQuNSA0Ni41dDQyLjUgMjQuNXExNCA4IDUxIDI2LjV0NTQuNSAyOC41dDQ4IDMwdDYwLjUgNDQNCnEzNiAyOCA1OCA3Mi41dDMwIDEyNS41cTEyOSAtMTU1IDE4NiAtMTkzcTQ0IC0yOSAxMzAgLTY4dDEyOSAtNjZxMjEgLTEzIDM5IC0yNXQ2MC41IC00Ni41dDc2IC03MC41dDc1IC05NXQ2OSAtMTIydDQ3IC0xNDguNXQxOS41IC0xNzcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MDAiIHVuaWNvZGU9IiYjeGYxYWE7IiANCmQ9Ik0xMDcwIDQ2M2wtMTYwIC0xNjBsLTE1MSAtMTUybC0zMCAtMzBxLTY1IC02NCAtMTUxLjUgLTg3dC0xNzEuNSAtMnEtMTYgLTcwIC03MiAtMTE1dC0xMjkgLTQ1cS04NSAwIC0xNDUgNjAuNXQtNjAgMTQ1LjVxMCA3MiA0NC41IDEyOHQxMTMuNSA3MnEtMjIgODYgMSAxNzN0ODggMTUybDEyIDEybDE1MSAtMTUybC0xMSAtMTFxLTM3IC0zNyAtMzcgLTg5dDM3IC05MHEzNyAtMzcgODkgLTM3dDg5IDM3bDMwIDMwbDE1MSAxNTJsMTYxIDE2MHoNCk03MjkgMTE0NWwxMiAtMTJsLTE1MiAtMTUybC0xMiAxMnEtMzcgMzcgLTg5IDM3dC04OSAtMzd0LTM3IC04OS41dDM3IC04OS41bDI5IC0yOWwxNTIgLTE1MmwxNjAgLTE2MGwtMTUxIC0xNTJsLTE2MSAxNjBsLTE1MSAxNTJsLTMwIDMwcS02OCA2NyAtOTAgMTU5LjV0NSAxNzkuNXEtNzAgMTUgLTExNSA3MXQtNDUgMTI5cTAgODUgNjAgMTQ1LjV0MTQ1IDYwLjVxNzYgMCAxMzMuNSAtNDl0NjkuNSAtMTIzcTg0IDIwIDE2OS41IC0zLjUNCnQxNDkuNSAtODcuNXpNMTUzNiA3OHEwIC04NSAtNjAgLTE0NS41dC0xNDUgLTYwLjVxLTc0IDAgLTEzMSA0N3QtNzEgMTE4cS04NiAtMjggLTE3OS41IC02dC0xNjEuNSA5MGwtMTEgMTJsMTUxIDE1MmwxMiAtMTJxMzcgLTM3IDg5IC0zN3Q4OSAzN3QzNyA4OXQtMzcgODlsLTMwIDMwbC0xNTIgMTUybC0xNjAgMTYwbDE1MiAxNTJsMTYwIC0xNjBsMTUyIC0xNTJsMjkgLTMwcTY0IC02NCA4Ny41IC0xNTAuNXQyLjUgLTE3MS41DQpxNzYgLTExIDEyNi41IC02OC41dDUwLjUgLTEzNC41ek0xNTM0IDEyMDJxMCAtNzcgLTUxIC0xMzV0LTEyNyAtNjlxMjYgLTg1IDMgLTE3Ni41dC05MCAtMTU4LjVsLTEyIC0xMmwtMTUxIDE1MmwxMiAxMnEzNyAzNyAzNyA4OXQtMzcgODl0LTg5IDM3dC04OSAtMzdsLTMwIC0zMGwtMTUyIC0xNTJsLTE2MCAtMTYwbC0xNTIgMTUybDE2MSAxNjBsMTUyIDE1MmwyOSAzMHE2NyA2NyAxNTkgODkuNXQxNzggLTMuNXExMSA3NSA2OC41IDEyNg0KdDEzNS41IDUxcTg1IDAgMTQ1IC02MC41dDYwIC0xNDUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxYWIiIHVuaWNvZGU9IiYjeGYxYWI7IiANCmQ9Ik02NTQgNDU4cS0xIC0zIC0xMi41IDAuNXQtMzEuNSAxMS41bC0yMCA5cS00NCAyMCAtODcgNDlxLTcgNSAtNDEgMzEuNXQtMzggMjguNXEtNjcgLTEwMyAtMTM0IC0xODFxLTgxIC05NSAtMTA1IC0xMTBxLTQgLTIgLTE5LjUgLTR0LTE4LjUgMHE2IDQgODIgOTJxMjEgMjQgODUuNSAxMTV0NzguNSAxMThxMTcgMzAgNTEgOTguNXQzNiA3Ny41cS04IDEgLTExMCAtMzNxLTggLTIgLTI3LjUgLTcuNXQtMzQuNSAtOS41dC0xNyAtNQ0KcS0yIC0yIC0yIC0xMC41dC0xIC05LjVxLTUgLTEwIC0zMSAtMTVxLTIzIC03IC00NyAwcS0xOCA0IC0yOCAyMXEtNCA2IC01IDIzcTYgMiAyNC41IDV0MjkuNSA2cTU4IDE2IDEwNSAzMnExMDAgMzUgMTAyIDM1cTEwIDIgNDMgMTkuNXQ0NCAyMS41cTkgMyAyMS41IDh0MTQuNSA1LjV0NiAtMC41cTIgLTEyIC0xIC0zM3EwIC0yIC0xMi41IC0yN3QtMjYuNSAtNTMuNXQtMTcgLTMzLjVxLTI1IC01MCAtNzcgLTEzMWw2NCAtMjgNCnExMiAtNiA3NC41IC0zMnQ2Ny41IC0yOHE0IC0xIDEwLjUgLTI1LjV0NC41IC0zMC41ek00NDkgOTQ0cTMgLTE1IC00IC0yOHEtMTIgLTIzIC01MCAtMzhxLTMwIC0xMiAtNjAgLTEycS0yNiAzIC00OSAyNnEtMTQgMTUgLTE4IDQxbDEgM3EzIC0zIDE5LjUgLTV0MjYuNSAwdDU4IDE2cTM2IDEyIDU1IDE0cTE3IDAgMjEgLTE3ek0xMTQ3IDgxNWw2MyAtMjI3bC0xMzkgNDJ6TTM5IDE1bDY5NCAyMzJ2MTAzMmwtNjk0IC0yMzN2LTEwMzF6DQpNMTI4MCAzMzJsMTAyIC0zMWwtMTgxIDY1N2wtMTAwIDMxbC0yMTYgLTUzNmwxMDIgLTMxbDQ1IDExMGwyMTEgLTY1ek03NzcgMTI5NGw1NzMgLTE4NHYzODB6TTEwODggLTI5bDE1OCAtMTNsLTU0IC0xNjBsLTQwIDY2cS0xMzAgLTgzIC0yNzYgLTEwOHEtNTggLTEyIC05MSAtMTJoLTg0cS03OSAwIC0xOTkuNSAzOXQtMTgzLjUgODVxLTggNyAtOCAxNnEwIDggNSAxMy41dDEzIDUuNXE0IDAgMTggLTcuNXQzMC41IC0xNi41dDIwLjUgLTExDQpxNzMgLTM3IDE1OS41IC02MS41dDE1Ny41IC0yNC41cTk1IDAgMTY3IDE0LjV0MTU3IDUwLjVxMTUgNyAzMC41IDE1LjV0MzQgMTl0MjguNSAxNi41ek0xNTM2IDEwNTB2LTEwNzlsLTc3NCAyNDZxLTE0IC02IC0zNzUgLTEyNy41dC0zNjggLTEyMS41cS0xMyAwIC0xOCAxM3EwIDEgLTEgM3YxMDc4cTMgOSA0IDEwcTUgNiAyMCAxMXExMDcgMzYgMTQ5IDUwdjM4NGw1NTggLTE5OHEyIDAgMTYwLjUgNTV0MzE2IDEwOC41dDE2MS41IDUzLjUNCnEyMCAwIDIwIC0yMXYtNDE4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwMiIgdW5pY29kZT0iJiN4ZjFhYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0yODggMTE1MnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTI4cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxMDg4cTAgNjYgNDcgMTEzdDExMyA0N2gxMjh6TTE2NjQgOTg5cTU4IC0zNCA5MyAtOTN0MzUgLTEyOHYtNzY4cTAgLTEwNiAtNzUgLTE4MXQtMTgxIC03NWgtODY0cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxNTM2cTAgNDAgMjggNjh0NjggMjhoNjcycTQwIDAgODggLTIwdDc2IC00OA0KbDE1MiAtMTUycTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xNjN6TTkyOCAwdjEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjhxLTE0IDAgLTIzIC05dC05IC0yM3YtMTI4cTAgLTE0IDkgLTIzdDIzIC05aDEyOHExNCAwIDIzIDl0OSAyM3pNOTI4IDI1NnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTkyOCA1MTJ2MTI4cTAgMTQgLTkgMjMNCnQtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTExODQgMHYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTExODQgMjU2djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjhxLTE0IDAgLTIzIC05dC05IC0yM3YtMTI4cTAgLTE0IDkgLTIzdDIzIC05aDEyOA0KcTE0IDAgMjMgOXQ5IDIzek0xMTg0IDUxMnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE0NDAgMHYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE0NDAgMjU2djEyOHEwIDE0IC05IDIzdC0yMyA5aC0xMjgNCnEtMTQgMCAtMjMgLTl0LTkgLTIzdi0xMjhxMCAtMTQgOSAtMjN0MjMgLTloMTI4cTE0IDAgMjMgOXQ5IDIzek0xNDQwIDUxMnYxMjhxMCAxNCAtOSAyM3QtMjMgOWgtMTI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTEyOHEwIC0xNCA5IC0yM3QyMyAtOWgxMjhxMTQgMCAyMyA5dDkgMjN6TTE1MzYgODk2djI1NmgtMTYwcS00MCAwIC02OCAyOHQtMjggNjh2MTYwaC02NDB2LTUxMmg4OTZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDAzIiB1bmljb2RlPSImI3hmMWFkOyIgDQpkPSJNMTM0NCAxNTM2cTI2IDAgNDUgLTE5dDE5IC00NXYtMTY2NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyODBxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNjY0cTAgMjYgMTkgNDV0NDUgMTloMTI4MHpNNTEyIDEyNDh2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzdjY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN6TTUxMiA5OTJ2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOQ0KdDkgMjN2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNNTEyIDczNnYtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNNTEyIDQ4MHYtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3pNMzg0IDE2MHY2NA0KcTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0zODQgNDE2djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0zODQgNjcydjY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0DQpxMTQgMCAyMyA5dDkgMjN6TTM4NCA5Mjh2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTM4NCAxMTg0djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgLTk2djE5MnEwIDE0IC05IDIzdC0yMyA5aC0zMjBxLTE0IDAgLTIzIC05DQp0LTkgLTIzdi0xOTJxMCAtMTQgOSAtMjN0MjMgLTloMzIwcTE0IDAgMjMgOXQ5IDIzek04OTYgNDE2djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgNjcydjY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek04OTYgOTI4djY0DQpxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTg5NiAxMTg0djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0xMTUyIDE2MHY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NA0KcTE0IDAgMjMgOXQ5IDIzek0xMTUyIDQxNnY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTE1MiA2NzJ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTExNTIgOTI4djY0cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOQ0KdC05IC0yM3YtNjRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTExNTIgMTE4NHY2NHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MDQiIHVuaWNvZGU9IiYjeGYxYWU7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTE4OCA5ODhsLTI5MiAtMjkydi04MjRxMCAtNDYgLTMzIC03OXQtNzkgLTMzdC03OSAzM3QtMzMgNzl2Mzg0aC02NHYtMzg0cTAgLTQ2IC0zMyAtNzl0LTc5IC0zM3QtNzkgMzN0LTMzIDc5djgyNGwtMjkyIDI5MnEtMjggMjggLTI4IDY4dDI4IDY4cTI5IDI4IDY4LjUgMjh0NjcuNSAtMjhsMjI4IC0yMjhoMzY4bDIyOCAyMjhxMjggMjggNjggMjh0NjggLTI4cTI4IC0yOSAyOCAtNjguNXQtMjggLTY3LjV6TTg2NCAxMTUyDQpxMCAtOTMgLTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNXQtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUIxIiB1bmljb2RlPSImI3hmMWIwOyIgaG9yaXotYWR2LXg9IjE2NjQiIA0KZD0iTTc4MCAxMDY0cTAgLTYwIC0xOSAtMTEzLjV0LTYzIC05Mi41dC0xMDUgLTM5cS03NiAwIC0xMzggNTcuNXQtOTIgMTM1LjV0LTMwIDE1MXEwIDYwIDE5IDExMy41dDYzIDkyLjV0MTA1IDM5cTc3IDAgMTM4LjUgLTU3LjV0OTEuNSAtMTM1dDMwIC0xNTEuNXpNNDM4IDU4MXEwIC04MCAtNDIgLTEzOXQtMTE5IC01OXEtNzYgMCAtMTQxLjUgNTUuNXQtMTAwLjUgMTMzLjV0LTM1IDE1MnEwIDgwIDQyIDEzOS41dDExOSA1OS41DQpxNzYgMCAxNDEuNSAtNTUuNXQxMDAuNSAtMTM0dDM1IC0xNTIuNXpNODMyIDYwOHExMTggMCAyNTUgLTk3LjV0MjI5IC0yMzd0OTIgLTI1NC41cTAgLTQ2IC0xNyAtNzYuNXQtNDguNSAtNDV0LTY0LjUgLTIwdC03NiAtNS41cS02OCAwIC0xODcuNSA0NXQtMTgyLjUgNDVxLTY2IDAgLTE5Mi41IC00NC41dC0yMDAuNSAtNDQuNXEtMTgzIDAgLTE4MyAxNDZxMCA4NiA1NiAxOTEuNXQxMzkuNSAxOTIuNXQxODcuNSAxNDZ0MTkzIDU5ek0xMDcxIDgxOQ0KcS02MSAwIC0xMDUgMzl0LTYzIDkyLjV0LTE5IDExMy41cTAgNzQgMzAgMTUxLjV0OTEuNSAxMzV0MTM4LjUgNTcuNXE2MSAwIDEwNSAtMzl0NjMgLTkyLjV0MTkgLTExMy41cTAgLTczIC0zMCAtMTUxdC05MiAtMTM1LjV0LTEzOCAtNTcuNXpNMTUwMyA5MjNxNzcgMCAxMTkgLTU5LjV0NDIgLTEzOS41cTAgLTc0IC0zNSAtMTUydC0xMDAuNSAtMTMzLjV0LTE0MS41IC01NS41cS03NyAwIC0xMTkgNTl0LTQyIDEzOXEwIDc0IDM1IDE1Mi41DQp0MTAwLjUgMTM0dDE0MS41IDU1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDA2IiB1bmljb2RlPSImI3hmMWIxOyIgaG9yaXotYWR2LXg9Ijc2OCIgDQpkPSJNNzA0IDEwMDhxMCAtMTQ1IC01NyAtMjQzLjV0LTE1MiAtMTM1LjVsNDUgLTgyMXEyIC0yNiAtMTYgLTQ1dC00NCAtMTloLTE5MnEtMjYgMCAtNDQgMTl0LTE2IDQ1bDQ1IDgyMXEtOTUgMzcgLTE1MiAxMzUuNXQtNTcgMjQzLjVxMCAxMjggNDIuNSAyNDkuNXQxMTcuNSAyMDB0MTYwIDc4LjV0MTYwIC03OC41dDExNy41IC0yMDB0NDIuNSAtMjQ5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDA3IiB1bmljb2RlPSImI3hmMWIyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTg5NiAtOTNsNjQwIDM0OXY2MzZsLTY0MCAtMjMzdi03NTJ6TTgzMiA3NzJsNjk4IDI1NGwtNjk4IDI1NGwtNjk4IC0yNTR6TTE2NjQgMTAyNHYtNzY4cTAgLTM1IC0xOCAtNjV0LTQ5IC00N2wtNzA0IC0zODRxLTI4IC0xNiAtNjEgLTE2dC02MSAxNmwtNzA0IDM4NHEtMzEgMTcgLTQ5IDQ3dC0xOCA2NXY3NjhxMCA0MCAyMyA3M3Q2MSA0N2w3MDQgMjU2cTIyIDggNDQgOHQ0NCAtOGw3MDQgLTI1NnEzOCAtMTQgNjEgLTQ3dDIzIC03M3oNCiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwOCIgdW5pY29kZT0iJiN4ZjFiMzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik02NDAgLTk2bDM4NCAxOTJ2MzE0bC0zODQgLTE2NHYtMzQyek01NzYgMzU4bDQwNCAxNzNsLTQwNCAxNzNsLTQwNCAtMTczek0xNjY0IC05NmwzODQgMTkydjMxNGwtMzg0IC0xNjR2LTM0MnpNMTYwMCAzNThsNDA0IDE3M2wtNDA0IDE3M2wtNDA0IC0xNzN6TTExNTIgNjUxbDM4NCAxNjV2MjY2bC0zODQgLTE2NHYtMjY3ek0xMDg4IDEwMzBsNDQxIDE4OWwtNDQxIDE4OWwtNDQxIC0xODl6TTIxNzYgNTEydi00MTZxMCAtMzYgLTE5IC02Nw0KdC01MiAtNDdsLTQ0OCAtMjI0cS0yNSAtMTQgLTU3IC0xNHQtNTcgMTRsLTQ0OCAyMjRxLTQgMiAtNyA0cS0yIC0yIC03IC00bC00NDggLTIyNHEtMjUgLTE0IC01NyAtMTR0LTU3IDE0bC00NDggMjI0cS0zMyAxNiAtNTIgNDd0LTE5IDY3djQxNnEwIDM4IDIxLjUgNzB0NTYuNSA0OGw0MzQgMTg2djQwMHEwIDM4IDIxLjUgNzB0NTYuNSA0OGw0NDggMTkycTIzIDEwIDUwIDEwdDUwIC0xMGw0NDggLTE5MnEzNSAtMTYgNTYuNSAtNDh0MjEuNSAtNzANCnYtNDAwbDQzNCAtMTg2cTM2IC0xNiA1NyAtNDh0MjEgLTcweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQwOSIgdW5pY29kZT0iJiN4ZjFiNDsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xODQ4IDExOTdoLTUxMXYtMTI0aDUxMXYxMjR6TTE1OTYgNzcxcS05MCAwIC0xNDYgLTUyLjV0LTYyIC0xNDIuNWg0MDhxLTE4IDE5NSAtMjAwIDE5NXpNMTYxMiAxODZxNjMgMCAxMjIgMzJ0NzYgODdoMjIxcS0xMDAgLTMwNyAtNDI3IC0zMDdxLTIxNCAwIC0zNDAuNSAxMzJ0LTEyNi41IDM0N3EwIDIwOCAxMzAuNSAzNDUuNXQzMzYuNSAxMzcuNXExMzggMCAyNDAuNSAtNjh0MTUzIC0xNzl0NTAuNSAtMjQ4cTAgLTE3IC0yIC00N2gtNjU4DQpxMCAtMTExIDU3LjUgLTE3MS41dDE2Ni41IC02MC41ek0yNzcgMjM2aDI5NnEyMDUgMCAyMDUgMTY3cTAgMTgwIC0xOTkgMTgwaC0zMDJ2LTM0N3pNMjc3IDc3M2gyODFxNzggMCAxMjMuNSAzNi41dDQ1LjUgMTEzLjVxMCAxNDQgLTE5MCAxNDRoLTI2MHYtMjk0ek0wIDEyODJoNTk0cTg3IDAgMTU1IC0xNHQxMjYuNSAtNDcuNXQ5MCAtOTYuNXQzMS41IC0xNTRxMCAtMTgxIC0xNzIgLTI2M3ExMTQgLTMyIDE3MiAtMTE1dDU4IC0yMDQNCnEwIC03NSAtMjQuNSAtMTM2LjV0LTY2IC0xMDMuNXQtOTguNSAtNzF0LTEyMSAtNDJ0LTEzNCAtMTNoLTYxMXYxMjYweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxMCIgdW5pY29kZT0iJiN4ZjFiNTsiIA0KZD0iTTEyNDggMTQwOHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwek00OTkgMTA0MWgtMzcxdi03ODdoMzgycTExNyAwIDE5NyA1Ny41dDgwIDE3MC41cTAgMTU4IC0xNDMgMjAwcTEwNyA1MiAxMDcgMTY0cTAgNTcgLTE5LjUgOTYuNQ0KdC01Ni41IDYwLjV0LTc5IDI5LjV0LTk3IDguNXpNNDc3IDcyM2gtMTc2djE4NGgxNjNxMTE5IDAgMTE5IC05MHEwIC05NCAtMTA2IC05NHpNNDg2IDM4OGgtMTg1djIxN2gxODlxMTI0IDAgMTI0IC0xMTNxMCAtMTA0IC0xMjggLTEwNHpNMTEzNiAzNTZxLTY4IDAgLTEwNCAzOHQtMzYgMTA3aDQxMXExIDEwIDEgMzBxMCAxMzIgLTc0LjUgMjIwLjV0LTIwMy41IDg4LjVxLTEyOCAwIC0yMTAgLTg2dC04MiAtMjE2cTAgLTEzNSA3OSAtMjE3DQp0MjEzIC04MnEyMDUgMCAyNjcgMTkxaC0xMzhxLTExIC0zNCAtNDcuNSAtNTR0LTc1LjUgLTIwek0xMTI2IDcyMnExMTMgMCAxMjQgLTEyMmgtMjU0cTQgNTYgMzkgODl0OTEgMzN6TTk2NCA5ODhoMzE5di03N2gtMzE5djc3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxMSIgdW5pY29kZT0iJiN4ZjFiNjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNTgyIDk1NHEwIC0xMDEgLTcxLjUgLTE3Mi41dC0xNzIuNSAtNzEuNXQtMTcyLjUgNzEuNXQtNzEuNSAxNzIuNXQ3MS41IDE3Mi41dDE3Mi41IDcxLjV0MTcyLjUgLTcxLjV0NzEuNSAtMTcyLjV6TTgxMiAyMTJxMCAxMDQgLTczIDE3N3QtMTc3IDczcS0yNyAwIC01NCAtNmwxMDQgLTQycTc3IC0zMSAxMDkuNSAtMTA2LjV0MS41IC0xNTEuNXEtMzEgLTc3IC0xMDcgLTEwOXQtMTUyIC0xcS0yMSA4IC02MiAyNC41dC02MSAyNC41DQpxMzIgLTYwIDkxIC05Ni41dDEzMCAtMzYuNXExMDQgMCAxNzcgNzN0NzMgMTc3ek0xNjQyIDk1M3EwIDEyNiAtODkuNSAyMTUuNXQtMjE1LjUgODkuNXEtMTI3IDAgLTIxNi41IC04OS41dC04OS41IC0yMTUuNXEwIC0xMjcgODkuNSAtMjE2dDIxNi41IC04OXExMjYgMCAyMTUuNSA4OXQ4OS41IDIxNnpNMTc5MiA5NTNxMCAtMTg5IC0xMzMuNSAtMzIydC0zMjEuNSAtMTMzbC00MzcgLTMxOXEtMTIgLTEyOSAtMTA5IC0yMTh0LTIyOSAtODkNCnEtMTIxIDAgLTIxNCA3NnQtMTE4IDE5MmwtMjMwIDkydjQyOWwzODkgLTE1N3E3OSA0OCAxNzMgNDhxMTMgMCAzNSAtMmwyODQgNDA3cTIgMTg3IDEzNS41IDMxOXQzMjAuNSAxMzJxMTg4IDAgMzIxLjUgLTEzMy41dDEzMy41IC0zMjEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTIiIHVuaWNvZGU9IiYjeGYxYjc7IiANCmQ9Ik0xMjQyIDg4OXEwIDgwIC01NyAxMzYuNXQtMTM3IDU2LjV0LTEzNi41IC01N3QtNTYuNSAtMTM2cTAgLTgwIDU2LjUgLTEzNi41dDEzNi41IC01Ni41dDEzNyA1Ni41dDU3IDEzNi41ek02MzIgMzAxcTAgLTgzIC01OCAtMTQwLjV0LTE0MCAtNTcuNXEtNTYgMCAtMTAzIDI5dC03MiA3N3E1MiAtMjAgOTggLTQwcTYwIC0yNCAxMjAgMS41dDg1IDg2LjVxMjQgNjAgLTEuNSAxMjB0LTg2LjUgODRsLTgyIDMzcTIyIDUgNDIgNQ0KcTgyIDAgMTQwIC01Ny41dDU4IC0xNDAuNXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2MTUzbDE3MiAtNjlxMjAgLTkyIDkzLjUgLTE1MnQxNjguNSAtNjBxMTA0IDAgMTgxIDcwdDg3IDE3M2wzNDUgMjUycTE1MCAwIDI1NS41IDEwNS41dDEwNS41IDI1NC41cTAgMTUwIC0xMDUuNSAyNTUuNXQtMjU1LjUgMTA1LjUNCnEtMTQ4IDAgLTI1MyAtMTA0LjV0LTEwNyAtMjUyLjVsLTIyNSAtMzIycS05IDEgLTI4IDFxLTc1IDAgLTEzNyAtMzdsLTI5NyAxMTl2NDY4cTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6TTEyODkgODg3cTAgLTEwMCAtNzEgLTE3MC41dC0xNzEgLTcwLjV0LTE3MC41IDcwLjV0LTcwLjUgMTcwLjV0NzAuNSAxNzF0MTcwLjUgNzFxMTAxIDAgMTcxLjUgLTcwLjV0NzAuNSAtMTcxLjV6DQoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTMiIHVuaWNvZGU9IiYjeGYxYjg7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODM2IDM2N2wtMTUgLTM2OGwtMiAtMjJsLTQyMCAyOXEtMzYgMyAtNjcgMzEuNXQtNDcgNjUuNXEtMTEgMjcgLTE0LjUgNTV0NCA2NXQxMiA1NXQyMS41IDY0dDE5IDUzcTc4IC0xMiA1MDkgLTI4ek00NDkgOTUzbDE4MCAtMzc5bC0xNDcgOTJxLTYzIC03MiAtMTExLjUgLTE0NC41dC03Mi41IC0xMjV0LTM5LjUgLTk0LjV0LTE4LjUgLTYzbC00IC0yMWwtMTkwIDM1N3EtMTcgMjYgLTE4IDU2dDYgNDdsOCAxOHEzNSA2MyAxMTQgMTg4DQpsLTE0MCA4NnpNMTY4MCA0MzZsLTE4OCAtMzU5cS0xMiAtMjkgLTM2LjUgLTQ2LjV0LTQzLjUgLTIwLjVsLTE4IC00cS03MSAtNyAtMjE5IC0xMmw4IC0xNjRsLTIzMCAzNjdsMjExIDM2Mmw3IC0xNzNxMTcwIC0xNiAyODMgLTV0MTcwIDMzek04OTUgMTM2MHEtNDcgLTYzIC0yNjUgLTQzNWwtMzE3IDE4N2wtMTkgMTJsMjI1IDM1NnEyMCAzMSA2MCA0NXQ4MCAxMHEyNCAtMiA0OC41IC0xMnQ0MiAtMjF0NDEuNSAtMzN0MzYgLTM0LjUNCnQzNiAtMzkuNXQzMiAtMzV6TTE1NTAgMTA1M2wyMTIgLTM2M3ExOCAtMzcgMTIuNSAtNzZ0LTI3LjUgLTc0cS0xMyAtMjAgLTMzIC0zN3QtMzggLTI4dC00OC41IC0yMnQtNDcgLTE2dC01MS41IC0xNHQtNDYgLTEycS0zNCA3MiAtMjY1IDQzNmwzMTMgMTk1ek0xNDA3IDEyNzlsMTQyIDgzbC0yMjAgLTM3M2wtNDE5IDIwbDE1MSA4NnEtMzQgODkgLTc1IDE2NnQtNzUuNSAxMjMuNXQtNjQuNSA4MHQtNDcgNDYuNWwtMTcgMTNsNDA1IC0xDQpxMzEgMyA1OCAtMTAuNXQzOSAtMjguNWwxMSAtMTVxMzkgLTYxIDExMiAtMTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNCIgdW5pY29kZT0iJiN4ZjFiOTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik00ODAgNDQ4cTAgNjYgLTQ3IDExM3QtMTEzIDQ3dC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzek01MTYgNzY4aDEwMTZsLTg5IDM1N3EtMiA4IC0xNCAxNy41dC0yMSA5LjVoLTc2OHEtOSAwIC0yMSAtOS41dC0xNCAtMTcuNXpNMTg4OCA0NDhxMCA2NiAtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN6TTIwNDggNTQ0di0zODQNCnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtMTI4cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnYxMjhoLTEwMjR2LTEyOHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ2MTI4aC05NnEtMTQgMCAtMjMgOXQtOSAyM3YzODRxMCA5MyA2NS41IDE1OC41dDE1OC41IDY1LjVoMjhsMTA1IDQxOXEyMyA5NCAxMDQgMTU3LjV0MTc5IDYzLjVoNzY4cTk4IDAgMTc5IC02My41dDEwNCAtMTU3LjUNCmwxMDUgLTQxOWgyOHE5MyAwIDE1OC41IC02NS41dDY1LjUgLTE1OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNSIgdW5pY29kZT0iJiN4ZjFiYTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xODI0IDY0MHE5MyAwIDE1OC41IC02NS41dDY1LjUgLTE1OC41di0zODRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTY0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnY2NGgtMTAyNHYtNjRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2djY0aC05NnEtMTQgMCAtMjMgOXQtOSAyM3YzODRxMCA5MyA2NS41IDE1OC41dDE1OC41IDY1LjVoMjhsMTA1IDQxOXEyMyA5NCAxMDQgMTU3LjUNCnQxNzkgNjMuNWgxMjh2MjI0cTAgMTQgOSAyM3QyMyA5aDQ0OHExNCAwIDIzIC05dDkgLTIzdi0yMjRoMTI4cTk4IDAgMTc5IC02My41dDEwNCAtMTU3LjVsMTA1IC00MTloMjh6TTMyMCAxNjBxNjYgMCAxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3QtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd6TTUxNiA2NDBoMTAxNmwtODkgMzU3cS0yIDggLTE0IDE3LjV0LTIxIDkuNWgtNzY4cS05IDAgLTIxIC05LjV0LTE0IC0xNy41eg0KTTE3MjggMTYwcTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxNiIgdW5pY29kZT0iJiN4ZjFiYjsiIA0KZD0iTTE1MDQgNjRxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC00NjJxMSAtMTcgNiAtODcuNXQ1IC0xMDguNXEwIC0yNSAtMTggLTQyLjV0LTQzIC0xNy41aC0zMjBxLTI1IDAgLTQzIDE3LjV0LTE4IDQyLjVxMCAzOCA1IDEwOC41dDYgODcuNWgtNDYycS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsNDAyIDQwM2gtMjI5cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsNDAyIDQwM2gtMTk3cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDVsMzg0IDM4NA0KcTE5IDE5IDQ1IDE5dDQ1IC0xOWwzODQgLTM4NHExOSAtMTkgMTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOWgtMTk3bDQwMiAtNDAzcTE5IC0xOSAxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC0yMjlsNDAyIC00MDNxMTkgLTE5IDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTciIHVuaWNvZGU9IiYjeGYxYmM7IiANCmQ9Ik0xMTI3IDMyNnEwIDMyIC0zMCA1MXEtMTkzIDExNSAtNDQ3IDExNXEtMTMzIDAgLTI4NyAtMzRxLTQyIC05IC00MiAtNTJxMCAtMjAgMTMuNSAtMzQuNXQzNS41IC0xNC41cTUgMCAzNyA4cTEzMiAyNyAyNDMgMjdxMjI2IDAgMzk3IC0xMDNxMTkgLTExIDMzIC0xMXExOSAwIDMzIDEzLjV0MTQgMzQuNXpNMTIyMyA1NDFxMCA0MCAtMzUgNjFxLTIzNyAxNDEgLTU0OCAxNDFxLTE1MyAwIC0zMDMgLTQycS00OCAtMTMgLTQ4IC02NA0KcTAgLTI1IDE3LjUgLTQyLjV0NDIuNSAtMTcuNXE3IDAgMzcgOHExMjIgMzMgMjUxIDMzcTI3OSAwIDQ4OCAtMTI0cTI0IC0xMyAzOCAtMTNxMjUgMCA0Mi41IDE3LjV0MTcuNSA0Mi41ek0xMzMxIDc4OXEwIDQ3IC00MCA3MHEtMTI2IDczIC0yOTMgMTEwLjV0LTM0MyAzNy41cS0yMDQgMCAtMzY0IC00N3EtMjMgLTcgLTM4LjUgLTI1LjV0LTE1LjUgLTQ4LjVxMCAtMzEgMjAuNSAtNTJ0NTEuNSAtMjFxMTEgMCA0MCA4cTEzMyAzNyAzMDcgMzcNCnExNTkgMCAzMDkuNSAtMzR0MjUzLjUgLTk1cTIxIC0xMiA0MCAtMTJxMjkgMCA1MC41IDIwLjV0MjEuNSA1MS41ek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MTgiIHVuaWNvZGU9IiYjeGYxYmQ7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNMTAyNCAxMjMzbC0zMDMgLTU4MmwyNCAtMzFoMjc5di00MTVoLTUwN2wtNDQgLTMwbC0xNDIgLTI3M2wtMzAgLTMwaC0zMDF2MzAzbDMwMyA1ODNsLTI0IDMwaC0yNzl2NDE1aDUwN2w0NCAzMGwxNDIgMjczbDMwIDMwaDMwMXYtMzAzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQxOSIgdW5pY29kZT0iJiN4ZjFiZTsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik03ODQgMTY0bDE2IDI0MWwtMTYgNTIzcS0xIDEwIC03LjUgMTd0LTE2LjUgN3EtOSAwIC0xNiAtN3QtNyAtMTdsLTE0IC01MjNsMTQgLTI0MXExIC0xMCA3LjUgLTE2LjV0MTUuNSAtNi41cTIyIDAgMjQgMjN6TTEwODAgMTkzbDExIDIxMWwtMTIgNTg2cTAgMTYgLTEzIDI0cS04IDUgLTE2IDV0LTE2IC01cS0xMyAtOCAtMTMgLTI0bC0xIC02bC0xMCAtNTc5cTAgLTEgMTEgLTIzNnYtMXEwIC0xMCA2IC0xN3E5IC0xMSAyMyAtMTENCnExMSAwIDIwIDlxOSA3IDkgMjB6TTM1IDUzM2wyMCAtMTI4bC0yMCAtMTI2cS0yIC05IC05IC05dC05IDlsLTE3IDEyNmwxNyAxMjhxMiA5IDkgOXQ5IC05ek0xMjEgNjEybDI2IC0yMDdsLTI2IC0yMDNxLTIgLTkgLTEwIC05cS05IDAgLTkgMTBsLTIzIDIwMmwyMyAyMDdxMCA5IDkgOXE4IDAgMTAgLTl6TTQwMSAxNTl6TTIxMyA2NTBsMjUgLTI0NWwtMjUgLTIzN3EwIC0xMSAtMTEgLTExcS0xMCAwIC0xMiAxMWwtMjEgMjM3bDIxIDI0NQ0KcTIgMTIgMTIgMTJxMTEgMCAxMSAtMTJ6TTMwNyA2NTdsMjMgLTI1MmwtMjMgLTI0NHEtMiAtMTMgLTE0IC0xM3EtMTMgMCAtMTMgMTNsLTIxIDI0NGwyMSAyNTJxMCAxMyAxMyAxM3ExMiAwIDE0IC0xM3pNNDAxIDYzOWwyMSAtMjM0bC0yMSAtMjQ2cS0yIC0xNiAtMTYgLTE2cS02IDAgLTEwLjUgNC41dC00LjUgMTEuNWwtMjAgMjQ2bDIwIDIzNHEwIDYgNC41IDEwLjV0MTAuNSA0LjVxMTQgMCAxNiAtMTV6TTc4NCAxNjR6TTQ5NSA3ODUNCmwyMSAtMzgwbC0yMSAtMjQ2cTAgLTcgLTUgLTEyLjV0LTEyIC01LjVxLTE2IDAgLTE4IDE4bC0xOCAyNDZsMTggMzgwcTIgMTggMTggMThxNyAwIDEyIC01LjV0NSAtMTIuNXpNNTg5IDg3MWwxOSAtNDY4bC0xOSAtMjQ0cTAgLTggLTUuNSAtMTMuNXQtMTMuNSAtNS41cS0xOCAwIC0yMCAxOWwtMTYgMjQ0bDE2IDQ2OHEyIDE5IDIwIDE5cTggMCAxMy41IC01LjV0NS41IC0xMy41ek02ODcgOTExbDE4IC01MDZsLTE4IC0yNDINCnEtMiAtMjEgLTIyIC0yMXEtMTkgMCAtMjEgMjFsLTE2IDI0MmwxNiA1MDZxMCA5IDYuNSAxNS41dDE0LjUgNi41cTkgMCAxNSAtNi41dDcgLTE1LjV6TTEwNzkgMTY5djB2MHYwek04ODEgOTE1bDE1IC01MTBsLTE1IC0yMzlxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41dC0xNyA3dC04IDE4bC0xNCAyMzlsMTQgNTEwcTAgMTEgNy41IDE4dDE3LjUgN3QxNy41IC03dDcuNSAtMTh6TTk4MCA4OTZsMTQgLTQ5MmwtMTQgLTIzNg0KcTAgLTExIC04IC0xOXQtMTkgLTh0LTE5IDh0LTkgMTlsLTEyIDIzNmwxMiA0OTJxMSAxMiA5IDIwdDE5IDh0MTguNSAtOHQ4LjUgLTIwek0xMTkyIDQwNGwtMTQgLTIzMXYwcTAgLTEzIC05IC0yMnQtMjIgLTl0LTIyIDl0LTEwIDIybC02IDExNGwtNiAxMTdsMTIgNjM2djNxMiAxNSAxMiAyNHE5IDcgMjAgN3E4IDAgMTUgLTVxMTQgLTggMTYgLTI2ek0yMzA0IDQyM3EwIC0xMTcgLTgzIC0xOTkuNXQtMjAwIC04Mi41aC03ODYNCnEtMTMgMiAtMjIgMTF0LTkgMjJ2ODk5cTAgMjMgMjggMzNxODUgMzQgMTgxIDM0cTE5NSAwIDMzOCAtMTMxLjV0MTYwIC0zMjMuNXE1MyAyMiAxMTAgMjJxMTE3IDAgMjAwIC04M3Q4MyAtMjAxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFDMCIgdW5pY29kZT0iJiN4ZjFjMDsiIA0KZD0iTTc2OCA3NjhxMjM3IDAgNDQzIDQzdDMyNSAxMjd2LTE3MHEwIC02OSAtMTAzIC0xMjh0LTI4MCAtOTMuNXQtMzg1IC0zNC41dC0zODUgMzQuNXQtMjgwIDkzLjV0LTEwMyAxMjh2MTcwcTExOSAtODQgMzI1IC0xMjd0NDQzIC00M3pNNzY4IDBxMjM3IDAgNDQzIDQzdDMyNSAxMjd2LTE3MHEwIC02OSAtMTAzIC0xMjh0LTI4MCAtOTMuNXQtMzg1IC0zNC41dC0zODUgMzQuNXQtMjgwIDkzLjV0LTEwMyAxMjh2MTcwcTExOSAtODQgMzI1IC0xMjcNCnQ0NDMgLTQzek03NjggMzg0cTIzNyAwIDQ0MyA0M3QzMjUgMTI3di0xNzBxMCAtNjkgLTEwMyAtMTI4dC0yODAgLTkzLjV0LTM4NSAtMzQuNXQtMzg1IDM0LjV0LTI4MCA5My41dC0xMDMgMTI4djE3MHExMTkgLTg0IDMyNSAtMTI3dDQ0MyAtNDN6TTc2OCAxNTM2cTIwOCAwIDM4NSAtMzQuNXQyODAgLTkzLjV0MTAzIC0xMjh2LTEyOHEwIC02OSAtMTAzIC0xMjh0LTI4MCAtOTMuNXQtMzg1IC0zNC41dC0zODUgMzQuNXQtMjgwIDkzLjUNCnQtMTAzIDEyOHYxMjhxMCA2OSAxMDMgMTI4dDI4MCA5My41dDM4NSAzNC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFDMSIgdW5pY29kZT0iJiN4ZjFjMTsiIA0KZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6DQpNODk0IDQ2NXEzMyAtMjYgODQgLTU2cTU5IDcgMTE3IDdxMTQ3IDAgMTc3IC00OXExNiAtMjIgMiAtNTJxMCAtMSAtMSAtMmwtMiAtMnYtMXEtNiAtMzggLTcxIC0zOHEtNDggMCAtMTE1IDIwdC0xMzAgNTNxLTIyMSAtMjQgLTM5MiAtODNxLTE1MyAtMjYyIC0yNDIgLTI2MnEtMTUgMCAtMjggN2wtMjQgMTJxLTEgMSAtNiA1cS0xMCAxMCAtNiAzNnE5IDQwIDU2IDkxLjV0MTMyIDk2LjVxMTQgOSAyMyAtNnEyIC0yIDIgLTRxNTIgODUgMTA3IDE5Nw0KcTY4IDEzNiAxMDQgMjYycS0yNCA4MiAtMzAuNSAxNTkuNXQ2LjUgMTI3LjVxMTEgNDAgNDIgNDBoMjFoMXEyMyAwIDM1IC0xNXExOCAtMjEgOSAtNjhxLTIgLTYgLTQgLThxMSAtMyAxIC04di0zMHEtMiAtMTIzIC0xNCAtMTkycTU1IC0xNjQgMTQ2IC0yMzh6TTMxOCA1NHE1MiAyNCAxMzcgMTU4cS01MSAtNDAgLTg3LjUgLTg0dC00OS41IC03NHpNNzE2IDk3NHEtMTUgLTQyIC0yIC0xMzJxMSA3IDcgNDRxMCAzIDcgNDNxMSA0IDQgOA0KcS0xIDEgLTEgMnEtMSAyIC0xIDNxLTEgMjIgLTEzIDM2cTAgLTEgLTEgLTJ2LTJ6TTU5MiAzMTNxMTM1IDU0IDI4NCA4MXEtMiAxIC0xMyA5LjV0LTE2IDEzLjVxLTc2IDY3IC0xMjcgMTc2cS0yNyAtODYgLTgzIC0xOTdxLTMwIC01NiAtNDUgLTgzek0xMjM4IDMyOXEtMjQgMjQgLTE0MCAyNHE3NiAtMjggMTI0IC0yOHExNCAwIDE4IDFxMCAxIC0yIDN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDIyIiB1bmljb2RlPSImI3hmMWMyOyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk0yMzMgNzY4di0xMDdoNzBsMTY0IC02NjFoMTU5bDEyOCA0ODVxNyAyMCAxMCA0NnEyIDE2IDIgMjRoNGwzIC0yNHExIC0zIDMuNSAtMjB0NS41IC0yNmwxMjggLTQ4NWgxNTlsMTY0IDY2MWg3MHYxMDdoLTMwMHYtMTA3aDkwbC05OSAtNDM4cS01IC0yMCAtNyAtNDZsLTIgLTIxaC00cTAgMyAtMC41IDYuNXQtMS41IDh0LTEgNi41cS0xIDUgLTQgMjF0LTUgMjVsLTE0NCA1NDVoLTExNGwtMTQ0IC01NDVxLTIgLTkgLTQuNSAtMjQuNQ0KdC0zLjUgLTIxLjVsLTQgLTIxaC00bC0yIDIxcS0yIDI2IC03IDQ2bC05OSA0MzhoOTB2MTA3aC0zMDB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDIzIiB1bmljb2RlPSImI3hmMWMzOyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk00MjkgMTA2di0xMDZoMjgxdjEwNmgtNzVsMTAzIDE2MXE1IDcgMTAgMTYuNXQ3LjUgMTMuNXQzLjUgNGgycTEgLTQgNSAtMTBxMiAtNCA0LjUgLTcuNXQ2IC04dDYuNSAtOC41bDEwNyAtMTYxaC03NnYtMTA2aDI5MXYxMDZoLTY4bC0xOTIgMjczbDE5NSAyODJoNjd2MTA3aC0yNzl2LTEwN2g3NGwtMTAzIC0xNTlxLTQgLTcgLTEwIC0xNi41dC05IC0xMy41bC0yIC0zaC0ycS0xIDQgLTUgMTBxLTYgMTEgLTE3IDIzbC0xMDYgMTU5aDc2djEwNw0KaC0yOTB2LTEwN2g2OGwxODkgLTI3MmwtMTk0IC0yODNoLTY4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNCIgdW5pY29kZT0iJiN4ZjFjNDsiIA0KZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6DQpNNDE2IDEwNnYtMTA2aDMyN3YxMDZoLTkzdjE2N2gxMzdxNzYgMCAxMTggMTVxNjcgMjMgMTA2LjUgODd0MzkuNSAxNDZxMCA4MSAtMzcgMTQxdC0xMDAgODdxLTQ4IDE5IC0xMzAgMTloLTM2OHYtMTA3aDkydi01NTVoLTkyek03NjkgMzg2aC0xMTl2MjY4aDEyMHE1MiAwIDgzIC0xOHE1NiAtMzMgNTYgLTExNXEwIC04OSAtNjIgLTEyMHEtMzEgLTE1IC03OCAtMTV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDI1IiB1bmljb2RlPSImI3hmMWM1OyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk0xMjgwIDMyMHYtMzIwaC0xMDI0djE5MmwxOTIgMTkybDEyOCAtMTI4bDM4NCAzODR6TTQ0OCA1MTJxLTgwIDAgLTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2dC01NiAtMTM2dC0xMzYgLTU2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNiIgdW5pY29kZT0iJiN4ZjFjNjsiIA0KZD0iTTY0MCAxMTUydjEyOGgtMTI4di0xMjhoMTI4ek03NjggMTAyNHYxMjhoLTEyOHYtMTI4aDEyOHpNNjQwIDg5NnYxMjhoLTEyOHYtMTI4aDEyOHpNNzY4IDc2OHYxMjhoLTEyOHYtMTI4aDEyOHpNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDANCnYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTEyOHYtMTI4aC0xMjh2MTI4aC01MTJ2LTE1MzZoMTI4MHpNNzgxIDU5M2wxMDcgLTM0OXE4IC0yNyA4IC01MnEwIC04MyAtNzIuNSAtMTM3LjV0LTE4My41IC01NC41dC0xODMuNSA1NC41dC03Mi41IDEzNy41cTAgMjUgOCA1MnEyMSA2MyAxMjAgMzk2djEyOGgxMjh2LTEyOGg3OQ0KcTIyIDAgMzkgLTEzdDIzIC0zNHpNNjQwIDEyOHE1MyAwIDkwLjUgMTl0MzcuNSA0NXQtMzcuNSA0NXQtOTAuNSAxOXQtOTAuNSAtMTl0LTM3LjUgLTQ1dDM3LjUgLTQ1dDkwLjUgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQyNyIgdW5pY29kZT0iJiN4ZjFjNzsiIA0KZD0iTTE0NjggMTE1NnEyOCAtMjggNDggLTc2dDIwIC04OHYtMTE1MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTEzNDRxLTQwIDAgLTY4IDI4dC0yOCA2OHYxNjAwcTAgNDAgMjggNjh0NjggMjhoODk2cTQwIDAgODggLTIwdDc2IC00OHpNMTAyNCAxNDAwdi0zNzZoMzc2cS0xMCAyOSAtMjIgNDFsLTMxMyAzMTNxLTEyIDEyIC00MSAyMnpNMTQwOCAtMTI4djEwMjRoLTQxNnEtNDAgMCAtNjggMjh0LTI4IDY4djQxNmgtNzY4di0xNTM2aDEyODB6DQpNNjIwIDY4NnEyMCAtOCAyMCAtMzB2LTU0NHEwIC0yMiAtMjAgLTMwcS04IC0yIC0xMiAtMnEtMTIgMCAtMjMgOWwtMTY2IDE2N2gtMTMxcS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxMzFsMTY2IDE2N3ExNiAxNSAzNSA3ek0xMDM3IC0zcTMxIDAgNTAgMjRxMTI5IDE1OSAxMjkgMzYzdC0xMjkgMzYzcS0xNiAyMSAtNDMgMjR0LTQ3IC0xNHEtMjEgLTE3IC0yMy41IC00My41dDE0LjUgLTQ3LjUNCnExMDAgLTEyMyAxMDAgLTI4MnQtMTAwIC0yODJxLTE3IC0yMSAtMTQuNSAtNDcuNXQyMy41IC00Mi41cTE4IC0xNSA0MCAtMTV6TTgyNiAxNDVxMjcgMCA0NyAyMHE4NyA5MyA4NyAyMTl0LTg3IDIxOXEtMTggMTkgLTQ1IDIwdC00NiAtMTd0LTIwIC00NC41dDE4IC00Ni41cTUyIC01NyA1MiAtMTMxdC01MiAtMTMxcS0xOSAtMjAgLTE4IC00Ni41dDIwIC00NC41cTIwIC0xNyA0NCAtMTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDI4IiB1bmljb2RlPSImI3hmMWM4OyIgDQpkPSJNMTQ2OCAxMTU2cTI4IC0yOCA0OCAtNzZ0MjAgLTg4di0xMTUycTAgLTQwIC0yOCAtNjh0LTY4IC0yOGgtMTM0NHEtNDAgMCAtNjggMjh0LTI4IDY4djE2MDBxMCA0MCAyOCA2OHQ2OCAyOGg4OTZxNDAgMCA4OCAtMjB0NzYgLTQ4ek0xMDI0IDE0MDB2LTM3NmgzNzZxLTEwIDI5IC0yMiA0MWwtMzEzIDMxM3EtMTIgMTIgLTQxIDIyek0xNDA4IC0xMjh2MTAyNGgtNDE2cS00MCAwIC02OCAyOHQtMjggNjh2NDE2aC03Njh2LTE1MzZoMTI4MHoNCk03NjggNzY4cTUyIDAgOTAgLTM4dDM4IC05MHYtMzg0cTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMzg0cS01MiAwIC05MCAzOHQtMzggOTB2Mzg0cTAgNTIgMzggOTB0OTAgMzhoMzg0ek0xMjYwIDc2NnEyMCAtOCAyMCAtMzB2LTU3NnEwIC0yMiAtMjAgLTMwcS04IC0yIC0xMiAtMnEtMTQgMCAtMjMgOWwtMjY1IDI2NnY5MGwyNjUgMjY2cTkgOSAyMyA5cTQgMCAxMiAtMnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MjkiIHVuaWNvZGU9IiYjeGYxYzk7IiANCmQ9Ik0xNDY4IDExNTZxMjggLTI4IDQ4IC03NnQyMCAtODh2LTExNTJxMCAtNDAgLTI4IC02OHQtNjggLTI4aC0xMzQ0cS00MCAwIC02OCAyOHQtMjggNjh2MTYwMHEwIDQwIDI4IDY4dDY4IDI4aDg5NnE0MCAwIDg4IC0yMHQ3NiAtNDh6TTEwMjQgMTQwMHYtMzc2aDM3NnEtMTAgMjkgLTIyIDQxbC0zMTMgMzEzcS0xMiAxMiAtNDEgMjJ6TTE0MDggLTEyOHYxMDI0aC00MTZxLTQwIDAgLTY4IDI4dC0yOCA2OHY0MTZoLTc2OHYtMTUzNmgxMjgweg0KTTQ4MCA3NjhxOCAxMSAyMSAxMi41dDI0IC02LjVsNTEgLTM4cTExIC04IDEyLjUgLTIxdC02LjUgLTI0bC0xODIgLTI0M2wxODIgLTI0M3E4IC0xMSA2LjUgLTI0dC0xMi41IC0yMWwtNTEgLTM4cS0xMSAtOCAtMjQgLTYuNXQtMjEgMTIuNWwtMjI2IDMwMXEtMTQgMTkgMCAzOHpNMTI4MiA0NjdxMTQgLTE5IDAgLTM4bC0yMjYgLTMwMXEtOCAtMTEgLTIxIC0xMi41dC0yNCA2LjVsLTUxIDM4cS0xMSA4IC0xMi41IDIxdDYuNSAyNGwxODIgMjQzDQpsLTE4MiAyNDNxLTggMTEgLTYuNSAyNHQxMi41IDIxbDUxIDM4cTExIDggMjQgNi41dDIxIC0xMi41ek02NjIgNnEtMTMgMiAtMjAuNSAxM3QtNS41IDI0bDEzOCA4MzFxMiAxMyAxMyAyMC41dDI0IDUuNWw2MyAtMTBxMTMgLTIgMjAuNSAtMTN0NS41IC0yNGwtMTM4IC04MzFxLTIgLTEzIC0xMyAtMjAuNXQtMjQgLTUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MzAiIHVuaWNvZGU9IiYjeGYxY2E7IiANCmQ9Ik0xNDk3IDcwOXYtMTk4cS0xMDEgLTIzIC0xOTggLTIzcS02NSAtMTM2IC0xNjUuNSAtMjcxdC0xODEuNSAtMjE1LjV0LTEyOCAtMTA2LjVxLTgwIC00NSAtMTYyIDNxLTI4IDE3IC02MC41IDQzLjV0LTg1IDgzLjV0LTEwMi41IDEyOC41dC0xMDcuNSAxODR0LTEwNS41IDI0NHQtOTEuNSAzMTQuNXQtNzAuNSAzOTBoMjgzcTI2IC0yMTggNzAgLTM5OC41dDEwNC41IC0zMTd0MTIxLjUgLTIzNS41dDE0MCAtMTk1cTE2OSAxNjkgMjg3IDQwNg0KcS0xNDIgNzIgLTIyMyAyMjB0LTgxIDMzM3EwIDE5MiAxMDQgMzE0LjV0Mjg0IDEyMi41cTE3OCAwIDI3MyAtMTA1LjV0OTUgLTI5Ny41cTAgLTE1OSAtNTggLTI4NnEtNyAtMSAtMTkuNSAtM3QtNDYgLTJ0LTYzIDZ0LTYyIDI1LjV0LTUwLjUgNTEuNXEzMSAxMDMgMzEgMTg0cTAgODcgLTI5IDEzMnQtNzkgNDVxLTUzIDAgLTg1IC00OS41dC0zMiAtMTQwLjVxMCAtMTg2IDEwNSAtMjkzLjV0MjY3IC0xMDcuNXE2MiAwIDEyMSAxNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80MzEiIHVuaWNvZGU9IiYjeGYxY2I7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjE2IDM2N2w2MDMgLTQwMnYzNTlsLTMzNCAyMjN6TTE1NCA1MTFsMTkzIDEyOWwtMTkzIDEyOXYtMjU4ek05NzMgLTM1bDYwMyA0MDJsLTI2OSAxODBsLTMzNCAtMjIzdi0zNTl6TTg5NiA0NThsMjcyIDE4MmwtMjcyIDE4MmwtMjcyIC0xODJ6TTQ4NSA3MzNsMzM0IDIyM3YzNTlsLTYwMyAtNDAyek0xNDQ1IDY0MGwxOTMgLTEyOXYyNTh6TTEzMDcgNzMzbDI2OSAxODBsLTYwMyA0MDJ2LTM1OXpNMTc5MiA5MTN2LTU0Ng0KcTAgLTQxIC0zNCAtNjRsLTgxOSAtNTQ2cS0yMSAtMTMgLTQzIC0xM3QtNDMgMTNsLTgxOSA1NDZxLTM0IDIzIC0zNCA2NHY1NDZxMCA0MSAzNCA2NGw4MTkgNTQ2cTIxIDEzIDQzIDEzdDQzIC0xM2w4MTkgLTU0NnEzNCAtMjMgMzQgLTY0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzMiIgdW5pY29kZT0iJiN4ZjFjYzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xODAwIDc2NHExMTEgLTQ2IDE3OS41IC0xNDUuNXQ2OC41IC0yMjEuNXEwIC0xNjQgLTExOCAtMjgwLjV0LTI4NSAtMTE2LjVxLTQgMCAtMTEuNSAwLjV0LTEwLjUgMC41aC0xMjA5aC0xaC0yaC01cS0xNzAgMTAgLTI4OCAxMjUuNXQtMTE4IDI4MC41cTAgMTEwIDU1IDIwM3QxNDcgMTQ3cS0xMiAzOSAtMTIgODJxMCAxMTUgODIgMTk2dDE5OSA4MXE5NSAwIDE3MiAtNThxNzUgMTU0IDIyMi41IDI0OHQzMjYuNSA5NA0KcTE2NiAwIDMwNiAtODAuNXQyMjEuNSAtMjE4LjV0ODEuNSAtMzAxcTAgLTYgLTAuNSAtMTh0LTAuNSAtMTh6TTQ2OCA0OThxMCAtMTIyIDg0IC0xOTN0MjA4IC03MXExMzcgMCAyNDAgOTlxLTE2IDIwIC00Ny41IDU2LjV0LTQzLjUgNTAuNXEtNjcgLTY1IC0xNDQgLTY1cS01NSAwIC05My41IDMzLjV0LTM4LjUgODcuNXEwIDUzIDM4LjUgODd0OTEuNSAzNHE0NCAwIDg0LjUgLTIxdDczIC01NXQ2NSAtNzV0NjkgLTgydDc3IC03NXQ5NyAtNTUNCnQxMjEuNSAtMjFxMTIxIDAgMjA0LjUgNzEuNXQ4My41IDE5MC41cTAgMTIxIC04NCAxOTJ0LTIwNyA3MXEtMTQzIDAgLTI0MSAtOTdsOTMgLTEwOHE2NiA2NCAxNDIgNjRxNTIgMCA5MiAtMzN0NDAgLTg0cTAgLTU3IC0zNyAtOTEuNXQtOTQgLTM0LjVxLTQzIDAgLTgyLjUgMjF0LTcyIDU1dC02NS41IDc1dC02OS41IDgydC03Ny41IDc1dC05Ni41IDU1dC0xMTguNSAyMXEtMTIyIDAgLTIwNyAtNzAuNXQtODUgLTE4OS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzMyIgdW5pY29kZT0iJiN4ZjFjZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04OTYgMTUzNnExODIgMCAzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh0LTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTg5NiAxNDA4cS0xOTAgMCAtMzYxIC05MGwxOTQgLTE5NHE4MiAyOCAxNjcgMjh0MTY3IC0yOGwxOTQgMTk0cS0xNzEgOTAgLTM2MSA5MHpNMjE4IDI3OWwxOTQgMTk0DQpxLTI4IDgyIC0yOCAxNjd0MjggMTY3bC0xOTQgMTk0cS05MCAtMTcxIC05MCAtMzYxdDkwIC0zNjF6TTg5NiAtMTI4cTE5MCAwIDM2MSA5MGwtMTk0IDE5NHEtODIgLTI4IC0xNjcgLTI4dC0xNjcgMjhsLTE5NCAtMTk0cTE3MSAtOTAgMzYxIC05MHpNODk2IDI1NnExNTkgMCAyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXQtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjUNCnQyNzEuNSAtMTEyLjV6TTEzODAgNDczbDE5NCAtMTk0cTkwIDE3MSA5MCAzNjF0LTkwIDM2MWwtMTk0IC0xOTRxMjggLTgyIDI4IC0xNjd0LTI4IC0xNjd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDM0IiB1bmljb2RlPSImI3hmMWNlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NjAgNjQwcTAgLTE3NiAtNjguNSAtMzM2dC0xODQgLTI3NS41dC0yNzUuNSAtMTg0dC0zMzYgLTY4LjV0LTMzNiA2OC41dC0yNzUuNSAxODR0LTE4NCAyNzUuNXQtNjguNSAzMzZxMCAyMTMgOTcgMzk4LjV0MjY1IDMwNS41dDM3NCAxNTF2LTIyOHEtMjIxIC00NSAtMzY2LjUgLTIyMXQtMTQ1LjUgLTQwNnEwIC0xMzAgNTEgLTI0OC41dDEzNi41IC0yMDR0MjA0IC0xMzYuNXQyNDguNSAtNTF0MjQ4LjUgNTF0MjA0IDEzNi41DQp0MTM2LjUgMjA0dDUxIDI0OC41cTAgMjMwIC0xNDUuNSA0MDZ0LTM2Ni41IDIyMXYyMjhxMjA2IC0zMSAzNzQgLTE1MXQyNjUgLTMwNS41dDk3IC0zOTguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxRDAiIHVuaWNvZGU9IiYjeGYxZDA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTkgNjYycTggMjE3IDExNiA0MDZ0MzA1IDMxOGg1cTAgLTEgLTEgLTNxLTggLTggLTI4IC0zMy41dC01MiAtNzYuNXQtNjAgLTExMC41dC00NC41IC0xMzUuNXQtMTQgLTE1MC41dDM5IC0xNTcuNXQxMDguNSAtMTU0cTUwIC01MCAxMDIgLTY5LjV0OTAuNSAtMTEuNXQ2OS41IDIzLjV0NDcgMzIuNWwxNiAxNnEzOSA1MSA1MyAxMTYuNXQ2LjUgMTIyLjV0LTIxIDEwN3QtMjYuNSA4MGwtMTQgMjlxLTEwIDI1IC0zMC41IDQ5LjV0LTQzIDQxDQp0LTQzLjUgMjkuNXQtMzUgMTlsLTEzIDZsMTA0IDExNXEzOSAtMTcgNzggLTUydDU5IC02MWwxOSAtMjdxMSA0OCAtMTguNSAxMDMuNXQtNDAuNSA4Ny41bC0yMCAzMWwxNjEgMTgzbDE2MCAtMTgxcS0zMyAtNDYgLTUyLjUgLTEwMi41dC0yMi41IC05MC41bC00IC0zM3EyMiAzNyA2MS41IDcyLjV0NjcuNSA1Mi41bDI4IDE3bDEwMyAtMTE1cS00NCAtMTQgLTg1IC01MHQtNjAgLTY1bC0xOSAtMjlxLTMxIC01NiAtNDggLTEzMy41dC03IC0xNzANCnQ1NyAtMTU2LjVxMzMgLTQ1IDc3LjUgLTYwLjV0ODUgLTUuNXQ3NiAyNi41dDU3LjUgMzMuNWwyMSAxNnE2MCA1MyA5Ni41IDExNXQ0OC41IDEyMS41dDEwIDEyMS41dC0xOCAxMTh0LTM3IDEwNy41dC00NS41IDkzdC00NSA3MnQtMzQuNSA0Ny41bC0xMyAxN3EtMTQgMTMgLTcgMTNsMTAgLTNxNDAgLTI5IDYyLjUgLTQ2dDYyIC01MHQ2NCAtNTh0NTguNSAtNjV0NTUuNSAtNzd0NDUuNSAtODh0MzggLTEwM3QyMy41IC0xMTd0MTAuNSAtMTM2DQpxMyAtMjU5IC0xMDggLTQ2NXQtMzEyIC0zMjF0LTQ1NiAtMTE1cS0xODUgMCAtMzUxIDc0dC0yODMuNSAxOTh0LTE4NCAyOTN0LTYwLjUgMzUzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFEMSIgdW5pY29kZT0iJiN4ZjFkMTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04NzQgLTEwMnYtNjZxLTIwOCA2IC0zODUgMTA5LjV0LTI4MyAyNzUuNWw1OCAzNHEyOSAtNDkgNzMgLTk5bDY1IDU3cTE0OCAtMTY4IDM2OCAtMjEybC0xNyAtODZxNjUgLTEyIDEyMSAtMTN6TTI3NiA0MjhsLTgzIC0yOHEyMiAtNjAgNDkgLTExMmwtNTcgLTMzcS05OCAxODAgLTk4IDM4NXQ5OCAzODVsNTcgLTMzcS0zMCAtNTYgLTQ5IC0xMTJsODIgLTI4cS0zNSAtMTAwIC0zNSAtMjEycTAgLTEwOSAzNiAtMjEyek0xNTI4IDI1MQ0KbDU4IC0zNHEtMTA2IC0xNzIgLTI4MyAtMjc1LjV0LTM4NSAtMTA5LjV2NjZxNTYgMSAxMjEgMTNsLTE3IDg2cTIyMCA0NCAzNjggMjEybDY1IC01N3E0NCA1MCA3MyA5OXpNMTM3NyA4MDVsLTIzMyAtODBxMTQgLTQyIDE0IC04NXQtMTQgLTg1bDIzMiAtODBxLTMxIC05MiAtOTggLTE2OWwtMTg1IDE2MnEtNTcgLTY3IC0xNDcgLTg1bDQ4IC0yNDFxLTUyIC0xMCAtOTggLTEwdC05OCAxMGw0OCAyNDFxLTkwIDE4IC0xNDcgODVsLTE4NSAtMTYyDQpxLTY3IDc3IC05OCAxNjlsMjMyIDgwcS0xNCA0MiAtMTQgODV0MTQgODVsLTIzMyA4MHEzMyA5MyA5OSAxNjlsMTg1IC0xNjJxNTkgNjggMTQ3IDg2bC00OCAyNDBxNDQgMTAgOTggMTB0OTggLTEwbC00OCAtMjQwcTg4IC0xOCAxNDcgLTg2bDE4NSAxNjJxNjYgLTc2IDk5IC0xNjl6TTg3NCAxNDQ4di02NnEtNjUgLTIgLTEyMSAtMTNsMTcgLTg2cS0yMjAgLTQyIC0zNjggLTIxMWwtNjUgNTZxLTM4IC00MiAtNzMgLTk4bC01NyAzMw0KcTEwNiAxNzIgMjgyIDI3NS41dDM4NSAxMDkuNXpNMTcwNSA2NDBxMCAtMjA1IC05OCAtMzg1bC01NyAzM3EyNyA1MiA0OSAxMTJsLTgzIDI4cTM2IDEwMyAzNiAyMTJxMCAxMTIgLTM1IDIxMmw4MiAyOHEtMTkgNTYgLTQ5IDExMmw1NyAzM3E5OCAtMTgwIDk4IC0zODV6TTE1ODUgMTA2M2wtNTcgLTMzcS0zNSA1NiAtNzMgOThsLTY1IC01NnEtMTQ4IDE2OSAtMzY4IDIxMWwxNyA4NnEtNTYgMTEgLTEyMSAxM3Y2NnEyMDkgLTYgMzg1IC0xMDkuNQ0KdDI4MiAtMjc1LjV6TTE3NDggNjQwcTAgMTczIC02Ny41IDMzMXQtMTgxLjUgMjcydC0yNzIgMTgxLjV0LTMzMSA2Ny41dC0zMzEgLTY3LjV0LTI3MiAtMTgxLjV0LTE4MS41IC0yNzJ0LTY3LjUgLTMzMXQ2Ny41IC0zMzF0MTgxLjUgLTI3MnQyNzIgLTE4MS41dDMzMSAtNjcuNXQzMzEgNjcuNXQyNzIgMTgxLjV0MTgxLjUgMjcydDY3LjUgMzMxek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MQ0KdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUQyIiB1bmljb2RlPSImI3hmMWQyOyIgDQpkPSJNNTgyIDIyOHEwIC02NiAtOTMgLTY2cS0xMDcgMCAtMTA3IDYzcTAgNjQgOTggNjRxMTAyIDAgMTAyIC02MXpNNTQ2IDY5NHEwIC04NSAtNzQgLTg1cS03NyAwIC03NyA4NHEwIDkwIDc3IDkwcTM2IDAgNTUgLTI1LjV0MTkgLTYzLjV6TTcxMiA3Njl2MTI1cS03OCAtMjkgLTEzNSAtMjlxLTUwIDI5IC0xMTAgMjlxLTg2IDAgLTE0NSAtNTd0LTU5IC0xNDNxMCAtNTAgMjkuNSAtMTAydDczLjUgLTY3di0zcS0zOCAtMTcgLTM4IC04NQ0KcTAgLTUzIDQxIC03N3YtM3EtMTEzIC0zNyAtMTEzIC0xMzlxMCAtNDUgMjAgLTc4LjV0NTQgLTUxdDcyIC0yNS41dDgxIC04cTIyNCAwIDIyNCAxODhxMCA2NyAtNDggOTl0LTEyNiA0NnEtMjcgNSAtNTEuNSAyMC41dC0yNC41IDM5LjVxMCA0NCA0OSA1MnE3NyAxNSAxMjIgNzB0NDUgMTM0cTAgMjQgLTEwIDUycTM3IDkgNDkgMTN6TTc3MSAzNTBoMTM3cS0yIDI3IC0yIDgydjM4N3EwIDQ2IDIgNjloLTEzN3EzIC0yMyAzIC03MXYtMzkyDQpxMCAtNTAgLTMgLTc1ek0xMjgwIDM2NnYxMjFxLTMwIC0yMSAtNjggLTIxcS01MyAwIC01MyA4MnYyMjVoNTJxOSAwIDI2LjUgLTF0MjYuNSAtMXYxMTdoLTEwNXEwIDgyIDMgMTAyaC0xNDBxNCAtMjQgNCAtNTV2LTQ3aC02MHYtMTE3cTM2IDMgMzcgM3EzIDAgMTEgLTAuNXQxMiAtMC41di0yaC0ydi0yMTdxMCAtMzcgMi41IC02NHQxMS41IC01Ni41dDI0LjUgLTQ4LjV0NDMuNSAtMzF0NjYgLTEycTY0IDAgMTA4IDI0ek05MjQgMTA3Mg0KcTAgMzYgLTI0IDYzLjV0LTYwIDI3LjV0LTYwLjUgLTI3dC0yNC41IC02NHEwIC0zNiAyNSAtNjIuNXQ2MCAtMjYuNXQ1OS41IDI3dDI0LjUgNjJ6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQzOCIgdW5pY29kZT0iJiN4ZjFkMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik01OTUgMjJxMCAxMDAgLTE2NSAxMDBxLTE1OCAwIC0xNTggLTEwNHEwIC0xMDEgMTcyIC0xMDFxMTUxIDAgMTUxIDEwNXpNNTM2IDc3N3EwIDYxIC0zMCAxMDJ0LTg5IDQxcS0xMjQgMCAtMTI0IC0xNDVxMCAtMTM1IDEyNCAtMTM1cTExOSAwIDExOSAxMzd6TTgwNSAxMTAxdi0yMDJxLTM2IC0xMiAtNzkgLTIycTE2IC00MyAxNiAtODRxMCAtMTI3IC03MyAtMjE2LjV0LTE5NyAtMTEyLjVxLTQwIC04IC01OS41IC0yN3QtMTkuNSAtNTgNCnEwIC0zMSAyMi41IC01MS41dDU4IC0zMnQ3OC41IC0yMnQ4NiAtMjUuNXQ3OC41IC0zNy41dDU4IC02NHQyMi41IC05OC41cTAgLTMwNCAtMzYzIC0zMDRxLTY5IDAgLTEzMCAxMi41dC0xMTYgNDF0LTg3LjUgODJ0LTMyLjUgMTI3LjVxMCAxNjUgMTgyIDIyNXY0cS02NyA0MSAtNjcgMTI2cTAgMTA5IDYzIDEzN3Y0cS03MiAyNCAtMTE5LjUgMTA4LjV0LTQ3LjUgMTY1LjVxMCAxMzkgOTUgMjMxLjV0MjM1IDkyLjVxOTYgMCAxNzggLTQ3DQpxOTggMCAyMTggNDd6TTExMjMgMjIwaC0yMjJxNCA0NSA0IDEzNHY2MDlxMCA5NCAtNCAxMjhoMjIycS00IC0zMyAtNCAtMTI0di02MTNxMCAtODkgNCAtMTM0ek0xNzI0IDQ0MnYtMTk2cS03MSAtMzkgLTE3NCAtMzlxLTYyIDAgLTEwNyAyMHQtNzAgNTB0LTM5LjUgNzh0LTE4LjUgOTJ0LTQgMTAzdjM1MWgydjRxLTcgMCAtMTkgMXQtMTggMXEtMjEgMCAtNTkgLTZ2MTkwaDk2djc2cTAgNTQgLTYgODloMjI3cS02IC00MSAtNiAtMTY1aDE3MQ0Kdi0xOTBxLTE1IDAgLTQzLjUgMnQtNDIuNSAyaC04NXYtMzY1cTAgLTEzMSA4NyAtMTMxcTYxIDAgMTA5IDMzek0xMTQ4IDEzODlxMCAtNTggLTM5IC0xMDEuNXQtOTYgLTQzLjVxLTU4IDAgLTk4IDQzLjV0LTQwIDEwMS41cTAgNTkgMzkuNSAxMDN0OTguNSA0NHE1OCAwIDk2LjUgLTQ0LjV0MzguNSAtMTAyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDM5IiB1bmljb2RlPSImI3hmMWQ0OyIgDQpkPSJNODA5IDUzMmwyNjYgNDk5aC0xMTJsLTE1NyAtMzEycS0yNCAtNDggLTQ0IC05MmwtNDIgOTJsLTE1NSAzMTJoLTEyMGwyNjMgLTQ5M3YtMzI0aDEwMXYzMTh6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwcTExOSAwIDIwMy41IC04NC41dDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjFENSIgdW5pY29kZT0iJiN4ZjFkNTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik04NDIgOTY0cTAgLTgwIC01NyAtMTM2LjV0LTEzNiAtNTYuNXEtNjAgMCAtMTExIDM1cS02MiAtNjcgLTExNSAtMTQ2cS0yNDcgLTM3MSAtMjAyIC04NTlxMSAtMjIgLTEyLjUgLTM4LjV0LTM0LjUgLTE4LjVoLTVxLTIwIDAgLTM1IDEzLjV0LTE3IDMzLjVxLTE0IDEyNiAtMy41IDI0Ny41dDI5LjUgMjE3dDU0IDE4NnQ2OSAxNTUuNXQ3NCAxMjVxNjEgOTAgMTMyIDE2NXEtMTYgMzUgLTE2IDc3cTAgODAgNTYuNSAxMzYuNXQxMzYuNSA1Ni41DQp0MTM2LjUgLTU2LjV0NTYuNSAtMTM2LjV6TTEyMjMgOTUzcTAgLTE1OCAtNzggLTI5MnQtMjEyLjUgLTIxMnQtMjkyLjUgLTc4cS02NCAwIC0xMzEgMTRxLTIxIDUgLTMyLjUgMjMuNXQtNi41IDM5LjVxNSAyMCAyMyAzMS41dDM5IDcuNXE1MSAtMTMgMTA4IC0xM3E5NyAwIDE4NiAzOHQxNTMgMTAydDEwMiAxNTN0MzggMTg2dC0zOCAxODZ0LTEwMiAxNTN0LTE1MyAxMDJ0LTE4NiAzOHQtMTg2IC0zOHQtMTUzIC0xMDJ0LTEwMiAtMTUzDQp0LTM4IC0xODZxMCAtMTE0IDUyIC0yMThxMTAgLTIwIDMuNSAtNDB0LTI1LjUgLTMwdC0zOS41IC0zdC0zMC41IDI2cS02NCAxMjMgLTY0IDI2NXEwIDExOSA0Ni41IDIyN3QxMjQuNSAxODZ0MTg2IDEyNHQyMjYgNDZxMTU4IDAgMjkyLjUgLTc4dDIxMi41IC0yMTIuNXQ3OCAtMjkyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUQ2IiB1bmljb2RlPSImI3hmMWQ2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTI3MCA3MzBxLTggMTkgLTggNTJxMCAyMCAxMSA0OXQyNCA0NXEtMSAyMiA3LjUgNTN0MjIuNSA0M3EwIDEzOSA5Mi41IDI4OC41dDIxNy41IDIwOS41cTEzOSA2NiAzMjQgNjZxMTMzIDAgMjY2IC01NXE0OSAtMjEgOTAgLTQ4dDcxIC01NnQ1NSAtNjh0NDIgLTc0dDMyLjUgLTg0LjV0MjUuNSAtODkuNXQyMiAtOThsMSAtNXE1NSAtODMgNTUgLTE1MHEwIC0xNCAtOSAtNDB0LTkgLTM4cTAgLTEgMS41IC0zLjV0My41IC01dDIgLTMuNQ0KcTc3IC0xMTQgMTIwLjUgLTIxNC41dDQzLjUgLTIwOC41cTAgLTQzIC0xOS41IC0xMDB0LTU1LjUgLTU3cS05IDAgLTE5LjUgNy41dC0xOSAxNy41dC0xOSAyNnQtMTYgMjYuNXQtMTMuNSAyNnQtOSAxNy41cS0xIDEgLTMgMWwtNSAtNHEtNTkgLTE1NCAtMTMyIC0yMjNxMjAgLTIwIDYxLjUgLTM4LjV0NjkgLTQxLjV0MzUuNSAtNjVxLTIgLTQgLTQgLTE2dC03IC0xOHEtNjQgLTk3IC0zMDIgLTk3cS01MyAwIC0xMTAuNSA5dC05OCAyMA0KdC0xMDQuNSAzMHEtMTUgNSAtMjMgN3EtMTQgNCAtNDYgNC41dC00MCAxLjVxLTQxIC00NSAtMTI3LjUgLTY1dC0xNjguNSAtMjBxLTM1IDAgLTY5IDEuNXQtOTMgOXQtMTAxIDIwLjV0LTc0LjUgNDB0LTMyLjUgNjRxMCA0MCAxMCA1OS41dDQxIDQ4LjVxMTEgMiA0MC41IDEzdDQ5LjUgMTJxNCAwIDE0IDJxMiAyIDIgNGwtMiAzcS00OCAxMSAtMTA4IDEwNS41dC03MyAxNTYuNWwtNSAzcS00IDAgLTEyIC0yMHEtMTggLTQxIC01NC41IC03NC41DQp0LTc3LjUgLTM3LjVoLTFxLTQgMCAtNiA0LjV0LTUgNS41cS0yMyA1NCAtMjMgMTAwcTAgMjc1IDI1MiA0NjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUQ3IiB1bmljb2RlPSImI3hmMWQ3OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTU4MCAxMDc1cTAgNDEgLTI1IDY2dC02NiAyNXEtNDMgMCAtNzYgLTI1LjV0LTMzIC02NS41cTAgLTM5IDMzIC02NC41dDc2IC0yNS41cTQxIDAgNjYgMjQuNXQyNSA2NS41ek0xMzIzIDU2OHEwIDI4IC0yNS41IDUwdC02NS41IDIycS0yNyAwIC00OS41IC0yMi41dC0yMi41IC00OS41cTAgLTI4IDIyLjUgLTUwLjV0NDkuNSAtMjIuNXE0MCAwIDY1LjUgMjJ0MjUuNSA1MXpNMTA4NyAxMDc1cTAgNDEgLTI0LjUgNjZ0LTY1LjUgMjUNCnEtNDMgMCAtNzYgLTI1LjV0LTMzIC02NS41cTAgLTM5IDMzIC02NC41dDc2IC0yNS41cTQxIDAgNjUuNSAyNC41dDI0LjUgNjUuNXpNMTcyMiA1NjhxMCAyOCAtMjYgNTB0LTY1IDIycS0yNyAwIC00OS41IC0yMi41dC0yMi41IC00OS41cTAgLTI4IDIyLjUgLTUwLjV0NDkuNSAtMjIuNXEzOSAwIDY1IDIydDI2IDUxek0xNDU2IDk2NXEtMzEgNCAtNzAgNHEtMTY5IDAgLTMxMSAtNzd0LTIyMy41IC0yMDguNXQtODEuNSAtMjg3LjUNCnEwIC03OCAyMyAtMTUycS0zNSAtMyAtNjggLTNxLTI2IDAgLTUwIDEuNXQtNTUgNi41dC00NC41IDd0LTU0LjUgMTAuNXQtNTAgMTAuNWwtMjUzIC0xMjdsNzIgMjE4cS0yOTAgMjAzIC0yOTAgNDkwcTAgMTY5IDk3LjUgMzExdDI2NCAyMjMuNXQzNjMuNSA4MS41cTE3NiAwIDMzMi41IC02NnQyNjIgLTE4Mi41dDEzNi41IC0yNjAuNXpNMjA0OCA0MDRxMCAtMTE3IC02OC41IC0yMjMuNXQtMTg1LjUgLTE5My41bDU1IC0xODFsLTE5OSAxMDkNCnEtMTUwIC0zNyAtMjE4IC0zN3EtMTY5IDAgLTMxMSA3MC41dC0yMjMuNSAxOTEuNXQtODEuNSAyNjR0ODEuNSAyNjR0MjIzLjUgMTkxLjV0MzExIDcwLjVxMTYxIDAgMzAzIC03MC41dDIyNy41IC0xOTJ0ODUuNSAtMjYzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQzIiB1bmljb2RlPSImI3hmMWQ4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NjQgMTUyNXEzMyAtMjQgMjcgLTY0bC0yNTYgLTE1MzZxLTUgLTI5IC0zMiAtNDVxLTE0IC04IC0zMSAtOHEtMTEgMCAtMjQgNWwtNDUzIDE4NWwtMjQyIC0yOTVxLTE4IC0yMyAtNDkgLTIzcS0xMyAwIC0yMiA0cS0xOSA3IC0zMC41IDIzLjV0LTExLjUgMzYuNXYzNDlsODY0IDEwNTlsLTEwNjkgLTkyNWwtMzk1IDE2MnEtMzcgMTQgLTQwIDU1cS0yIDQwIDMyIDU5bDE2NjQgOTYwcTE1IDkgMzIgOXEyMCAwIDM2IC0xMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NDQiIHVuaWNvZGU9IiYjeGYxZDk7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc2NCAxNTI1cTMzIC0yNCAyNyAtNjRsLTI1NiAtMTUzNnEtNSAtMjkgLTMyIC00NXEtMTQgLTggLTMxIC04cS0xMSAwIC0yNCA1bC01MjcgMjE1bC0yOTggLTMyN3EtMTggLTIxIC00NyAtMjFxLTE0IDAgLTIzIDRxLTE5IDcgLTMwIDIzLjV0LTExIDM2LjV2NDUybC00NzIgMTkzcS0zNyAxNCAtNDAgNTVxLTMgMzkgMzIgNTlsMTY2NCA5NjBxMzUgMjEgNjggLTJ6TTE0MjIgMjZsMjIxIDEzMjNsLTE0MzQgLTgyN2wzMzYgLTEzNw0KbDg2MyA2MzlsLTQ3OCAtNzk3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ0NSIgdW5pY29kZT0iJiN4ZjFkYTsiIA0KZD0iTTE1MzYgNjQwcTAgLTE1NiAtNjEgLTI5OHQtMTY0IC0yNDV0LTI0NSAtMTY0dC0yOTggLTYxcS0xNzIgMCAtMzI3IDcyLjV0LTI2NCAyMDQuNXEtNyAxMCAtNi41IDIyLjV0OC41IDIwLjVsMTM3IDEzOHExMCA5IDI1IDlxMTYgLTIgMjMgLTEycTczIC05NSAxNzkgLTE0N3QyMjUgLTUycTEwNCAwIDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5LjUgMTYzLjUNCnQtMTYzLjUgMTA5LjV0LTE5OC41IDQwLjVxLTk4IDAgLTE4OCAtMzUuNXQtMTYwIC0xMDEuNWwxMzcgLTEzOHEzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtNDQ4cS0yNiAwIC00NSAxOXQtMTkgNDV2NDQ4cTAgNDIgNDAgNTlxMzkgMTcgNjkgLTE0bDEzMCAtMTI5cTEwNyAxMDEgMjQ0LjUgMTU2LjV0Mjg0LjUgNTUuNXExNTYgMCAyOTggLTYxdDI0NSAtMTY0dDE2NCAtMjQ1dDYxIC0yOTh6TTg5NiA5Mjh2LTQ0OHEwIC0xNCAtOSAtMjMNCnQtMjMgLTloLTMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgyMjR2MzUycTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ2IiB1bmljb2RlPSImI3hmMWRiOyIgDQpkPSJNNzY4IDEyODBxLTEzMCAwIC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDR0LTUxIC0yNDguNXQ1MSAtMjQ4LjV0MTM2LjUgLTIwNHQyMDQgLTEzNi41dDI0OC41IC01MXQyNDguNSA1MXQyMDQgMTM2LjV0MTM2LjUgMjA0dDUxIDI0OC41dC01MSAyNDguNXQtMTM2LjUgMjA0dC0yMDQgMTM2LjV0LTI0OC41IDUxek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzDQp0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ0NyIgdW5pY29kZT0iJiN4ZjFkYzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjgyIC0xMjhxLTQ0IDAgLTEzMi41IDMuNXQtMTMzLjUgMy41cS00NCAwIC0xMzIgLTMuNXQtMTMyIC0zLjVxLTI0IDAgLTM3IDIwLjV0LTEzIDQ1LjVxMCAzMSAxNyA0NnQzOSAxN3Q1MSA3dDQ1IDE1cTMzIDIxIDMzIDE0MGwtMSAzOTFxMCAyMSAtMSAzMXEtMTMgNCAtNTAgNGgtNjc1cS0zOCAwIC01MSAtNHEtMSAtMTAgLTEgLTMxbC0xIC0zNzFxMCAtMTQyIDM3IC0xNjRxMTYgLTEwIDQ4IC0xM3Q1NyAtMy41dDQ1IC0xNQ0KdDIwIC00NS41cTAgLTI2IC0xMi41IC00OHQtMzYuNSAtMjJxLTQ3IDAgLTEzOS41IDMuNXQtMTM4LjUgMy41cS00MyAwIC0xMjggLTMuNXQtMTI3IC0zLjVxLTIzIDAgLTM1LjUgMjF0LTEyLjUgNDVxMCAzMCAxNS41IDQ1dDM2IDE3LjV0NDcuNSA3LjV0NDIgMTVxMzMgMjMgMzMgMTQzbC0xIDU3djgxM3EwIDMgMC41IDI2dDAgMzYuNXQtMS41IDM4LjV0LTMuNSA0MnQtNi41IDM2LjV0LTExIDMxLjV0LTE2IDE4cS0xNSAxMCAtNDUgMTJ0LTUzIDINCnQtNDEgMTR0LTE4IDQ1cTAgMjYgMTIgNDh0MzYgMjJxNDYgMCAxMzguNSAtMy41dDEzOC41IC0zLjVxNDIgMCAxMjYuNSAzLjV0MTI2LjUgMy41cTI1IDAgMzcuNSAtMjJ0MTIuNSAtNDhxMCAtMzAgLTE3IC00My41dC0zOC41IC0xNC41dC00OS41IC00dC00MyAtMTNxLTM1IC0yMSAtMzUgLTE2MGwxIC0zMjBxMCAtMjEgMSAtMzJxMTMgLTMgMzkgLTNoNjk5cTI1IDAgMzggM3ExIDExIDEgMzJsMSAzMjBxMCAxMzkgLTM1IDE2MA0KcS0xOCAxMSAtNTguNSAxMi41dC02NiAxM3QtMjUuNSA0OS41cTAgMjYgMTIuNSA0OHQzNy41IDIycTQ0IDAgMTMyIC0zLjV0MTMyIC0zLjVxNDMgMCAxMjkgMy41dDEyOSAzLjVxMjUgMCAzNy41IC0yMnQxMi41IC00OHEwIC0zMCAtMTcuNSAtNDR0LTQwIC0xNC41dC01MS41IC0zdC00NCAtMTIuNXEtMzUgLTIzIC0zNSAtMTYxbDEgLTk0M3EwIC0xMTkgMzQgLTE0MHExNiAtMTAgNDYgLTEzLjV0NTMuNSAtNC41dDQxLjUgLTE1LjV0MTggLTQ0LjUNCnEwIC0yNiAtMTIgLTQ4dC0zNiAtMjJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ4IiB1bmljb2RlPSImI3hmMWRkOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEyNzggMTM0N3YtNzNxMCAtMjkgLTE4LjUgLTYxdC00Mi41IC0zMnEtNTAgMCAtNTQgLTFxLTI2IC02IC0zMiAtMzFxLTMgLTExIC0zIC02NHYtMTE1MnEwIC0yNSAtMTggLTQzdC00MyAtMThoLTEwOHEtMjUgMCAtNDMgMTh0LTE4IDQzdjEyMThoLTE0M3YtMTIxOHEwIC0yNSAtMTcuNSAtNDN0LTQzLjUgLTE4aC0xMDhxLTI2IDAgLTQzLjUgMTh0LTE3LjUgNDN2NDk2cS0xNDcgMTIgLTI0NSA1OXEtMTI2IDU4IC0xOTIgMTc5DQpxLTY0IDExNyAtNjQgMjU5cTAgMTY2IDg4IDI4NnE4OCAxMTggMjA5IDE1OXExMTEgMzcgNDE3IDM3aDQ3OXEyNSAwIDQzIC0xOHQxOCAtNDN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDQ5IiB1bmljb2RlPSImI3hmMWRlOyIgDQpkPSJNMzUyIDEyOHYtMTI4aC0zNTJ2MTI4aDM1MnpNNzA0IDI1NnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnpNODY0IDY0MHYtMTI4aC04NjR2MTI4aDg2NHpNMjI0IDExNTJ2LTEyOGgtMjI0djEyOGgyMjR6TTE1MzYgMTI4di0xMjhoLTczNnYxMjhoNzM2ek01NzYgMTI4MHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1Ng0KcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMjU2cS0yNiAwIC00NSAxOXQtMTkgNDV2MjU2cTAgMjYgMTkgNDV0NDUgMTloMjU2ek0xMjE2IDc2OHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTI1NnEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDI1NnpNMTUzNiA2NDB2LTEyOGgtMjI0djEyOGgyMjR6TTE1MzYgMTE1MnYtMTI4aC04NjR2MTI4aDg2NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYxRTAiIHVuaWNvZGU9IiYjeGYxZTA7IiANCmQ9Ik0xMjE2IDUxMnExMzMgMCAyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXQtOTMuNSAtMjI2LjV0LTIyNi41IC05My41dC0yMjYuNSA5My41dC05My41IDIyNi41cTAgMTIgMiAzNGwtMzYwIDE4MHEtOTIgLTg2IC0yMTggLTg2cS0xMzMgMCAtMjI2LjUgOTMuNXQtOTMuNSAyMjYuNXQ5My41IDIyNi41dDIyNi41IDkzLjVxMTI2IDAgMjE4IC04NmwzNjAgMTgwcS0yIDIyIC0yIDM0cTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNQ0KdDIyNi41IC05My41dDkzLjUgLTIyNi41dC05My41IC0yMjYuNXQtMjI2LjUgLTkzLjVxLTEyNiAwIC0yMTggODZsLTM2MCAtMTgwcTIgLTIyIDIgLTM0dC0yIC0zNGwzNjAgLTE4MHE5MiA4NiAyMTggODZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDUxIiB1bmljb2RlPSImI3hmMWUxOyIgDQpkPSJNMTI4MCAzNDFxMCA4OCAtNjIuNSAxNTF0LTE1MC41IDYzcS04NCAwIC0xNDUgLTU4bC0yNDEgMTIwcTIgMTYgMiAyM3QtMiAyM2wyNDEgMTIwcTYxIC01OCAxNDUgLTU4cTg4IDAgMTUwLjUgNjN0NjIuNSAxNTF0LTYyLjUgMTUwLjV0LTE1MC41IDYyLjV0LTE1MSAtNjIuNXQtNjMgLTE1MC41cTAgLTcgMiAtMjNsLTI0MSAtMTIwcS02MiA1NyAtMTQ1IDU3cS04OCAwIC0xNTAuNSAtNjIuNXQtNjIuNSAtMTUwLjV0NjIuNSAtMTUwLjUNCnQxNTAuNSAtNjIuNXE4MyAwIDE0NSA1N2wyNDEgLTEyMHEtMiAtMTYgLTIgLTIzcTAgLTg4IDYzIC0xNTAuNXQxNTEgLTYyLjV0MTUwLjUgNjIuNXQ2Mi41IDE1MC41ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTIiIHVuaWNvZGU9IiYjeGYxZTI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNTcxIDk0N3EtMTAgMjUgLTM0IDM1dC00OSAwcS0xMDggLTQ0IC0xOTEgLTEyN3QtMTI3IC0xOTFxLTEwIC0yNSAwIC00OXQzNSAtMzRxMTMgLTUgMjQgLTVxNDIgMCA2MCA0MHEzNCA4NCA5OC41IDE0OC41dDE0OC41IDk4LjVxMjUgMTEgMzUgMzV0MCA0OXpNMTUxMyAxMzAzbDQ2IC00NmwtMjQ0IC0yNDNsNjggLTY4cTE5IC0xOSAxOSAtNDUuNXQtMTkgLTQ1LjVsLTY0IC02NHE4OSAtMTYxIDg5IC0zNDNxMCAtMTQzIC01NS41IC0yNzMuNQ0KdC0xNTAgLTIyNXQtMjI1IC0xNTB0LTI3My41IC01NS41dC0yNzMuNSA1NS41dC0yMjUgMTUwdC0xNTAgMjI1dC01NS41IDI3My41dDU1LjUgMjczLjV0MTUwIDIyNXQyMjUgMTUwdDI3My41IDU1LjVxMTgyIDAgMzQzIC04OWw2NCA2NHExOSAxOSA0NS41IDE5dDQ1LjUgLTE5bDY4IC02OHpNMTUyMSAxMzU5cS0xMCAtMTAgLTIyIC0xMHEtMTMgMCAtMjMgMTBsLTkxIDkwcS05IDEwIC05IDIzdDkgMjNxMTAgOSAyMyA5dDIzIC05bDkwIC05MQ0KcTEwIC05IDEwIC0yMi41dC0xMCAtMjIuNXpNMTc1MSAxMTI5cS0xMSAtOSAtMjMgLTl0LTIzIDlsLTkwIDkxcS0xMCA5IC0xMCAyMi41dDEwIDIyLjVxOSAxMCAyMi41IDEwdDIyLjUgLTEwbDkxIC05MHE5IC0xMCA5IC0yM3QtOSAtMjN6TTE3OTIgMTMxMnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Q5IDIzdDIzIDloOTZxMTQgMCAyMyAtOXQ5IC0yM3pNMTYwMCAxNTA0di05NnEwIC0xNCAtOSAtMjN0LTIzIC05DQp0LTIzIDl0LTkgMjN2OTZxMCAxNCA5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTE3NTEgMTQ0OWwtOTEgLTkwcS0xMCAtMTAgLTIyIC0xMHEtMTMgMCAtMjMgMTBxLTEwIDkgLTEwIDIyLjV0MTAgMjIuNWw5MCA5MXExMCA5IDIzIDl0MjMgLTlxOSAtMTAgOSAtMjN0LTkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ1MyIgdW5pY29kZT0iJiN4ZjFlMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02MDkgNzIwbDI4NyAyMDhsMjg3IC0yMDhsLTEwOSAtMzM2aC0zNTV6TTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXpNMTUxNSAxODZxMTQ5IDIwMyAxNDkgNDU0djNsLTEwMiAtODlsLTI0MCAyMjRsNjMgMzIzDQpsMTM0IC0xMnEtMTUwIDIwNiAtMzg5IDI4Mmw1MyAtMTI0bC0yODcgLTE1OWwtMjg3IDE1OWw1MyAxMjRxLTIzOSAtNzYgLTM4OSAtMjgybDEzNSAxMmw2MiAtMzIzbC0yNDAgLTIyNGwtMTAyIDg5di0zcTAgLTI1MSAxNDkgLTQ1NGwzMCAxMzJsMzI2IC00MGwxMzkgLTI5OGwtMTE2IC02OXExMTcgLTM5IDI0MCAtMzl0MjQwIDM5bC0xMTYgNjlsMTM5IDI5OGwzMjYgNDB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDU0IiB1bmljb2RlPSImI3hmMWU0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTQ0OCAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0yNTYgNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNODMyIDIyNHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyMw0KdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNNjQwIDYwOHYtMTkycTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTY2IDc2OHEtMjggMCAtNDcgMTl0LTE5IDQ2djEyOWg1MTR2LTEyOXEwIC0yNyAtMTkgLTQ2dC00NiAtMTloLTM4M3pNMTIxNiAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTINCnEtMTQgMCAtMjMgOXQtOSAyM3YxOTJxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN6TTEwMjQgNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTYwMCAyMjR2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzDQp6TTE0MDggNjA4di0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTkycS0xNCAwIC0yMyA5dC05IDIzdjE5MnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiAxMDE2di0xM2gtNTE0djEwcTAgMTA0IC0zODIgMTAycS0zODIgLTEgLTM4MiAtMTAydi0xMGgtNTE0djEzcTAgMTcgOC41IDQzdDM0IDY0dDY1LjUgNzUuNXQxMTAuNSA3NnQxNjAgNjcuNXQyMjQgNDcuNXQyOTMuNSAxOC41dDI5MyAtMTguNXQyMjQgLTQ3LjUNCnQxNjAuNSAtNjcuNXQxMTAuNSAtNzZ0NjUuNSAtNzUuNXQzNCAtNjR0OC41IC00M3pNMTc5MiA2MDh2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2MTkycTAgMTQgOSAyM3QyMyA5aDE5MnExNCAwIDIzIC05dDkgLTIzek0xNzkyIDk2MnYtMTI5cTAgLTI3IC0xOSAtNDZ0LTQ2IC0xOWgtMzg0cS0yNyAwIC00NiAxOXQtMTkgNDZ2MTI5aDUxNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTUiIHVuaWNvZGU9IiYjeGYxZTU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNzA0IDEyMTZ2LTc2OHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl2LTU3NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTUxMnEtMjYgMCAtNDUgMTl0LTE5IDQ1djUxMmwyNDkgODczcTcgMjMgMzEgMjNoNDI0ek0xMDI0IDEyMTZ2LTcwNGgtMjU2djcwNGgyNTZ6TTE3OTIgMzIwdi01MTJxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC01MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXY1NzZxLTI2IDAgLTQ1IDE5dC0xOSA0NXY3NjhoNDI0cTI0IDAgMzEgLTIzeg0KTTczNiAxNTA0di0yMjRoLTM1MnYyMjRxMCAxNCA5IDIzdDIzIDloMjg4cTE0IDAgMjMgLTl0OSAtMjN6TTE0MDggMTUwNHYtMjI0aC0zNTJ2MjI0cTAgMTQgOSAyM3QyMyA5aDI4OHExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ1NiIgdW5pY29kZT0iJiN4ZjFlNjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzU1IDEwODNxMzcgLTM4IDM3IC05MC41dC0zNyAtOTAuNWwtNDAxIC00MDBsMTUwIC0xNTBsLTE2MCAtMTYwcS0xNjMgLTE2MyAtMzg5LjUgLTE4Ni41dC00MTEuNSAxMDAuNWwtMzYyIC0zNjJoLTE4MXYxODFsMzYyIDM2MnEtMTI0IDE4NSAtMTAwLjUgNDExLjV0MTg2LjUgMzg5LjVsMTYwIDE2MGwxNTAgLTE1MGw0MDAgNDAxcTM4IDM3IDkxIDM3dDkwIC0zN3QzNyAtOTAuNXQtMzcgLTkwLjVsLTQwMCAtNDAxbDIzNCAtMjM0DQpsNDAxIDQwMHEzOCAzNyA5MSAzN3Q5MCAtMzd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDU3IiB1bmljb2RlPSImI3hmMWU3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTg3MyA3OTZxMCAtODMgLTYzLjUgLTE0Mi41dC0xNTIuNSAtNTkuNXQtMTUyLjUgNTkuNXQtNjMuNSAxNDIuNXEwIDg0IDYzLjUgMTQzdDE1Mi41IDU5dDE1Mi41IC01OXQ2My41IC0xNDN6TTEzNzUgNzk2cTAgLTgzIC02MyAtMTQyLjV0LTE1MyAtNTkuNXEtODkgMCAtMTUyLjUgNTkuNXQtNjMuNSAxNDIuNXEwIDg0IDYzLjUgMTQzdDE1Mi41IDU5cTkwIDAgMTUzIC01OXQ2MyAtMTQzek0xNjAwIDYxNnY2NjdxMCA4NyAtMzIgMTIzLjUNCnQtMTExIDM2LjVoLTExMTJxLTgzIDAgLTExMi41IC0zNHQtMjkuNSAtMTI2di02NzNxNDMgLTIzIDg4LjUgLTQwdDgxIC0yOHQ4MSAtMTguNXQ3MSAtMTF0NzAgLTR0NTguNSAtMC41dDU2LjUgMnQ0NC41IDJxNjggMSA5NSAtMjdxNiAtNiAxMCAtOXEyNiAtMjUgNjEgLTUxcTcgOTEgMTE4IDg3cTUgMCAzNi41IC0xLjV0NDMgLTJ0NDUuNSAtMXQ1MyAxdDU0LjUgNC41dDYxIDguNXQ2MiAxMy41dDY3IDE5LjV0NjcuNSAyN3Q3MiAzNC41eg0KTTE3NjMgNjIxcS0xMjEgLTE0OSAtMzcyIC0yNTJxODQgLTI4NSAtMjMgLTQ2NXEtNjYgLTExMyAtMTgzIC0xNDhxLTEwNCAtMzIgLTE4MiAxNXEtODYgNTEgLTgyIDE2NGwtMSAzMjZ2MXEtOCAyIC0yNC41IDZ0LTIzLjUgNWwtMSAtMzM4cTQgLTExNCAtODMgLTE2NHEtNzkgLTQ3IC0xODMgLTE1cS0xMTcgMzYgLTE4MiAxNTBxLTEwNSAxODAgLTIyIDQ2M3EtMjUxIDEwMyAtMzcyIDI1MnEtMjUgMzcgLTQgNjN0NjAgLTFxNCAtMiAxMS41IC03DQp0MTAuNSAtOHY2OTRxMCA3MiA0NyAxMjN0MTE0IDUxaDEyNTdxNjcgMCAxMTQgLTUxdDQ3IC0xMjN2LTY5NGwyMSAxNXEzOSAyNyA2MCAxdC00IC02M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTgiIHVuaWNvZGU9IiYjeGYxZTg7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDExMDJ2LTQzNGgtMTQ1djQzNGgxNDV6TTEyOTQgMTEwMnYtNDM0aC0xNDV2NDM0aDE0NXpNMTI5NCAzNDJsMjUzIDI1NHY3OTVoLTExOTR2LTEwNDloMzI2di0yMTdsMjE3IDIxN2gzOTh6TTE2OTIgMTUzNnYtMTAxM2wtNDM0IC00MzRoLTMyNmwtMjE3IC0yMTdoLTIxN3YyMTdoLTM5OHYxMTU4bDEwOSAyODloMTQ4M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NTkiIHVuaWNvZGU9IiYjeGYxZTk7IiANCmQ9Ik03NzMgMjE3di0xMjdxLTEgLTI5MiAtNiAtMzA1cS0xMiAtMzIgLTUxIC00MHEtNTQgLTkgLTE4MS41IDM4dC0xNjIuNSA4OXEtMTMgMTUgLTE3IDM2cS0xIDEyIDQgMjZxNCAxMCAzNCA0N3QxODEgMjE2cTEgMCA2MCA3MHExNSAxOSAzOS41IDI0LjV0NDkuNSAtMy41cTI0IC0xMCAzNy41IC0yOXQxMi41IC00MnpNNjI0IDQ2OHEtMyAtNTUgLTUyIC03MGwtMTIwIC0zOXEtMjc1IC04OCAtMjkyIC04OHEtMzUgMiAtNTQgMzYNCnEtMTIgMjUgLTE3IDc1cS04IDc2IDEgMTY2LjV0MzAgMTI0LjV0NTYgMzJxMTMgMCAyMDIgLTc3cTcxIC0yOSAxMTUgLTQ3bDg0IC0zNHEyMyAtOSAzNS41IC0zMC41dDExLjUgLTQ4LjV6TTE0NTAgMTcxcS03IC01NCAtOTEuNSAtMTYxdC0xMzUuNSAtMTI3cS0zNyAtMTQgLTYzIDdxLTE0IDEwIC0xODQgMjg3bC00NyA3N3EtMTQgMjEgLTExLjUgNDZ0MTkuNSA0NnEzNSA0MyA4MyAyNnExIC0xIDExOSAtNDBxMjAzIC02NiAyNDIgLTc5LjUNCnQ0NyAtMjAuNXEyOCAtMjIgMjIgLTYxek03NzggODAzcTUgLTEwMiAtNTQgLTEyMnEtNTggLTE3IC0xMTQgNzFsLTM3OCA1OThxLTggMzUgMTkgNjJxNDEgNDMgMjA3LjUgODkuNXQyMjQuNSAzMS41cTQwIC0xMCA0OSAtNDVxMyAtMTggMjIgLTMwNS41dDI0IC0zNzkuNXpNMTQ0MCA2OTVxMyAtMzkgLTI2IC01OXEtMTUgLTEwIC0zMjkgLTg2cS02NyAtMTUgLTkxIC0yM2wxIDJxLTIzIC02IC00NiA0dC0zNyAzMnEtMzAgNDcgMCA4Nw0KcTEgMSA3NSAxMDJxMTI1IDE3MSAxNTAgMjA0dDM0IDM5cTI4IDE5IDY1IDJxNDggLTIzIDEyMyAtMTMzLjV0ODEgLTE2Ny41di0zeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2MCIgdW5pY29kZT0iJiN4ZjFlYTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xMDI0IDEwMjRoLTM4NHYtMzg0aDM4NHYzODR6TTExNTIgMzg0di0xMjhoLTY0MHYxMjhoNjQwek0xMTUyIDExNTJ2LTY0MGgtNjQwdjY0MGg2NDB6TTE3OTIgMzg0di0xMjhoLTUxMnYxMjhoNTEyek0xNzkyIDY0MHYtMTI4aC01MTJ2MTI4aDUxMnpNMTc5MiA4OTZ2LTEyOGgtNTEydjEyOGg1MTJ6TTE3OTIgMTE1MnYtMTI4aC01MTJ2MTI4aDUxMnpNMjU2IDE5MnY5NjBoLTEyOHYtOTYwcTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTkNCnQxOSA0NXpNMTkyMCAxOTJ2MTA4OGgtMTUzNnYtMTA4OHEwIC0zMyAtMTEgLTY0aDE0ODNxMjYgMCA0NSAxOXQxOSA0NXpNMjA0OCAxNDA4di0xMjE2cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2aC0xNjY0cS04MCAwIC0xMzYgNTZ0LTU2IDEzNnYxMDg4aDI1NnYxMjhoMTc5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjEiIHVuaWNvZGU9IiYjeGYxZWI7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTAyNCAxM3EtMjAgMCAtOTMgNzMuNXQtNzMgOTMuNXEwIDMyIDYyLjUgNTR0MTAzLjUgMjJ0MTAzLjUgLTIydDYyLjUgLTU0cTAgLTIwIC03MyAtOTMuNXQtOTMgLTczLjV6TTEyOTQgMjg0cS0yIDAgLTQwIDI1dC0xMDEuNSA1MHQtMTI4LjUgMjV0LTEyOC41IC0yNXQtMTAxIC01MHQtNDAuNSAtMjVxLTE4IDAgLTkzLjUgNzV0LTc1LjUgOTNxMCAxMyAxMCAyM3E3OCA3NyAxOTYgMTIxdDIzMyA0NHQyMzMgLTQ0dDE5NiAtMTIxDQpxMTAgLTEwIDEwIC0yM3EwIC0xOCAtNzUuNSAtOTN0LTkzLjUgLTc1ek0xNTY3IDU1NnEtMTEgMCAtMjMgOHEtMTM2IDEwNSAtMjUyIDE1NC41dC0yNjggNDkuNXEtODUgMCAtMTcwLjUgLTIydC0xNDkgLTUzdC0xMTMuNSAtNjJ0LTc5IC01M3QtMzEgLTIycS0xNyAwIC05MiA3NXQtNzUgOTNxMCAxMiAxMCAyMnExMzIgMTMyIDMyMCAyMDV0MzgwIDczdDM4MCAtNzN0MzIwIC0yMDVxMTAgLTEwIDEwIC0yMnEwIC0xOCAtNzUgLTkzdC05MiAtNzV6DQpNMTgzOCA4MjdxLTExIDAgLTIyIDlxLTE3OSAxNTcgLTM3MS41IDIzNi41dC00MjAuNSA3OS41dC00MjAuNSAtNzkuNXQtMzcxLjUgLTIzNi41cS0xMSAtOSAtMjIgLTlxLTE3IDAgLTkyLjUgNzV0LTc1LjUgOTNxMCAxMyAxMCAyM3ExODcgMTg2IDQ0NSAyODh0NTI3IDEwMnQ1MjcgLTEwMnQ0NDUgLTI4OHExMCAtMTAgMTAgLTIzcTAgLTE4IC03NS41IC05M3QtOTIuNSAtNzV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDYyIiB1bmljb2RlPSImI3hmMWVjOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTM4NCAwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek03NjggMHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMzg0IDM4NHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNQ0KdC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xMTUyIDBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTc2OCAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNQ0KdDM3LjUgOTAuNXpNMzg0IDc2OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNXQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTE1MiAzODRxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTc2OCA3NjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjUNCnQtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41dDkwLjUgLTM3LjV0OTAuNSAzNy41dDM3LjUgOTAuNXpNMTUzNiAwdjM4NHEwIDUyIC0zOCA5MHQtOTAgMzh0LTkwIC0zOHQtMzggLTkwdi0zODRxMCAtNTIgMzggLTkwdDkwIC0zOHQ5MCAzOHQzOCA5MHpNMTE1MiA3NjhxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6DQpNMTUzNiAxMDg4djI1NnEwIDI2IC0xOSA0NXQtNDUgMTloLTEyODBxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0yNTZxMCAtMjYgMTkgLTQ1dDQ1IC0xOWgxMjgwcTI2IDAgNDUgMTl0MTkgNDV6TTE1MzYgNzY4cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNjY0IDE0MDh2LTE1MzZxMCAtNTIgLTM4IC05MHQtOTAgLTM4DQpoLTE0MDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxNTM2cTAgNTIgMzggOTB0OTAgMzhoMTQwOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDYzIiB1bmljb2RlPSImI3hmMWVkOyIgDQpkPSJNMTUxOSA4OTBxMTggLTg0IC00IC0yMDRxLTg3IC00NDQgLTU2NSAtNDQ0aC00NHEtMjUgMCAtNDQgLTE2LjV0LTI0IC00Mi41bC00IC0xOWwtNTUgLTM0NmwtMiAtMTVxLTUgLTI2IC0yNC41IC00Mi41dC00NC41IC0xNi41aC0yNTFxLTIxIDAgLTMzIDE1dC05IDM2cTkgNTYgMjYuNSAxNjh0MjYuNSAxNjh0MjcgMTY3LjV0MjcgMTY3LjVxNSAzNyA0MyAzN2gxMzFxMTMzIC0yIDIzNiAyMXExNzUgMzkgMjg3IDE0NHExMDIgOTUgMTU1IDI0Ng0KcTI0IDcwIDM1IDEzM3ExIDYgMi41IDcuNXQzLjUgMXQ2IC0zLjVxNzkgLTU5IDk4IC0xNjJ6TTEzNDcgMTE3MnEwIC0xMDcgLTQ2IC0yMzZxLTgwIC0yMzMgLTMwMiAtMzE1cS0xMTMgLTQwIC0yNTIgLTQycTAgLTEgLTkwIC0xbC05MCAxcS0xMDAgMCAtMTE4IC05NnEtMiAtOCAtODUgLTUzMHEtMSAtMTAgLTEyIC0xMGgtMjk1cS0yMiAwIC0zNi41IDE2LjV0LTExLjUgMzguNWwyMzIgMTQ3MXE1IDI5IDI3LjUgNDh0NTEuNSAxOWg1OTgNCnEzNCAwIDk3LjUgLTEzdDExMS41IC0zMnExMDcgLTQxIDE2My41IC0xMjN0NTYuNSAtMTk2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2NCIgdW5pY29kZT0iJiN4ZjFlZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik00NDEgODY0cTMzIDAgNTIgLTI2cTI2NiAtMzY0IDM2MiAtNzc0aC00NDZxLTEyNyA0NDEgLTM2NyA3NDlxLTEyIDE2IC0zIDMzLjV0MjkgMTcuNWgzNzN6TTEwMDAgNTA3cS00OSAtMTk5IC0xMjUgLTM5M3EtNzkgMzEwIC0yNTYgNTk0cTQwIDIyMSA0NCA0NDlxMjExIC0zNDAgMzM3IC02NTB6TTEwOTkgMTIxNnEyMzUgLTMyNCAzODQuNSAtNjk4LjV0MTg0LjUgLTc3My41aC00NTFxLTQxIDY2NSAtNTUzIDE0NzJoNDM1ek0xNzkyIDY0MA0KcTAgLTQyNCAtMTAxIC04MTJxLTY3IDU2MCAtMzU5IDEwODNxLTI1IDMwMSAtMTA2IDU4NHEtNCAxNiA1LjUgMjguNXQyNS41IDEyLjVoMzU5cTIxIDAgMzguNSAtMTN0MjIuNSAtMzNxMTE1IC00MDkgMTE1IC04NTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMUYwIiB1bmljb2RlPSImI3hmMWYwOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE5NzUgNTQ2aC0xMzhxMTQgMzcgNjYgMTc5bDMgOXE0IDEwIDEwIDI2dDkgMjZsMTIgLTU1ek01MzEgNjExbC01OCAyOTVxLTExIDU0IC03NSA1NGgtMjY4bC0yIC0xM3EzMTEgLTc5IDQwMyAtMzM2ek03MTAgOTYwbC0xNjIgLTQzOGwtMTcgODlxLTI2IDcwIC04NSAxMjkuNXQtMTMxIDg4LjVsMTM1IC01MTBoMTc1bDI2MSA2NDFoLTE3NnpNODQ5IDMxOGgxNjZsMTA0IDY0MmgtMTY2ek0xNjE3IDk0NHEtNjkgMjcgLTE0OSAyNw0KcS0xMjMgMCAtMjAxIC01OXQtNzkgLTE1M3EtMSAtMTAyIDE0NSAtMTc0cTQ4IC0yMyA2NyAtNDF0MTkgLTM5cTAgLTMwIC0zMCAtNDZ0LTY5IC0xNnEtODYgMCAtMTU2IDMzbC0yMiAxMWwtMjMgLTE0NHE3NCAtMzQgMTg1IC0zNHExMzAgLTEgMjA4LjUgNTl0ODAuNSAxNjBxMCAxMDYgLTE0MCAxNzRxLTQ5IDI1IC03MSA0MnQtMjIgMzhxMCAyMiAyNC41IDM4LjV0NzAuNSAxNi41cTcwIDEgMTI0IC0yNGwxNSAtOHpNMjA0MiA5NjBoLTEyOA0KcS02NSAwIC04NyAtNTRsLTI0NiAtNTg4aDE3NGwzNSA5NmgyMTJxNSAtMjIgMjAgLTk2aDE1NHpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NjYiIHVuaWNvZGU9IiYjeGYxZjE7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTExOSAxMTk1cS0xMjggODUgLTI4MSA4NXEtMTAzIDAgLTE5Ny41IC00MC41dC0xNjIuNSAtMTA4LjV0LTEwOC41IC0xNjJ0LTQwLjUgLTE5N3EwIC0xMDQgNDAuNSAtMTk4dDEwOC41IC0xNjJ0MTYyIC0xMDguNXQxOTggLTQwLjVxMTUzIDAgMjgxIDg1cS0xMzEgMTA3IC0xNzggMjY1LjV0MC41IDMxNi41dDE3Ny41IDI2NXpNMTE1MiAxMTcxcS0xMjYgLTk5IC0xNzIgLTI0OS41dC0wLjUgLTMwMC41dDE3Mi41IC0yNDkNCnExMjcgOTkgMTcyLjUgMjQ5dC0wLjUgMzAwLjV0LTE3MiAyNDkuNXpNMTE4NSAxMTk1cTEzMCAtMTA3IDE3Ny41IC0yNjUuNXQwLjUgLTMxN3QtMTc4IC0yNjQuNXExMjggLTg1IDI4MSAtODVxMTA0IDAgMTk4IDQwLjV0MTYyIDEwOC41dDEwOC41IDE2MnQ0MC41IDE5OHEwIDEwMyAtNDAuNSAxOTd0LTEwOC41IDE2MnQtMTYyLjUgMTA4LjV0LTE5Ny41IDQwLjVxLTE1MyAwIC0yODEgLTg1ek0xOTI2IDQ3M2g3djNoLTE3di0zaDd2LTE3aDN2MTd6DQpNMTk1NSA0NTZoNHYyMGgtNWwtNiAtMTNsLTYgMTNoLTV2LTIwaDN2MTVsNiAtMTNoNGw1IDEzdi0xNXpNMTk0NyAxNnYtMmgtMmgtM3YzaDNoMnYtMXpNMTk0NyA3aDNsLTQgNWgybDEgMXExIDEgMSAzdC0xIDNsLTEgMWgtM2gtNnYtMTNoM3Y1aDF6TTY4NSA3NXEwIDE5IDExIDMxdDMwIDEycTE4IDAgMjkgLTEyLjV0MTEgLTMwLjVxMCAtMTkgLTExIC0zMXQtMjkgLTEycS0xOSAwIC0zMCAxMnQtMTEgMzF6TTExNTggMTE5cTMwIDAgMzUgLTMyDQpoLTcwcTUgMzIgMzUgMzJ6TTE1MTQgNzVxMCAxOSAxMSAzMXQyOSAxMnQyOS41IC0xMi41dDExLjUgLTMwLjVxMCAtMTkgLTExIC0zMXQtMzAgLTEycS0xOCAwIC0yOSAxMnQtMTEgMzF6TTE3ODYgNzVxMCAxOCAxMS41IDMwLjV0MjkuNSAxMi41dDI5LjUgLTEyLjV0MTEuNSAtMzAuNXEwIC0xOSAtMTEuNSAtMzF0LTI5LjUgLTEydC0yOS41IDEyLjV0LTExLjUgMzAuNXpNMTk0NCAzcS0yIDAgLTQgMXEtMSAwIC0zIDJ0LTIgM3EtMSAyIC0xIDQNCnEwIDMgMSA0cTAgMiAyIDRsMSAxcTIgMCAyIDFxMiAxIDQgMXEzIDAgNCAtMWw0IC0ybDIgLTR2LTFxMSAtMiAxIC0zbC0xIC0xdi0zdC0xIC0xbC0xIC0ycS0yIC0yIC00IC0ycS0xIC0xIC00IC0xek01OTkgN2gzMHY4NXEwIDI0IC0xNC41IDM4LjV0LTM5LjUgMTUuNXEtMzIgMCAtNDcgLTI0cS0xNCAyNCAtNDUgMjRxLTI0IDAgLTM5IC0yMHYxNmgtMzB2LTEzNWgzMHY3NXEwIDM2IDMzIDM2cTMwIDAgMzAgLTM2di03NWgyOXY3NQ0KcTAgMzYgMzMgMzZxMzAgMCAzMCAtMzZ2LTc1ek03NjUgN2gyOXY2OHY2N2gtMjl2LTE2cS0xNyAyMCAtNDMgMjBxLTI5IDAgLTQ4IC0yMHQtMTkgLTUxdDE5IC01MXQ0OCAtMjBxMjggMCA0MyAyMHYtMTd6TTk0MyA0OHEwIDM0IC00NyA0MGwtMTQgMnEtMjMgNCAtMjMgMTRxMCAxNSAyNSAxNXEyMyAwIDQzIC0xMWwxMiAyNHEtMjIgMTQgLTU1IDE0cS0yNiAwIC00MSAtMTJ0LTE1IC0zMnEwIC0zMyA0NyAtMzlsMTMgLTJxMjQgLTQgMjQgLTE0DQpxMCAtMTcgLTMxIC0xN3EtMjUgMCAtNDUgMTRsLTEzIC0yM3EyNSAtMTcgNTggLTE3cTI5IDAgNDUuNSAxMnQxNi41IDMyek0xMDczIDE0bC04IDI1cS0xMyAtNyAtMjYgLTdxLTE5IDAgLTE5IDIydjYxaDQ4djI3aC00OHY0MWgtMzB2LTQxaC0yOHYtMjdoMjh2LTYxcTAgLTUwIDQ3IC01MHEyMSAwIDM2IDEwek0xMTU5IDE0NnEtMjkgMCAtNDggLTIwdC0xOSAtNTFxMCAtMzIgMTkuNSAtNTEuNXQ0OS41IC0xOS41cTMzIDAgNTUgMTlsLTE0IDIyDQpxLTE4IC0xNSAtMzkgLTE1cS0zNCAwIC00MSAzM2gxMDF2MTJxMCAzMiAtMTggNTEuNXQtNDYgMTkuNXpNMTMxOCAxNDZxLTIzIDAgLTM1IC0yMHYxNmgtMzB2LTEzNWgzMHY3NnEwIDM1IDI5IDM1cTEwIDAgMTggLTRsOSAyOHEtOSA0IC0yMSA0ek0xMzQ4IDc1cTAgLTMxIDE5LjUgLTUxdDUyLjUgLTIwcTI5IDAgNDggMTZsLTE0IDI0cS0xOCAtMTMgLTM1IC0xMnEtMTggMCAtMjkuNSAxMnQtMTEuNSAzMXQxMS41IDMxdDI5LjUgMTINCnExOSAwIDM1IC0xMmwxNCAyNHEtMjAgMTYgLTQ4IDE2cS0zMyAwIC01Mi41IC0yMHQtMTkuNSAtNTF6TTE1OTMgN2gzMHY2OHY2N2gtMzB2LTE2cS0xNSAyMCAtNDIgMjBxLTI5IDAgLTQ4LjUgLTIwdC0xOS41IC01MXQxOS41IC01MXQ0OC41IC0yMHEyOCAwIDQyIDIwdi0xN3pNMTcyNiAxNDZxLTIzIDAgLTM1IC0yMHYxNmgtMjl2LTEzNWgyOXY3NnEwIDM1IDI5IDM1cTEwIDAgMTggLTRsOSAyOHEtOCA0IC0yMSA0ek0xODY2IDdoMjl2Njh2MTIyDQpoLTI5di03MXEtMTUgMjAgLTQzIDIwdC00Ny41IC0yMC41dC0xOS41IC01MC41dDE5LjUgLTUwLjV0NDcuNSAtMjAuNXEyOSAwIDQzIDIwdi0xN3pNMTk0NCAyN2wtMiAtMWgtM3EtMiAtMSAtNCAtM3EtMyAtMSAtMyAtNHEtMSAtMiAtMSAtNnEwIC0zIDEgLTVxMCAtMiAzIC00cTIgLTIgNCAtM3Q1IC0xcTQgMCA2IDFxMCAxIDIgMmwyIDFxMSAxIDMgNHExIDIgMSA1cTAgNCAtMSA2cS0xIDEgLTMgNHEwIDEgLTIgMmwtMiAxcS0xIDAgLTMgMC41DQp0LTMgMC41ek0yMzA0IDEyODB2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0yMDQ4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwdDkwIDM4aDIwNDhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2NyIgdW5pY29kZT0iJiN4ZjFmMjsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0zMTMgNzU5cTAgLTUxIC0zNiAtODRxLTI5IC0yNiAtODkgLTI2aC0xN3YyMjBoMTdxNjEgMCA4OSAtMjdxMzYgLTMxIDM2IC04M3pNMjA4OSA4MjRxMCAtNTIgLTY0IC01MmgtMTl2MTAxaDIwcTYzIDAgNjMgLTQ5ek0zODAgNzU5cTAgNzQgLTUwIDEyMC41dC0xMjkgNDYuNWgtOTV2LTMzM2g5NXE3NCAwIDExOSAzOHE2MCA1MSA2MCAxMjh6TTQxMCA1OTNoNjV2MzMzaC02NXYtMzMzek03MzAgNjk0cTAgNDAgLTIwLjUgNjJ0LTc1LjUgNDINCnEtMjkgMTAgLTM5LjUgMTl0LTEwLjUgMjNxMCAxNiAxMy41IDI2LjV0MzQuNSAxMC41cTI5IDAgNTMgLTI3bDM0IDQ0cS00MSAzNyAtOTggMzdxLTQ0IDAgLTc0IC0yNy41dC0zMCAtNjcuNXEwIC0zNSAxOCAtNTUuNXQ2NCAtMzYuNXEzNyAtMTMgNDUgLTE5cTE5IC0xMiAxOSAtMzRxMCAtMjAgLTE0IC0zMy41dC0zNiAtMTMuNXEtNDggMCAtNzEgNDRsLTQyIC00MHE0NCAtNjQgMTE1IC02NHE1MSAwIDgzIDMwLjV0MzIgNzkuNXpNMTAwOCA2MDQNCnY3N3EtMzcgLTM3IC03OCAtMzdxLTQ5IDAgLTgwLjUgMzIuNXQtMzEuNSA4Mi41cTAgNDggMzEuNSA4MS41dDc3LjUgMzMuNXE0MyAwIDgxIC0zOHY3N3EtNDAgMjAgLTgwIDIwcS03NCAwIC0xMjUuNSAtNTAuNXQtNTEuNSAtMTIzLjV0NTEgLTEyMy41dDEyNSAtNTAuNXE0MiAwIDgxIDE5ek0yMjQwIDB2NTI3cS02NSAtNDAgLTE0NC41IC04NHQtMjM3LjUgLTExN3QtMzI5LjUgLTEzNy41dC00MTcuNSAtMTM0LjV0LTUwNCAtMTE4aDE1NjkNCnEyNiAwIDQ1IDE5dDE5IDQ1ek0xMzg5IDc1N3EwIDc1IC01MyAxMjh0LTEyOCA1M3QtMTI4IC01M3QtNTMgLTEyOHQ1MyAtMTI4dDEyOCAtNTN0MTI4IDUzdDUzIDEyOHpNMTU0MSA1ODRsMTQ0IDM0MmgtNzFsLTkwIC0yMjRsLTg5IDIyNGgtNzFsMTQyIC0zNDJoMzV6TTE3MTQgNTkzaDE4NHY1NmgtMTE5djkwaDExNXY1NmgtMTE1djc0aDExOXY1N2gtMTg0di0zMzN6TTIxMDUgNTkzaDgwbC0xMDUgMTQwcTc2IDE2IDc2IDk0cTAgNDcgLTMxIDczDQp0LTg3IDI2aC05N3YtMzMzaDY1djEzM2g5ek0yMzA0IDEyNzR2LTEyNjhxMCAtNTYgLTM4LjUgLTk1dC05My41IC0zOWgtMjA0MHEtNTUgMCAtOTMuNSAzOXQtMzguNSA5NXYxMjY4cTAgNTYgMzguNSA5NXQ5My41IDM5aDIwNDBxNTUgMCA5My41IC0zOXQzOC41IC05NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYxZjMiIHVuaWNvZGU9IiYjeGYxZjM7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTE5IDg1NGg4OWwtNDUgMTA4ek03NDAgMzI4bDc0IDc5bC03MCA3OWgtMTYzdi00OWgxNDJ2LTU1aC0xNDJ2LTU0aDE1OXpNODk4IDQwNmw5OSAtMTEwdjIxN3pNMTE4NiA0NTNxMCAzMyAtNDAgMzNoLTg0di02OWg4M3E0MSAwIDQxIDM2ek0xNDc1IDQ1N3EwIDI5IC00MiAyOWgtODJ2LTYxaDgxcTQzIDAgNDMgMzJ6TTExOTcgOTIzcTAgMjkgLTQyIDI5aC04MnYtNjBoODFxNDMgMCA0MyAzMXpNMTY1NiA4NTRoODlsLTQ0IDEwOHoNCk02OTkgMTAwOXYtMjcxaC02NnYyMTJsLTk0IC0yMTJoLTU3bC05NCAyMTJ2LTIxMmgtMTMybC0yNSA2MGgtMTM1bC0yNSAtNjBoLTcwbDExNiAyNzFoOTZsMTEwIC0yNTd2MjU3aDEwNmw4NSAtMTg0bDc3IDE4NGgxMDh6TTEyNTUgNDUzcTAgLTIwIC01LjUgLTM1dC0xNCAtMjV0LTIyLjUgLTE2LjV0LTI2IC0xMHQtMzEuNSAtNC41dC0zMS41IC0xdC0zMi41IDAuNXQtMjkuNSAwLjV2LTkxaC0xMjZsLTgwIDkwbC04MyAtOTBoLTI1NnYyNzFoMjYwDQpsODAgLTg5bDgyIDg5aDIwN3ExMDkgMCAxMDkgLTg5ek05NjQgNzk0di01NmgtMjE3djI3MWgyMTd2LTU3aC0xNTJ2LTQ5aDE0OHYtNTVoLTE0OHYtNTRoMTUyek0yMzA0IDIzNXYtMjI5cTAgLTU1IC0zOC41IC05NC41dC05My41IC0zOS41aC0yMDQwcS01NSAwIC05My41IDM5LjV0LTM4LjUgOTQuNXY2NzhoMTExbDI1IDYxaDU1bDI1IC02MWgyMTh2NDZsMTkgLTQ2aDExM2wyMCA0N3YtNDdoNTQxdjk5bDEwIDFxMTAgMCAxMCAtMTR2LTg2aDI3OQ0KdjIzcTIzIC0xMiA1NSAtMTh0NTIuNSAtNi41dDYzIDAuNXQ1MS41IDFsMjUgNjFoNTZsMjUgLTYxaDIyN3Y1OGwzNCAtNThoMTgydjM3OGgtMTgwdi00NGwtMjUgNDRoLTE4NXYtNDRsLTIzIDQ0aC0yNDlxLTY5IDAgLTEwOSAtMjJ2MjJoLTE3MnYtMjJxLTI0IDIyIC03MyAyMmgtNjI4bC00MyAtOTdsLTQzIDk3aC0xOTh2LTQ0bC0yMiA0NGgtMTY5bC03OCAtMTc5djM5MXEwIDU1IDM4LjUgOTQuNXQ5My41IDM5LjVoMjA0MA0KcTU1IDAgOTMuNSAtMzkuNXQzOC41IC05NC41di02NzhoLTEyMHEtNTEgMCAtODEgLTIydjIyaC0xNzdxLTU1IDAgLTc4IC0yMnYyMmgtMzE2di0yMnEtMzEgMjIgLTg3IDIyaC0yMDl2LTIycS0yMyAyMiAtOTEgMjJoLTIzNGwtNTQgLTU4bC01MCA1OGgtMzQ5di0zNzhoMzQzbDU1IDU5bDUyIC01OWgyMTF2ODloMjFxNTkgMCA5MCAxM3YtMTAyaDE3NHY5OWg4cTggMCAxMCAtMnQyIC0xMHYtODdoNTI5cTU3IDAgODggMjR2LTI0aDE2OA0KcTYwIDAgOTUgMTd6TTE1NDYgNDY5cTAgLTIzIC0xMiAtNDN0LTM0IC0yOXEyNSAtOSAzNCAtMjZ0OSAtNDZ2LTU0aC02NXY0NXEwIDMzIC0xMiA0My41dC00NiAxMC41aC02OXYtOTloLTY1djI3MWgxNTRxNDggMCA3NyAtMTV0MjkgLTU4ek0xMjY5IDkzNnEwIC0yNCAtMTIuNSAtNDR0LTMzLjUgLTI5cTI2IC05IDM0LjUgLTI1LjV0OC41IC00Ni41di01M2gtNjVxMCA5IDAuNSAyNi41dDAgMjV0LTMgMTguNXQtOC41IDE2dC0xNy41IDguNQ0KdC0yOS41IDMuNWgtNzB2LTk4aC02NHYyNzFsMTUzIC0xcTQ5IDAgNzggLTE0LjV0MjkgLTU3LjV6TTE3OTggMzI3di01NmgtMjE2djI3MWgyMTZ2LTU2aC0xNTF2LTQ5aDE0OHYtNTVoLTE0OHYtNTR6TTEzNzIgMTAwOXYtMjcxaC02NnYyNzFoNjZ6TTIwNjUgMzU3cTAgLTg2IC0xMDIgLTg2aC0xMjZ2NThoMTI2cTM0IDAgMzQgMjVxMCAxNiAtMTcgMjF0LTQxLjUgNXQtNDkuNSAzLjV0LTQyIDIyLjV0LTE3IDU1cTAgMzkgMjYgNjB0NjYgMjENCmgxMzB2LTU3aC0xMTlxLTM2IDAgLTM2IC0yNXEwIC0xNiAxNy41IC0yMC41dDQyIC00dDQ5IC0yLjV0NDIgLTIxLjV0MTcuNSAtNTQuNXpNMjMwNCA0MDd2LTEwMXEtMjQgLTM1IC04OCAtMzVoLTEyNXY1OGgxMjVxMzMgMCAzMyAyNXEwIDEzIC0xMi41IDE5dC0zMSA1LjV0LTQwIDJ0LTQwIDh0LTMxIDI0dC0xMi41IDQ4LjVxMCAzOSAyNi41IDYwdDY2LjUgMjFoMTI5di01N2gtMTE4cS0zNiAwIC0zNiAtMjVxMCAtMjAgMjkgLTIydDY4LjUgLTUNCnQ1Ni41IC0yNnpNMjEzOSAxMDA4di0yNzBoLTkybC0xMjIgMjAzdi0yMDNoLTEzMmwtMjYgNjBoLTEzNGwtMjUgLTYwaC03NXEtMTI5IDAgLTEyOSAxMzNxMCAxMzggMTMzIDEzOGg2M3YtNTlxLTcgMCAtMjggMXQtMjguNSAwLjV0LTIzIC0ydC0yMS41IC02LjV0LTE0LjUgLTEzLjV0LTExLjUgLTIzdC0zIC0zMy41cTAgLTM4IDEzLjUgLTU4dDQ5LjUgLTIwaDI5bDkyIDIxM2g5N2wxMDkgLTI1NnYyNTZoOTlsMTE0IC0xODh2MTg4aDY2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ2OSIgdW5pY29kZT0iJiN4ZjFmNDsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik03NDUgNjMwcTAgLTM3IC0yNS41IC02MS41dC02Mi41IC0yNC41cS0yOSAwIC00Ni41IDE2dC0xNy41IDQ0cTAgMzcgMjUgNjIuNXQ2MiAyNS41cTI4IDAgNDYuNSAtMTYuNXQxOC41IC00NS41ek0xNTMwIDc3OXEwIC00MiAtMjIgLTU3dC02NiAtMTVsLTMyIC0xbDE3IDEwN3EyIDExIDEzIDExaDE4cTIyIDAgMzUgLTJ0MjUgLTEyLjV0MTIgLTMwLjV6TTE4ODEgNjMwcTAgLTM2IC0yNS41IC02MXQtNjEuNSAtMjVxLTI5IDAgLTQ3IDE2DQp0LTE4IDQ0cTAgMzcgMjUgNjIuNXQ2MiAyNS41cTI4IDAgNDYuNSAtMTYuNXQxOC41IC00NS41ek01MTMgODAxcTAgNTkgLTM4LjUgODUuNXQtMTAwLjUgMjYuNWgtMTYwcS0xOSAwIC0yMSAtMTlsLTY1IC00MDhxLTEgLTYgMyAtMTF0MTAgLTVoNzZxMjAgMCAyMiAxOWwxOCAxMTBxMSA4IDcgMTN0MTUgNi41dDE3IDEuNXQxOSAtMXQxNCAtMXE4NiAwIDEzNSA0OC41dDQ5IDEzNC41ek04MjIgNDg5bDQxIDI2MXExIDYgLTMgMTF0LTEwIDVoLTc2DQpxLTE0IDAgLTE3IC0zM3EtMjcgNDAgLTk1IDQwcS03MiAwIC0xMjIuNSAtNTR0LTUwLjUgLTEyN3EwIC01OSAzNC41IC05NHQ5Mi41IC0zNXEyOCAwIDU4IDEydDQ4IDMycS00IC0xMiAtNCAtMjFxMCAtMTYgMTMgLTE2aDY5cTE5IDAgMjIgMTl6TTEyNjkgNzUycTAgNSAtNCA5LjV0LTkgNC41aC03N3EtMTEgMCAtMTggLTEwbC0xMDYgLTE1NmwtNDQgMTUwcS01IDE2IC0yMiAxNmgtNzVxLTUgMCAtOSAtNC41dC00IC05LjVxMCAtMiAxOS41IC01OQ0KdDQyIC0xMjN0MjMuNSAtNzBxLTgyIC0xMTIgLTgyIC0xMjBxMCAtMTMgMTMgLTEzaDc3cTExIDAgMTggMTBsMjU1IDM2OHEyIDIgMiA3ek0xNjQ5IDgwMXEwIDU5IC0zOC41IDg1LjV0LTEwMC41IDI2LjVoLTE1OXEtMjAgMCAtMjIgLTE5bC02NSAtNDA4cS0xIC02IDMgLTExdDEwIC01aDgycTEyIDAgMTYgMTNsMTggMTE2cTEgOCA3IDEzdDE1IDYuNXQxNyAxLjV0MTkgLTF0MTQgLTFxODYgMCAxMzUgNDguNXQ0OSAxMzQuNXpNMTk1OCA0ODkNCmw0MSAyNjFxMSA2IC0zIDExdC0xMCA1aC03NnEtMTQgMCAtMTcgLTMzcS0yNiA0MCAtOTUgNDBxLTcyIDAgLTEyMi41IC01NHQtNTAuNSAtMTI3cTAgLTU5IDM0LjUgLTk0dDkyLjUgLTM1cTI5IDAgNTkgMTJ0NDcgMzJxMCAtMSAtMiAtOXQtMiAtMTJxMCAtMTYgMTMgLTE2aDY5cTE5IDAgMjIgMTl6TTIxNzYgODk4djFxMCAxNCAtMTMgMTRoLTc0cS0xMSAwIC0xMyAtMTFsLTY1IC00MTZsLTEgLTJxMCAtNSA0IC05LjV0MTAgLTQuNWg2Ng0KcTE5IDAgMjEgMTl6TTM5MiA3NjRxLTUgLTM1IC0yNiAtNDZ0LTYwIC0xMWwtMzMgLTFsMTcgMTA3cTIgMTEgMTMgMTFoMTlxNDAgMCA1OCAtMTEuNXQxMiAtNDguNXpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzAiIHVuaWNvZGU9IiYjeGYxZjU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTU5NyA2MzNxMCAtNjkgLTIxIC0xMDZxLTE5IC0zNSAtNTIgLTM1cS0yMyAwIC00MSA5djIyNHEyOSAzMCA1NyAzMHE1NyAwIDU3IC0xMjJ6TTIwMzUgNjY5aC0xMTBxNiA5OCA1NiA5OHE1MSAwIDU0IC05OHpNNDc2IDUzNHEwIDU5IC0zMyA5MS41dC0xMDEgNTcuNXEtMzYgMTMgLTUyIDI0dC0xNiAyNXEwIDI2IDM4IDI2cTU4IDAgMTI0IC0zM2wxOCAxMTJxLTY3IDMyIC0xNDkgMzJxLTc3IDAgLTEyMyAtMzhxLTQ4IC0zOSAtNDggLTEwOQ0KcTAgLTU4IDMyLjUgLTkwLjV0OTkuNSAtNTYuNXEzOSAtMTQgNTQuNSAtMjUuNXQxNS41IC0yNy41cTAgLTMxIC00OCAtMzFxLTI5IDAgLTcwIDEyLjV0LTcyIDMwLjVsLTE4IC0xMTNxNzIgLTQxIDE2OCAtNDFxODEgMCAxMjkgMzdxNTEgNDEgNTEgMTE3ek03NzEgNzQ5bDE5IDExMWgtOTZ2MTM1bC0xMjkgLTIxbC0xOCAtMTE0bC00NiAtOGwtMTcgLTEwM2g2MnYtMjE5cTAgLTg0IDQ0IC0xMjBxMzggLTMwIDExMSAtMzBxMzIgMCA3OSAxMXYxMTgNCnEtMzIgLTcgLTQ0IC03cS00MiAwIC00MiA1MHYxOTdoNzd6TTEwODcgNzI0djEzOXEtMTUgMyAtMjggM3EtMzIgMCAtNTUuNSAtMTZ0LTMzLjUgLTQ2bC0xMCA1NmgtMTMxdi00NzFoMTUwdjMwNnEyNiAzMSA4MiAzMXExNiAwIDI2IC0yek0xMTI0IDM4OWgxNTB2NDcxaC0xNTB2LTQ3MXpNMTc0NiA2MzhxMCAxMjIgLTQ1IDE3OXEtNDAgNTIgLTExMSA1MnEtNjQgMCAtMTE3IC01NmwtOCA0N2gtMTMydi02NDVsMTUwIDI1djE1MQ0KcTM2IC0xMSA2OCAtMTFxODMgMCAxMzQgNTZxNjEgNjUgNjEgMjAyek0xMjc4IDk4NnEwIDMzIC0yMyA1NnQtNTYgMjN0LTU2IC0yM3QtMjMgLTU2dDIzIC01Ni41dDU2IC0yMy41dDU2IDIzLjV0MjMgNTYuNXpNMjE3NiA2MjlxMCAxMTMgLTQ4IDE3NnEtNTAgNjQgLTE0NCA2NHEtOTYgMCAtMTUxLjUgLTY2dC01NS41IC0xODBxMCAtMTI4IDYzIC0xODhxNTUgLTU1IDE2MSAtNTVxMTAxIDAgMTYwIDQwbC0xNiAxMDNxLTU3IC0zMSAtMTI4IC0zMQ0KcS00MyAwIC02MyAxOXEtMjMgMTkgLTI4IDY2aDI0OHEyIDE0IDIgNTJ6TTIzMDQgMTI4MHYtMTI4MHEwIC01MiAtMzggLTkwdC05MCAtMzhoLTIwNDhxLTUyIDAgLTkwIDM4dC0zOCA5MHYxMjgwcTAgNTIgMzggOTB0OTAgMzhoMjA0OHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDcxIiB1bmljb2RlPSImI3hmMWY2OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE1NTggNjg0cTYxIC0zNTYgMjk4IC01NTZxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC00NDhxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODAuNSA3NC41dC03NS41IDE4MC41ek0xMDI0IC0xNzZxMTYgMCAxNiAxNnQtMTYgMTZxLTU5IDAgLTEwMS41IDQyLjV0LTQyLjUgMTAxLjVxMCAxNiAtMTYgMTZ0LTE2IC0xNnEwIC03MyA1MS41IC0xMjQuNXQxMjQuNSAtNTEuNXpNMjAyNiAxNDI0cTggLTEwIDcuNSAtMjMuNXQtMTAuNSAtMjIuNQ0KbC0xODcyIC0xNjIycS0xMCAtOCAtMjMuNSAtN3QtMjEuNSAxMWwtODQgOTZxLTggMTAgLTcuNSAyMy41dDEwLjUgMjEuNWwxODYgMTYxcS0xOSAzMiAtMTkgNjZxNTAgNDIgOTEgODh0ODUgMTE5LjV0NzQuNSAxNTguNXQ1MCAyMDZ0MTkuNSAyNjBxMCAxNTIgMTE3IDI4Mi41dDMwNyAxNTguNXEtOCAxOSAtOCAzOXEwIDQwIDI4IDY4dDY4IDI4dDY4IC0yOHQyOCAtNjhxMCAtMjAgLTggLTM5cTEyNCAtMTggMjE5IC04Mi41dDE0OCAtMTU3LjUNCmw0MTggMzYzcTEwIDggMjMuNSA3dDIxLjUgLTExeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3MiIgdW5pY29kZT0iJiN4ZjFmNzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xMDQwIC0xNjBxMCAxNiAtMTYgMTZxLTU5IDAgLTEwMS41IDQyLjV0LTQyLjUgMTAxLjVxMCAxNiAtMTYgMTZ0LTE2IC0xNnEwIC03MyA1MS41IC0xMjQuNXQxMjQuNSAtNTEuNXExNiAwIDE2IDE2ek01MDMgMzE1bDg3NyA3NjBxLTQyIDg4IC0xMzIuNSAxNDYuNXQtMjIzLjUgNTguNXEtOTMgMCAtMTY5LjUgLTMxLjV0LTEyMS41IC04MC41dC02OSAtMTAzdC0yNCAtMTA1cTAgLTM4NCAtMTM3IC02NDV6TTE4NTYgMTI4DQpxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC00NDhxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1dC0xODAuNSA3NC41dC03NS41IDE4MC41bDE0OSAxMjloNzU3cS0xNjYgMTg3IC0yMjcgNDU5bDExMSA5N3E2MSAtMzU2IDI5OCAtNTU2ek0xOTQyIDE1MjBsODQgLTk2cTggLTEwIDcuNSAtMjMuNXQtMTAuNSAtMjIuNWwtMTg3MiAtMTYyMnEtMTAgLTggLTIzLjUgLTd0LTIxLjUgMTFsLTg0IDk2cS04IDEwIC03LjUgMjMuNXQxMC41IDIxLjVsMTg2IDE2MQ0KcS0xOSAzMiAtMTkgNjZxNTAgNDIgOTEgODh0ODUgMTE5LjV0NzQuNSAxNTguNXQ1MCAyMDZ0MTkuNSAyNjBxMCAxNTIgMTE3IDI4Mi41dDMwNyAxNTguNXEtOCAxOSAtOCAzOXEwIDQwIDI4IDY4dDY4IDI4dDY4IC0yOHQyOCAtNjhxMCAtMjAgLTggLTM5cTEyNCAtMTggMjE5IC04Mi41dDE0OCAtMTU3LjVsNDE4IDM2M3ExMCA4IDIzLjUgN3QyMS41IC0xMXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzMiIHVuaWNvZGU9IiYjeGYxZjg7IiBob3Jpei1hZHYteD0iMTQwOCIgDQpkPSJNNTEyIDE2MHY3MDRxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtNzA0cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek03NjggMTYwdjcwNHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi03MDRxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTEwMjQgMTYwdjcwNHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi03MDQNCnEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNNDgwIDExNTJoNDQ4bC00OCAxMTdxLTcgOSAtMTcgMTFoLTMxN3EtMTAgLTIgLTE3IC0xMXpNMTQwOCAxMTIwdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTQ4cTAgLTgzIC00NyAtMTQzLjV0LTExMyAtNjAuNWgtODMycS02NiAwIC0xMTMgNTguNXQtNDcgMTQxLjV2OTUyaC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgzMDlsNzAgMTY3DQpxMTUgMzcgNTQgNjN0NzkgMjZoMzIwcTQwIDAgNzkgLTI2dDU0IC02M2w3MCAtMTY3aDMwOXExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3NCIgdW5pY29kZT0iJiN4ZjFmOTsiIA0KZD0iTTExNTAgNDYydi0xMDlxMCAtNTAgLTM2LjUgLTg5dC05NCAtNjAuNXQtMTE4IC0zMi41dC0xMTcuNSAtMTFxLTIwNSAwIC0zNDIuNSAxMzl0LTEzNy41IDM0NnEwIDIwMyAxMzYgMzM5dDMzOSAxMzZxMzQgMCA3NS41IC00LjV0OTMgLTE4dDkyLjUgLTM0dDY5IC01Ni41dDI4IC04MXYtMTA5cTAgLTE2IC0xNiAtMTZoLTExOHEtMTYgMCAtMTYgMTZ2NzBxMCA0MyAtNjUuNSA2Ny41dC0xMzcuNSAyNC41cS0xNDAgMCAtMjI4LjUgLTkxLjUNCnQtODguNSAtMjM3LjVxMCAtMTUxIDkxLjUgLTI0OS41dDIzMy41IC05OC41cTY4IDAgMTM4IDI0dDcwIDY2djcwcTAgNyA0LjUgMTEuNXQxMC41IDQuNWgxMTlxNiAwIDExIC00LjV0NSAtMTEuNXpNNzY4IDEyODBxLTEzMCAwIC0yNDguNSAtNTF0LTIwNCAtMTM2LjV0LTEzNi41IC0yMDR0LTUxIC0yNDguNXQ1MSAtMjQ4LjV0MTM2LjUgLTIwNHQyMDQgLTEzNi41dDI0OC41IC01MXQyNDguNSA1MXQyMDQgMTM2LjV0MTM2LjUgMjA0dDUxIDI0OC41DQp0LTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ3NSIgdW5pY29kZT0iJiN4ZjFmYTsiIA0KZD0iTTk3MiA3NjFxMCAxMDggLTUzLjUgMTY5dC0xNDcuNSA2MXEtNjMgMCAtMTI0IC0zMC41dC0xMTAgLTg0LjV0LTc5LjUgLTEzN3QtMzAuNSAtMTgwcTAgLTExMiA1My41IC0xNzN0MTUwLjUgLTYxcTk2IDAgMTc2IDY2LjV0MTIyLjUgMTY2dDQyLjUgMjAzLjV6TTE1MzYgNjQwcTAgLTExMSAtMzcgLTE5N3QtOTguNSAtMTM1dC0xMzEuNSAtNzQuNXQtMTQ1IC0yNy41cS02IDAgLTE1LjUgLTAuNXQtMTYuNSAtMC41cS05NSAwIC0xNDIgNTMNCnEtMjggMzMgLTMzIDgzcS01MiAtNjYgLTEzMS41IC0xMTB0LTE3My41IC00NHEtMTYxIDAgLTI0OS41IDk1LjV0LTg4LjUgMjY5LjVxMCAxNTcgNjYgMjkwdDE3OSAyMTAuNXQyNDYgNzcuNXE4NyAwIDE1NSAtMzUuNXQxMDYgLTk5LjVsMiAxOWwxMSA1NnExIDYgNS41IDEydDkuNSA2aDExOHE1IDAgMTMgLTExcTUgLTUgMyAtMTZsLTEyMCAtNjE0cS01IC0yNCAtNSAtNDhxMCAtMzkgMTIuNSAtNTJ0NDQuNSAtMTNxMjggMSA1NyA1LjV0NzMgMjQNCnQ3NyA1MHQ1NyA4OS41dDI0IDEzN3EwIDI5MiAtMTc0IDQ2NnQtNDY2IDE3NHEtMTMwIDAgLTI0OC41IC01MXQtMjA0IC0xMzYuNXQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxcTIyOCAwIDQwNSAxNDRxMTEgOSAyNCA4dDIxIC0xMmw0MSAtNDlxOCAtMTIgNyAtMjRxLTIgLTEzIC0xMiAtMjJxLTEwMiAtODMgLTIyNy41IC0xMjh0LTI1OC41IC00NXEtMTU2IDAgLTI5OCA2MQ0KdC0yNDUgMTY0dC0xNjQgMjQ1dC02MSAyOTh0NjEgMjk4dDE2NCAyNDV0MjQ1IDE2NHQyOTggNjFxMzQ0IDAgNTU2IC0yMTJ0MjEyIC01NTZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDc2IiB1bmljb2RlPSImI3hmMWZiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2OTggMTQ0MnE5NCAtOTQgOTQgLTIyNi41dC05NCAtMjI1LjVsLTIyNSAtMjIzbDEwNCAtMTA0cTEwIC0xMCAxMCAtMjN0LTEwIC0yM2wtMjEwIC0yMTBxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMTA1IDEwNWwtNjAzIC02MDNxLTM3IC0zNyAtOTAgLTM3aC0yMDNsLTI1NiAtMTI4bC02NCA2NGwxMjggMjU2djIwM3EwIDUzIDM3IDkwbDYwMyA2MDNsLTEwNSAxMDVxLTEwIDEwIC0xMCAyM3QxMCAyM2wyMTAgMjEwcTEwIDEwIDIzIDEwDQp0MjMgLTEwbDEwNCAtMTA0bDIyMyAyMjVxOTMgOTQgMjI1LjUgOTR0MjI2LjUgLTk0ek01MTIgNjRsNTc2IDU3NmwtMTkyIDE5MmwtNTc2IC01NzZ2LTE5MmgxOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMWZjIiB1bmljb2RlPSImI3hmMWZjOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE2MTUgMTUzNnE3MCAwIDEyMi41IC00Ni41dDUyLjUgLTExNi41cTAgLTYzIC00NSAtMTUxcS0zMzIgLTYyOSAtNDY1IC03NTJxLTk3IC05MSAtMjE4IC05MXEtMTI2IDAgLTIxNi41IDkyLjV0LTkwLjUgMjE5LjVxMCAxMjggOTIgMjEybDYzOCA1NzlxNTkgNTQgMTMwIDU0ek03MDYgNTAycTM5IC03NiAxMDYuNSAtMTMwdDE1MC41IC03NmwxIC03MXE0IC0yMTMgLTEyOS41IC0zNDd0LTM0OC41IC0xMzRxLTEyMyAwIC0yMTggNDYuNQ0KdC0xNTIuNSAxMjcuNXQtODYuNSAxODN0LTI5IDIyMHE3IC01IDQxIC0zMHQ2MiAtNDQuNXQ1OSAtMzYuNXQ0NiAtMTdxNDEgMCA1NSAzN3EyNSA2NiA1Ny41IDExMi41dDY5LjUgNzZ0ODggNDcuNXQxMDMgMjUuNXQxMjUgMTAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzgiIHVuaWNvZGU9IiYjeGYxZmQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTc5MiAxMjh2LTM4NGgtMTc5MnYzODRxNDUgMCA4NSAxNHQ1OSAyNy41dDQ3IDM3LjVxMzAgMjcgNTEuNSAzOHQ1Ni41IDExcTI0IDAgNDQgLTd0MzEgLTE1dDMzIC0yN3EyOSAtMjUgNDcgLTM4dDU4IC0yN3Q4NiAtMTRxNDUgMCA4NSAxNC41dDU4IDI3dDQ4IDM3LjVxMjEgMTkgMzIuNSAyN3QzMSAxNXQ0My41IDdxMzUgMCA1Ni41IC0xMXQ1MS41IC0zOHEyOCAtMjQgNDcgLTM3LjV0NTkgLTI3LjV0ODUgLTE0dDg1IDE0dDU5IDI3LjUNCnQ0NyAzNy41cTMwIDI3IDUxLjUgMzh0NTYuNSAxMXEzNCAwIDU1LjUgLTExdDUxLjUgLTM4cTI4IC0yNCA0NyAtMzcuNXQ1OSAtMjcuNXQ4NSAtMTR6TTE3OTIgNDQ4di0xOTJxLTI0IDAgLTQ0IDd0LTMxIDE1dC0zMyAyN3EtMjkgMjUgLTQ3IDM4dC01OCAyN3QtODUgMTRxLTQ2IDAgLTg2IC0xNHQtNTggLTI3dC00NyAtMzhxLTIyIC0xOSAtMzMgLTI3dC0zMSAtMTV0LTQ0IC03cS0zNSAwIC01Ni41IDExdC01MS41IDM4cS0yOSAyNSAtNDcgMzgNCnQtNTggMjd0LTg2IDE0cS00NSAwIC04NSAtMTQuNXQtNTggLTI3dC00OCAtMzcuNXEtMjEgLTE5IC0zMi41IC0yN3QtMzEgLTE1dC00My41IC03cS0zNSAwIC01Ni41IDExdC01MS41IDM4cS0yOCAyNCAtNDcgMzcuNXQtNTkgMjcuNXQtODUgMTRxLTQ2IDAgLTg2IC0xNHQtNTggLTI3dC00NyAtMzhxLTMwIC0yNyAtNTEuNSAtMzh0LTU2LjUgLTExdjE5MnEwIDgwIDU2IDEzNnQxMzYgNTZoNjR2NDQ4aDI1NnYtNDQ4aDI1NnY0NDhoMjU2di00NDgNCmgyNTZ2NDQ4aDI1NnYtNDQ4aDY0cTgwIDAgMTM2IC01NnQ1NiAtMTM2ek01MTIgMTMxMnEwIC03NyAtMzYgLTExOC41dC05MiAtNDEuNXEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjVxMCAyOSA5LjUgNTF0MjMuNSAzNHQzMSAyOHQzMSAzMS41dDIzLjUgNDQuNXQ5LjUgNjdxMzggMCA4MyAtNzR0NDUgLTE1MHpNMTAyNCAxMzEycTAgLTc3IC0zNiAtMTE4LjV0LTkyIC00MS41cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNQ0KcTAgMjkgOS41IDUxdDIzLjUgMzR0MzEgMjh0MzEgMzEuNXQyMy41IDQ0LjV0OS41IDY3cTM4IDAgODMgLTc0dDQ1IC0xNTB6TTE1MzYgMTMxMnEwIC03NyAtMzYgLTExOC41dC05MiAtNDEuNXEtNTMgMCAtOTAuNSAzNy41dC0zNy41IDkwLjVxMCAyOSA5LjUgNTF0MjMuNSAzNHQzMSAyOHQzMSAzMS41dDIzLjUgNDQuNXQ5LjUgNjdxMzggMCA4MyAtNzR0NDUgLTE1MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80NzkiIHVuaWNvZGU9IiYjeGYxZmU7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjA0OCAwdi0xMjhoLTIwNDh2MTUzNmgxMjh2LTE0MDhoMTkyMHpNMTY2NCAxMDI0bDI1NiAtODk2aC0xNjY0djU3Nmw0NDggNTc2bDU3NiAtNTc2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4MCIgdW5pY29kZT0iJiN4ZjIwMDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03NjggNjQ2bDU0NiAtNTQ2cS0xMDYgLTEwOCAtMjQ3LjUgLTE2OHQtMjk4LjUgLTYwcS0yMDkgMCAtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN2LTc2MnpNOTU1IDY0MGg3NzNxMCAtMTU3IC02MCAtMjk4LjV0LTE2OCAtMjQ3LjV6TTE2NjQgNzY4aC03Njh2NzY4cTIwOSAwIDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDgxIiB1bmljb2RlPSImI3hmMjAxOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTIwNDggMHYtMTI4aC0yMDQ4djE1MzZoMTI4di0xNDA4aDE5MjB6TTE5MjAgMTI0OHYtNDM1cTAgLTIxIC0xOS41IC0yOS41dC0zNS41IDcuNWwtMTIxIDEyMWwtNjMzIC02MzNxLTEwIC0xMCAtMjMgLTEwdC0yMyAxMGwtMjMzIDIzM2wtNDE2IC00MTZsLTE5MiAxOTJsNTg1IDU4NXExMCAxMCAyMyAxMHQyMyAtMTBsMjMzIC0yMzNsNDY0IDQ2NGwtMTIxIDEyMXEtMTYgMTYgLTcuNSAzNS41dDI5LjUgMTkuNWg0MzVxMTQgMCAyMyAtOQ0KdDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4MiIgdW5pY29kZT0iJiN4ZjIwMjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMjkyIDgzMnEwIC02IDEwIC00MXExMCAtMjkgMjUgLTQ5LjV0NDEgLTM0dDQ0IC0yMHQ1NSAtMTYuNXEzMjUgLTkxIDMyNSAtMzMycTAgLTE0NiAtMTA1LjUgLTI0Mi41dC0yNTQuNSAtOTYuNXEtNTkgMCAtMTExLjUgMTguNXQtOTEuNSA0NS41dC03NyA3NC41dC02MyA4Ny41dC01My41IDEwMy41dC00My41IDEwM3QtMzkuNSAxMDYuNXQtMzUuNSA5NXEtMzIgODEgLTYxLjUgMTMzLjV0LTczLjUgOTYuNXQtMTA0IDY0dC0xNDIgMjANCnEtOTYgMCAtMTgzIC01NS41dC0xMzggLTE0NC41dC01MSAtMTg1cTAgLTE2MCAxMDYuNSAtMjc5LjV0MjYzLjUgLTExOS41cTE3NyAwIDI1OCA5NXE1NiA2MyA4MyAxMTZsODQgLTE1MnEtMTUgLTM0IC00NCAtNzBsMSAtMXEtMTMxIC0xNTIgLTM4OCAtMTUycS0xNDcgMCAtMjY5LjUgNzl0LTE5MC41IDIwNy41dC02OCAyNzQuNXEwIDEwNSA0My41IDIwNnQxMTYgMTc2LjV0MTcyIDEyMS41dDIwNC41IDQ2cTg3IDAgMTU5IC0xOXQxMjMuNSAtNTANCnQ5NSAtODB0NzIuNSAtOTl0NTguNSAtMTE3dDUwLjUgLTEyNC41dDUwIC0xMzAuNXQ1NSAtMTI3cTk2IC0yMDAgMjMzIC0yMDBxODEgMCAxMzguNSA0OC41dDU3LjUgMTI4LjVxMCA0MiAtMTkgNzJ0LTUwLjUgNDZ0LTcyLjUgMzEuNXQtODQuNSAyN3QtODcuNSAzNHQtODEgNTJ0LTY1IDgydC0zOSAxMjIuNXEtMyAxNiAtMyAzM3EwIDExMCA4Ny41IDE5MnQxOTguNSA3OHE3OCAtMyAxMjAuNSAtMTQuNXQ5MC41IC01My41aC0xDQpxMTIgLTExIDIzIC0yNC41dDI2IC0zNnQxOSAtMjcuNWwtMTI5IC05OXEtMjYgNDkgLTU0IDcwdjFxLTIzIDIxIC05NyAyMXEtNDkgMCAtODQgLTMzdC0zNSAtODN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDgzIiB1bmljb2RlPSImI3hmMjAzOyIgDQpkPSJNMTQzMiA0ODRxMCAxNzMgLTIzNCAyMzlxLTM1IDEwIC01MyAxNi41dC0zOCAyNXQtMjkgNDYuNXEwIDIgLTIgOC41dC0zIDEydC0xIDcuNXEwIDM2IDI0LjUgNTkuNXQ2MC41IDIzLjVxNTQgMCA3MSAtMTVoLTFxMjAgLTE1IDM5IC01MWw5MyA3MXEtMzkgNTQgLTQ5IDY0cS0zMyAyOSAtNjcuNSAzOXQtODUuNSAxMHEtODAgMCAtMTQyIC01Ny41dC02MiAtMTM3LjVxMCAtNyAyIC0yM3ExNiAtOTYgNjQuNSAtMTQwdDE0OC41IC03Mw0KcTI5IC04IDQ5IC0xNS41dDQ1IC0yMS41dDM4LjUgLTM0LjV0MTMuNSAtNDYuNXYtNXExIC01OCAtNDAuNSAtOTN0LTEwMC41IC0zNXEtOTcgMCAtMTY3IDE0NHEtMjMgNDcgLTUxLjUgMTIxLjV0LTQ4IDEyNS41dC01NCAxMTAuNXQtNzQgOTUuNXQtMTAzLjUgNjAuNXQtMTQ3IDI0LjVxLTEwMSAwIC0xOTIgLTU2dC0xNDQgLTE0OHQtNTAgLTE5MnYtMXE0IC0xMDggNTAuNSAtMTk5dDEzMy41IC0xNDcuNXQxOTYgLTU2LjVxMTg2IDAgMjc5IDExMA0KcTIwIDI3IDMxIDUxbC02MCAxMDlxLTQyIC04MCAtOTkgLTExNnQtMTQ2IC0zNnEtMTE1IDAgLTE5MSA4N3QtNzYgMjA0cTAgMTA1IDgyIDE4OXQxODYgODRxMTEyIDAgMTcwIC01My41dDEwNCAtMTcyLjVxOCAtMjEgMjUuNSAtNjguNXQyOC41IC03Ni41dDMxLjUgLTc0LjV0MzguNSAtNzR0NDUuNSAtNjIuNXQ1NS41IC01My41dDY2IC0zM3Q4MCAtMTMuNXExMDcgMCAxODMgNjkuNXQ3NiAxNzQuNXpNMTUzNiAxMTIwdi05NjANCnEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNXQ4NC41IC0yMDMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80ODQiIHVuaWNvZGU9IiYjeGYyMDQ7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTE1MiA2NDBxMCAxMDQgLTQwLjUgMTk4LjV0LTEwOS41IDE2My41dC0xNjMuNSAxMDkuNXQtMTk4LjUgNDAuNXQtMTk4LjUgLTQwLjV0LTE2My41IC0xMDkuNXQtMTA5LjUgLTE2My41dC00MC41IC0xOTguNXQ0MC41IC0xOTguNXQxMDkuNSAtMTYzLjV0MTYzLjUgLTEwOS41dDE5OC41IC00MC41dDE5OC41IDQwLjV0MTYzLjUgMTA5LjV0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXpNMTkyMCA2NDBxMCAxMDQgLTQwLjUgMTk4LjUNCnQtMTA5LjUgMTYzLjV0LTE2My41IDEwOS41dC0xOTguNSA0MC41aC0zODZxMTE5IC05MCAxODguNSAtMjI0dDY5LjUgLTI4OHQtNjkuNSAtMjg4dC0xODguNSAtMjI0aDM4NnExMDQgMCAxOTguNSA0MC41dDE2My41IDEwOS41dDEwOS41IDE2My41dDQwLjUgMTk4LjV6TTIwNDggNjQwcTAgLTEzMCAtNTEgLTI0OC41dC0xMzYuNSAtMjA0dC0yMDQgLTEzNi41dC0yNDguNSAtNTFoLTc2OHEtMTMwIDAgLTI0OC41IDUxdC0yMDQgMTM2LjUNCnQtMTM2LjUgMjA0dC01MSAyNDguNXQ1MSAyNDguNXQxMzYuNSAyMDR0MjA0IDEzNi41dDI0OC41IDUxaDc2OHExMzAgMCAyNDguNSAtNTF0MjA0IC0xMzYuNXQxMzYuNSAtMjA0dDUxIC0yNDguNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80ODUiIHVuaWNvZGU9IiYjeGYyMDU7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMCA2NDBxMCAxMzAgNTEgMjQ4LjV0MTM2LjUgMjA0dDIwNCAxMzYuNXQyNDguNSA1MWg3NjhxMTMwIDAgMjQ4LjUgLTUxdDIwNCAtMTM2LjV0MTM2LjUgLTIwNHQ1MSAtMjQ4LjV0LTUxIC0yNDguNXQtMTM2LjUgLTIwNHQtMjA0IC0xMzYuNXQtMjQ4LjUgLTUxaC03NjhxLTEzMCAwIC0yNDguNSA1MXQtMjA0IDEzNi41dC0xMzYuNSAyMDR0LTUxIDI0OC41ek0xNDA4IDEyOHExMDQgMCAxOTguNSA0MC41dDE2My41IDEwOS41DQp0MTA5LjUgMTYzLjV0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5LjUgMTYzLjV0LTE2My41IDEwOS41dC0xOTguNSA0MC41dC0xOTguNSAtNDAuNXQtMTYzLjUgLTEwOS41dC0xMDkuNSAtMTYzLjV0LTQwLjUgLTE5OC41dDQwLjUgLTE5OC41dDEwOS41IC0xNjMuNXQxNjMuNSAtMTA5LjV0MTk4LjUgLTQwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDg2IiB1bmljb2RlPSImI3hmMjA2OyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTc2MiAzODRoLTMxNHEtNDAgMCAtNTcuNSAzNXQ2LjUgNjdsMTg4IDI1MXEtNjUgMzEgLTEzNyAzMXEtMTMyIDAgLTIyNiAtOTR0LTk0IC0yMjZ0OTQgLTIyNnQyMjYgLTk0cTExNSAwIDIwMyA3Mi41dDExMSAxODMuNXpNNTc2IDUxMmgxODZxLTE4IDg1IC03NSAxNDh6TTEwNTYgNTEybDI4OCAzODRoLTQ4MGwtOTkgLTEzMnExMDUgLTEwMyAxMjYgLTI1MmgxNjV6TTIxNzYgNDQ4cTAgMTMyIC05NCAyMjZ0LTIyNiA5NA0KcS02MCAwIC0xMjEgLTI0bDE3NCAtMjYwcTE1IC0yMyAxMCAtNDl0LTI3IC00MHEtMTUgLTExIC0zNiAtMTFxLTM1IDAgLTUzIDI5bC0xNzQgMjYwcS05MyAtOTUgLTkzIC0yMjVxMCAtMTMyIDk0IC0yMjZ0MjI2IC05NHQyMjYgOTR0OTQgMjI2ek0yMzA0IDQ0OHEwIC0xODUgLTEzMS41IC0zMTYuNXQtMzE2LjUgLTEzMS41dC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCA5NyAzOS41IDE4My41dDEwOS41IDE0OS41bC02NSA5OGwtMzUzIC00NjkNCnEtMTggLTI2IC01MSAtMjZoLTE5N3EtMjMgLTE2NCAtMTQ5IC0yNzR0LTI5NCAtMTEwcS0xODUgMCAtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41dDEzMS41IDMxNi41dDMxNi41IDEzMS41cTExNCAwIDIxNSAtNTVsMTM3IDE4M2gtMjI0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMzg0di0xMjhoNDM1bC04NSAxMjhoLTIyMnEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDI1NnEzMyAwIDUzIC0yOGwyNjcgLTQwMA0KcTkxIDQ0IDE5MiA0NHExODUgMCAzMTYuNSAtMTMxLjV0MTMxLjUgLTMxNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4NyIgdW5pY29kZT0iJiN4ZjIwNzsiIA0KZD0iTTM4NCAzMjBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTE0MDggMzIwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xMzYyIDcxNmwtNzIgMzg0cS01IDIzIC0yMi41IDM3LjV0LTQwLjUgMTQuNQ0KaC05MThxLTIzIDAgLTQwLjUgLTE0LjV0LTIyLjUgLTM3LjVsLTcyIC0zODRxLTUgLTMwIDE0IC01M3Q0OSAtMjNoMTA2MnEzMCAwIDQ5IDIzdDE0IDUzek0xMTM2IDEzMjhxMCAyMCAtMTQgMzR0LTM0IDE0aC02NDBxLTIwIDAgLTM0IC0xNHQtMTQgLTM0dDE0IC0zNHQzNCAtMTRoNjQwcTIwIDAgMzQgMTR0MTQgMzR6TTE1MzYgNjAzdi02MDNoLTEyOHYtMTI4cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjUNCnQtMzcuNSA5MC41djEyOGgtNzY4di0xMjhxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41djEyOGgtMTI4djYwM3EwIDExMiAyNSAyMjNsMTAzIDQ1NHE5IDc4IDk3LjUgMTM3dDIzMCA4OXQzMTIuNSAzMHQzMTIuNSAtMzB0MjMwIC04OXQ5Ny41IC0xMzdsMTA1IC00NTRxMjMgLTEwMiAyMyAtMjIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ4OCIgdW5pY29kZT0iJiN4ZjIwODsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xNDYzIDcwNHEwIC0zNSAtMjUgLTYwLjV0LTYxIC0yNS41aC03MDJxLTM2IDAgLTYxIDI1LjV0LTI1IDYwLjV0MjUgNjAuNXQ2MSAyNS41aDcwMnEzNiAwIDYxIC0yNS41dDI1IC02MC41ek0xNjc3IDcwNHEwIDg2IC0yMyAxNzBoLTk4MnEtMzYgMCAtNjEgMjV0LTI1IDYwcTAgMzYgMjUgNjF0NjEgMjVoOTA4cS04OCAxNDMgLTIzNSAyMjd0LTMyMCA4NHEtMTc3IDAgLTMyNy41IC04Ny41dC0yMzggLTIzNy41dC04Ny41IC0zMjcNCnEwIC04NiAyMyAtMTcwaDk4MnEzNiAwIDYxIC0yNXQyNSAtNjBxMCAtMzYgLTI1IC02MXQtNjEgLTI1aC05MDhxODggLTE0MyAyMzUuNSAtMjI3dDMyMC41IC04NHExMzIgMCAyNTMgNTEuNXQyMDggMTM5dDEzOSAyMDh0NTIgMjUzLjV6TTIwNDggOTU5cTAgLTM1IC0yNSAtNjB0LTYxIC0yNWgtMTMxcTE3IC04NSAxNyAtMTcwcTAgLTE2NyAtNjUuNSAtMzE5LjV0LTE3NS41IC0yNjN0LTI2Mi41IC0xNzZ0LTMxOS41IC02NS41DQpxLTI0NiAwIC00NDguNSAxMzN0LTMwMS41IDM1MGgtMTg5cS0zNiAwIC02MSAyNXQtMjUgNjFxMCAzNSAyNSA2MHQ2MSAyNWgxMzJxLTE3IDg1IC0xNyAxNzBxMCAxNjcgNjUuNSAzMTkuNXQxNzUuNSAyNjN0MjYyLjUgMTc2dDMyMC41IDY1LjVxMjQ1IDAgNDQ3LjUgLTEzM3QzMDEuNSAtMzUwaDE4OHEzNiAwIDYxIC0yNXQyNSAtNjF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDg5IiB1bmljb2RlPSImI3hmMjA5OyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTk1MyAxMTU4bC0xMTQgLTMyOGwxMTcgLTIxcTE2NSA0NTEgMTY1IDUxOHEwIDU2IC0zOCA1NnEtNTcgMCAtMTMwIC0yMjV6TTY1NCA0NzFsMzMgLTg4cTM3IDQyIDcxIDY3bC0zMyA1LjV0LTM4LjUgN3QtMzIuNSA4LjV6TTM2MiAxMzY3cTAgLTk4IDE1OSAtNTIxcTE3IDEwIDQ5IDEwcTE1IDAgNzUgLTVsLTEyMSAzNTFxLTc1IDIyMCAtMTIzIDIyMHEtMTkgMCAtMjkgLTE3LjV0LTEwIC0zNy41ek0yODMgNjA4cTAgLTM2IDUxLjUgLTExOQ0KdDExNy41IC0xNTN0MTAwIC03MHExNCAwIDI1LjUgMTN0MTEuNSAyN3EwIDI0IC0zMiAxMDJxLTEzIDMyIC0zMiA3MnQtNDcuNSA4OXQtNjEuNSA4MXQtNjIgMzJxLTIwIDAgLTQ1LjUgLTI3dC0yNS41IC00N3pNMTI1IDI3M3EwIC00MSAyNSAtMTA0cTU5IC0xNDUgMTgzLjUgLTIyN3QyODEuNSAtODJxMjI3IDAgMzgyIDE3MHExNTIgMTY5IDE1MiA0MjdxMCA0MyAtMSA2N3QtMTEuNSA2MnQtMzAuNSA1NnEtNTYgNDkgLTIxMS41IDc1LjUNCnQtMjcwLjUgMjYuNXEtMzcgMCAtNDkgLTExcS0xMiAtNSAtMTIgLTM1cTAgLTM0IDIxLjUgLTYwdDU1LjUgLTQwdDc3LjUgLTIzLjV0ODcuNSAtMTEuNXQ4NSAtNHQ3MCAwaDIzcTI0IDAgNDAgLTE5cTE1IC0xOSAxOSAtNTVxLTI4IC0yOCAtOTYgLTU0cS02MSAtMjIgLTkzIC00NnEtNjQgLTQ2IC0xMDguNSAtMTE0dC00NC41IC0xMzdxMCAtMzEgMTguNSAtODguNXQxOC41IC04Ny41bC0zIC0xMnEtNCAtMTIgLTQgLTE0DQpxLTEzNyAxMCAtMTQ2IDIxNnEtOCAtMiAtNDEgLTJxMiAtNyAyIC0yMXEwIC01MyAtNDAuNSAtODkuNXQtOTQuNSAtMzYuNXEtODIgMCAtMTY2LjUgNzh0LTg0LjUgMTU5cTAgMzQgMzMgNjdxNTIgLTY0IDYwIC03NnE3NyAtMTA0IDEzMyAtMTA0cTEyIDAgMjYuNSA4LjV0MTQuNSAyMC41cTAgMzQgLTg3LjUgMTQ1dC0xMTYuNSAxMTFxLTQzIDAgLTcwIC00NC41dC0yNyAtOTAuNXpNMTEgMjY0cTAgMTAxIDQyLjUgMTYzdDEzNi41IDg4DQpxLTI4IDc0IC0yOCAxMDRxMCA2MiA2MSAxMjN0MTIyIDYxcTI5IDAgNzAgLTE1cS0xNjMgNDYyIC0xNjMgNTY3cTAgODAgNDEgMTMwLjV0MTE5IDUwLjVxMTMxIDAgMzI1IC01ODFxNiAtMTcgOCAtMjNxNiAxNiAyOSA3OS41dDQzLjUgMTE4LjV0NTQgMTI3LjV0NjQuNSAxMjN0NzAuNSA4Ni41dDc2LjUgMzZxNzEgMCAxMTIgLTQ5dDQxIC0xMjJxMCAtMTA4IC0xNTkgLTU1MHE2MSAtMTUgMTAwLjUgLTQ2dDU4LjUgLTc4dDI2IC05My41DQp0NyAtMTEwLjVxMCAtMTUwIC00NyAtMjgwdC0xMzIgLTIyNXQtMjExIC0xNTB0LTI3OCAtNTVxLTExMSAwIC0yMjMgNDJxLTE0OSA1NyAtMjU4IDE5MS41dC0xMDkgMjg2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDkwIiB1bmljb2RlPSImI3hmMjBhOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTc4NSA1MjhoMjA3cS0xNCAtMTU4IC05OC41IC0yNDguNXQtMjE0LjUgLTkwLjVxLTE2MiAwIC0yNTQuNSAxMTZ0LTkyLjUgMzE2cTAgMTk0IDkzIDMxMS41dDIzMyAxMTcuNXExNDggMCAyMzIgLTg3dDk3IC0yNDdoLTIwM3EtNSA2NCAtMzUuNSA5OXQtODEuNSAzNXEtNTcgMCAtODguNSAtNjAuNXQtMzEuNSAtMTc3LjVxMCAtNDggNSAtODR0MTggLTY5LjV0NDAgLTUxLjV0NjYgLTE4cTk1IDAgMTA5IDEzOXpNMTQ5NyA1MjhoMjA2DQpxLTE0IC0xNTggLTk4IC0yNDguNXQtMjE0IC05MC41cS0xNjIgMCAtMjU0LjUgMTE2dC05Mi41IDMxNnEwIDE5NCA5MyAzMTEuNXQyMzMgMTE3LjVxMTQ4IDAgMjMyIC04N3Q5NyAtMjQ3aC0yMDRxLTQgNjQgLTM1IDk5dC04MSAzNXEtNTcgMCAtODguNSAtNjAuNXQtMzEuNSAtMTc3LjVxMCAtNDggNSAtODR0MTggLTY5LjV0MzkuNSAtNTEuNXQ2NS41IC0xOHE0OSAwIDc2LjUgMzh0MzMuNSAxMDF6TTE4NTYgNjQ3cTAgMjA3IC0xNS41IDMwNw0KdC02MC41IDE2MXEtNiA4IC0xMy41IDE0dC0yMS41IDE1dC0xNiAxMXEtODYgNjMgLTY5NyA2M3EtNjI1IDAgLTcxMCAtNjNxLTUgLTQgLTE3LjUgLTExLjV0LTIxIC0xNHQtMTQuNSAtMTQuNXEtNDUgLTYwIC02MCAtMTU5LjV0LTE1IC0zMDguNXEwIC0yMDggMTUgLTMwNy41dDYwIC0xNjAuNXE2IC04IDE1IC0xNXQyMC41IC0xNHQxNy41IC0xMnE0NCAtMzMgMjM5LjUgLTQ5dDQ3MC41IC0xNnE2MTAgMCA2OTcgNjVxNSA0IDE3IDExdDIwLjUgMTQNCnQxMy41IDE2cTQ2IDYwIDYxIDE1OXQxNSAzMDl6TTIwNDggMTQwOHYtMTUzNmgtMjA0OHYxNTM2aDIwNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNDkxIiB1bmljb2RlPSImI3hmMjBiOyIgDQpkPSJNOTkyIDkxMnYtNDk2cTAgLTE0IC05IC0yM3QtMjMgLTloLTE2MHEtMTQgMCAtMjMgOXQtOSAyM3Y0OTZxMCAxMTIgLTgwIDE5MnQtMTkyIDgwaC0yNzJ2LTExNTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTYwcS0xNCAwIC0yMyA5dC05IDIzdjEzNDRxMCAxNCA5IDIzdDIzIDloNDY0cTEzNSAwIDI0OSAtNjYuNXQxODAuNSAtMTgwLjV0NjYuNSAtMjQ5ek0xMzc2IDEzNzZ2LTg4MHEwIC0xMzUgLTY2LjUgLTI0OXQtMTgwLjUgLTE4MC41DQp0LTI0OSAtNjYuNWgtNDY0cS0xNCAwIC0yMyA5dC05IDIzdjk2MHEwIDE0IDkgMjN0MjMgOWgxNjBxMTQgMCAyMyAtOXQ5IC0yM3YtNzY4aDI3MnExMTIgMCAxOTIgODB0ODAgMTkydjg4MHEwIDE0IDkgMjN0MjMgOWgxNjBxMTQgMCAyMyAtOXQ5IC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTIiIHVuaWNvZGU9IiYjeGYyMGM7IiANCmQ9Ik0xMzExIDY5NHYtMTE0cTAgLTI0IC0xMy41IC0zOHQtMzcuNSAtMTRoLTIwMnEtMjQgMCAtMzggMTR0LTE0IDM4djExNHEwIDI0IDE0IDM4dDM4IDE0aDIwMnEyNCAwIDM3LjUgLTE0dDEzLjUgLTM4ek04MjEgNDY0djI1MHEwIDUzIC0zMi41IDg1LjV0LTg1LjUgMzIuNWgtMTMzcS02OCAwIC05NiAtNTJxLTI4IDUyIC05NiA1MmgtMTMwcS01MyAwIC04NS41IC0zMi41dC0zMi41IC04NS41di0yNTBxMCAtMjIgMjEgLTIyaDU1DQpxMjIgMCAyMiAyMnYyMzBxMCAyNCAxMy41IDM4dDM4LjUgMTRoOTRxMjQgMCAzOCAtMTR0MTQgLTM4di0yMzBxMCAtMjIgMjEgLTIyaDU0cTIyIDAgMjIgMjJ2MjMwcTAgMjQgMTQgMzh0MzggMTRoOTdxMjQgMCAzNy41IC0xNHQxMy41IC0zOHYtMjMwcTAgLTIyIDIyIC0yMmg1NXEyMSAwIDIxIDIyek0xNDEwIDU2MHYxNTRxMCA1MyAtMzMgODUuNXQtODYgMzIuNWgtMjY0cS01MyAwIC04NiAtMzIuNXQtMzMgLTg1LjV2LTQxMA0KcTAgLTIxIDIyIC0yMWg1NXEyMSAwIDIxIDIxdjE4MHEzMSAtNDIgOTQgLTQyaDE5MXE1MyAwIDg2IDMyLjV0MzMgODUuNXpNMTUzNiAxMTc2di0xMDcycTAgLTk2IC02OCAtMTY0dC0xNjQgLTY4aC0xMDcycS05NiAwIC0xNjQgNjh0LTY4IDE2NHYxMDcycTAgOTYgNjggMTY0dDE2NCA2OGgxMDcycTk2IDAgMTY0IC02OHQ2OCAtMTY0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5MyIgdW5pY29kZT0iJiN4ZjIwZDsiIA0KZD0iTTkxNSA0NTBoLTI5NGwxNDcgNTUxek0xMDAxIDEyOGgzMTFsLTMyNCAxMDI0aC00NDBsLTMyNCAtMTAyNGgzMTFsMzgzIDMxNHpNMTUzNiAxMTIwdi05NjBxMCAtMTE4IC04NSAtMjAzdC0yMDMgLTg1aC05NjBxLTExOCAwIC0yMDMgODV0LTg1IDIwM3Y5NjBxMCAxMTggODUgMjAzdDIwMyA4NWg5NjBxMTE4IDAgMjAzIC04NXQ4NSAtMjAzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5NCIgdW5pY29kZT0iJiN4ZjIwZTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0yMDQ4IDY0MXEwIC0yMSAtMTMgLTM2LjV0LTMzIC0xOS41bC0yMDUgLTM1NnEzIC05IDMgLTE4cTAgLTIwIC0xMi41IC0zNS41dC0zMi41IC0xOS41bC0xOTMgLTMzN3EzIC04IDMgLTE2cTAgLTIzIC0xNi41IC00MHQtNDAuNSAtMTdxLTI1IDAgLTQxIDE4aC00MDBxLTE3IC0yMCAtNDMgLTIwdC00MyAyMGgtMzk5cS0xNyAtMjAgLTQzIC0yMHEtMjMgMCAtNDAgMTYuNXQtMTcgNDAuNXEwIDggNCAyMGwtMTkzIDMzNQ0KcS0yMCA0IC0zMi41IDE5LjV0LTEyLjUgMzUuNXEwIDkgMyAxOGwtMjA2IDM1NnEtMjAgNSAtMzIuNSAyMC41dC0xMi41IDM1LjVxMCAyMSAxMy41IDM2LjV0MzMuNSAxOS41bDE5OSAzNDRxMCAxIC0wLjUgM3QtMC41IDNxMCAzNiAzNCA1MWwyMDkgMzYzcS00IDEwIC00IDE4cTAgMjQgMTcgNDAuNXQ0MCAxNi41cTI2IDAgNDQgLTIxaDM5NnExNiAyMSA0MyAyMXQ0MyAtMjFoMzk4cTE4IDIxIDQ0IDIxcTIzIDAgNDAgLTE2LjV0MTcgLTQwLjUNCnEwIC02IC00IC0xOGwyMDcgLTM1OHEyMyAtMSAzOSAtMTcuNXQxNiAtMzguNXEwIC0xMyAtNyAtMjdsMTg3IC0zMjRxMTkgLTQgMzEuNSAtMTkuNXQxMi41IC0zNS41ek0xMDYzIC0xNThoMzg5bC0zNDIgMzU0aC0xNDNsLTM0MiAtMzU0aDM2MHExOCAxNiAzOSAxNnQzOSAtMTZ6TTExMiA2NTRxMSAtNCAxIC0xM3EwIC0xMCAtMiAtMTVsMjA4IC0zNjBsMTUgLTZsMTg4IDE5OXYzNDdsLTE4NyAxOTRxLTEzIC04IC0yOSAtMTB6TTk4NiAxNDM4DQpoLTM4OGwxOTAgLTIwMGw1NTQgMjAwaC0yODBxLTE2IC0xNiAtMzggLTE2dC0zOCAxNnpNMTY4OSAyMjZxMSA2IDUgMTFsLTY0IDY4bC0xNyAtNzloNzZ6TTE1ODMgMjI2bDIyIDEwNWwtMjUyIDI2NmwtMjk2IC0zMDdsNjMgLTY0aDQ2M3pNMTQ5NSAtMTQybDE2IDI4bDY1IDMxMGgtNDI3bDMzMyAtMzQzcTggNCAxMyA1ek01NzggLTE1OGg1bDM0MiAzNTRoLTM3M3YtMzM1bDQgLTZxMTQgLTUgMjIgLTEzek01NTIgMjI2aDQwMmw2NCA2Ng0KbC0zMDkgMzIxbC0xNTcgLTE2NnYtMjIxek0zNTkgMjI2aDE2M3YxODlsLTE2OCAtMTc3cTQgLTggNSAtMTJ6TTM1OCAxMDUxcTAgLTEgMC41IC0ydDAuNSAtMnEwIC0xNiAtOCAtMjlsMTcxIC0xNzd2MjY5ek01NTIgMTEyMXYtMzExbDE1MyAtMTU3bDI5NyAzMTRsLTIyMyAyMzZ6TTU1NiAxNDI1bC00IC04di0yNjRsMjA1IDc0bC0xOTEgMjAxcS02IC0yIC0xMCAtM3pNMTQ0NyAxNDM4aC0xNmwtNjIxIC0yMjRsMjEzIC0yMjV6TTEwMjMgOTQ2DQpsLTI5NyAtMzE1bDMxMSAtMzE5bDI5NiAzMDd6TTY4OCA2MzRsLTEzNiAxNDF2LTI4NHpNMTAzOCAyNzBsLTQyIC00NGg4NXpNMTM3NCA2MThsMjM4IC0yNTFsMTMyIDYyNGwtMyA1bC0xIDF6TTE3MTggMTAxOHEtOCAxMyAtOCAyOXYybC0yMTYgMzc2cS01IDEgLTEzIDVsLTQzNyAtNDYzbDMxMCAtMzI3ek01MjIgMTE0MnYyMjNsLTE2MyAtMjgyek01MjIgMTk2aC0xNjNsMTYzIC0yODN2Mjgzek0xNjA3IDE5NmwtNDggLTIyN2wxMzAgMjI3aC04Mg0Kek0xNzI5IDI2NmwyMDcgMzYxcS0yIDEwIC0yIDE0cTAgMSAzIDE2bC0xNzEgMjk2bC0xMjkgLTYxMmw3NyAtODJxNSAzIDE1IDd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjEwIiB1bmljb2RlPSImI3hmMjEwOyIgDQpkPSJNMCA4NTZxMCAxMzEgOTEuNSAyMjYuNXQyMjIuNSA5NS41aDc0MmwzNTIgMzU4di0xNDcwcTAgLTEzMiAtOTEuNSAtMjI3dC0yMjIuNSAtOTVoLTc4MHEtMTMxIDAgLTIyMi41IDk1dC05MS41IDIyN3Y3OTB6TTEyMzIgMTAybC0xNzYgMTgwdjQyNXEwIDQ2IC0zMiA3OXQtNzggMzNoLTQ4NHEtNDYgMCAtNzggLTMzdC0zMiAtNzl2LTQ5MnEwIC00NiAzMi41IC03OS41dDc3LjUgLTMzLjVoNzcweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5NiIgdW5pY29kZT0iJiN4ZjIxMTsiIA0KZD0iTTkzNCAxMzg2cS0zMTcgLTEyMSAtNTU2IC0zNjIuNXQtMzU4IC01NjAuNXEtMjAgODkgLTIwIDE3NnEwIDIwOCAxMDIuNSAzODQuNXQyNzguNSAyNzl0Mzg0IDEwMi41cTgyIDAgMTY5IC0xOXpNMTIwMyAxMjY3cTkzIC02NSAxNjQgLTE1NXEtMzg5IC0xMTMgLTY3NC41IC00MDAuNXQtMzk2LjUgLTY3Ni41cS05MyA3MiAtMTU1IDE2MnExMTIgMzg2IDM5NSA2NzF0NjY3IDM5OXpNNDcwIC02N3ExMTUgMzU2IDM3OS41IDYyMnQ2MTkuNSAzODQNCnE0MCAtOTIgNTQgLTE5NXEtMjkyIC0xMjAgLTUxNiAtMzQ1dC0zNDMgLTUxOHEtMTAzIDE0IC0xOTQgNTJ6TTE1MzYgLTEyNXEtMTkzIDUwIC0zNjcgMTE1cS0xMzUgLTg0IC0yOTAgLTEwN3ExMDkgMjA1IDI3NCAzNzAuNXQzNjkgMjc1LjVxLTIxIC0xNTIgLTEwMSAtMjg0cTY1IC0xNzUgMTE1IC0zNzB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjEyIiB1bmljb2RlPSImI3hmMjEyOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE4OTMgMTE0NGwxNTUgLTEyNzJxLTEzMSAwIC0yNTcgNTdxLTIwMCA5MSAtMzkzIDkxcS0yMjYgMCAtMzc0IC0xNDhxLTE0OCAxNDggLTM3NCAxNDhxLTE5MyAwIC0zOTMgLTkxcS0xMjggLTU3IC0yNTIgLTU3aC01bDE1NSAxMjcycTIyNCAxMjcgNDgyIDEyN3EyMzMgMCAzODcgLTEwNnExNTQgMTA2IDM4NyAxMDZxMjU4IDAgNDgyIC0xMjd6TTEzOTggMTU3cTEyOSAwIDIzMiAtMjguNXQyNjAgLTkzLjVsLTEyNCAxMDIxDQpxLTE3MSA3OCAtMzY4IDc4cS0yMjQgMCAtMzc0IC0xNDFxLTE1MCAxNDEgLTM3NCAxNDFxLTE5NyAwIC0zNjggLTc4bC0xMjQgLTEwMjFxMTA1IDQzIDE2NS41IDY1dDE0OC41IDM5LjV0MTc4IDE3LjVxMjAyIDAgMzc0IC0xMDhxMTcyIDEwOCAzNzQgMTA4ek0xNDM4IDE5MWwtNTUgOTA3cS0yMTEgLTQgLTM1OSAtMTU1cS0xNTIgMTU1IC0zNzQgMTU1cS0xNzYgMCAtMzM2IC02NmwtMTE0IC05NDFxMTI0IDUxIDIyOC41IDc2dDIyMS41IDI1DQpxMjA5IDAgMzc0IC0xMDJxMTcyIDEwNyAzNzQgMTAyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzQ5OCIgdW5pY29kZT0iJiN4ZjIxMzsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xNTAwIDE2NXY3MzNxMCAyMSAtMTUgMzZ0LTM1IDE1aC05M3EtMjAgMCAtMzUgLTE1dC0xNSAtMzZ2LTczM3EwIC0yMCAxNSAtMzV0MzUgLTE1aDkzcTIwIDAgMzUgMTV0MTUgMzV6TTEyMTYgMTY1djUzMXEwIDIwIC0xNSAzNXQtMzUgMTVoLTEwMXEtMjAgMCAtMzUgLTE1dC0xNSAtMzV2LTUzMXEwIC0yMCAxNSAtMzV0MzUgLTE1aDEwMXEyMCAwIDM1IDE1dDE1IDM1ek05MjQgMTY1djQyOXEwIDIwIC0xNSAzNXQtMzUgMTVoLTEwMQ0KcS0yMCAwIC0zNSAtMTV0LTE1IC0zNXYtNDI5cTAgLTIwIDE1IC0zNXQzNSAtMTVoMTAxcTIwIDAgMzUgMTV0MTUgMzV6TTYzMiAxNjV2MzYycTAgMjAgLTE1IDM1dC0zNSAxNWgtMTAxcS0yMCAwIC0zNSAtMTV0LTE1IC0zNXYtMzYycTAgLTIwIDE1IC0zNXQzNSAtMTVoMTAxcTIwIDAgMzUgMTV0MTUgMzV6TTIwNDggMzExcTAgLTE2NiAtMTE4IC0yODR0LTI4NCAtMTE4aC0xMjQ0cS0xNjYgMCAtMjg0IDExOHQtMTE4IDI4NA0KcTAgMTE2IDYzIDIxNC41dDE2OCAxNDguNXEtMTAgMzQgLTEwIDczcTAgMTEzIDgwLjUgMTkzLjV0MTkzLjUgODAuNXExMDIgMCAxODAgLTY3cTQ1IDE4MyAxOTQgMzAwdDMzOCAxMTdxMTQ5IDAgMjc1IC03My41dDE5OS41IC0xOTkuNXQ3My41IC0yNzVxMCAtNjYgLTE0IC0xMjJxMTM1IC0zMyAyMjEgLTE0Mi41dDg2IC0yNDcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il80OTkiIHVuaWNvZGU9IiYjeGYyMTQ7IiANCmQ9Ik0wIDE1MzZoMTUzNnYtMTM5MmwtNzc2IC0zMzhsLTc2MCAzMzh2MTM5MnpNMTQzNiAyMDl2OTI2aC0xMzM2di05MjZsNjYxIC0yOTR6TTE0MzYgMTIzNXYyMDFoLTEzMzZ2LTIwMWgxMzM2ek0xODEgOTM3di0xMTVoLTM3djExNWgzN3pNMTgxIDc4OXYtMTE1aC0zN3YxMTVoMzd6TTE4MSA2NDF2LTExNWgtMzd2MTE1aDM3ek0xODEgNDkzdi0xMTVoLTM3djExNWgzN3pNMTgxIDM0NXYtMTE1aC0zN3YxMTVoMzd6TTIwNyAyMDJsMTUgMzQNCmwxMDUgLTQ3bC0xNSAtMzN6TTM0MyAxNDJsMTUgMzRsMTA1IC00NmwtMTUgLTM0ek00NzggODJsMTUgMzRsMTA1IC00NmwtMTUgLTM0ek02MTQgMjNsMTUgMzNsMTA0IC00NmwtMTUgLTM0ek03OTcgMTBsMTA1IDQ2bDE1IC0zM2wtMTA1IC00N3pNOTMyIDcwbDEwNSA0NmwxNSAtMzRsLTEwNSAtNDZ6TTEwNjggMTMwbDEwNSA0NmwxNSAtMzRsLTEwNSAtNDZ6TTEyMDMgMTg5bDEwNSA0N2wxNSAtMzRsLTEwNSAtNDZ6TTI1OSAxMzg5di0zNmgtMTE0DQp2MzZoMTE0ek00MjEgMTM4OXYtMzZoLTExNXYzNmgxMTV6TTU4MyAxMzg5di0zNmgtMTE1djM2aDExNXpNNzQ0IDEzODl2LTM2aC0xMTR2MzZoMTE0ek05MDYgMTM4OXYtMzZoLTExNHYzNmgxMTR6TTEwNjggMTM4OXYtMzZoLTExNXYzNmgxMTV6TTEyMzAgMTM4OXYtMzZoLTExNXYzNmgxMTV6TTEzOTEgMTM4OXYtMzZoLTExNHYzNmgxMTR6TTE4MSAxMDQ5di03OWgtMzd2MTE1aDExNXYtMzZoLTc4ek00MjEgMTA4NXYtMzZoLTExNXYzNmgxMTV6DQpNNTgzIDEwODV2LTM2aC0xMTV2MzZoMTE1ek03NDQgMTA4NXYtMzZoLTExNHYzNmgxMTR6TTkwNiAxMDg1di0zNmgtMTE0djM2aDExNHpNMTA2OCAxMDg1di0zNmgtMTE1djM2aDExNXpNMTIzMCAxMDg1di0zNmgtMTE1djM2aDExNXpNMTM1NSA5NzB2NzloLTc4djM2aDExNXYtMTE1aC0zN3pNMTM1NSA4MjJ2MTE1aDM3di0xMTVoLTM3ek0xMzU1IDY3NHYxMTVoMzd2LTExNWgtMzd6TTEzNTUgNTI2djExNWgzN3YtMTE1aC0zN3pNMTM1NSAzNzgNCnYxMTVoMzd2LTExNWgtMzd6TTEzNTUgMjMwdjExNWgzN3YtMTE1aC0zN3pNNzYwIDI2NXEtMTI5IDAgLTIyMSA5MS41dC05MiAyMjEuNXEwIDEyOSA5MiAyMjF0MjIxIDkycTEzMCAwIDIyMS41IC05MnQ5MS41IC0yMjFxMCAtMTMwIC05MS41IC0yMjEuNXQtMjIxLjUgLTkxLjV6TTU5NSA2NDZxMCAtMzYgMTkuNSAtNTYuNXQ0OS41IC0yNXQ2NCAtN3Q2NCAtMnQ0OS41IC05dDE5LjUgLTMwLjVxMCAtNDkgLTExMiAtNDlxLTk3IDAgLTEyMyA1MQ0KaC0zbC0zMSAtNjNxNjcgLTQyIDE2MiAtNDJxMjkgMCA1Ni41IDV0NTUuNSAxNnQ0NS41IDMzdDE3LjUgNTNxMCA0NiAtMjcuNSA2OS41dC02Ny41IDI3dC03OS41IDN0LTY3IDV0LTI3LjUgMjUuNXEwIDIxIDIwLjUgMzN0NDAuNSAxNXQ0MSAzcTM0IDAgNzAuNSAtMTF0NTEuNSAtMzRoM2wzMCA1OHEtMyAxIC0yMSA4LjV0LTIyLjUgOXQtMTkuNSA3dC0yMiA3dC0yMCA0LjV0LTI0IDR0LTIzIDFxLTI5IDAgLTU2LjUgLTV0LTU0IC0xNi41DQp0LTQzIC0zNHQtMTYuNSAtNTMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDAiIHVuaWNvZGU9IiYjeGYyMTU7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNODYzIDUwNHEwIDExMiAtNzkuNSAxOTEuNXQtMTkxLjUgNzkuNXQtMTkxIC03OS41dC03OSAtMTkxLjV0NzkgLTE5MXQxOTEgLTc5dDE5MS41IDc5dDc5LjUgMTkxek0xNzI2IDUwNXEwIDExMiAtNzkgMTkxdC0xOTEgNzl0LTE5MS41IC03OXQtNzkuNSAtMTkxcTAgLTExMyA3OS41IC0xOTJ0MTkxLjUgLTc5dDE5MSA3OS41dDc5IDE5MS41ek0yMDQ4IDEzMTR2LTEzNDhxMCAtNDQgLTMxLjUgLTc1LjV0LTc2LjUgLTMxLjVoLTE4MzINCnEtNDUgMCAtNzYuNSAzMS41dC0zMS41IDc1LjV2MTM0OHEwIDQ0IDMxLjUgNzUuNXQ3Ni41IDMxLjVoNDMxcTQ0IDAgNzYgLTMxLjV0MzIgLTc1LjV2LTE2MWg3NTR2MTYxcTAgNDQgMzIgNzUuNXQ3NiAzMS41aDQzMXE0NSAwIDc2LjUgLTMxLjV0MzEuNSAtNzUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDEiIHVuaWNvZGU9IiYjeGYyMTY7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTQzMCA5NTN6TTE2OTAgNzQ5cTE0OCAwIDI1MyAtOTguNXQxMDUgLTI0NC41cTAgLTE1NyAtMTA5IC0yNjEuNXQtMjY3IC0xMDQuNXEtODUgMCAtMTYyIDI3LjV0LTEzOCA3My41dC0xMTggMTA2dC0xMDkgMTI2dC0xMDMuNSAxMzIuNXQtMTA4LjUgMTI2LjV0LTExNyAxMDZ0LTEzNiA3My41dC0xNTkgMjcuNXEtMTU0IDAgLTI1MS41IC05MS41dC05Ny41IC0yNDQuNXEwIC0xNTcgMTA0IC0yNTB0MjYzIC05M3ExMDAgMCAyMDggMzcuNQ0KdDE5MyA5OC41cTUgNCAyMSAxOC41dDMwIDI0dDIyIDkuNXExNCAwIDI0LjUgLTEwLjV0MTAuNSAtMjQuNXEwIC0yNCAtNjAgLTc3cS0xMDEgLTg4IC0yMzQuNSAtMTQydC0yNjAuNSAtNTRxLTEzMyAwIC0yNDUuNSA1OHQtMTgwIDE2NXQtNjcuNSAyNDFxMCAyMDUgMTQxLjUgMzQxdDM0Ny41IDEzNnExMjAgMCAyMjYuNSAtNDMuNXQxODUuNSAtMTEzdDE1MS41IC0xNTN0MTM5IC0xNjcuNXQxMzMuNSAtMTUzLjV0MTQ5LjUgLTExMw0KdDE3Mi41IC00My41cTEwMiAwIDE2OC41IDYxLjV0NjYuNSAxNjIuNXEwIDk1IC02NC41IDE1OXQtMTU5LjUgNjRxLTMwIDAgLTgxLjUgLTE4LjV0LTY4LjUgLTE4LjVxLTIwIDAgLTM1LjUgMTV0LTE1LjUgMzVxMCAxOCA4LjUgNTd0OC41IDU5cTAgMTU5IC0xMDcuNSAyNjN0LTI2Ni41IDEwNHEtNTggMCAtMTExLjUgLTE4LjV0LTg0IC00MC41dC01NS41IC00MC41dC0zMyAtMTguNXEtMTUgMCAtMjUuNSAxMC41dC0xMC41IDI1LjUNCnEwIDE5IDI1IDQ2cTU5IDY3IDE0NyAxMDMuNXQxODIgMzYuNXExOTEgMCAzMTggLTEyNS41dDEyNyAtMzE1LjVxMCAtMzcgLTQgLTY2cTU3IDE1IDExNSAxNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDIiIHVuaWNvZGU9IiYjeGYyMTc7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTIxNiA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5aC0xMjh2MTI4cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV2LTEyOGgtMTI4cS0yNiAwIC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5aDEyOHYtMTI4cTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV2MTI4aDEyOHEyNiAwIDQ1IDE5dDE5IDQ1ek02NDAgMHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjUNCnQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTUzNiAwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTY2NCAxMDg4di01MTJxMCAtMjQgLTE2IC00Mi41dC00MSAtMjEuNWwtMTA0NCAtMTIycTEgLTcgNC41IC0yMS41dDYgLTI2LjV0Mi41IC0yMnEwIC0xNiAtMjQgLTY0aDkyMA0KcTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTloLTEwMjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXEwIDE0IDExIDM5LjV0MjkuNSA1OS41dDIwLjUgMzhsLTE3NyA4MjNoLTIwNHEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5aDI1NnExNiAwIDI4LjUgLTYuNXQyMCAtMTUuNXQxMyAtMjQuNXQ3LjUgLTI2LjV0NS41IC0yOS41dDQuNSAtMjUuNWgxMjAxcTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MDMiIHVuaWNvZGU9IiYjeGYyMTg7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTI4MCA4MzJxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTlsLTE0NyAtMTQ2djI5M3EwIDI2IC0xOSA0NXQtNDUgMTl0LTQ1IC0xOXQtMTkgLTQ1di0yOTNsLTE0NyAxNDZxLTE5IDE5IC00NSAxOXQtNDUgLTE5dC0xOSAtNDV0MTkgLTQ1bDI1NiAtMjU2cTE5IC0xOSA0NSAtMTl0NDUgMTlsMjU2IDI1NnExOSAxOSAxOSA0NXpNNjQwIDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV0LTkwLjUgMzcuNXQtMzcuNSA5MC41DQp0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE1MzYgMHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTE2NjQgMTA4OHYtNTEycTAgLTI0IC0xNiAtNDIuNXQtNDEgLTIxLjVsLTEwNDQgLTEyMnExIC03IDQuNSAtMjEuNXQ2IC0yNi41dDIuNSAtMjJxMCAtMTYgLTI0IC02NGg5MjANCnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5aC0xMDI0cS0yNiAwIC00NSAxOXQtMTkgNDVxMCAxNCAxMSAzOS41dDI5LjUgNTkuNXQyMC41IDM4bC0xNzcgODIzaC0yMDRxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOWgyNTZxMTYgMCAyOC41IC02LjV0MjAgLTE1LjV0MTMgLTI0LjV0Ny41IC0yNi41dDUuNSAtMjkuNXQ0LjUgLTI1LjVoMTIwMXEyNiAwIDQ1IC0xOXQxOSAtNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA0IiB1bmljb2RlPSImI3hmMjE5OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTIxMiA3NjhsNjIzIC02NjVsLTMwMCA2NjVoLTMyM3pNMTAyNCAtNGwzNDkgNzcyaC02OTh6TTUzOCA4OTZsMjA0IDM4NGgtMjYybC0yODggLTM4NGgzNDZ6TTEyMTMgMTAzbDYyMyA2NjVoLTMyM3pNNjgzIDg5Nmg2ODJsLTIwNCAzODRoLTI3NHpNMTUxMCA4OTZoMzQ2bC0yODggMzg0aC0yNjJ6TTE2NTEgMTM4MmwzODQgLTUxMnExNCAtMTggMTMgLTQxLjV0LTE3IC00MC41bC05NjAgLTEwMjRxLTE4IC0yMCAtNDcgLTIwdC00NyAyMA0KbC05NjAgMTAyNHEtMTYgMTcgLTE3IDQwLjV0MTMgNDEuNWwzODQgNTEycTE4IDI2IDUxIDI2aDExNTJxMzMgMCA1MSAtMjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA1IiB1bmljb2RlPSImI3hmMjFhOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE4MTEgLTE5cTE5IDE5IDQ1IDE5dDQ1IC0xOWwxMjggLTEyOGwtOTAgLTkwbC04MyA4M2wtODMgLTgzcS0xOCAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04Mw0KcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtMTI4IDEyOGw5MCA5MGw4MyAtODNsODMgODNxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M2w4MyA4M3ExOSAxOSA0NSAxOXQ0NSAtMTlsODMgLTgzbDgzIDgzcTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODNsODMgODNxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M2w4MyA4M3ExOSAxOSA0NSAxOXQ0NSAtMTlsODMgLTgzbDgzIDgzDQpxMTkgMTkgNDUgMTl0NDUgLTE5bDgzIC04M3pNMjM3IDE5cS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTEyOCAxMjhsOTAgOTBsODMgLTgybDgzIDgycTE5IDE5IDQ1IDE5dDQ1IC0xOWw4MyAtODJsNjQgNjR2MjkzbC0yMTAgMzE0cS0xNyAyNiAtNyA1Ni41dDQwIDQwLjVsMTc3IDU4djI5OWgxMjh2MTI4aDI1NnYxMjhoMjU2di0xMjhoMjU2di0xMjhoMTI4di0yOTlsMTc3IC01OHEzMCAtMTAgNDAgLTQwLjV0LTcgLTU2LjVsLTIxMCAtMzE0DQp2LTI5M2wxOSAxOHExOSAxOSA0NSAxOXQ0NSAtMTlsODMgLTgybDgzIDgycTE5IDE5IDQ1IDE5dDQ1IC0xOWwxMjggLTEyOGwtOTAgLTkwbC04MyA4M2wtODMgLTgzcS0xOCAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODNxLTE5IC0xOSAtNDUgLTE5dC00NSAxOWwtODMgODNsLTgzIC04M3EtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzbC04MyAtODMNCnEtMTkgLTE5IC00NSAtMTl0LTQ1IDE5bC04MyA4M2wtODMgLTgzcS0xOSAtMTkgLTQ1IC0xOXQtNDUgMTlsLTgzIDgzek02NDAgMTE1MnYtMTI4bDM4NCAxMjhsMzg0IC0xMjh2MTI4aC0xMjh2MTI4aC01MTJ2LTEyOGgtMTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUwNiIgdW5pY29kZT0iJiN4ZjIxYjsiIA0KZD0iTTU3NiAwbDk2IDQ0OGwtOTYgMTI4bC0xMjggNjR6TTgzMiAwbDEyOCA2NDBsLTEyOCAtNjRsLTk2IC0xMjh6TTk5MiAxMDEwcS0yIDQgLTQgNnEtMTAgOCAtOTYgOHEtNzAgMCAtMTY3IC0xOXEtNyAtMiAtMjEgLTJ0LTIxIDJxLTk3IDE5IC0xNjcgMTlxLTg2IDAgLTk2IC04cS0yIC0yIC00IC02cTIgLTE4IDQgLTI3cTIgLTMgNy41IC02LjV0Ny41IC0xMC41cTIgLTQgNy41IC0yMC41dDcgLTIwLjV0Ny41IC0xN3Q4LjUgLTE3dDkgLTE0DQp0MTIgLTEzLjV0MTQgLTkuNXQxNy41IC04dDIwLjUgLTR0MjQuNSAtMnEzNiAwIDU5IDEyLjV0MzIuNSAzMHQxNC41IDM0LjV0MTEuNSAyOS41dDE3LjUgMTIuNWgxMnExMSAwIDE3LjUgLTEyLjV0MTEuNSAtMjkuNXQxNC41IC0zNC41dDMyLjUgLTMwdDU5IC0xMi41cTEzIDAgMjQuNSAydDIwLjUgNHQxNy41IDh0MTQgOS41dDEyIDEzLjV0OSAxNHQ4LjUgMTd0Ny41IDE3dDcgMjAuNXQ3LjUgMjAuNXEyIDcgNy41IDEwLjV0Ny41IDYuNQ0KcTIgOSA0IDI3ek0xNDA4IDEzMXEwIC0xMjEgLTczIC0xOTB0LTE5NCAtNjloLTg3NHEtMTIxIDAgLTE5NCA2OXQtNzMgMTkwcTAgNjEgNC41IDExOHQxOSAxMjUuNXQzNy41IDEyMy41dDYzLjUgMTAzLjV0OTMuNSA3NC41bC05MCAyMjBoMjE0cS0yMiA2NCAtMjIgMTI4cTAgMTIgMiAzMnEtMTk0IDQwIC0xOTQgOTZxMCA1NyAyMTAgOTlxMTcgNjIgNTEuNSAxMzR0NzAuNSAxMTRxMzIgMzcgNzYgMzdxMzAgMCA4NCAtMzF0ODQgLTMxdDg0IDMxDQp0ODQgMzFxNDQgMCA3NiAtMzdxMzYgLTQyIDcwLjUgLTExNHQ1MS41IC0xMzRxMjEwIC00MiAyMTAgLTk5cTAgLTU2IC0xOTQgLTk2cTcgLTgxIC0yMCAtMTYwaDIxNGwtODIgLTIyNXE2MyAtMzMgMTA3LjUgLTk2LjV0NjUuNSAtMTQzLjV0MjkgLTE1MS41dDggLTE0OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUwNyIgdW5pY29kZT0iJiN4ZjIxYzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0yMzAxIDUwMHExMiAtMTAzIC0yMiAtMTk4LjV0LTk5IC0xNjMuNXQtMTU4LjUgLTEwNnQtMTk2LjUgLTMxcS0xNjEgMTEgLTI3OS41IDEyNXQtMTM0LjUgMjc0cS0xMiAxMTEgMjcuNSAyMTAuNXQxMTguNSAxNzAuNWwtNzEgMTA3cS05NiAtODAgLTE1MSAtMTk0dC01NSAtMjQ0cTAgLTI3IC0xOC41IC00Ni41dC00NS41IC0xOS41aC0yNTZoLTY5cS0yMyAtMTY0IC0xNDkgLTI3NHQtMjk0IC0xMTBxLTE4NSAwIC0zMTYuNSAxMzEuNQ0KdC0xMzEuNSAzMTYuNXQxMzEuNSAzMTYuNXQzMTYuNSAxMzEuNXE3NiAwIDE1MiAtMjdsMjQgNDVxLTEyMyAxMTAgLTMwNCAxMTBoLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTloMTI4cTc4IDAgMTQ1IC0xMy41dDExNi41IC0zOC41dDcxLjUgLTM5LjV0NTEgLTM2LjVoNTEyaDExNWwtODUgMTI4aC0yMjJxLTMwIDAgLTQ5IDIyLjV0LTE0IDUyLjVxNCAyMyAyMyAzOHQ0MyAxNWgyNTNxMzMgMCA1MyAtMjhsNzAgLTEwNQ0KbDExNCAxMTRxMTkgMTkgNDYgMTloMTAxcTI2IDAgNDUgLTE5dDE5IC00NXYtMTI4cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtMTc5bDExNSAtMTcycTEzMSA2MyAyNzUgMzZxMTQzIC0yNiAyNDQgLTEzNC41dDExOCAtMjUzLjV6TTQ0OCAxMjhxMTE1IDAgMjAzIDcyLjV0MTExIDE4My41aC0zMTRxLTM1IDAgLTU1IDMxcS0xOCAzMiAtMSA2M2wxNDcgMjc3cS00NyAxMyAtOTEgMTNxLTEzMiAwIC0yMjYgLTk0dC05NCAtMjI2dDk0IC0yMjYNCnQyMjYgLTk0ek0xODU2IDEyOHExMzIgMCAyMjYgOTR0OTQgMjI2dC05NCAyMjZ0LTIyNiA5NHEtNjAgMCAtMTIxIC0yNGwxNzQgLTI2MHExNSAtMjMgMTAgLTQ5dC0yNyAtNDBxLTE1IC0xMSAtMzYgLTExcS0zNSAwIC01MyAyOWwtMTc0IDI2MHEtOTMgLTk1IC05MyAtMjI1cTAgLTEzMiA5NCAtMjI2dDIyNiAtOTR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA4IiB1bmljb2RlPSImI3hmMjFkOyIgDQpkPSJNMTQwOCAwcTAgLTYzIC02MS41IC0xMTMuNXQtMTY0IC04MXQtMjI1IC00NnQtMjUzLjUgLTE1LjV0LTI1My41IDE1LjV0LTIyNSA0NnQtMTY0IDgxdC02MS41IDExMy41cTAgNDkgMzMgODguNXQ5MSA2Ni41dDExOCA0NC41dDEzMSAyOS41cTI2IDUgNDggLTEwLjV0MjYgLTQxLjVxNSAtMjYgLTEwLjUgLTQ4dC00MS41IC0yNnEtNTggLTEwIC0xMDYgLTIzLjV0LTc2LjUgLTI1LjV0LTQ4LjUgLTIzLjV0LTI3LjUgLTE5LjV0LTguNSAtMTINCnEzIC0xMSAyNyAtMjYuNXQ3MyAtMzN0MTE0IC0zMi41dDE2MC41IC0yNXQyMDEuNSAtMTB0MjAxLjUgMTB0MTYwLjUgMjV0MTE0IDMzdDczIDMzLjV0MjcgMjcuNXEtMSA0IC04LjUgMTF0LTI3LjUgMTl0LTQ4LjUgMjMuNXQtNzYuNSAyNXQtMTA2IDIzLjVxLTI2IDQgLTQxLjUgMjZ0LTEwLjUgNDhxNCAyNiAyNiA0MS41dDQ4IDEwLjVxNzEgLTEyIDEzMSAtMjkuNXQxMTggLTQ0LjV0OTEgLTY2LjV0MzMgLTg4LjV6TTEwMjQgODk2di0zODQNCnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTY0di0zODRxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0yNTZxLTI2IDAgLTQ1IDE5dC0xOSA0NXYzODRoLTY0cS0yNiAwIC00NSAxOXQtMTkgNDV2Mzg0cTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNWgzODRxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6TTkyOCAxMjgwcTAgLTkzIC02NS41IC0xNTguNXQtMTU4LjUgLTY1LjV0LTE1OC41IDY1LjV0LTY1LjUgMTU4LjV0NjUuNSAxNTguNXQxNTguNSA2NS41DQp0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTA5IiB1bmljb2RlPSImI3hmMjFlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyODAgNTEyaDMwNXEtNSAtNiAtMTAgLTEwLjV0LTkgLTcuNWwtMyAtNGwtNjIzIC02MDBxLTE4IC0xOCAtNDQgLTE4dC00NCAxOGwtNjI0IDYwMnEtNSAyIC0yMSAyMGgzNjlxMjIgMCAzOS41IDEzLjV0MjIuNSAzNC41bDcwIDI4MWwxOTAgLTY2N3E2IC0yMCAyMyAtMzN0MzkgLTEzcTIxIDAgMzggMTN0MjMgMzNsMTQ2IDQ4NWw1NiAtMTEycTE4IC0zNSA1NyAtMzV6TTE3OTIgOTQwcTAgLTE0NSAtMTAzIC0zMDBoLTM2OWwtMTExIDIyMQ0KcS04IDE3IC0yNS41IDI3dC0zNi41IDhxLTQ1IC01IC01NiAtNDZsLTEyOSAtNDMwbC0xOTYgNjg2cS02IDIwIC0yMy41IDMzdC0zOS41IDEzdC0zOSAtMTMuNXQtMjIgLTM0LjVsLTExNiAtNDY0aC00MjNxLTEwMyAxNTUgLTEwMyAzMDBxMCAyMjAgMTI3IDM0NHQzNTEgMTI0cTYyIDAgMTI2LjUgLTIxLjV0MTIwIC01OHQ5NS41IC02OC41dDc2IC02OHEzNiAzNiA3NiA2OHQ5NS41IDY4LjV0MTIwIDU4dDEyNi41IDIxLjVxMjI0IDAgMzUxIC0xMjQNCnQxMjcgLTM0NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InZlbnVzIiB1bmljb2RlPSImI3hmMjIxOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTExNTIgOTYwcTAgLTIyMSAtMTQ3LjUgLTM4NC41dC0zNjQuNSAtMTg3LjV2LTI2MGgyMjRxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMjI0di0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMjI0djI2MHEtMTUwIDE2IC0yNzEuNSAxMDN0LTE4NiAyMjR0LTUyLjUgMjkyDQpxMTEgMTM0IDgwLjUgMjQ5dDE4MiAxODh0MjQ1LjUgODhxMTcwIDE5IDMxOSAtNTR0MjM2IC0yMTJ0ODcgLTMwNnpNMTI4IDk2MHEwIC0xODUgMTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MTEiIHVuaWNvZGU9IiYjeGYyMjI7IiANCmQ9Ik0xNDcyIDE0MDhxMjYgMCA0NSAtMTl0MTkgLTQ1di00MTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjYybC0zODIgLTM4M3ExMjYgLTE1NiAxMjYgLTM1OXEwIC0xMTcgLTQ1LjUgLTIyMy41dC0xMjMgLTE4NHQtMTg0IC0xMjN0LTIyMy41IC00NS41dC0yMjMuNSA0NS41dC0xODQgMTIzdC0xMjMgMTg0dC00NS41IDIyMy41dDQ1LjUgMjIzLjV0MTIzIDE4NHQxODQgMTIzdDIyMy41IDQ1LjUNCnEyMDMgMCAzNTkgLTEyNmwzODIgMzgyaC0yNjFxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNDE2ek01NzYgMHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxMiIgdW5pY29kZT0iJiN4ZjIyMzsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik04MzAgMTIyMHExNDUgLTcyIDIzMy41IC0yMTAuNXQ4OC41IC0zMDUuNXEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di0xMzJoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTk2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjk2aC05NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnYxMzJxLTIxNyAyNCAtMzY0LjUgMTg3LjUNCnQtMTQ3LjUgMzg0LjVxMCAxNjcgODguNSAzMDUuNXQyMzMuNSAyMTAuNXEtMTY1IDk2IC0yMjggMjczcS02IDE2IDMuNSAyOS41dDI2LjUgMTMuNWg2OXEyMSAwIDI5IC0yMHE0NCAtMTA2IDE0MCAtMTcxdDIxNCAtNjV0MjE0IDY1dDE0MCAxNzFxOCAyMCAzNyAyMGg2MXExNyAwIDI2LjUgLTEzLjV0My41IC0yOS41cS02MyAtMTc3IC0yMjggLTI3M3pNNTc2IDI1NnExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjUNCnQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTEzIiB1bmljb2RlPSImI3hmMjI0OyIgDQpkPSJNMTAyNCAxNTA0cTAgMTQgOSAyM3QyMyA5aDI4OHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI4OHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMzRsLTI1NCAtMjU1cTEyNiAtMTU4IDEyNiAtMzU5cTAgLTIyMSAtMTQ3LjUgLTM4NC41dC0zNjQuNSAtMTg3LjV2LTEzMmg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtOTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjQNCnEtMTQgMCAtMjMgOXQtOSAyM3Y5NmgtOTZxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloOTZ2MTMycS0xNDkgMTYgLTI3MC41IDEwM3QtMTg2LjUgMjIzLjV0LTUzIDI5MS41cTE2IDIwNCAxNjAgMzUzLjV0MzQ3IDE3Mi41cTExOCAxNCAyMjggLTE5dDE5OCAtMTAzbDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHpNNTc2IDI1NnExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjUNCnQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE0IiB1bmljb2RlPSImI3hmMjI1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyODAgMTUwNHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXExMjYgLTE1OCAxMjYgLTM1OXEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di0xMzJoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTk2cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0DQpxLTE0IDAgLTIzIDl0LTkgMjN2OTZoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2djEzMnEtMjE3IDI0IC0zNjQuNSAxODcuNXQtMTQ3LjUgMzg0LjVxMCAyMDEgMTI2IDM1OWwtNTIgNTNsLTEwMSAtMTExcS05IC0xMCAtMjIgLTEwLjV0LTIzIDcuNWwtNDggNDRxLTEwIDggLTEwLjUgMjEuNXQ4LjUgMjMuNWwxMDUgMTE1bC0xMTEgMTEydi0xMzRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDkNCnQtOSAyM3YyODhxMCAyNiAxOSA0NXQ0NSAxOWgyODhxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTMzbDEwNiAtMTA3bDg2IDk0cTkgMTAgMjIgMTAuNXQyMyAtNy41bDQ4IC00NHExMCAtOCAxMC41IC0yMS41dC04LjUgLTIzLjVsLTkwIC05OWw1NyAtNTZxMTU4IDEyNiAzNTkgMTI2dDM1OSAtMTI2bDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHpNODMyIDI1NnExODUgMCAzMTYuNSAxMzEuNQ0KdDEzMS41IDMxNi41dC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE1IiB1bmljb2RlPSImI3hmMjI2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTAgMTAwN3ExMiAtMTU1IC01Mi41IC0yOTJ0LTE4NiAtMjI0dC0yNzEuNSAtMTAzdi0yNjBoMjI0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTIyNHYtMjI0cTAgLTE0IC05IC0yM3QtMjMgLTloLTY0cS0xNCAwIC0yMyA5dC05IDIzdjIyNGgtNTEydi0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzDQp0MjMgOWgyMjR2MjYwcS0xNTAgMTYgLTI3MS41IDEwM3QtMTg2IDIyNHQtNTIuNSAyOTJxMTcgMjA2IDE2NC41IDM1Ni41dDM1Mi41IDE2OS41cTIwNiAyMSAzNzcgLTk0cTE3MSAxMTUgMzc3IDk0cTIwNSAtMTkgMzUyLjUgLTE2OS41dDE2NC41IC0zNTYuNXpNODk2IDY0N3ExMjggMTMxIDEyOCAzMTN0LTEyOCAzMTNxLTEyOCAtMTMxIC0xMjggLTMxM3QxMjggLTMxM3pNNTc2IDUxMnExMTUgMCAyMTggNTdxLTE1NCAxNjUgLTE1NCAzOTENCnEwIDIyNCAxNTQgMzkxcS0xMDMgNTcgLTIxOCA1N3EtMTg1IDAgLTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41dDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6TTExNTIgMTI4djI2MHEtMTM3IDE1IC0yNTYgOTRxLTExOSAtNzkgLTI1NiAtOTR2LTI2MGg1MTJ6TTEyMTYgNTEycTE4NSAwIDMxNi41IDEzMS41dDEzMS41IDMxNi41dC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjVxLTExNSAwIC0yMTggLTU3cTE1NCAtMTY3IDE1NCAtMzkxDQpxMCAtMjI2IC0xNTQgLTM5MXExMDMgLTU3IDIxOCAtNTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE2IiB1bmljb2RlPSImI3hmMjI3OyIgaG9yaXotYWR2LXg9IjE5MjAiIA0KZD0iTTE1MzYgMTEyMHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXE3NiAtOTUgMTA3LjUgLTIxNHQ5LjUgLTI0N3EtMzEgLTE4MiAtMTY2IC0zMTJ0LTMxOCAtMTU2cS0yMTAgLTI5IC0zODQuNSA4MHQtMjQxLjUgMzAwcS0xMTcgNiAtMjIxIDU3LjV0LTE3Ny41IDEzM3QtMTEzLjUgMTkyLjV0LTMyIDIzMA0KcTkgMTM1IDc4IDI1MnQxODIgMTkxLjV0MjQ4IDg5LjVxMTE4IDE0IDIyNy41IC0xOXQxOTguNSAtMTAzbDI1NSAyNTRoLTEzNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXE1OSAtNzQgOTMgLTE2OXExODIgLTkgMzI4IC0xMjRsMjU1IDI1NGgtMTM0cS0xNCAwIC0yMyA5DQp0LTkgMjN2NjR6TTEwMjQgNzA0cTAgMjAgLTQgNThxLTE2MiAtMjUgLTI3MSAtMTUwdC0xMDkgLTI5MnEwIC0yMCA0IC01OHExNjIgMjUgMjcxIDE1MHQxMDkgMjkyek0xMjggNzA0cTAgLTE2OCAxMTEgLTI5NHQyNzYgLTE0OXEtMyAyOSAtMyA1OXEwIDIxMCAxMzUgMzY5LjV0MzM4IDE5Ni41cS01MyAxMjAgLTE2My41IDE5M3QtMjQ1LjUgNzNxLTE4NSAwIC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXpNMTA4OCAtMTI4DQpxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjVxMCAxNjggLTExMSAyOTR0LTI3NiAxNDlxMyAtMjggMyAtNTlxMCAtMjEwIC0xMzUgLTM2OS41dC0zMzggLTE5Ni41cTUzIC0xMjAgMTYzLjUgLTE5M3QyNDUuNSAtNzN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTE3IiB1bmljb2RlPSImI3hmMjI4OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE2NjQgMTUwNHEwIDE0IDkgMjN0MjMgOWgyODhxMjYgMCA0NSAtMTl0MTkgLTQ1di0yODhxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTM0bC0yNTQgLTI1NXE3NiAtOTUgMTA3LjUgLTIxNHQ5LjUgLTI0N3EtMzIgLTE4MCAtMTY0LjUgLTMxMHQtMzEzLjUgLTE1N3EtMjIzIC0zNCAtNDA5IDkwcS0xMTcgLTc4IC0yNTYgLTkzdi0xMzJoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzDQp0LTIzIC05aC05NnYtOTZxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2OTZoLTk2cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2djEzMnEtMTU1IDE3IC0yNzkuNSAxMDkuNXQtMTg3IDIzNy41dC0zOS41IDMwN3EyNSAxODcgMTU5LjUgMzIyLjV0MzIwLjUgMTY0LjVxMjI0IDM0IDQxMCAtOTBxMTQ2IDk3IDMyMCA5N3EyMDEgMCAzNTkgLTEyNmwyNTUgMjU0aC0xMzRxLTE0IDAgLTIzIDkNCnQtOSAyM3Y2NHpNODk2IDM5MXExMjggMTMxIDEyOCAzMTN0LTEyOCAzMTNxLTEyOCAtMTMxIC0xMjggLTMxM3QxMjggLTMxM3pNMTI4IDcwNHEwIC0xODUgMTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXExMTcgMCAyMTggNTdxLTE1NCAxNjcgLTE1NCAzOTF0MTU0IDM5MXEtMTAxIDU3IC0yMTggNTdxLTE4NSAwIC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXpNMTIxNiAyNTZxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjUNCnQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41cS0xMTcgMCAtMjE4IC01N3ExNTQgLTE2NyAxNTQgLTM5MXQtMTU0IC0zOTFxMTAxIC01NyAyMTggLTU3eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxOCIgdW5pY29kZT0iJiN4ZjIyOTsiIA0KZD0iTTE0NzIgMTQwOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTQxNnEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YyNjJsLTIxMyAtMjE0bDE0MCAtMTQwcTkgLTEwIDkgLTIzdC05IC0yMmwtNDYgLTQ2cS05IC05IC0yMiAtOXQtMjMgOWwtMTQwIDE0MWwtNzggLTc5cTEyNiAtMTU2IDEyNiAtMzU5cTAgLTExNyAtNDUuNSAtMjIzLjV0LTEyMyAtMTg0dC0xODQgLTEyM3QtMjIzLjUgLTQ1LjV0LTIyMy41IDQ1LjUNCnQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjMuNXQ0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyM3QyMjMuNSA0NS41cTIwMyAwIDM1OSAtMTI2bDc4IDc4bC0xNzIgMTcycS05IDEwIC05IDIzdDkgMjJsNDYgNDZxOSA5IDIyIDl0MjMgLTlsMTcyIC0xNzJsMjEzIDIxM2gtMjYxcS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDQxNnpNNTc2IDBxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41DQp0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUxOSIgdW5pY29kZT0iJiN4ZjIyYTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik02NDAgODkycTIxNyAtMjQgMzY0LjUgLTE4Ny41dDE0Ny41IC0zODQuNXEwIC0xNjcgLTg3IC0zMDZ0LTIzNiAtMjEydC0zMTkgLTU0cS0xMzMgMTUgLTI0NS41IDg4dC0xODIgMTg4dC04MC41IDI0OXEtMTIgMTU1IDUyLjUgMjkydDE4NiAyMjR0MjcxLjUgMTAzdjEzMmgtMTYwcS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE2MHYxNjVsLTkyIC05MnEtMTAgLTkgLTIzIC05dC0yMiA5bC00NiA0NnEtOSA5IC05IDIyDQp0OSAyM2wyMDIgMjAxcTE5IDE5IDQ1IDE5dDQ1IC0xOWwyMDIgLTIwMXE5IC0xMCA5IC0yM3QtOSAtMjJsLTQ2IC00NnEtOSAtOSAtMjIgLTl0LTIzIDlsLTkyIDkydi0xNjVoMTYwcTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE2MHYtMTMyek01NzYgLTEyOHExODUgMCAzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41dC0zMTYuNSAtMTMxLjV0LTEzMS41IC0zMTYuNQ0KdDEzMS41IC0zMTYuNXQzMTYuNSAtMTMxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTIwIiB1bmljb2RlPSImI3hmMjJiOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTE5MDEgNjIxcTE5IC0xOSAxOSAtNDV0LTE5IC00NWwtMjk0IC0yOTRxLTkgLTEwIC0yMi41IC0xMHQtMjIuNSAxMGwtNDUgNDVxLTEwIDkgLTEwIDIyLjV0MTAgMjIuNWwxODUgMTg1aC0yOTR2LTIyNHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YyMjRoLTEzMnEtMjQgLTIxNyAtMTg3LjUgLTM2NC41dC0zODQuNSAtMTQ3LjVxLTE2NyAwIC0zMDYgODd0LTIxMiAyMzZ0LTU0IDMxOXExNSAxMzMgODggMjQ1LjUNCnQxODggMTgydDI0OSA4MC41cTE1NSAxMiAyOTIgLTUyLjV0MjI0IC0xODZ0MTAzIC0yNzEuNWgxMzJ2MjI0cTAgMTQgOSAyM3QyMyA5aDY0cTE0IDAgMjMgLTl0OSAtMjN2LTIyNGgyOTRsLTE4NSAxODVxLTEwIDkgLTEwIDIyLjV0MTAgMjIuNWw0NSA0NXE5IDEwIDIyLjUgMTB0MjIuNSAtMTB6TTU3NiAxMjhxMTg1IDAgMzE2LjUgMTMxLjV0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41DQp0LTEzMS41IC0zMTYuNXQxMzEuNSAtMzE2LjV0MzE2LjUgLTEzMS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyMSIgdW5pY29kZT0iJiN4ZjIyYzsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTUyIDk2MHEwIC0yMjEgLTE0Ny41IC0zODQuNXQtMzY0LjUgLTE4Ny41di02MTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2NjEycS0yMTcgMjQgLTM2NC41IDE4Ny41dC0xNDcuNSAzODQuNXEwIDExNyA0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyM3QyMjMuNSA0NS41dDIyMy41IC00NS41dDE4NCAtMTIzdDEyMyAtMTg0dDQ1LjUgLTIyMy41ek01NzYgNTEycTE4NSAwIDMxNi41IDEzMS41DQp0MTMxLjUgMzE2LjV0LTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjIiIHVuaWNvZGU9IiYjeGYyMmQ7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMTAyNCA1NzZxMCAxODUgLTEzMS41IDMxNi41dC0zMTYuNSAxMzEuNXQtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXpNMTE1MiA1NzZxMCAtMTE3IC00NS41IC0yMjMuNXQtMTIzIC0xODR0LTE4NCAtMTIzdC0yMjMuNSAtNDUuNXQtMjIzLjUgNDUuNXQtMTg0IDEyM3QtMTIzIDE4NHQtNDUuNSAyMjMuNXQ0NS41IDIyMy41dDEyMyAxODR0MTg0IDEyMw0KdDIyMy41IDQ1LjV0MjIzLjUgLTQ1LjV0MTg0IC0xMjN0MTIzIC0xODR0NDUuNSAtMjIzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTIzIiB1bmljb2RlPSImI3hmMjJlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjQiIHVuaWNvZGU9IiYjeGYyMmY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyNSIgdW5pY29kZT0iJiN4ZjIzMDsiIA0KZD0iTTE0NTEgMTQwOHEzNSAwIDYwIC0yNXQyNSAtNjB2LTEzNjZxMCAtMzUgLTI1IC02MHQtNjAgLTI1aC0zOTF2NTk1aDE5OWwzMCAyMzJoLTIyOXYxNDhxMCA1NiAyMy41IDg0dDkxLjUgMjhsMTIyIDF2MjA3cS02MyA5IC0xNzggOXEtMTM2IDAgLTIxNy41IC04MHQtODEuNSAtMjI2di0xNzFoLTIwMHYtMjMyaDIwMHYtNTk1aC03MzVxLTM1IDAgLTYwIDI1dC0yNSA2MHYxMzY2cTAgMzUgMjUgNjB0NjAgMjVoMTM2NnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjYiIHVuaWNvZGU9IiYjeGYyMzE7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNMCA5MzlxMCAxMDggMzcuNSAyMDMuNXQxMDMuNSAxNjYuNXQxNTIgMTIzdDE4NSA3OHQyMDIgMjZxMTU4IDAgMjk0IC02Ni41dDIyMSAtMTkzLjV0ODUgLTI4N3EwIC05NiAtMTkgLTE4OHQtNjAgLTE3N3QtMTAwIC0xNDkuNXQtMTQ1IC0xMDN0LTE4OSAtMzguNXEtNjggMCAtMTM1IDMydC05NiA4OHEtMTAgLTM5IC0yOCAtMTEyLjV0LTIzLjUgLTk1dC0yMC41IC03MXQtMjYgLTcxdC0zMiAtNjIuNXQtNDYgLTc3LjV0LTYyIC04Ni41DQpsLTE0IC01bC05IDEwcS0xNSAxNTcgLTE1IDE4OHEwIDkyIDIxLjUgMjA2LjV0NjYuNSAyODcuNXQ1MiAyMDNxLTMyIDY1IC0zMiAxNjlxMCA4MyA1MiAxNTZ0MTMyIDczcTYxIDAgOTUgLTQwLjV0MzQgLTEwMi41cTAgLTY2IC00NCAtMTkxdC00NCAtMTg3cTAgLTYzIDQ1IC0xMDQuNXQxMDkgLTQxLjVxNTUgMCAxMDIgMjV0NzguNSA2OHQ1NiA5NXQzOCAxMTAuNXQyMCAxMTF0Ni41IDk5LjVxMCAxNzMgLTEwOS41IDI2OS41dC0yODUuNSA5Ni41DQpxLTIwMCAwIC0zMzQgLTEyOS41dC0xMzQgLTMyOC41cTAgLTQ0IDEyLjUgLTg1dDI3IC02NXQyNyAtNDUuNXQxMi41IC0zMC41cTAgLTI4IC0xNSAtNzN0LTM3IC00NXEtMiAwIC0xNyAzcS01MSAxNSAtOTAuNSA1NnQtNjEgOTQuNXQtMzIuNSAxMDh0LTExIDEwNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUyNyIgdW5pY29kZT0iJiN4ZjIzMjsiIA0KZD0iTTk4NSA1NjJxMTMgMCA5Ny41IC00NHQ4OS41IC01M3EyIC01IDIgLTE1cTAgLTMzIC0xNyAtNzZxLTE2IC0zOSAtNzEgLTY1LjV0LTEwMiAtMjYuNXEtNTcgMCAtMTkwIDYycS05OCA0NSAtMTcwIDExOHQtMTQ4IDE4NXEtNzIgMTA3IC03MSAxOTR2OHEzIDkxIDc0IDE1OHEyNCAyMiA1MiAyMnE2IDAgMTggLTEuNXQxOSAtMS41cTE5IDAgMjYuNSAtNi41dDE1LjUgLTI3LjVxOCAtMjAgMzMgLTg4dDI1IC03NXEwIC0yMSAtMzQuNSAtNTcuNQ0KdC0zNC41IC00Ni41cTAgLTcgNSAtMTVxMzQgLTczIDEwMiAtMTM3cTU2IC01MyAxNTEgLTEwMXExMiAtNyAyMiAtN3ExNSAwIDU0IDQ4LjV0NTIgNDguNXpNNzgyIDMycTEyNyAwIDI0My41IDUwdDIwMC41IDEzNHQxMzQgMjAwLjV0NTAgMjQzLjV0LTUwIDI0My41dC0xMzQgMjAwLjV0LTIwMC41IDEzNHQtMjQzLjUgNTB0LTI0My41IC01MHQtMjAwLjUgLTEzNHQtMTM0IC0yMDAuNXQtNTAgLTI0My41cTAgLTIwMyAxMjAgLTM2OGwtNzkgLTIzMw0KbDI0MiA3N3ExNTggLTEwNCAzNDUgLTEwNHpNNzgyIDE0MTRxMTUzIDAgMjkyLjUgLTYwdDI0MC41IC0xNjF0MTYxIC0yNDAuNXQ2MCAtMjkyLjV0LTYwIC0yOTIuNXQtMTYxIC0yNDAuNXQtMjQwLjUgLTE2MXQtMjkyLjUgLTYwcS0xOTUgMCAtMzY1IDk0bC00MTcgLTEzNGwxMzYgNDA1cS0xMDggMTc4IC0xMDggMzg5cTAgMTUzIDYwIDI5Mi41dDE2MSAyNDAuNXQyNDAuNSAxNjF0MjkyLjUgNjB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTI4IiB1bmljb2RlPSImI3hmMjMzOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyOCAxMjhoMTAyNHYxMjhoLTEwMjR2LTEyOHpNMTI4IDY0MGgxMDI0djEyOGgtMTAyNHYtMTI4ek0xNjk2IDE5MnEwIDQwIC0yOCA2OHQtNjggMjh0LTY4IC0yOHQtMjggLTY4dDI4IC02OHQ2OCAtMjh0NjggMjh0MjggNjh6TTEyOCAxMTUyaDEwMjR2MTI4aC0xMDI0di0xMjh6TTE2OTYgNzA0cTAgNDAgLTI4IDY4dC02OCAyOHQtNjggLTI4dC0yOCAtNjh0MjggLTY4dDY4IC0yOHQ2OCAyOHQyOCA2OHpNMTY5NiAxMjE2DQpxMCA0MCAtMjggNjh0LTY4IDI4dC02OCAtMjh0LTI4IC02OHQyOCAtNjh0NjggLTI4dDY4IDI4dDI4IDY4ek0xNzkyIDM4NHYtMzg0aC0xNzkydjM4NGgxNzkyek0xNzkyIDg5NnYtMzg0aC0xNzkydjM4NGgxNzkyek0xNzkyIDE0MDh2LTM4NGgtMTc5MnYzODRoMTc5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MjkiIHVuaWNvZGU9IiYjeGYyMzQ7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNNzA0IDY0MHEtMTU5IDAgLTI3MS41IDExMi41dC0xMTIuNSAyNzEuNXQxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41dC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXpNMTY2NCA1MTJoMzUycTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXYtMTkycTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtMzUydi0zNTJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41aC0xOTJxLTEzIDAgLTIyLjUgOS41DQp0LTkuNSAyMi41djM1MmgtMzUycS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTkycTAgMTMgOS41IDIyLjV0MjIuNSA5LjVoMzUydjM1MnEwIDEzIDkuNSAyMi41dDIyLjUgOS41aDE5MnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTM1MnpNOTI4IDI4OHEwIC01MiAzOCAtOTB0OTAgLTM4aDI1NnYtMjM4cS02OCAtNTAgLTE3MSAtNTBoLTg3NHEtMTIxIDAgLTE5NCA2OXQtNzMgMTkwcTAgNTMgMy41IDEwMy41dDE0IDEwOXQyNi41IDEwOC41DQp0NDMgOTcuNXQ2MiA4MXQ4NS41IDUzLjV0MTExLjUgMjBxMTkgMCAzOSAtMTdxNzkgLTYxIDE1NC41IC05MS41dDE2NC41IC0zMC41dDE2NC41IDMwLjV0MTU0LjUgOTEuNXEyMCAxNyAzOSAxN3ExMzIgMCAyMTcgLTk2aC0yMjNxLTUyIDAgLTkwIC0zOHQtMzggLTkwdi0xOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTMwIiB1bmljb2RlPSImI3hmMjM1OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTcwNCA2NDBxLTE1OSAwIC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41dDExMi41IC0yNzEuNXQtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjV6TTE3ODEgMzIwbDI0OSAtMjQ5cTkgLTkgOSAtMjNxMCAtMTMgLTkgLTIybC0xMzYgLTEzNnEtOSAtOSAtMjIgLTlxLTE0IDAgLTIzIDlsLTI0OSAyNDlsLTI0OSAtMjQ5cS05IC05IC0yMyAtOXEtMTMgMCAtMjIgOWwtMTM2IDEzNg0KcS05IDkgLTkgMjJxMCAxNCA5IDIzbDI0OSAyNDlsLTI0OSAyNDlxLTkgOSAtOSAyM3EwIDEzIDkgMjJsMTM2IDEzNnE5IDkgMjIgOXExNCAwIDIzIC05bDI0OSAtMjQ5bDI0OSAyNDlxOSA5IDIzIDlxMTMgMCAyMiAtOWwxMzYgLTEzNnE5IC05IDkgLTIycTAgLTE0IC05IC0yM3pNMTI4MyAzMjBsLTE4MSAtMTgxcS0zNyAtMzcgLTM3IC05MXEwIC01MyAzNyAtOTBsODMgLTgzcS0yMSAtMyAtNDQgLTNoLTg3NHEtMTIxIDAgLTE5NCA2OQ0KdC03MyAxOTBxMCA1MyAzLjUgMTAzLjV0MTQgMTA5dDI2LjUgMTA4LjV0NDMgOTcuNXQ2MiA4MXQ4NS41IDUzLjV0MTExLjUgMjBxMTkgMCAzOSAtMTdxMTU0IC0xMjIgMzE5IC0xMjJ0MzE5IDEyMnEyMCAxNyAzOSAxN3EyOCAwIDU3IC02cS0yOCAtMjcgLTQxIC01MHQtMTMgLTU2cTAgLTU0IDM3IC05MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzEiIHVuaWNvZGU9IiYjeGYyMzY7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjU2IDUxMmgxNzI4cTI2IDAgNDUgLTE5dDE5IC00NXYtNDQ4aC0yNTZ2MjU2aC0xNTM2di0yNTZoLTI1NnYxMjE2cTAgMjYgMTkgNDV0NDUgMTloMTI4cTI2IDAgNDUgLTE5dDE5IC00NXYtNzA0ek04MzIgODMycTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXQ3NSAtMTgxdDE4MSAtNzV0MTgxIDc1dDc1IDE4MXpNMjA0OCA1NzZ2NjRxMCAxNTkgLTExMi41IDI3MS41dC0yNzEuNSAxMTIuNWgtNzA0DQpxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ1di0zODRoMTE1MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzIiIHVuaWNvZGU9IiYjeGYyMzc7IiANCmQ9Ik0xNTM2IDE1MzZsLTE5MiAtNDQ4aDE5MnYtMTkyaC0yNzRsLTU1IC0xMjhoMzI5di0xOTJoLTQxMWwtMzU3IC04MzJsLTM1NyA4MzJoLTQxMXYxOTJoMzI5bC01NSAxMjhoLTI3NHYxOTJoMTkybC0xOTIgNDQ4aDI1NmwzMjMgLTc2OGgzNzhsMzIzIDc2OGgyNTZ6TTc2OCAzMjBsMTA4IDI1NmgtMjE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzMyIgdW5pY29kZT0iJiN4ZjIzODsiIA0KZD0iTTEwODggMTUzNnExODUgMCAzMTYuNSAtOTMuNXQxMzEuNSAtMjI2LjV2LTg5NnEwIC0xMzAgLTEyNS41IC0yMjJ0LTMwNS41IC05N2wyMTMgLTIwMnExNiAtMTUgOCAtMzV0LTMwIC0yMGgtMTA1NnEtMjIgMCAtMzAgMjB0OCAzNWwyMTMgMjAycS0xODAgNSAtMzA1LjUgOTd0LTEyNS41IDIyMnY4OTZxMCAxMzMgMTMxLjUgMjI2LjV0MzE2LjUgOTMuNWg2NDB6TTc2OCAxOTJxODAgMCAxMzYgNTZ0NTYgMTM2dC01NiAxMzZ0LTEzNiA1Ng0KdC0xMzYgLTU2dC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnpNMTM0NCA3Njh2NTEyaC0xMTUydi01MTJoMTE1MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzQiIHVuaWNvZGU9IiYjeGYyMzk7IiANCmQ9Ik0xMDg4IDE1MzZxMTg1IDAgMzE2LjUgLTkzLjV0MTMxLjUgLTIyNi41di04OTZxMCAtMTMwIC0xMjUuNSAtMjIydC0zMDUuNSAtOTdsMjEzIC0yMDJxMTYgLTE1IDggLTM1dC0zMCAtMjBoLTEwNTZxLTIyIDAgLTMwIDIwdDggMzVsMjEzIDIwMnEtMTgwIDUgLTMwNS41IDk3dC0xMjUuNSAyMjJ2ODk2cTAgMTMzIDEzMS41IDIyNi41dDMxNi41IDkzLjVoNjQwek0yODggMjI0cTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDcNCnQtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd6TTcwNCA3Njh2NTEyaC01NDR2LTUxMmg1NDR6TTEyNDggMjI0cTY2IDAgMTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd0LTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3ek0xNDA4IDc2OHY1MTJoLTU3NnYtNTEyaDU3NnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzUiIHVuaWNvZGU9IiYjeGYyM2E7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNTk3IDExMTV2LTExNzNxMCAtMjUgLTEyLjUgLTQyLjV0LTM2LjUgLTE3LjVxLTE3IDAgLTMzIDhsLTQ2NSAyMzNxLTIxIDEwIC0zNS41IDMzLjV0LTE0LjUgNDYuNXYxMTQwcTAgMjAgMTAgMzR0MjkgMTRxMTQgMCA0NCAtMTVsNTExIC0yNTZxMyAtMyAzIC01ek02NjEgMTAxNGw1MzQgLTg2NmwtNTM0IDI2NnY2MDB6TTE3OTIgOTk2di0xMDU0cTAgLTI1IC0xNCAtNDAuNXQtMzggLTE1LjV0LTQ3IDEzbC00NDEgMjIwek0xNzg5IDExMTYNCnEwIC0zIC0yNTYuNSAtNDE5LjV0LTMwMC41IC00ODcuNWwtMzkwIDYzNGwzMjQgNTI3cTE3IDI4IDUyIDI4cTE0IDAgMjYgLTZsNTQxIC0yNzBxNCAtMiA0IC02eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzNiIgdW5pY29kZT0iJiN4ZjIzYjsiIA0KZD0iTTgwOSA1MzJsMjY2IDQ5OWgtMTEybC0xNTcgLTMxMnEtMjQgLTQ4IC00NCAtOTJsLTQyIDkybC0xNTUgMzEyaC0xMjBsMjYzIC00OTN2LTMyNGgxMDF2MzE4ek0xNTM2IDE0MDh2LTE1MzZoLTE1MzZ2MTUzNmgxNTM2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzUzNyIgdW5pY29kZT0iJiN4ZjIzYzsiIGhvcml6LWFkdi14PSIyMjk2IiANCmQ9Ik00NzggLTEzOXEtOCAtMTYgLTI3IC0zNC41dC0zNyAtMjUuNXEtMjUgLTkgLTUxLjUgMy41dC0yOC41IDMxLjVxLTEgMjIgNDAgNTV0NjggMzhxMjMgNCAzNCAtMjEuNXQyIC00Ni41ek0xODE5IC0xMzlxNyAtMTYgMjYgLTM0LjV0MzggLTI1LjVxMjUgLTkgNTEuNSAzLjV0MjcuNSAzMS41cTIgMjIgLTM5LjUgNTV0LTY4LjUgMzhxLTIyIDQgLTMzIC0yMS41dC0yIC00Ni41ek0xODY3IC0zMHExMyAtMjcgNTYuNSAtNTkuNXQ3Ny41IC00MS41DQpxNDUgLTEzIDgyIDQuNXQzNyA1MC41cTAgNDYgLTY3LjUgMTAwLjV0LTExNS41IDU5LjVxLTQwIDUgLTYzLjUgLTM3LjV0LTYuNSAtNzYuNXpNNDI4IC0zMHEtMTMgLTI3IC01NiAtNTkuNXQtNzcgLTQxLjVxLTQ1IC0xMyAtODIgNC41dC0zNyA1MC41cTAgNDYgNjcuNSAxMDAuNXQxMTUuNSA1OS41cTQwIDUgNjMgLTM3LjV0NiAtNzYuNXpNMTE1OCAxMDk0aDFxLTQxIDAgLTc2IC0xNXEyNyAtOCA0NCAtMzAuNXQxNyAtNDkuNQ0KcTAgLTM1IC0yNyAtNjB0LTY1IC0yNXEtNTIgMCAtODAgNDNxLTUgLTIzIC01IC00MnEwIC03NCA1NiAtMTI2LjV0MTM1IC01Mi41cTgwIDAgMTM2IDUyLjV0NTYgMTI2LjV0LTU2IDEyNi41dC0xMzYgNTIuNXpNMTQ2MiAxMzEycS05OSAxMDkgLTIyMC41IDEzMS41dC0yNDUuNSAtNDQuNXEyNyA2MCA4Mi41IDk2LjV0MTE4IDM5LjV0MTIxLjUgLTE3dDk5LjUgLTc0LjV0NDQuNSAtMTMxLjV6TTIyMTIgNzNxOCAtMTEgLTExIC00Mg0KcTcgLTIzIDcgLTQwcTEgLTU2IC00NC41IC0xMTIuNXQtMTA5LjUgLTkxLjV0LTExOCAtMzdxLTQ4IC0yIC05MiAyMS41dC02NiA2NS41cS02ODcgLTI1IC0xMjU5IDBxLTIzIC00MSAtNjYuNSAtNjV0LTkyLjUgLTIycS04NiAzIC0xNzkuNSA4MC41dC05Mi41IDE2MC41cTIgMjIgNyA0MHEtMTkgMzEgLTExIDQycTYgMTAgMzEgMXExNCAyMiA0MSA1MXEtNyAyOSAyIDM4cTExIDEwIDM5IC00cTI5IDIwIDU5IDM0cTAgMjkgMTMgMzcNCnEyMyAxMiA1MSAtMTZxMzUgNSA2MSAtMnExOCAtNCAzOCAtMTl2NzNxLTExIDAgLTE4IDJxLTUzIDEwIC05NyA0NC41dC01NSA4Ny41cS05IDM4IDAgODFxMTUgNjIgOTMgOTVxMiAxNyAxOSAzNS41dDM2IDIzLjV0MzMgLTcuNXQxOSAtMzAuNWgxM3E0NiAtNSA2MCAtMjNxMyAtMyA1IC03cTEwIDEgMzAuNSAzLjV0MzAuNSAzLjVxLTE1IDExIC0zMCAxN3EtMjMgNDAgLTkxIDQzcTAgNiAxIDEwcS02MiAyIC0xMTguNSAxOC41dC04NC41IDQ3LjUNCnEtMzIgMzYgLTQyLjUgOTJ0LTIuNSAxMTJxMTYgMTI2IDkwIDE3OXEyMyAxNiA1MiA0LjV0MzIgLTQwLjVxMCAtMSAxLjUgLTE0dDIuNSAtMjF0MyAtMjB0NS41IC0xOXQ4LjUgLTEwcTI3IC0xNCA3NiAtMTJxNDggNDYgOTggNzRxLTQwIDQgLTE2MiAtMTRsNDcgNDZxNjEgNTggMTYzIDExMXExNDUgNzMgMjgyIDg2cS0yMCA4IC00MSAxNS41dC00NyAxNHQtNDIuNSAxMC41dC00Ny41IDExdC00MyAxMHE1OTUgMTI2IDkwNCAtMTM5DQpxOTggLTg0IDE1OCAtMjIycTg1IC0xMCAxMjEgOWgxcTUgMyA4LjUgMTB0NS41IDE5dDMgMTkuNXQzIDIxLjVsMSAxNHEzIDI4IDMyIDQwdDUyIC01cTczIC01MiA5MSAtMTc4cTcgLTU3IC0zLjUgLTExM3QtNDIuNSAtOTFxLTI4IC0zMiAtODMuNSAtNDguNXQtMTE1LjUgLTE4LjV2LTEwcS03MSAtMiAtOTUgLTQzcS0xNCAtNSAtMzEgLTE3cTExIC0xIDMyIC0zLjV0MzAgLTMuNXExIDUgNSA4cTE2IDE4IDYwIDIzaDEzcTUgMTggMTkgMzB0MzMgOA0KdDM2IC0yM3QxOSAtMzZxNzkgLTMyIDkzIC05NXE5IC00MCAxIC04MXEtMTIgLTUzIC01NiAtODh0LTk3IC00NHEtMTAgLTIgLTE3IC0ycTAgLTQ5IC0xIC03M3EyMCAxNSAzOCAxOXEyNiA3IDYxIDJxMjggMjggNTEgMTZxMTQgLTkgMTQgLTM3cTMzIC0xNiA1OSAtMzRxMjcgMTMgMzggNHExMCAtMTAgMiAtMzhxMjggLTMwIDQxIC01MXEyMyA4IDMxIC0xek0xOTM3IDEwMjVxMCAtMjkgLTkgLTU0cTgyIC0zMiAxMTIgLTEzMg0KcTQgMzcgLTkuNSA5OC41dC00MS41IDkwLjVxLTIwIDE5IC0zNiAxN3QtMTYgLTIwek0xODU5IDkyNXEzNSAtNDIgNDcuNSAtMTA4LjV0LTAuNSAtMTI0LjVxNjcgMTMgOTcgNDVxMTMgMTQgMTggMjhxLTMgNjQgLTMxIDExNC41dC03OSA2Ni41cS0xNSAtMTUgLTUyIC0yMXpNMTgyMiA5MjFxLTMwIDAgLTQ0IDFxNDIgLTExNSA1MyAtMjM5cTIxIDAgNDMgM3ExNiA2OCAxIDEzNXQtNTMgMTAwek0yNTggODM5cTMwIDEwMCAxMTIgMTMyDQpxLTkgMjUgLTkgNTRxMCAxOCAtMTYuNSAyMHQtMzUuNSAtMTdxLTI4IC0yOSAtNDEuNSAtOTAuNXQtOS41IC05OC41ek0yOTQgNzM3cTI5IC0zMSA5NyAtNDVxLTEzIDU4IC0wLjUgMTI0LjV0NDcuNSAxMDguNXYwcS0zNyA2IC01MiAyMXEtNTEgLTE2IC03OC41IC02NnQtMzEuNSAtMTE1cTkgLTE3IDE4IC0yOHpNNDcxIDY4M3ExNCAxMjQgNzMgMjM1cS0xOSAtNCAtNTUgLTE4bC00NSAtMTl2MXEtNDYgLTg5IC0yMCAtMTk2cTI1IC0zIDQ3IC0zeg0KTTE0MzQgNjQ0cTggLTM4IDE2LjUgLTEwOC41dDExLjUgLTg5LjVxMyAtMTggOS41IC0yMS41dDIzLjUgNC41cTQwIDIwIDYyIDg1LjV0MjMgMTI1LjVxLTI0IDIgLTE0NiA0ek0xMTUyIDEyODVxLTExNiAwIC0xOTkgLTgyLjV0LTgzIC0xOTguNXEwIC0xMTcgODMgLTE5OS41dDE5OSAtODIuNXQxOTkgODIuNXQ4MyAxOTkuNXEwIDExNiAtODMgMTk4LjV0LTE5OSA4Mi41ek0xMzgwIDY0NnEtMTA1IDIgLTIxMSAwdjFxLTEgLTI3IDIuNSAtODYNCnQxMy41IC02NnEyOSAtMTQgOTMuNSAtMTQuNXQ5NS41IDEwLjVxOSAzIDExIDM5dC0wLjUgNjkuNXQtNC41IDQ2LjV6TTExMTIgNDQ3cTggNCA5LjUgNDh0LTAuNSA4OHQtNCA2M3YxcS0yMTIgLTMgLTIxNCAtM3EtNCAtMjAgLTcgLTYydDAgLTgzdDE0IC00NnEzNCAtMTUgMTAxIC0xNnQxMDEgMTB6TTcxOCA2MzZxLTE2IC01OSA0LjUgLTExOC41dDc3LjUgLTg0LjVxMTUgLTggMjQgLTV0MTIgMjFxMyAxNiA4IDkwdDEwIDEwMw0KcS02OSAtMiAtMTM2IC02ek01OTEgNTEwcTMgLTIzIC0zNCAtMzZxMTMyIC0xNDEgMjcxLjUgLTI0MHQzMDUuNSAtMTU0cTE3MiA0OSAzMTAuNSAxNDZ0MjkzLjUgMjUwcS0zMyAxMyAtMzAgMzRxMCAyIDAuNSAzLjV0MS41IDN0MSAyLjV2MXYtMXEtMTcgMiAtNTAgNS41dC00OCA0LjVxLTI2IC05MCAtODIgLTEzMnEtNTEgLTM4IC04MiAxcS01IDYgLTkgMTRxLTcgMTMgLTE3IDYycS0yIC01IC01IC05dC03LjUgLTd0LTggLTUuNXQtOS41IC00DQpsLTEwIC0yLjV0LTEyIC0ybC0xMiAtMS41dC0xMy41IC0xdC0xMy41IC0wLjVxLTEwNiAtOSAtMTYzIDExcS00IC0xNyAtMTAgLTI2LjV0LTIxIC0xNXQtMjMgLTd0LTM2IC0zLjVxLTYgLTEgLTkgLTFxLTE3OSAtMTcgLTIwMyA0MHEtMiAtNjMgLTU2IC01NHEtNDcgOCAtOTEgNTRxLTEyIDEzIC0yMCAyNnEtMTcgMjkgLTI2IDY1cS01OCAtNiAtODcgLTEwcTEgLTIgNCAtMTB6TTUwNyAtMTE4cTMgMTQgMyAzMHEtMTcgNzEgLTUxIDEzMA0KdC03MyA3MHEtNDEgMTIgLTEwMS41IC0xNC41dC0xMDQuNSAtODB0LTM5IC0xMDcuNXEzNSAtNTMgMTAwIC05M3QxMTkgLTQycTUxIC0yIDk0IDI4dDUzIDc5ek01MTAgNTNxMjMgLTYzIDI3IC0xMTlxMTk1IDExMyAzOTIgMTc0cS05OCA1MiAtMTgwLjUgMTIwdC0xNzkuNSAxNjVxLTYgLTQgLTI5IC0xM3EwIC0xIC0xIC00dC0xIC01cTMxIC0xOCAyMiAtMzdxLTEyIC0yMyAtNTYgLTM0cS0xMCAtMTMgLTI5IC0yNGgtMXEtMiAtODMgMSAtMTUwDQpxMTkgLTM0IDM1IC03M3pNNTc5IC0xMTNxNTMyIC0yMSAxMTQ1IDBxLTI1NCAxNDcgLTQyOCAxOTZxLTc2IC0zNSAtMTU2IC01N3EtOCAtMyAtMTYgMHEtNjUgMjEgLTEyOSA0OXEtMjA4IC02MCAtNDE2IC0xODhoLTF2LTFxMSAwIDEgMXpNMTc2MyAtNjdxNCA1NCAyOCAxMjBxMTQgMzggMzMgNzFsLTEgLTFxMyA3NyAzIDE1M3EtMTUgOCAtMzAgMjVxLTQyIDkgLTU2IDMzcS05IDIwIDIyIDM4cS0yIDQgLTIgOXEtMTYgNCAtMjggMTINCnEtMjA0IC0xOTAgLTM4MyAtMjg0cTE5OCAtNTkgNDE0IC0xNzZ6TTIxNTUgLTkwcTUgNTQgLTM5IDEwNy41dC0xMDQgODB0LTEwMiAxNC41cS0zOCAtMTEgLTcyLjUgLTcwLjV0LTUxLjUgLTEyOS41cTAgLTE2IDMgLTMwcTEwIC00OSA1MyAtNzl0OTQgLTI4cTU0IDIgMTE5IDQydDEwMCA5M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81MzgiIHVuaWNvZGU9IiYjeGYyM2Q7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTUyNCAtMjVxMCAtNjggLTQ4IC0xMTZ0LTExNiAtNDh0LTExNi41IDQ4dC00OC41IDExNnQ0OC41IDExNi41dDExNi41IDQ4LjV0MTE2IC00OC41dDQ4IC0xMTYuNXpNNzc1IC0yNXEwIC02OCAtNDguNSAtMTE2dC0xMTYuNSAtNDh0LTExNiA0OHQtNDggMTE2dDQ4IDExNi41dDExNiA0OC41dDExNi41IC00OC41dDQ4LjUgLTExNi41ek0wIDE0NjlxNTcgLTYwIDExMC41IC0xMDQuNXQxMjEgLTgydDEzNiAtNjN0MTY2IC00NS41DQp0MjAwIC0zMS41dDI1MCAtMTguNXQzMDQgLTkuNXQzNzIuNSAtMi41cTEzOSAwIDI0NC41IC01dDE4MSAtMTYuNXQxMjQgLTI3LjV0NzEgLTM5LjV0MjQgLTUxLjV0LTE5LjUgLTY0dC01Ni41IC03Ni41dC04OS41IC05MXQtMTE2IC0xMDQuNXQtMTM5IC0xMTlxLTE4NSAtMTU3IC0yODYgLTI0N3EyOSA1MSA3Ni41IDEwOXQ5NCAxMDUuNXQ5NC41IDk4LjV0ODMgOTEuNXQ1NCA4MC41dDEzIDcwdC00NS41IDU1LjV0LTExNi41IDQxdC0yMDQgMjMuNQ0KdC0zMDQgNXEtMTY4IC0yIC0zMTQgNnQtMjU2IDIzdC0yMDQuNSA0MXQtMTU5LjUgNTEuNXQtMTIyLjUgNjIuNXQtOTEuNSA2Ni41dC02OCA3MS41dC01MC41IDY5LjV0LTQwIDY4dC0zNi41IDU5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTM5IiB1bmljb2RlPSImI3hmMjNlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTg5NiAxNDcycS0xNjkgMCAtMzIzIC02NnQtMjY1LjUgLTE3Ny41dC0xNzcuNSAtMjY1LjV0LTY2IC0zMjN0NjYgLTMyM3QxNzcuNSAtMjY1LjV0MjY1LjUgLTE3Ny41dDMyMyAtNjZ0MzIzIDY2dDI2NS41IDE3Ny41dDE3Ny41IDI2NS41dDY2IDMyM3QtNjYgMzIzdC0xNzcuNSAyNjUuNXQtMjY1LjUgMTc3LjV0LTMyMyA2NnpNODk2IDE1MzZxMTgyIDAgMzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4dC03MSAtMzQ4DQp0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTQ5NiA3MDRxMTYgMCAxNiAtMTZ2LTQ4MHEwIC0xNiAtMTYgLTE2aC0zMnEtMTYgMCAtMTYgMTZ2NDgwcTAgMTYgMTYgMTZoMzJ6TTg5NiA2NDBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjVxMCAtMzUgLTE3LjUgLTY0dC00Ni41IC00NnYtMTE0cTAgLTE0IC05IC0yMw0KdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MTE0cS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV6TTg5NiAxNDA4cTIwOSAwIDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV0LTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN6TTU0NCA5Mjh2LTk2DQpxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2OTZxMCA5MyA2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV2LTk2cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzdjk2cTAgMTQ2IC0xMDMgMjQ5dC0yNDkgMTAzdC0yNDkgLTEwM3QtMTAzIC0yNDl6TTE0MDggMTkydjUxMnEwIDI2IC0xOSA0NXQtNDUgMTloLTg5NnEtMjYgMCAtNDUgLTE5dC0xOSAtNDV2LTUxMg0KcTAgLTI2IDE5IC00NXQ0NSAtMTloODk2cTI2IDAgNDUgMTl0MTkgNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQwIiB1bmljb2RlPSImI3hmMjQwOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE5MjAgMTAyNHYtNzY4aC0xNjY0djc2OGgxNjY0ek0yMDQ4IDQ0OGgxMjh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yM3YtOTYwcTAgLTE0IDkgLTIzdDIzIC05aDE4NTZxMTQgMCAyMyA5dDkgMjN2Mjg4ek0yMzA0IDgzMnYtMzg0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41di0xNjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE4NTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzDQp2OTYwcTAgNjYgNDcgMTEzdDExMyA0N2gxODU2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xNjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQxIiB1bmljb2RlPSImI3hmMjQxOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTI1NiAyNTZ2NzY4aDEyODB2LTc2OGgtMTI4MHpNMjE3NiA5NjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTM4NHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXYtMTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xODU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE4NTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTE2MHpNMjE3NiA0NDh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDkNCmgtMTg1NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi05NjBxMCAtMTQgOSAtMjN0MjMgLTloMTg1NnExNCAwIDIzIDl0OSAyM3YyODhoMTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0MiIgdW5pY29kZT0iJiN4ZjI0MjsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0yNTYgMjU2djc2OGg4OTZ2LTc2OGgtODk2ek0yMTc2IDk2MHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXYtMzg0cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41di0xNjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE4NTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjk2MHEwIDY2IDQ3IDExM3QxMTMgNDdoMTg1NnE2NiAwIDExMyAtNDd0NDcgLTExM3YtMTYwek0yMTc2IDQ0OHYzODRoLTEyOHYyODhxMCAxNCAtOSAyM3QtMjMgOQ0KaC0xODU2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2MHEwIC0xNCA5IC0yM3QyMyAtOWgxODU2cTE0IDAgMjMgOXQ5IDIzdjI4OGgxMjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQzIiB1bmljb2RlPSImI3hmMjQzOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTI1NiAyNTZ2NzY4aDUxMnYtNzY4aC01MTJ6TTIxNzYgOTYwcTUzIDAgOTAuNSAtMzcuNXQzNy41IC05MC41di0zODRxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjV2LTE2MHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTg1NnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2OTYwcTAgNjYgNDcgMTEzdDExMyA0N2gxODU2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0xNjB6TTIxNzYgNDQ4djM4NGgtMTI4djI4OHEwIDE0IC05IDIzdC0yMyA5DQpoLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yM3YtOTYwcTAgLTE0IDkgLTIzdDIzIC05aDE4NTZxMTQgMCAyMyA5dDkgMjN2Mjg4aDEyOHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NDQiIHVuaWNvZGU9IiYjeGYyNDQ7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMjE3NiA5NjBxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTM4NHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXYtMTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xODU2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDE4NTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTE2MHpNMjE3NiA0NDh2Mzg0aC0xMjh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTE4NTZxLTE0IDAgLTIzIC05dC05IC0yMw0Kdi05NjBxMCAtMTQgOSAtMjN0MjMgLTloMTg1NnExNCAwIDIzIDl0OSAyM3YyODhoMTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0NSIgdW5pY29kZT0iJiN4ZjI0NTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMTMzIDQ5M3EzMSAtMzAgMTQgLTY5cS0xNyAtNDAgLTU5IC00MGgtMzgybDIwMSAtNDc2cTEwIC0yNSAwIC00OXQtMzQgLTM1bC0xNzcgLTc1cS0yNSAtMTAgLTQ5IDB0LTM1IDM0bC0xOTEgNDUybC0zMTIgLTMxMnEtMTkgLTE5IC00NSAtMTlxLTEyIDAgLTI0IDVxLTQwIDE3IC00MCA1OXYxNTA0cTAgNDIgNDAgNTlxMTIgNSAyNCA1cTI3IDAgNDUgLTE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU0NiIgdW5pY29kZT0iJiN4ZjI0NjsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik04MzIgMTQwOHEtMzIwIDAgLTMyMCAtMjI0di00MTZoMTI4di0xMjhoLTEyOHYtNTQ0cTAgLTIyNCAzMjAgLTIyNGg2NHYtMTI4aC02NHEtMjcyIDAgLTM4NCAxNDZxLTExMiAtMTQ2IC0zODQgLTE0NmgtNjR2MTI4aDY0cTMyMCAwIDMyMCAyMjR2NTQ0aC0xMjh2MTI4aDEyOHY0MTZxMCAyMjQgLTMyMCAyMjRoLTY0djEyOGg2NHEyNzIgMCAzODQgLTE0NnExMTIgMTQ2IDM4NCAxNDZoNjR2LTEyOGgtNjR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ3IiB1bmljb2RlPSImI3hmMjQ3OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTIwNDggMTE1MmgtMTI4di0xMDI0aDEyOHYtMzg0aC0zODR2MTI4aC0xMjgwdi0xMjhoLTM4NHYzODRoMTI4djEwMjRoLTEyOHYzODRoMzg0di0xMjhoMTI4MHYxMjhoMzg0di0zODR6TTE3OTIgMTQwOHYtMTI4aDEyOHYxMjhoLTEyOHpNMTI4IDE0MDh2LTEyOGgxMjh2MTI4aC0xMjh6TTI1NiAtMTI4djEyOGgtMTI4di0xMjhoMTI4ek0xNjY0IDB2MTI4aDEyOHYxMDI0aC0xMjh2MTI4aC0xMjgwdi0xMjhoLTEyOHYtMTAyNGgxMjh2LTEyOA0KaDEyODB6TTE5MjAgLTEyOHYxMjhoLTEyOHYtMTI4aDEyOHpNMTI4MCA4OTZoMzg0di03NjhoLTg5NnYyNTZoLTM4NHY3NjhoODk2di0yNTZ6TTUxMiA1MTJoNjQwdjUxMmgtNjQwdi01MTJ6TTE1MzYgMjU2djUxMmgtMjU2di0zODRoLTM4NHYtMTI4aDY0MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NDgiIHVuaWNvZGU9IiYjeGYyNDg7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMjMwNCA3NjhoLTEyOHYtNjQwaDEyOHYtMzg0aC0zODR2MTI4aC04OTZ2LTEyOGgtMzg0djM4NGgxMjh2MTI4aC0zODR2LTEyOGgtMzg0djM4NGgxMjh2NjQwaC0xMjh2Mzg0aDM4NHYtMTI4aDg5NnYxMjhoMzg0di0zODRoLTEyOHYtMTI4aDM4NHYxMjhoMzg0di0zODR6TTIwNDggMTAyNHYtMTI4aDEyOHYxMjhoLTEyOHpNMTQwOCAxNDA4di0xMjhoMTI4djEyOGgtMTI4ek0xMjggMTQwOHYtMTI4aDEyOHYxMjhoLTEyOHpNMjU2IDI1Ng0KdjEyOGgtMTI4di0xMjhoMTI4ek0xNTM2IDM4NGgtMTI4di0xMjhoMTI4djEyOHpNMzg0IDM4NGg4OTZ2MTI4aDEyOHY2NDBoLTEyOHYxMjhoLTg5NnYtMTI4aC0xMjh2LTY0MGgxMjh2LTEyOHpNODk2IC0xMjh2MTI4aC0xMjh2LTEyOGgxMjh6TTIxNzYgLTEyOHYxMjhoLTEyOHYtMTI4aDEyOHpNMjA0OCAxMjh2NjQwaC0xMjh2MTI4aC0zODR2LTM4NGgxMjh2LTM4NGgtMzg0djEyOGgtMzg0di0xMjhoMTI4di0xMjhoODk2djEyOGgxMjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTQ5IiB1bmljb2RlPSImI3hmMjQ5OyIgDQpkPSJNMTAyNCAyODh2LTQxNmgtOTI4cS00MCAwIC02OCAyOHQtMjggNjh2MTM0NHEwIDQwIDI4IDY4dDY4IDI4aDEzNDRxNDAgMCA2OCAtMjh0MjggLTY4di05MjhoLTQxNnEtNDAgMCAtNjggLTI4dC0yOCAtNjh6TTExNTIgMjU2aDM4MXEtMTUgLTgyIC02NSAtMTMybC0xODQgLTE4NHEtNTAgLTUwIC0xMzIgLTY1djM4MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTAiIHVuaWNvZGU9IiYjeGYyNGE7IiANCmQ9Ik0xNDAwIDI1NmgtMjQ4di0yNDhxMjkgMTAgNDEgMjJsMTg1IDE4NXExMiAxMiAyMiA0MXpNMTEyMCAzODRoMjg4djg5NmgtMTI4MHYtMTI4MGg4OTZ2Mjg4cTAgNDAgMjggNjh0NjggMjh6TTE1MzYgMTMxMnYtMTAyNHEwIC00MCAtMjAgLTg4dC00OCAtNzZsLTE4NCAtMTg0cS0yOCAtMjggLTc2IC00OHQtODggLTIwaC0xMDI0cS00MCAwIC02OCAyOHQtMjggNjh2MTM0NHEwIDQwIDI4IDY4dDY4IDI4aDEzNDRxNDAgMCA2OCAtMjh0MjggLTY4DQp6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTUxIiB1bmljb2RlPSImI3hmMjRiOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTE5NTEgNTM4cTAgLTI2IC0xNS41IC00NC41dC0zOC41IC0yMy41cS04IC0yIC0xOCAtMmgtMTUzdjE0MGgxNTNxMTAgMCAxOCAtMnEyMyAtNSAzOC41IC0yMy41dDE1LjUgLTQ0LjV6TTE5MzMgNzUxcTAgLTI1IC0xNSAtNDJ0LTM4IC0yMXEtMyAtMSAtMTUgLTFoLTEzOXYxMjloMTM5cTMgMCA4LjUgLTAuNXQ2LjUgLTAuNXEyMyAtNCAzOCAtMjEuNXQxNSAtNDIuNXpNNzI4IDU4N3YzMDhoLTIyOHYtMzA4cTAgLTU4IC0zOCAtOTQuNQ0KdC0xMDUgLTM2LjVxLTEwOCAwIC0yMjkgNTl2LTExMnE1MyAtMTUgMTIxIC0yM3QxMDkgLTlsNDIgLTFxMzI4IDAgMzI4IDIxN3pNMTQ0MiA0MDN2MTEzcS05OSAtNTIgLTIwMCAtNTlxLTEwOCAtOCAtMTY5IDQxdC02MSAxNDJ0NjEgMTQydDE2OSA0MXExMDEgLTcgMjAwIC01OHYxMTJxLTQ4IDEyIC0xMDAgMTkuNXQtODAgOS41bC0yOCAycS0xMjcgNiAtMjE4LjUgLTE0dC0xNDAuNSAtNjB0LTcxIC04OHQtMjIgLTEwNnQyMiAtMTA2dDcxIC04OA0KdDE0MC41IC02MHQyMTguNSAtMTRxMTAxIDQgMjA4IDMxek0yMTc2IDUxOHEwIDU0IC00MyA4OC41dC0xMDkgMzkuNXYzcTU3IDggODkgNDEuNXQzMiA3OS41cTAgNTUgLTQxIDg4dC0xMDcgMzZxLTMgMCAtMTIgMC41dC0xNCAwLjVoLTQ1NXYtNTEwaDQ5MXE3NCAwIDEyMS41IDM2LjV0NDcuNSA5Ni41ek0yMzA0IDEyODB2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0yMDQ4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwDQp0OTAgMzhoMjA0OHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTUyIiB1bmljb2RlPSImI3hmMjRjOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTg1OCAyOTV2NjkzcS0xMDYgLTQxIC0xNzIgLTEzNS41dC02NiAtMjExLjV0NjYgLTIxMS41dDE3MiAtMTM0LjV6TTEzNjIgNjQxcTAgMTE3IC02NiAyMTEuNXQtMTcyIDEzNS41di02OTRxMTA2IDQxIDE3MiAxMzUuNXQ2NiAyMTEuNXpNMTU3NyA2NDFxMCAtMTU5IC03OC41IC0yOTR0LTIxMy41IC0yMTMuNXQtMjk0IC03OC41cS0xMTkgMCAtMjI3LjUgNDYuNXQtMTg3IDEyNXQtMTI1IDE4N3QtNDYuNSAyMjcuNXEwIDE1OSA3OC41IDI5NA0KdDIxMy41IDIxMy41dDI5NCA3OC41dDI5NCAtNzguNXQyMTMuNSAtMjEzLjV0NzguNSAtMjk0ek0xOTYwIDYzNHEwIDEzOSAtNTUuNSAyNjEuNXQtMTQ3LjUgMjA1LjV0LTIxMy41IDEzMXQtMjUyLjUgNDhoLTMwMXEtMTc2IDAgLTMyMy41IC04MXQtMjM1IC0yMzB0LTg3LjUgLTMzNXEwIC0xNzEgODcgLTMxNy41dDIzNiAtMjMxLjV0MzIzIC04NWgzMDFxMTI5IDAgMjUxLjUgNTAuNXQyMTQuNSAxMzV0MTQ3LjUgMjAyLjV0NTUuNSAyNDZ6DQpNMjMwNCAxMjgwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMjA0OHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgyMDQ4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTMiIHVuaWNvZGU9IiYjeGYyNGQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTY2NCAtOTZ2MTA4OHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTEwODhxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0xMDg4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTA4OHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNzkyIDk5MnYtMTA4OHEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTA4OHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTA4OHE2NiAwIDExMyAtNDd0NDcgLTExMw0Kek0xNDA4IDEzNzZ2LTE2MGgtMTI4djE2MHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTEwODhxLTEzIDAgLTIyLjUgLTkuNXQtOS41IC0yMi41di0xMDg4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTYwdi0xMjhoLTE2MHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTA4OHEwIDY2IDQ3IDExM3QxMTMgNDdoMTA4OHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTQiIHVuaWNvZGU9IiYjeGYyNGU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTcyOCAxMDg4bC0zODQgLTcwNGg3Njh6TTQ0OCAxMDg4bC0zODQgLTcwNGg3Njh6TTEyNjkgMTI4MHEtMTQgLTQwIC00NS41IC03MS41dC03MS41IC00NS41di0xMjkxaDYwOHExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xMzQ0cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDYwOHYxMjkxcS00MCAxNCAtNzEuNSA0NS41dC00NS41IDcxLjVoLTQ5MXEtMTQgMCAtMjMgOXQtOSAyM3Y2NA0KcTAgMTQgOSAyM3QyMyA5aDQ5MXEyMSA1NyA3MCA5Mi41dDExMSAzNS41dDExMSAtMzUuNXQ3MCAtOTIuNWg0OTFxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNDkxek0xMDg4IDEyNjRxMzMgMCA1Ni41IDIzLjV0MjMuNSA1Ni41dC0yMy41IDU2LjV0LTU2LjUgMjMuNXQtNTYuNSAtMjMuNXQtMjMuNSAtNTYuNXQyMy41IC01Ni41dDU2LjUgLTIzLjV6TTIxNzYgMzg0cTAgLTczIC00Ni41IC0xMzF0LTExNy41IC05MQ0KdC0xNDQuNSAtNDkuNXQtMTM5LjUgLTE2LjV0LTEzOS41IDE2LjV0LTE0NC41IDQ5LjV0LTExNy41IDkxdC00Ni41IDEzMXEwIDExIDM1IDgxdDkyIDE3NC41dDEwNyAxOTUuNXQxMDIgMTg0dDU2IDEwMHExOCAzMyA1NiAzM3Q1NiAtMzNxNCAtNyA1NiAtMTAwdDEwMiAtMTg0dDEwNyAtMTk1LjV0OTIgLTE3NC41dDM1IC04MXpNODk2IDM4NHEwIC03MyAtNDYuNSAtMTMxdC0xMTcuNSAtOTF0LTE0NC41IC00OS41dC0xMzkuNSAtMTYuNQ0KdC0xMzkuNSAxNi41dC0xNDQuNSA0OS41dC0xMTcuNSA5MXQtNDYuNSAxMzFxMCAxMSAzNSA4MXQ5MiAxNzQuNXQxMDcgMTk1LjV0MTAyIDE4NHQ1NiAxMDBxMTggMzMgNTYgMzN0NTYgLTMzcTQgLTcgNTYgLTEwMHQxMDIgLTE4NHQxMDcgLTE5NS41dDkyIC0xNzQuNXQzNSAtODF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTU1IiB1bmljb2RlPSImI3hmMjUwOyIgDQpkPSJNMTQwOCAxNDA4cTAgLTI2MSAtMTA2LjUgLTQ2MS41dC0yNjYuNSAtMzA2LjVxMTYwIC0xMDYgMjY2LjUgLTMwNi41dDEwNi41IC00NjEuNWg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2cTAgMjYxIDEwNi41IDQ2MS41dDI2Ni41IDMwNi41cS0xNjAgMTA2IC0yNjYuNSAzMDYuNXQtMTA2LjUgNDYxLjVoLTk2cS0xNCAwIC0yMyA5DQp0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTQ3MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnpNODc0IDcwMHE3NyAyOSAxNDkgOTIuNXQxMjkuNSAxNTIuNXQ5Mi41IDIxMHQzNSAyNTNoLTEwMjRxMCAtMTMyIDM1IC0yNTN0OTIuNSAtMjEwdDEyOS41IC0xNTIuNXQxNDkgLTkyLjVxMTkgLTcgMzAuNSAtMjMuNXQxMS41IC0zNi41dC0xMS41IC0zNi41dC0zMC41IC0yMy41cS03NyAtMjkgLTE0OSAtOTIuNQ0KdC0xMjkuNSAtMTUyLjV0LTkyLjUgLTIxMHQtMzUgLTI1M2gxMDI0cTAgMTMyIC0zNSAyNTN0LTkyLjUgMjEwdC0xMjkuNSAxNTIuNXQtMTQ5IDkyLjVxLTE5IDcgLTMwLjUgMjMuNXQtMTEuNSAzNi41dDExLjUgMzYuNXQzMC41IDIzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTU2IiB1bmljb2RlPSImI3hmMjUxOyIgDQpkPSJNMTQwOCAxNDA4cTAgLTI2MSAtMTA2LjUgLTQ2MS41dC0yNjYuNSAtMzA2LjVxMTYwIC0xMDYgMjY2LjUgLTMwNi41dDEwNi41IC00NjEuNWg5NnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2cTAgMjYxIDEwNi41IDQ2MS41dDI2Ni41IDMwNi41cS0xNjAgMTA2IC0yNjYuNSAzMDYuNXQtMTA2LjUgNDYxLjVoLTk2cS0xNCAwIC0yMyA5DQp0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMTQ3MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnpNMTI4MCAxNDA4aC0xMDI0cTAgLTY2IDkgLTEyOGgxMDA2cTkgNjEgOSAxMjh6TTEyODAgLTEyOHEwIDEzMCAtMzQgMjQ5LjV0LTkwLjUgMjA4dC0xMjYuNSAxNTJ0LTE0NiA5NC41aC0yMzBxLTc2IC0zMSAtMTQ2IC05NC41dC0xMjYuNSAtMTUydC05MC41IC0yMDh0LTM0IC0yNDkuNWgxMDI0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU1NyIgdW5pY29kZT0iJiN4ZjI1MjsiIA0KZD0iTTE0MDggMTQwOHEwIC0yNjEgLTEwNi41IC00NjEuNXQtMjY2LjUgLTMwNi41cTE2MCAtMTA2IDI2Ni41IC0zMDYuNXQxMDYuNSAtNDYxLjVoOTZxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtMTQ3MnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg5NnEwIDI2MSAxMDYuNSA0NjEuNXQyNjYuNSAzMDYuNXEtMTYwIDEwNiAtMjY2LjUgMzA2LjV0LTEwNi41IDQ2MS41aC05NnEtMTQgMCAtMjMgOQ0KdC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDE0NzJxMTQgMCAyMyAtOXQ5IC0yM3YtNjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ6TTEyODAgMTQwOGgtMTAyNHEwIC0yMDYgODUgLTM4NGg4NTRxODUgMTc4IDg1IDM4NHpNMTIyMyAxOTJxLTU0IDE0MSAtMTQ1LjUgMjQxLjV0LTE5NC41IDE0Mi41aC0yMzBxLTEwMyAtNDIgLTE5NC41IC0xNDIuNXQtMTQ1LjUgLTI0MS41aDkxMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NTgiIHVuaWNvZGU9IiYjeGYyNTM7IiANCmQ9Ik0xNDA4IDE0MDhxMCAtMjYxIC0xMDYuNSAtNDYxLjV0LTI2Ni41IC0zMDYuNXExNjAgLTEwNiAyNjYuNSAtMzA2LjV0MTA2LjUgLTQ2MS41aDk2cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTE0NzJxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloOTZxMCAyNjEgMTA2LjUgNDYxLjV0MjY2LjUgMzA2LjVxLTE2MCAxMDYgLTI2Ni41IDMwNi41dC0xMDYuNSA0NjEuNWgtOTZxLTE0IDAgLTIzIDkNCnQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWgxNDcycTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTk2ek04NzQgNzAwcTc3IDI5IDE0OSA5Mi41dDEyOS41IDE1Mi41dDkyLjUgMjEwdDM1IDI1M2gtMTAyNHEwIC0xMzIgMzUgLTI1M3Q5Mi41IC0yMTB0MTI5LjUgLTE1Mi41dDE0OSAtOTIuNXExOSAtNyAzMC41IC0yMy41dDExLjUgLTM2LjV0LTExLjUgLTM2LjV0LTMwLjUgLTIzLjVxLTEzNyAtNTEgLTI0NCAtMTk2DQpoNzAwcS0xMDcgMTQ1IC0yNDQgMTk2cS0xOSA3IC0zMC41IDIzLjV0LTExLjUgMzYuNXQxMS41IDM2LjV0MzAuNSAyMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU1OSIgdW5pY29kZT0iJiN4ZjI1NDsiIA0KZD0iTTE1MDQgLTY0cTE0IDAgMjMgLTl0OSAtMjN2LTEyOHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjEyOHEwIDE0IDkgMjN0MjMgOWgxNDcyek0xMzAgMHEzIDU1IDE2IDEwN3QzMCA5NXQ0NiA4N3Q1My41IDc2dDY0LjUgNjkuNXQ2NiA2MHQ3MC41IDU1dDY2LjUgNDcuNXQ2NSA0M3EtNDMgMjggLTY1IDQzdC02Ni41IDQ3LjV0LTcwLjUgNTV0LTY2IDYwdC02NC41IDY5LjV0LTUzLjUgNzZ0LTQ2IDg3DQp0LTMwIDk1dC0xNiAxMDdoMTI3NnEtMyAtNTUgLTE2IC0xMDd0LTMwIC05NXQtNDYgLTg3dC01My41IC03NnQtNjQuNSAtNjkuNXQtNjYgLTYwdC03MC41IC01NXQtNjYuNSAtNDcuNXQtNjUgLTQzcTQzIC0yOCA2NSAtNDN0NjYuNSAtNDcuNXQ3MC41IC01NXQ2NiAtNjB0NjQuNSAtNjkuNXQ1My41IC03NnQ0NiAtODd0MzAgLTk1dDE2IC0xMDdoLTEyNzZ6TTE1MDQgMTUzNnExNCAwIDIzIC05dDkgLTIzdi0xMjhxMCAtMTQgLTkgLTIzdC0yMyAtOQ0KaC0xNDcycS0xNCAwIC0yMyA5dC05IDIzdjEyOHEwIDE0IDkgMjN0MjMgOWgxNDcyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2MCIgdW5pY29kZT0iJiN4ZjI1NTsiIA0KZD0iTTc2OCAxMTUycS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41di0xMjhoLTMydjkzcTAgNDggLTMyIDgxLjV0LTgwIDMzLjVxLTQ2IDAgLTc5IC0zM3QtMzMgLTc5di00MjlsLTMyIDMwdjE3MnEwIDQ4IC0zMiA4MS41dC04MCAzMy41cS00NiAwIC03OSAtMzN0LTMzIC03OXYtMjI0cTAgLTQ3IDM1IC04MmwzMTAgLTI5NnEzOSAtMzkgMzkgLTEwMnEwIC0yNiAxOSAtNDV0NDUgLTE5aDY0MHEyNiAwIDQ1IDE5dDE5IDQ1djI1DQpxMCA0MSAxMCA3N2wxMDggNDM2cTEwIDM2IDEwIDc3djI0NnEwIDQ4IC0zMiA4MS41dC04MCAzMy41cS00NiAwIC03OSAtMzN0LTMzIC03OXYtMzJoLTMydjEyNXEwIDQwIC0yNSA3Mi41dC02NCA0MC41cS0xNCAyIC0yMyAycS00NiAwIC03OSAtMzN0LTMzIC03OXYtMTI4aC0zMnYxMjJxMCA1MSAtMzIuNSA4OS41dC04Mi41IDQzLjVxLTUgMSAtMTMgMXpNNzY4IDEyODBxODQgMCAxNDkgLTUwcTU3IDM0IDEyMyAzNHE1OSAwIDExMSAtMjcNCnQ4NiAtNzZxMjcgNyA1OSA3cTEwMCAwIDE3MCAtNzEuNXQ3MCAtMTcxLjV2LTI0NnEwIC01MSAtMTMgLTEwOGwtMTA5IC00MzZxLTYgLTI0IC02IC03MXEwIC04MCAtNTYgLTEzNnQtMTM2IC01NmgtNjQwcS04NCAwIC0xMzggNTguNXQtNTQgMTQyLjVsLTMwOCAyOTZxLTc2IDczIC03NiAxNzV2MjI0cTAgOTkgNzAuNSAxNjkuNXQxNjkuNSA3MC41cTExIDAgMTYgLTFxNiA5NSA3NS41IDE2MHQxNjQuNSA2NXE1MiAwIDk4IC0yMQ0KcTcyIDY5IDE3NCA2OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjEiIHVuaWNvZGU9IiYjeGYyNTY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODgwIDE0MDhxLTQ2IDAgLTc5IC0zM3QtMzMgLTc5di02NTZoLTMydjUyOHEwIDQ2IC0zMyA3OXQtNzkgMzN0LTc5IC0zM3QtMzMgLTc5di01Mjh2LTI1NmwtMTU0IDIwNXEtMzggNTEgLTEwMiA1MXEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXEwIC00MyAyNiAtNzdsMzg0IC01MTJxMzggLTUxIDEwMiAtNTFoNjg4cTM0IDAgNjEgMjJ0MzQgNTZsNzYgNDA1cTUgMzIgNSA1OXY0OThxMCA0NiAtMzMgNzl0LTc5IDMzdC03OSAtMzMNCnQtMzMgLTc5di0yNzJoLTMydjUyOHEwIDQ2IC0zMyA3OXQtNzkgMzN0LTc5IC0zM3QtMzMgLTc5di01MjhoLTMydjY1NnEwIDQ2IC0zMyA3OXQtNzkgMzN6TTg4MCAxNTM2cTY4IDAgMTI1LjUgLTM1LjV0ODguNSAtOTYuNXExOSA0IDQyIDRxOTkgMCAxNjkuNSAtNzAuNXQ3MC41IC0xNjkuNXYtMTdxMTA1IDYgMTgwLjUgLTY0dDc1LjUgLTE3NXYtNDk4cTAgLTQwIC04IC04M2wtNzYgLTQwNHEtMTQgLTc5IC03Ni41IC0xMzF0LTE0My41IC01Mg0KaC02ODhxLTYwIDAgLTExNC41IDI3LjV0LTkwLjUgNzQuNWwtMzg0IDUxMnEtNTEgNjggLTUxIDE1NHEwIDEwNiA3NSAxODF0MTgxIDc1cTc4IDAgMTI4IC0zNHY0MzRxMCA5OSA3MC41IDE2OS41dDE2OS41IDcwLjVxMjMgMCA0MiAtNHEzMSA2MSA4OC41IDk2LjV0MTI1LjUgMzUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NjIiIHVuaWNvZGU9IiYjeGYyNTc7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTA3MyAtMTI4aC0xNzdxLTE2MyAwIC0yMjYgMTQxcS0yMyA0OSAtMjMgMTAydjVxLTYyIDMwIC05OC41IDg4LjV0LTM2LjUgMTI3LjVxMCAzOCA1IDQ4aC0yNjFxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1aDExM2wtNDQgMTdxLTc0IDI4IC0xMTkuNSA5My41dC00NS41IDE0NS41cTAgMTA2IDc1IDE4MXQxODEgNzVxNDYgMCA5MSAtMTdsNjI4IC0yMzloNDAxcTEwNiAwIDE4MSAtNzV0NzUgLTE4MXYtNjY4DQpxMCAtODggLTU0IC0xNTcuNXQtMTQwIC05MC41bC0zMzkgLTg1cS05MiAtMjMgLTE4NiAtMjN6TTEwMjQgNTgzbC0xNTUgLTcxbC0xNjMgLTc0cS0zMCAtMTQgLTQ4IC00MS41dC0xOCAtNjAuNXEwIC00NiAzMyAtNzl0NzkgLTMzcTI2IDAgNDYgMTBsMzM4IDE1NHEtNDkgMTAgLTgwLjUgNTB0LTMxLjUgOTB2NTV6TTEzNDQgMjcycTAgNDYgLTMzIDc5dC03OSAzM3EtMjYgMCAtNDYgLTEwbC0yOTAgLTEzMnEtMjggLTEzIC0zNyAtMTcNCnQtMzAuNSAtMTd0LTI5LjUgLTIzLjV0LTE2IC0yOXQtOCAtNDAuNXEwIC01MCAzMS41IC04MnQ4MS41IC0zMnEyMCAwIDM4IDlsMzUyIDE2MHEzMCAxNCA0OCA0MS41dDE4IDYwLjV6TTExMTIgMTAyNGwtNjUwIDI0OHEtMjQgOCAtNDYgOHEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXEwIC00MCAyMi41IC03M3Q1OS41IC00N2w1MjYgLTIwMHYtNjRoLTY0MHEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXQzNy41IC05MC41DQp0OTAuNSAtMzcuNWg1MzVsMjMzIDEwNnYxOThxMCA2MyA0NiAxMDZsMTExIDEwMmgtNjl6TTEwNzMgMHE4MiAwIDE1NSAxOWwzMzkgODVxNDMgMTEgNzAgNDUuNXQyNyA3OC41djY2OHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNWgtMzA4bC0xMzYgLTEyNnEtMzYgLTMzIC0zNiAtODJ2LTI5NnEwIC00NiAzMyAtNzd0NzkgLTMxdDc5IDM1dDMzIDgxdjIwOGgzMnYtMjA4cTAgLTcwIC01NyAtMTE0cTUyIC04IDg2LjUgLTQ4LjV0MzQuNSAtOTMuNQ0KcTAgLTQyIC0yMyAtNzh0LTYxIC01M2wtMzEwIC0xNDFoOTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTYzIiB1bmljb2RlPSImI3hmMjU4OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTExNTEgMTUzNnE2MSAwIDExNiAtMjh0OTEgLTc3bDU3MiAtNzgxcTExOCAtMTU5IDExOCAtMzU5di0zNTVxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZoLTM4NHEtODAgMCAtMTM2IDU2dC01NiAxMzZ2MTc3bC0yODYgMTQzaC01NDZxLTgwIDAgLTEzNiA1NnQtNTYgMTM2djMycTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg0MjBsNDIgMTI4aC02ODZxLTEwMCAwIC0xNzMuNSA2Ny41dC04MS41IDE2Ni41cS02NSA3OSAtNjUgMTgydjMyDQpxMCA4MCA1NiAxMzZ0MTM2IDU2aDk1OXpNMTkyMCAtNjR2MzU1cTAgMTU3IC05MyAyODRsLTU3MyA3ODFxLTM5IDUyIC0xMDMgNTJoLTk1OXEtMjYgMCAtNDUgLTE5dC0xOSAtNDVxMCAtMzIgMS41IC00OS41dDkuNSAtNDAuNXQyNSAtNDNxMTAgMzEgMzUuNSA1MHQ1Ni41IDE5aDgzMnYtMzJoLTgzMnEtMjYgMCAtNDUgLTE5dC0xOSAtNDVxMCAtNDQgMyAtNThxOCAtNDQgNDQgLTczdDgxIC0yOWg2NDBoOTFxNDAgMCA2OCAtMjh0MjggLTY4DQpxMCAtMTUgLTUgLTMwbC02NCAtMTkycS0xMCAtMjkgLTM1IC00Ny41dC01NiAtMTguNWgtNDQzcS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdi0zMnEwIC0yNiAxOSAtNDV0NDUgLTE5aDU2MXExNiAwIDI5IC03bDMxNyAtMTU4cTI0IC0xMyAzOC41IC0zNnQxNC41IC01MHYtMTk3cTAgLTI2IDE5IC00NXQ0NSAtMTloMzg0cTI2IDAgNDUgMTl0MTkgNDV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY0IiB1bmljb2RlPSImI3hmMjU5OyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTQ1OSAtMjU2cS03NyAwIC0xMzcuNSA0Ny41dC03OS41IDEyMi41bC0xMDEgNDAxcS0xMyA1NyAtMTMgMTA4cTAgNDUgLTUgNjdsLTExNiA0NzdxLTcgMjcgLTcgNTdxMCA5MyA2MiAxNjF0MTU1IDc4cTE3IDg1IDgyLjUgMTM5dDE1Mi41IDU0cTgzIDAgMTQ4IC01MS41dDg1IC0xMzIuNWw4MyAtMzQ4bDEwMyA0MjhxMjAgODEgODUgMTMyLjV0MTQ4IDUxLjVxODkgMCAxNTUuNSAtNTcuNXQ4MC41IC0xNDQuNXE5MiAtMTAgMTUyIC03OQ0KdDYwIC0xNjJxMCAtMjQgLTcgLTU5bC0xMjMgLTUxMnExMCA3IDM3LjUgMjguNXQzOC41IDI5LjV0MzUgMjN0NDEgMjAuNXQ0MS41IDExdDQ5LjUgNS41cTEwNSAwIDE4MCAtNzR0NzUgLTE3OXEwIC02MiAtMjguNSAtMTE4dC03OC41IC05NGwtNTA3IC0zODBxLTY4IC01MSAtMTUzIC01MWgtNjk0ek0xMTA0IDE0MDhxLTM4IDAgLTY4LjUgLTI0dC0zOS41IC02MmwtMTY0IC02ODJoLTEyN2wtMTQ1IDYwMnEtOSAzOCAtMzkuNSA2MnQtNjguNSAyNA0KcS00OCAwIC04MCAtMzN0LTMyIC04MHEwIC0xNSAzIC0yOGwxMzIgLTU0N2gtMjZsLTk5IDQwOHEtOSAzNyAtNDAgNjIuNXQtNjkgMjUuNXEtNDcgMCAtODAgLTMzdC0zMyAtNzlxMCAtMTQgMyAtMjZsMTE2IC00NzhxNyAtMjggOSAtODZ0MTAgLTg4bDEwMCAtNDAxcTggLTMyIDM0IC01Mi41dDU5IC0yMC41aDY5NHE0MiAwIDc2IDI2bDUwNyAzNzlxNTYgNDMgNTYgMTEwcTAgNTIgLTM3LjUgODguNXQtODkuNSAzNi41cS00MyAwIC03NyAtMjYNCmwtMzA3IC0yMzB2MjI3cTAgNCAzMiAxMzh0NjggMjgydDM5IDE2MXE0IDE4IDQgMjlxMCA0NyAtMzIgODF0LTc5IDM0cS0zOSAwIC02OS41IC0yNHQtMzkuNSAtNjJsLTExNiAtNDgyaC0yNmwxNTAgNjI0cTMgMTQgMyAyOHEwIDQ4IC0zMS41IDgydC03OS41IDM0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2NSIgdW5pY29kZT0iJiN4ZjI1YTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02NDAgMTQwOHEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXYtNTEydi0zODRsLTE1MSAyMDJxLTQxIDU0IC0xMDcgNTRxLTUyIDAgLTg5IC0zOHQtMzcgLTkwcTAgLTQzIDI2IC03N2wzODQgLTUxMnEzOCAtNTEgMTAyIC01MWg3MThxMjIgMCAzOS41IDEzLjV0MjIuNSAzNC41bDkyIDM2OHEyNCA5NiAyNCAxOTR2MjE3cTAgNDEgLTI4IDcxdC02OCAzMHQtNjggLTI4dC0yOCAtNjhoLTMydjYxcTAgNDggLTMyIDgxLjV0LTgwIDMzLjUNCnEtNDYgMCAtNzkgLTMzdC0zMyAtNzl2LTY0aC0zMnY5MHEwIDU1IC0zNyA5NC41dC05MSAzOS41cS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41di05NmgtMzJ2NTcwcTAgNTUgLTM3IDk0LjV0LTkxIDM5LjV6TTY0MCAxNTM2cTEwNyAwIDE4MS41IC03Ny41dDc0LjUgLTE4NC41di0yMjBxMjIgMiAzMiAycTk5IDAgMTczIC02OXE0NyAyMSA5OSAyMXExMTMgMCAxODQgLTg3cTI3IDcgNTYgN3E5NCAwIDE1OSAtNjcuNXQ2NSAtMTYxLjUNCnYtMjE3cTAgLTExNiAtMjggLTIyNWwtOTIgLTM2OHEtMTYgLTY0IC02OCAtMTA0LjV0LTExOCAtNDAuNWgtNzE4cS02MCAwIC0xMTQuNSAyNy41dC05MC41IDc0LjVsLTM4NCA1MTJxLTUxIDY4IC01MSAxNTRxMCAxMDUgNzQuNSAxODAuNXQxNzkuNSA3NS41cTcxIDAgMTMwIC0zNXY1NDdxMCAxMDYgNzUgMTgxdDE4MSA3NXpNNzY4IDEyOHYzODRoLTMydi0zODRoMzJ6TTEwMjQgMTI4djM4NGgtMzJ2LTM4NGgzMnpNMTI4MCAxMjh2Mzg0aC0zMg0Kdi0zODRoMzJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY2IiB1bmljb2RlPSImI3hmMjViOyIgDQpkPSJNMTI4OCA4ODlxNjAgMCAxMDcgLTIzcTE0MSAtNjMgMTQxIC0yMjZ2LTE3N3EwIC05NCAtMjMgLTE4NmwtODUgLTMzOXEtMjEgLTg2IC05MC41IC0xNDB0LTE1Ny41IC01NGgtNjY4cS0xMDYgMCAtMTgxIDc1dC03NSAxODF2NDAxbC0yMzkgNjI4cS0xNyA0NSAtMTcgOTFxMCAxMDYgNzUgMTgxdDE4MSA3NXE4MCAwIDE0NS41IC00NS41dDkzLjUgLTExOS41bDE3IC00NHYxMTNxMCAxMDYgNzUgMTgxdDE4MSA3NXQxODEgLTc1dDc1IC0xODENCnYtMjYxcTI3IDUgNDggNXE2OSAwIDEyNy41IC0zNi41dDg4LjUgLTk4LjV6TTEwNzIgODk2cS0zMyAwIC02MC41IC0xOHQtNDEuNSAtNDhsLTc0IC0xNjNsLTcxIC0xNTVoNTVxNTAgMCA5MCAtMzEuNXQ1MCAtODAuNWwxNTQgMzM4cTEwIDIwIDEwIDQ2cTAgNDYgLTMzIDc5dC03OSAzM3pNMTI5MyA3NjFxLTIyIDAgLTQwLjUgLTh0LTI5IC0xNnQtMjMuNSAtMjkuNXQtMTcgLTMwLjV0LTE3IC0zN2wtMTMyIC0yOTBxLTEwIC0yMCAtMTAgLTQ2DQpxMCAtNDYgMzMgLTc5dDc5IC0zM3EzMyAwIDYwLjUgMTh0NDEuNSA0OGwxNjAgMzUycTkgMTggOSAzOHEwIDUwIC0zMiA4MS41dC04MiAzMS41ek0xMjggMTEyMHEwIC0yMiA4IC00NmwyNDggLTY1MHYtNjlsMTAyIDExMXE0MyA0NiAxMDYgNDZoMTk4bDEwNiAyMzN2NTM1cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41di02NDBoLTY0bC0yMDAgNTI2cS0xNCAzNyAtNDcgNTkuNXQtNzMgMjIuNQ0KcS01MyAwIC05MC41IC0zNy41dC0zNy41IC05MC41ek0xMTgwIC0xMjhxNDQgMCA3OC41IDI3dDQ1LjUgNzBsODUgMzM5cTE5IDczIDE5IDE1NXY5MWwtMTQxIC0zMTBxLTE3IC0zOCAtNTMgLTYxdC03OCAtMjNxLTUzIDAgLTkzLjUgMzQuNXQtNDguNSA4Ni41cS00NCAtNTcgLTExNCAtNTdoLTIwOHYzMmgyMDhxNDYgMCA4MSAzM3QzNSA3OXQtMzEgNzl0LTc3IDMzaC0yOTZxLTQ5IDAgLTgyIC0zNmwtMTI2IC0xMzZ2LTMwOA0KcTAgLTUzIDM3LjUgLTkwLjV0OTAuNSAtMzcuNWg2Njh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY3IiB1bmljb2RlPSImI3hmMjVjOyIgaG9yaXotYWR2LXg9IjE5NzMiIA0KZD0iTTg1NyA5OTJ2LTExN3EwIC0xMyAtOS41IC0yMnQtMjIuNSAtOWgtMjk4di04MTJxMCAtMTMgLTkgLTIyLjV0LTIyIC05LjVoLTEzNXEtMTMgMCAtMjIuNSA5dC05LjUgMjN2ODEyaC0yOTdxLTEzIDAgLTIyLjUgOXQtOS41IDIydjExN3EwIDE0IDkgMjN0MjMgOWg3OTNxMTMgMCAyMi41IC05LjV0OS41IC0yMi41ek0xODk1IDk5NWw3NyAtOTYxcTEgLTEzIC04IC0yNHEtMTAgLTEwIC0yMyAtMTBoLTEzNHEtMTIgMCAtMjEgOC41DQp0LTEwIDIwLjVsLTQ2IDU4OGwtMTg5IC00MjVxLTggLTE5IC0yOSAtMTloLTEyMHEtMjAgMCAtMjkgMTlsLTE4OCA0MjdsLTQ1IC01OTBxLTEgLTEyIC0xMCAtMjAuNXQtMjEgLTguNWgtMTM1cS0xMyAwIC0yMyAxMHEtOSAxMCAtOSAyNGw3OCA5NjFxMSAxMiAxMCAyMC41dDIxIDguNWgxNDJxMjAgMCAyOSAtMTlsMjIwIC01MjBxMTAgLTI0IDIwIC01MXEzIDcgOS41IDI0LjV0MTAuNSAyNi41bDIyMSA1MjBxOSAxOSAyOSAxOWgxNDENCnExMyAwIDIyIC04LjV0MTAgLTIwLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTY4IiB1bmljb2RlPSImI3hmMjVkOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNDIgODMzcTAgODggLTYwIDEyMXEtMzMgMTggLTExNyAxOGgtMTIzdi0yODFoMTYycTY2IDAgMTAyIDM3dDM2IDEwNXpNMTA5NCA1NDhsMjA1IC0zNzNxOCAtMTcgLTEgLTMxcS04IC0xNiAtMjcgLTE2aC0xNTJxLTIwIDAgLTI4IDE3bC0xOTQgMzY1aC0xNTV2LTM1MHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xMzRxLTE0IDAgLTIzIDl0LTkgMjN2OTYwcTAgMTQgOSAyM3QyMyA5aDI5NHExMjggMCAxOTAgLTI0cTg1IC0zMSAxMzQgLTEwOQ0KdDQ5IC0xODBxMCAtOTIgLTQyLjUgLTE2NS41dC0xMTUuNSAtMTA5LjVxNiAtMTAgOSAtMTZ6TTg5NiAxMzc2cS0xNTAgMCAtMjg2IC01OC41dC0yMzQuNSAtMTU3dC0xNTcgLTIzNC41dC01OC41IC0yODZ0NTguNSAtMjg2dDE1NyAtMjM0LjV0MjM0LjUgLTE1N3QyODYgLTU4LjV0Mjg2IDU4LjV0MjM0LjUgMTU3dDE1NyAyMzQuNXQ1OC41IDI4NnQtNTguNSAyODZ0LTE1NyAyMzQuNXQtMjM0LjUgMTU3dC0yODYgNTguNXpNMTc5MiA2NDANCnEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU2OSIgdW5pY29kZT0iJiN4ZjI1ZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik02MDUgMzAzcTE1MyAwIDI1NyAxMDRxMTQgMTggMyAzNmwtNDUgODJxLTYgMTMgLTI0IDE3cS0xNiAyIC0yNyAtMTFsLTQgLTNxLTQgLTQgLTExLjUgLTEwdC0xNy41IC0xMy41dC0yMy41IC0xNC41dC0yOC41IC0xM3QtMzMuNSAtOS41dC0zNy41IC0zLjVxLTc2IDAgLTEyNSA1MHQtNDkgMTI3cTAgNzYgNDggMTI1LjV0MTIyIDQ5LjVxMzcgMCA3MS41IC0xNHQ1MC41IC0yOGwxNiAtMTRxMTEgLTExIDI2IC0xMHExNiAyIDI0IDE0bDUzIDc4DQpxMTMgMjAgLTIgMzlxLTMgNCAtMTEgMTJ0LTMwIDIzLjV0LTQ4LjUgMjh0LTY3LjUgMjIuNXQtODYgMTBxLTE0OCAwIC0yNDYgLTk2LjV0LTk4IC0yNDAuNXEwIC0xNDYgOTcgLTI0MS41dDI0NyAtOTUuNXpNMTIzNSAzMDNxMTUzIDAgMjU3IDEwNHExNCAxOCA0IDM2bC00NSA4MnEtOCAxNCAtMjUgMTdxLTE2IDIgLTI3IC0xMWwtNCAtM3EtNCAtNCAtMTEuNSAtMTB0LTE3LjUgLTEzLjV0LTIzLjUgLTE0LjV0LTI4LjUgLTEzdC0zMy41IC05LjUNCnQtMzcuNSAtMy41cS03NiAwIC0xMjUgNTB0LTQ5IDEyN3EwIDc2IDQ4IDEyNS41dDEyMiA0OS41cTM3IDAgNzEuNSAtMTR0NTAuNSAtMjhsMTYgLTE0cTExIC0xMSAyNiAtMTBxMTYgMiAyNCAxNGw1MyA3OHExMyAyMCAtMiAzOXEtMyA0IC0xMSAxMnQtMzAgMjMuNXQtNDguNSAyOHQtNjcuNSAyMi41dC04NiAxMHEtMTQ3IDAgLTI0NS41IC05Ni41dC05OC41IC0yNDAuNXEwIC0xNDYgOTcgLTI0MS41dDI0NyAtOTUuNXpNODk2IDEzNzYNCnEtMTUwIDAgLTI4NiAtNTguNXQtMjM0LjUgLTE1N3QtMTU3IC0yMzQuNXQtNTguNSAtMjg2dDU4LjUgLTI4NnQxNTcgLTIzNC41dDIzNC41IC0xNTd0Mjg2IC01OC41dDI4NiA1OC41dDIzNC41IDE1N3QxNTcgMjM0LjV0NTguNSAyODZ0LTU4LjUgMjg2dC0xNTcgMjM0LjV0LTIzNC41IDE1N3QtMjg2IDU4LjV6TTg5NiAxNTM2cTE4MiAwIDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHQtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxDQp0LTM0OCAtNzF0LTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjI2MCIgdW5pY29kZT0iJiN4ZjI2MDsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik03MzYgNzM2bDM4NCAtMzg0bC0zODQgLTM4NGwtNjcyIDY3Mmw2NzIgNjcybDE2OCAtMTY4bC05NiAtOTZsLTcyIDcybC00ODAgLTQ4MGw0ODAgLTQ4MGwxOTMgMTkzbC0yODkgMjg3ek0xMzEyIDEzMTJsNjcyIC02NzJsLTY3MiAtNjcybC0xNjggMTY4bDk2IDk2bDcyIC03Mmw0ODAgNDgwbC00ODAgNDgwbC0xOTMgLTE5M2wyODkgLTI4N2wtOTYgLTk2bC0zODQgMzg0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iZjI2MSIgdW5pY29kZT0iJiN4ZjI2MTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik03MTcgMTgybDI3MSAyNzFsLTI3OSAyNzlsLTg4IC04OGwxOTIgLTE5MWwtOTYgLTk2bC0yNzkgMjc5bDI3OSAyNzlsNDAgLTQwbDg3IDg3bC0xMjcgMTI4bC00NTQgLTQ1NHpNMTA3NSAxOTBsNDU0IDQ1NGwtNDU0IDQ1NGwtMjcxIC0yNzFsMjc5IC0yNzlsODggODhsLTE5MiAxOTFsOTYgOTZsMjc5IC0yNzlsLTI3OSAtMjc5bC00MCA0MGwtODcgLTg4ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MQ0KdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTcyIiB1bmljb2RlPSImI3hmMjYyOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTY1MSA1MzlxMCAtMzkgLTI3LjUgLTY2LjV0LTY1LjUgLTI3LjVxLTM5IDAgLTY2LjUgMjcuNXQtMjcuNSA2Ni41cTAgMzggMjcuNSA2NS41dDY2LjUgMjcuNXEzOCAwIDY1LjUgLTI3LjV0MjcuNSAtNjUuNXpNMTgwNSA1NDBxMCAtMzkgLTI3LjUgLTY2LjV0LTY2LjUgLTI3LjV0LTY2LjUgMjcuNXQtMjcuNSA2Ni41dDI3LjUgNjZ0NjYuNSAyN3Q2Ni41IC0yN3QyNy41IC02NnpNNzY1IDUzOXEwIDc5IC01Ni41IDEzNnQtMTM2LjUgNTcNCnQtMTM2LjUgLTU2LjV0LTU2LjUgLTEzNi41dDU2LjUgLTEzNi41dDEzNi41IC01Ni41dDEzNi41IDU2LjV0NTYuNSAxMzYuNXpNMTkxOCA1NDBxMCA4MCAtNTYuNSAxMzYuNXQtMTM2LjUgNTYuNXEtNzkgMCAtMTM2IC01Ni41dC01NyAtMTM2LjV0NTYuNSAtMTM2LjV0MTM2LjUgLTU2LjV0MTM2LjUgNTYuNXQ1Ni41IDEzNi41ek04NTAgNTM5cTAgLTExNiAtODEuNSAtMTk3LjV0LTE5Ni41IC04MS41cS0xMTYgMCAtMTk3LjUgODJ0LTgxLjUgMTk3DQp0ODIgMTk2LjV0MTk3IDgxLjV0MTk2LjUgLTgxLjV0ODEuNSAtMTk2LjV6TTIwMDQgNTQwcTAgLTExNSAtODEuNSAtMTk2LjV0LTE5Ny41IC04MS41cS0xMTUgMCAtMTk2LjUgODEuNXQtODEuNSAxOTYuNXQ4MS41IDE5Ni41dDE5Ni41IDgxLjVxMTE2IDAgMTk3LjUgLTgxLjV0ODEuNSAtMTk2LjV6TTEwNDAgNTM3cTAgMTkxIC0xMzUuNSAzMjYuNXQtMzI2LjUgMTM1LjVxLTEyNSAwIC0yMzEgLTYydC0xNjggLTE2OC41dC02MiAtMjMxLjUNCnQ2MiAtMjMxLjV0MTY4IC0xNjguNXQyMzEgLTYycTE5MSAwIDMyNi41IDEzNS41dDEzNS41IDMyNi41ek0xNzA4IDExMTBxLTI1NCAxMTEgLTU1NiAxMTFxLTMxOSAwIC01NzMgLTExMHExMTcgMCAyMjMgLTQ1LjV0MTgyLjUgLTEyMi41dDEyMiAtMTgzdDQ1LjUgLTIyM3EwIDExNSA0My41IDIxOS41dDExOCAxODAuNXQxNzcuNSAxMjN0MjE3IDUwek0yMTg3IDUzN3EwIDE5MSAtMTM1IDMyNi41dC0zMjYgMTM1LjV0LTMyNi41IC0xMzUuNQ0KdC0xMzUuNSAtMzI2LjV0MTM1LjUgLTMyNi41dDMyNi41IC0xMzUuNXQzMjYgMTM1LjV0MTM1IDMyNi41ek0xOTIxIDExMDNoMzgzcS00NCAtNTEgLTc1IC0xMTQuNXQtNDAgLTExNC41cTExMCAtMTUxIDExMCAtMzM3cTAgLTE1NiAtNzcgLTI4OHQtMjA5IC0yMDguNXQtMjg3IC03Ni41cS0xMzMgMCAtMjQ5IDU2dC0xOTYgMTU1cS00NyAtNTYgLTEyOSAtMTc5cS0xMSAyMiAtNTMuNSA4Mi41dC03NC41IDk3LjUNCnEtODAgLTk5IC0xOTYuNSAtMTU1LjV0LTI0OS41IC01Ni41cS0xNTUgMCAtMjg3IDc2LjV0LTIwOSAyMDguNXQtNzcgMjg4cTAgMTg2IDExMCAzMzdxLTkgNTEgLTQwIDExNC41dC03NSAxMTQuNWgzNjVxMTQ5IDEwMCAzNTUgMTU2LjV0NDMyIDU2LjVxMjI0IDAgNDIxIC01NnQzNDggLTE1N3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9ImYyNjMiIHVuaWNvZGU9IiYjeGYyNjM7IiBob3Jpei1hZHYteD0iMTI4MCIgDQpkPSJNNjQwIDYyOXEtMTg4IDAgLTMyMSAxMzN0LTEzMyAzMjBxMCAxODggMTMzIDMyMXQzMjEgMTMzdDMyMSAtMTMzdDEzMyAtMzIxcTAgLTE4NyAtMTMzIC0zMjB0LTMyMSAtMTMzek02NDAgMTMwNnEtOTIgMCAtMTU3LjUgLTY1LjV0LTY1LjUgLTE1OC41cTAgLTkyIDY1LjUgLTE1Ny41dDE1Ny41IC02NS41dDE1Ny41IDY1LjV0NjUuNSAxNTcuNXEwIDkzIC02NS41IDE1OC41dC0xNTcuNSA2NS41ek0xMTYzIDU3NHExMyAtMjcgMTUgLTQ5LjUNCnQtNC41IC00MC41dC0yNi41IC0zOC41dC00Mi41IC0zN3QtNjEuNSAtNDEuNXEtMTE1IC03MyAtMzE1IC05NGw3MyAtNzJsMjY3IC0yNjdxMzAgLTMxIDMwIC03NHQtMzAgLTczbC0xMiAtMTNxLTMxIC0zMCAtNzQgLTMwdC03NCAzMHEtNjcgNjggLTI2NyAyNjhsLTI2NyAtMjY4cS0zMSAtMzAgLTc0IC0zMHQtNzMgMzBsLTEyIDEzcS0zMSAzMCAtMzEgNzN0MzEgNzRsMjY3IDI2N2w3MiA3MnEtMjAzIDIxIC0zMTcgOTQNCnEtMzkgMjUgLTYxLjUgNDEuNXQtNDIuNSAzN3QtMjYuNSAzOC41dC00LjUgNDAuNXQxNSA0OS41cTEwIDIwIDI4IDM1dDQyIDIydDU2IC0ydDY1IC0zNXE1IC00IDE1IC0xMXQ0MyAtMjQuNXQ2OSAtMzAuNXQ5MiAtMjR0MTEzIC0xMXE5MSAwIDE3NCAyNS41dDEyMCA1MC41bDM4IDI1cTMzIDI2IDY1IDM1dDU2IDJ0NDIgLTIydDI4IC0zNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NzQiIHVuaWNvZGU9IiYjeGYyNjQ7IiANCmQ9Ik05MjcgOTU2cTAgLTY2IC00Ni41IC0xMTIuNXQtMTEyLjUgLTQ2LjV0LTExMi41IDQ2LjV0LTQ2LjUgMTEyLjV0NDYuNSAxMTIuNXQxMTIuNSA0Ni41dDExMi41IC00Ni41dDQ2LjUgLTExMi41ek0xMTQxIDU5M3EtMTAgMjAgLTI4IDMydC00Ny41IDkuNXQtNjAuNSAtMjcuNXEtMTAgLTggLTI5IC0yMHQtODEgLTMydC0xMjcgLTIwdC0xMjQgMTh0LTg2IDM2bC0yNyAxOHEtMzEgMjUgLTYwLjUgMjcuNXQtNDcuNSAtOS41dC0yOCAtMzINCnEtMjIgLTQ1IC0yIC03NC41dDg3IC03My41cTgzIC01MyAyMjYgLTY3bC01MSAtNTJxLTE0MiAtMTQyIC0xOTEgLTE5MHEtMjIgLTIyIC0yMiAtNTIuNXQyMiAtNTIuNWw5IC05cTIyIC0yMiA1Mi41IC0yMnQ1Mi41IDIybDE5MSAxOTFxMTE0IC0xMTUgMTkxIC0xOTFxMjIgLTIyIDUyLjUgLTIydDUyLjUgMjJsOSA5cTIyIDIyIDIyIDUyLjV0LTIyIDUyLjVsLTE5MSAxOTBsLTUyIDUycTE0MSAxNCAyMjUgNjdxNjcgNDQgODcgNzMuNXQtMiA3NC41DQp6TTEwOTIgOTU2cTAgMTM0IC05NSAyMjl0LTIyOSA5NXQtMjI5IC05NXQtOTUgLTIyOXQ5NSAtMjI5dDIyOSAtOTV0MjI5IDk1dDk1IDIyOXpNMTUzNiAxMTIwdi05NjBxMCAtMTE5IC04NC41IC0yMDMuNXQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTc1IiB1bmljb2RlPSImI3hmMjY1OyIgaG9yaXotYWR2LXg9IjE3MjAiIA0KZD0iTTE1NjUgMTQwOHE2NSAwIDExMCAtNDUuNXQ0NSAtMTEwLjV2LTUxOXEwIC0xNzYgLTY4IC0zMzZ0LTE4Mi41IC0yNzV0LTI3NCAtMTgyLjV0LTMzNC41IC02Ny41cS0xNzYgMCAtMzM1LjUgNjcuNXQtMjc0LjUgMTgyLjV0LTE4MyAyNzV0LTY4IDMzNnY1MTlxMCA2NCA0NiAxMTB0MTEwIDQ2aDE0MDl6TTg2MSAzNDRxNDcgMCA4MiAzM2w0MDQgMzg4cTM3IDM1IDM3IDg1cTAgNDkgLTM0LjUgODMuNXQtODMuNSAzNC41cS00NyAwIC04MiAtMzMNCmwtMzIzIC0zMTBsLTMyMyAzMTBxLTM1IDMzIC04MSAzM3EtNDkgMCAtODMuNSAtMzQuNXQtMzQuNSAtODMuNXEwIC01MSAzNiAtODVsNDA1IC0zODhxMzMgLTMzIDgxIC0zM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81NzYiIHVuaWNvZGU9IiYjeGYyNjY7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTQ5NCAtMTAzbC0yOTUgNjk1cS0yNSAtNDkgLTE1OC41IC0zMDUuNXQtMTk4LjUgLTM4OS41cS0xIC0xIC0yNy41IC0wLjV0LTI2LjUgMS41cS04MiAxOTMgLTI1NS41IDU4N3QtMjU5LjUgNTk2cS0yMSA1MCAtNjYuNSAxMDcuNXQtMTAzLjUgMTAwLjV0LTEwMiA0M3EwIDUgLTAuNSAyNHQtMC41IDI3aDU4M3YtNTBxLTM5IC0yIC03OS41IC0xNnQtNjYuNSAtNDN0LTEwIC02NHEyNiAtNTkgMjE2LjUgLTQ5OXQyMzUuNSAtNTQwDQpxMzEgNjEgMTQwIDI2Ni41dDEzMSAyNDcuNXEtMTkgMzkgLTEyNiAyODF0LTEzNiAyOTVxLTM4IDY5IC0yMDEgNzF2NTBsNTEzIC0xdi00N3EtNjAgLTIgLTkzLjUgLTI1dC0xMi41IC02OXEzMyAtNzAgODcgLTE4OS41dDg2IC0xODcuNXExMTAgMjE0IDE3MyAzNjNxMjQgNTUgLTEwIDc5LjV0LTEyOSAyNi41cTEgNyAxIDI1djI0cTY0IDAgMTcwLjUgMC41dDE4MCAxdDkyLjUgMC41di00OXEtNjIgLTIgLTExOSAtMzN0LTkwIC04MQ0KbC0yMTMgLTQ0MnExMyAtMzMgMTI3LjUgLTI5MHQxMjEuNSAtMjc0bDQ0MSAxMDE3cS0xNCAzOCAtNDkuNSA2Mi41dC02NSAzMS41dC01NS41IDh2NTBsNDYwIC00bDEgLTJsLTEgLTQ0cS0xMzkgLTQgLTIwMSAtMTQ1cS01MjYgLTEyMTYgLTU1OSAtMTI5MWgtNDl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTc3IiB1bmljb2RlPSImI3hmMjY3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTk0OSA2NDNxMCAtMjYgLTE2LjUgLTQ1dC00MS41IC0xOXEtMjYgMCAtNDUgMTYuNXQtMTkgNDEuNXEwIDI2IDE3IDQ1dDQyIDE5dDQ0IC0xNi41dDE5IC00MS41ek05NjQgNTg1bDM1MCA1ODFxLTkgLTggLTY3LjUgLTYyLjV0LTEyNS41IC0xMTYuNXQtMTM2LjUgLTEyN3QtMTE3IC0xMTAuNXQtNTAuNSAtNTEuNWwtMzQ5IC01ODBxNyA3IDY3IDYydDEyNiAxMTYuNXQxMzYgMTI3dDExNyAxMTF0NTAgNTAuNXpNMTYxMSA2NDANCnEwIC0yMDEgLTEwNCAtMzcxcS0zIDIgLTE3IDExdC0yNi41IDE2LjV0LTE2LjUgNy41cS0xMyAwIC0xMyAtMTNxMCAtMTAgNTkgLTQ0cS03NCAtMTEyIC0xODQuNSAtMTkwLjV0LTI0MS41IC0xMTAuNWwtMTYgNjdxLTEgMTAgLTE1IDEwcS01IDAgLTggLTUuNXQtMiAtOS41bDE2IC02OHEtNzIgLTE1IC0xNDYgLTE1cS0xOTkgMCAtMzcyIDEwNXExIDIgMTMgMjAuNXQyMS41IDMzLjV0OS41IDE5cTAgMTMgLTEzIDEzcS02IDAgLTE3IC0xNC41DQp0LTIyLjUgLTM0LjV0LTEzLjUgLTIzcS0xMTMgNzUgLTE5MiAxODcuNXQtMTEwIDI0NC41bDY5IDE1cTEwIDMgMTAgMTVxMCA1IC01LjUgOHQtMTAuNSAybC02OCAtMTVxLTE0IDcyIC0xNCAxMzlxMCAyMDYgMTA5IDM3OXEyIC0xIDE4LjUgLTEydDMwIC0xOXQxNy41IC04cTEzIDAgMTMgMTJxMCA2IC0xMi41IDE1LjV0LTMyLjUgMjEuNWwtMjAgMTJxNzcgMTEyIDE4OSAxODl0MjQ0IDEwN2wxNSAtNjdxMiAtMTAgMTUgLTEwcTUgMCA4IDUuNQ0KdDIgMTAuNWwtMTUgNjZxNzEgMTMgMTM0IDEzcTIwNCAwIDM3OSAtMTA5cS0zOSAtNTYgLTM5IC02NXEwIC0xMyAxMiAtMTNxMTEgMCA0OCA2NHExMTEgLTc1IDE4Ny41IC0xODZ0MTA3LjUgLTI0MWwtNTYgLTEycS0xMCAtMiAtMTAgLTE2cTAgLTUgNS41IC04dDkuNSAtMmw1NyAxM3ExNCAtNzIgMTQgLTE0MHpNMTY5NiA2NDBxMCAxNjMgLTYzLjUgMzExdC0xNzAuNSAyNTV0LTI1NSAxNzAuNXQtMzExIDYzLjV0LTMxMSAtNjMuNQ0KdC0yNTUgLTE3MC41dC0xNzAuNSAtMjU1dC02My41IC0zMTF0NjMuNSAtMzExdDE3MC41IC0yNTV0MjU1IC0xNzAuNXQzMTEgLTYzLjV0MzExIDYzLjV0MjU1IDE3MC41dDE3MC41IDI1NXQ2My41IDMxMXpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2IC0xOTF0LTM0OCAtNzF0LTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzF0Mjg2IC0xOTENCnQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3OCIgdW5pY29kZT0iJiN4ZjI2ODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik04OTMgMTUzNnEyNDAgMiA0NTEgLTEyMHEyMzIgLTEzNCAzNTIgLTM3MmwtNzQyIDM5cS0xNjAgOSAtMjk0IC03NC41dC0xODUgLTIyOS41bC0yNzYgNDI0cTEyOCAxNTkgMzExIDI0NS41dDM4MyA4Ny41ek0xNDYgMTEzMWwzMzcgLTY2M3E3MiAtMTQzIDIxMSAtMjE3dDI5MyAtNDVsLTIzMCAtNDUxcS0yMTIgMzMgLTM4NSAxNTcuNXQtMjcyLjUgMzE2dC05OS41IDQxMS41cTAgMjY3IDE0NiA0OTF6TTE3MzIgOTYyDQpxNTggLTE1MCA1OS41IC0zMTAuNXQtNDguNSAtMzA2dC0xNTMgLTI3MnQtMjQ2IC0yMDkuNXEtMjMwIC0xMzMgLTQ5OCAtMTE5bDQwNSA2MjNxODggMTMxIDgyLjUgMjkwLjV0LTEwNi41IDI3Ny41ek04OTYgOTQycTEyNSAwIDIxMy41IC04OC41dDg4LjUgLTIxMy41dC04OC41IC0yMTMuNXQtMjEzLjUgLTg4LjV0LTIxMy41IDg4LjV0LTg4LjUgMjEzLjV0ODguNSAyMTMuNXQyMTMuNSA4OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU3OSIgdW5pY29kZT0iJiN4ZjI2OTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05MDMgLTI1NnEtMjgzIDAgLTUwNC41IDE1MC41dC0zMjkuNSAzOTguNXEtNTggMTMxIC02NyAzMDF0MjYgMzMyLjV0MTExIDMxMnQxNzkgMjQyLjVsLTExIC0yODFxMTEgMTQgNjggMTUuNXQ3MCAtMTUuNXE0MiA4MSAxNjAuNSAxMzh0MjM0LjUgNTlxLTU0IC00NSAtMTE5LjUgLTE0OC41dC01OC41IC0xNjMuNXEyNSAtOCA2Mi41IC0xMy41dDYzIC03LjV0NjggLTR0NTAuNSAtM3ExNSAtNSA5LjUgLTQ1LjV0LTMwLjUgLTc1LjUNCnEtNSAtNyAtMTYuNSAtMTguNXQtNTYuNSAtMzUuNXQtMTAxIC0zNGwxNSAtMTg5bC0xMzkgNjdxLTE4IC00MyAtNy41IC04MS41dDM2IC02Ni41dDY1LjUgLTQxLjV0ODEgLTYuNXE1MSA5IDk4IDM0LjV0ODMuNSA0NXQ3My41IDE3LjVxNjEgLTQgODkuNSAtMzN0MTkuNSAtNjVxLTEgLTIgLTIuNSAtNS41dC04LjUgLTEyLjV0LTE4IC0xNS41dC0zMS41IC0xMC41dC00Ni41IC0xcS02MCAtOTUgLTE0NC41IC0xMzUuNXQtMjA5LjUgLTI5LjUNCnE3NCAtNjEgMTYyLjUgLTgyLjV0MTY4LjUgLTZ0MTU0LjUgNTJ0MTI4IDg3LjV0ODAuNSAxMDRxNDMgOTEgMzkgMTkyLjV0LTM3LjUgMTg4LjV0LTc4LjUgMTI1cTg3IC0zOCAxMzcgLTc5LjV0NzcgLTExMi41cTE1IDE3MCAtNTcuNSAzNDN0LTIwOS41IDI4NHEyNjUgLTc3IDQxMiAtMjc5LjV0MTUxIC01MTcuNXEyIC0xMjcgLTQwLjUgLTI1NXQtMTIzLjUgLTIzOHQtMTg5IC0xOTZ0LTI0Ny41IC0xMzUuNXQtMjg4LjUgLTQ5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTgwIiB1bmljb2RlPSImI3hmMjZhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE0OTMgMTMwOHEtMTY1IDExMCAtMzU5IDExMHEtMTU1IDAgLTI5MyAtNzN0LTI0MCAtMjAwcS03NSAtOTMgLTExOS41IC0yMTh0LTQ4LjUgLTI2NnYtNDJxNCAtMTQxIDQ4LjUgLTI2NnQxMTkuNSAtMjE4cTEwMiAtMTI3IDI0MCAtMjAwdDI5MyAtNzNxMTk0IDAgMzU5IDExMHEtMTIxIC0xMDggLTI3NC41IC0xNjh0LTMyMi41IC02MHEtMjkgMCAtNDMgMXEtMTc1IDggLTMzMyA4MnQtMjcyIDE5M3QtMTgxIDI4MXQtNjcgMzM5DQpxMCAxODIgNzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzFoM3ExNjggLTEgMzIwLjUgLTYwLjV0MjczLjUgLTE2Ny41ek0xNzkyIDY0MHEwIC0xOTIgLTc3IC0zNjIuNXQtMjEzIC0yOTYuNXEtMTA0IC02MyAtMjIyIC02M3EtMTM3IDAgLTI1NSA4NHExNTQgNTYgMjUzLjUgMjMzdDk5LjUgNDA1cTAgMjI3IC05OSA0MDR0LTI1MyAyMzRxMTE5IDgzIDI1NCA4M3ExMTkgMCAyMjYgLTY1cTEzNSAtMTI1IDIxMC41IC0yOTV0NzUuNSAtMzYxeg0KIiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTgxIiB1bmljb2RlPSImI3hmMjZiOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNTk5cTAgLTU2IC03IC0xMDRoLTExNTFxMCAtMTQ2IDEwOS41IC0yNDQuNXQyNTcuNSAtOTguNXE5OSAwIDE4NS41IDQ2LjV0MTM2LjUgMTMwLjVoNDIzcS01NiAtMTU5IC0xNzAuNSAtMjgxdC0yNjcuNSAtMTg4LjV0LTMyMSAtNjYuNXEtMTg3IDAgLTM1NiA4M3EtMjI4IC0xMTYgLTM5NCAtMTE2cS0yMzcgMCAtMjM3IDI2M3EwIDExNSA0NSAyNzVxMTcgNjAgMTA5IDIyOXExOTkgMzYwIDQ3NSA2MDYNCnEtMTg0IC03OSAtNDI3IC0zNTRxNjMgMjc0IDI4My41IDQ0OS41dDUwMS41IDE3NS41cTMwIDAgNDUgLTFxMjU1IDExNyA0MzMgMTE3cTY0IDAgMTE2IC0xM3Q5NC41IC00MC41dDY2LjUgLTc2LjV0MjQgLTExNXEwIC0xMTYgLTc1IC0yODZxMTAxIC0xODIgMTAxIC0zOTB6TTE3MjIgMTIzOXEwIDgzIC01MyAxMzJ0LTEzNyA0OXEtMTA4IDAgLTI1NCAtNzBxMTIxIC00NyAyMjIuNSAtMTMxLjV0MTcwLjUgLTE5NS41cTUxIDEzNSA1MSAyMTZ6DQpNMTI4IDJxMCAtODYgNDguNSAtMTMyLjV0MTM0LjUgLTQ2LjVxMTE1IDAgMjY2IDgzcS0xMjIgNzIgLTIxMy41IDE4M3QtMTM3LjUgMjQ1cS05OCAtMjA1IC05OCAtMzMyek02MzIgNzE1aDcyOHEtNSAxNDIgLTExMyAyMzd0LTI1MSA5NXEtMTQ0IDAgLTI1MS41IC05NXQtMTEyLjUgLTIzN3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODIiIHVuaWNvZGU9IiYjeGYyNmM7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMTc5MiAyODh2OTYwcTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTYwMHEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTk2MHEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDE2MDBxMTMgMCAyMi41IDkuNXQ5LjUgMjIuNXpNMTkyMCAxMjQ4di05NjBxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTczNnYtMTI4aDM1MnExNCAwIDIzIC05dDkgLTIzdi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC04MzJxLTE0IDAgLTIzIDl0LTkgMjMNCnY2NHEwIDE0IDkgMjN0MjMgOWgzNTJ2MTI4aC03MzZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjk2MHEwIDY2IDQ3IDExM3QxMTMgNDdoMTYwMHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODMiIHVuaWNvZGU9IiYjeGYyNmQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTM4IDE0MDhoMTk3cS03MCAtNjQgLTEyNiAtMTQ5cS0zNiAtNTYgLTU5IC0xMTV0LTMwIC0xMjUuNXQtOC41IC0xMjB0MTAuNSAtMTMydDIxIC0xMjZ0MjggLTEzNi41cTQgLTE5IDYgLTI4cTUxIC0yMzggODEgLTMyOXE1NyAtMTcxIDE1MiAtMjc1aC0yNzJxLTQ4IDAgLTgyIDM0dC0zNCA4MnYxMzA0cTAgNDggMzQgODJ0ODIgMzR6TTEzNDYgMTQwOGgzMDhxNDggMCA4MiAtMzR0MzQgLTgydi0xMzA0cTAgLTQ4IC0zNCAtODJ0LTgyIC0zNA0KaC0xNzhxMjEyIDIxMCAxOTYgNTY1bC00NjkgLTEwMXEtMiAtNDUgLTEyIC04MnQtMzEgLTcydC01OS41IC01OS41dC05My41IC0zNi41cS0xMjMgLTI2IC0xOTkgNDBxLTMyIDI3IC01MyA2MXQtNTEuNSAxMjl0LTY0LjUgMjU4cS0zNSAxNjMgLTQ1LjUgMjYzdC01LjUgMTM5dDIzIDc3cTIwIDQxIDYyLjUgNzN0MTAyLjUgNDVxNDUgMTIgODMuNSA2LjV0NjcgLTE3dDU0IC0zNXQ0MyAtNDh0MzQuNSAtNTYuNWw0NjggMTAwDQpxLTY4IDE3NSAtMTgwIDI4N3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81ODQiIHVuaWNvZGU9IiYjeGYyNmU7IiANCmQ9Ik0xNDAxIC0xMWwtNiAtNnEtMTEzIC0xMTMgLTI1OSAtMTc1cS0xNTQgLTY0IC0zMTcgLTY0cS0xNjUgMCAtMzE3IDY0cS0xNDggNjMgLTI1OSAxNzVxLTExMyAxMTIgLTE3NSAyNThxLTQyIDEwMyAtNTQgMTg5cS00IDI4IDQ4IDM2cTUxIDggNTYgLTIwcTEgLTEgMSAtNHExOCAtOTAgNDYgLTE1OXE1MCAtMTI0IDE1MiAtMjI2cTk4IC05OCAyMjYgLTE1MnExMzIgLTU2IDI3NiAtNTZxMTQzIDAgMjc2IDU2cTEyOCA1NSAyMjUgMTUybDYgNg0KcTEwIDEwIDI1IDZxMTIgLTMgMzMgLTIycTM2IC0zNyAxNyAtNTh6TTkyOSA2MDRsLTY2IC02Nmw2MyAtNjNxMjEgLTIxIC03IC00OXEtMTcgLTE3IC0zMiAtMTdxLTEwIDAgLTE5IDEwbC02MiA2MWwtNjYgLTY2cS01IC01IC0xNSAtNXEtMTUgMCAtMzEgMTZsLTIgMnEtMTggMTUgLTE4IDI5cTAgNyA4IDE3bDY2IDY1bC02NiA2NnEtMTYgMTYgMTQgNDVxMTggMTggMzEgMThxNiAwIDEzIC01bDY1IC02Nmw2NSA2NXExOCAxNyA0OCAtMTMNCnEyNyAtMjcgMTEgLTQ0ek0xNDAwIDU0N3EwIC0xMTggLTQ2IC0yMjhxLTQ1IC0xMDUgLTEyNiAtMTg2cS04MCAtODAgLTE4NyAtMTI2dC0yMjggLTQ2dC0yMjggNDZ0LTE4NyAxMjZxLTgyIDgyIC0xMjUgMTg2cS0xNSAzMyAtMTUgNDBoLTFxLTkgMjcgNDMgNDRxNTAgMTYgNjAgLTEycTM3IC05OSA5NyAtMTY3aDF2MzM5djJxMyAxMzYgMTAyIDIzMnExMDUgMTAzIDI1MyAxMDNxMTQ3IDAgMjUxIC0xMDN0MTA0IC0yNDkNCnEwIC0xNDcgLTEwNC41IC0yNTF0LTI1MC41IC0xMDRxLTU4IDAgLTExMiAxNnEtMjggMTEgLTEzIDYxcTE2IDUxIDQ0IDQzbDE0IC0zcTE0IC0zIDMzIC02dDMwIC0zcTEwNCAwIDE3NiA3MS41dDcyIDE3NC41cTAgMTAxIC03MiAxNzFxLTcxIDcxIC0xNzUgNzFxLTEwNyAwIC0xNzggLTgwcS02NCAtNzIgLTY0IC0xNjB2LTQxM3ExMTAgLTY3IDI0MiAtNjdxOTYgMCAxODUgMzYuNXQxNTYgMTAzLjV0MTAzLjUgMTU1dDM2LjUgMTgzDQpxMCAxOTggLTE0MSAzMzlxLTE0MCAxNDAgLTMzOSAxNDBxLTIwMCAwIC0zNDAgLTE0MHEtNTMgLTUzIC03NyAtODdsLTIgLTJxLTggLTExIC0xMyAtMTUuNXQtMjEuNSAtOS41dC0zOC41IDNxLTIxIDUgLTM2LjUgMTYuNXQtMTUuNSAyNi41djY4MHEwIDE1IDEwLjUgMjYuNXQyNy41IDExLjVoODc3cTMwIDAgMzAgLTU1dC0zMCAtNTVoLTgxMXYtNDgzaDFxNDAgNDIgMTAyIDg0dDEwOCA2MXExMDkgNDYgMjMxIDQ2cTEyMSAwIDIyOCAtNDYNCnQxODcgLTEyNnE4MSAtODEgMTI2IC0xODZxNDYgLTExMiA0NiAtMjI5ek0xMzY5IDExMjhxOSAtOCA5IC0xOHQtNS41IC0xOHQtMTYuNSAtMjFxLTI2IC0yNiAtMzkgLTI2cS05IDAgLTE2IDdxLTEwNiA5MSAtMjA3IDEzM3EtMTI4IDU2IC0yNzYgNTZxLTEzMyAwIC0yNjIgLTQ5cS0yNyAtMTAgLTQ1IDM3cS05IDI1IC04IDM4cTMgMTYgMTYgMjBxMTMwIDU3IDI5OSA1N3ExNjQgMCAzMTYgLTY0cTEzNyAtNTggMjM1IC0xNTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTg1IiB1bmljb2RlPSImI3hmMjcwOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE1NTEgNjBxMTUgNiAyNiAzdDExIC0xNy41dC0xNSAtMzMuNXEtMTMgLTE2IC00NCAtNDMuNXQtOTUuNSAtNjh0LTE0MSAtNzR0LTE4OCAtNTh0LTIyOS41IC0yNC41cS0xMTkgMCAtMjM4IDMxdC0yMDkgNzYuNXQtMTcyLjUgMTA0dC0xMzIuNSAxMDV0LTg0IDg3LjVxLTggOSAtMTAgMTYuNXQxIDEydDggN3QxMS41IDJ0MTEuNSAtNC41cTE5MiAtMTE3IDMwMCAtMTY2cTM4OSAtMTc2IDc5OSAtOTBxMTkwIDQwIDM5MSAxMzV6DQpNMTc1OCAxNzVxMTEgLTE2IDIuNSAtNjkuNXQtMjguNSAtMTAyLjVxLTM0IC04MyAtODUgLTEyNHEtMTcgLTE0IC0yNiAtOXQwIDI0cTIxIDQ1IDQ0LjUgMTIxLjV0Ni41IDk4LjVxLTUgNyAtMTUuNSAxMS41dC0yNyA2dC0yOS41IDIuNXQtMzUgMHQtMzEuNSAtMnQtMzEgLTN0LTIyLjUgLTJxLTYgLTEgLTEzIC0xLjV0LTExIC0xdC04LjUgLTF0LTcgLTAuNWgtNS41aC00LjV0LTMgMC41dC0yIDEuNWwtMS41IDNxLTYgMTYgNDcgNDB0MTAzIDMwDQpxNDYgNyAxMDggMXQ3NiAtMjR6TTEzNjQgNjE4cTAgLTMxIDEzLjUgLTY0dDMyIC01OHQzNy41IC00NnQzMyAtMzJsMTMgLTExbC0yMjcgLTIyNHEtNDAgMzcgLTc5IDc1LjV0LTU4IDU4LjVsLTE5IDIwcS0xMSAxMSAtMjUgMzNxLTM4IC01OSAtOTcuNSAtMTAyLjV0LTEyNy41IC02My41dC0xNDAgLTIzdC0xMzcuNSAyMXQtMTE3LjUgNjUuNXQtODMgMTEzdC0zMSAxNjIuNXEwIDg0IDI4IDE1NHQ3MiAxMTYuNXQxMDYuNSA4M3QxMjIuNSA1Nw0KdDEzMCAzNC41dDExOS41IDE4LjV0OTkuNSA2LjV2MTI3cTAgNjUgLTIxIDk3cS0zNCA1MyAtMTIxIDUzcS02IDAgLTE2LjUgLTF0LTQwLjUgLTEydC01NiAtMjkuNXQtNTYgLTU5LjV0LTQ4IC05NmwtMjk0IDI3cTAgNjAgMjIgMTE5dDY3IDExM3QxMDggOTV0MTUxLjUgNjUuNXQxOTAuNSAyNC41cTEwMCAwIDE4MSAtMjV0MTI5LjUgLTYxLjV0ODEgLTgzdDQ1IC04NnQxMi41IC03My41di01ODl6TTY5MiA1OTdxMCAtODYgNzAgLTEzMw0KcTY2IC00NCAxMzkgLTIycTg0IDI1IDExNCAxMjNxMTQgNDUgMTQgMTAxdjE2MnEtNTkgLTIgLTExMSAtMTJ0LTEwNi41IC0zMy41dC04NyAtNzF0LTMyLjUgLTExNC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU4NiIgdW5pY29kZT0iJiN4ZjI3MTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNTM2IDEyODBxNTIgMCA5MCAtMzh0MzggLTkwdi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgxMjh6TTExNTIgMTM3NnYtMjg4cTAgLTE0IDkgLTIzdDIzIC05DQpoNjRxMTQgMCAyMyA5dDkgMjN2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN6TTM4NCAxMzc2di0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN6TTE1MzYgLTEyOHYxMDI0aC0xNDA4di0xMDI0aDE0MDh6TTg5NiA0NDhoMjI0cTE0IDAgMjMgLTl0OSAtMjN2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTIyNA0Kdi0yMjRxMCAtMTQgLTkgLTIzdC0yMyAtOWgtNjRxLTE0IDAgLTIzIDl0LTkgMjN2MjI0aC0yMjRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMjI0djIyNHEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi0yMjR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTg3IiB1bmljb2RlPSImI3hmMjcyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTExNTIgNDE2di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC01NzZxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNTc2cTE0IDAgMjMgLTl0OSAtMjN6TTEyOCAtMTI4aDE0MDh2MTAyNGgtMTQwOHYtMTAyNHpNNTEyIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzDQp0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTY2NCAxMTUydi0xMjgwcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00Nw0KdDQ3IC0xMTN2LTk2aDEyOHE1MiAwIDkwIC0zOHQzOCAtOTB6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTg4IiB1bmljb2RlPSImI3hmMjczOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTExMTEgMTUxbC00NiAtNDZxLTkgLTkgLTIyIC05dC0yMyA5bC0xODggMTg5bC0xODggLTE4OXEtMTAgLTkgLTIzIC05dC0yMiA5bC00NiA0NnEtOSA5IC05IDIydDkgMjNsMTg5IDE4OGwtMTg5IDE4OHEtOSAxMCAtOSAyM3Q5IDIybDQ2IDQ2cTkgOSAyMiA5dDIzIC05bDE4OCAtMTg4bDE4OCAxODhxMTAgOSAyMyA5dDIyIC05bDQ2IC00NnE5IC05IDkgLTIydC05IC0yM2wtMTg4IC0xODhsMTg4IC0xODhxOSAtMTAgOSAtMjN0LTkgLTIyeg0KTTEyOCAtMTI4aDE0MDh2MTAyNGgtMTQwOHYtMTAyNHpNNTEyIDEwODh2Mjg4cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTI4OHEwIC0xNCA5IC0yM3QyMyAtOWg2NHExNCAwIDIzIDl0OSAyM3pNMTI4MCAxMDg4djI4OHEwIDE0IC05IDIzdC0yMyA5aC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi0yODhxMCAtMTQgOSAtMjN0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTE2NjQgMTE1MnYtMTI4MA0KcTAgLTUyIC0zOCAtOTB0LTkwIC0zOGgtMTQwOHEtNTIgMCAtOTAgMzh0LTM4IDkwdjEyODBxMCA1MiAzOCA5MHQ5MCAzOGgxMjh2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgzODR2OTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDY0cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi05NmgxMjhxNTIgMCA5MCAtMzh0MzggLTkweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU4OSIgdW5pY29kZT0iJiN4ZjI3NDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMzAzIDU3MmwtNTEyIC01MTJxLTEwIC05IC0yMyAtOXQtMjMgOWwtMjg4IDI4OHEtOSAxMCAtOSAyM3Q5IDIybDQ2IDQ2cTkgOSAyMiA5dDIzIC05bDIyMCAtMjIwbDQ0NCA0NDRxMTAgOSAyMyA5dDIyIC05bDQ2IC00NnE5IC05IDkgLTIydC05IC0yM3pNMTI4IC0xMjhoMTQwOHYxMDI0aC0xNDA4di0xMDI0ek01MTIgMTA4OHYyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMjg4cTAgLTE0IDkgLTIzDQp0MjMgLTloNjRxMTQgMCAyMyA5dDkgMjN6TTEyODAgMTA4OHYyODhxMCAxNCAtOSAyM3QtMjMgOWgtNjRxLTE0IDAgLTIzIC05dC05IC0yM3YtMjg4cTAgLTE0IDkgLTIzdDIzIC05aDY0cTE0IDAgMjMgOXQ5IDIzek0xNjY0IDExNTJ2LTEyODBxMCAtNTIgLTM4IC05MHQtOTAgLTM4aC0xNDA4cS01MiAwIC05MCAzOHQtMzggOTB2MTI4MHEwIDUyIDM4IDkwdDkwIDM4aDEyOHY5NnEwIDY2IDQ3IDExM3QxMTMgNDdoNjRxNjYgMCAxMTMgLTQ3DQp0NDcgLTExM3YtOTZoMzg0djk2cTAgNjYgNDcgMTEzdDExMyA0N2g2NHE2NiAwIDExMyAtNDd0NDcgLTExM3YtOTZoMTI4cTUyIDAgOTAgLTM4dDM4IC05MHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTAiIHVuaWNvZGU9IiYjeGYyNzU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNDQ4IDE1MzZxMjYgMCA0NSAtMTl0MTkgLTQ1di04OTFsNTM2IDQyOXExNyAxNCA0MCAxNHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTM3OWw1MzYgNDI5cTE3IDE0IDQwIDE0cTI2IDAgNDUgLTE5dDE5IC00NXYtMTE1MnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTE2NjRxLTI2IDAgLTQ1IDE5dC0xOSA0NXYxNjY0cTAgMjYgMTkgNDV0NDUgMTloMzg0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5MSIgdW5pY29kZT0iJiN4ZjI3NjsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik01MTIgNDQ4cTY2IDAgMTI4IDE1di02NTVxMCAtMjYgLTE5IC00NXQtNDUgLTE5aC0xMjhxLTI2IDAgLTQ1IDE5dC0xOSA0NXY2NTVxNjIgLTE1IDEyOCAtMTV6TTUxMiAxNTM2cTIxMiAwIDM2MiAtMTUwdDE1MCAtMzYydC0xNTAgLTM2MnQtMzYyIC0xNTB0LTM2MiAxNTB0LTE1MCAzNjJ0MTUwIDM2MnQzNjIgMTUwek01MTIgMTMxMnExNCAwIDIzIDl0OSAyM3QtOSAyM3QtMjMgOXEtMTQ2IDAgLTI0OSAtMTAzdC0xMDMgLTI0OQ0KcTAgLTE0IDkgLTIzdDIzIC05dDIzIDl0OSAyM3EwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTkyIiB1bmljb2RlPSImI3hmMjc3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NDUgMTIzOXExMCAtMTAgMTAgLTIzdC0xMCAtMjNsLTE0MSAtMTQxcS0yOCAtMjggLTY4IC0yOGgtMTM0NHEtMjYgMCAtNDUgMTl0LTE5IDQ1djI1NnEwIDI2IDE5IDQ1dDQ1IDE5aDU3NnY2NHEwIDI2IDE5IDQ1dDQ1IDE5aDEyOHEyNiAwIDQ1IC0xOXQxOSAtNDV2LTY0aDUxMnE0MCAwIDY4IC0yOHpNNzY4IDMyMGgyNTZ2LTUxMnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEyOHEtMjYgMCAtNDUgMTl0LTE5IDQ1djUxMnpNMTYwMCA3NjgNCnEyNiAwIDQ1IC0xOXQxOSAtNDV2LTI1NnEwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTEzNDRxLTQwIDAgLTY4IDI4bC0xNDEgMTQxcS0xMCAxMCAtMTAgMjN0MTAgMjNsMTQxIDE0MXEyOCAyOCA2OCAyOGg1MTJ2MTkyaDI1NnYtMTkyaDU3NnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTMiIHVuaWNvZGU9IiYjeGYyNzg7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjAyMCAxNTI1cTI4IC0yMCAyOCAtNTN2LTE0MDhxMCAtMjAgLTExIC0zNnQtMjkgLTIzbC02NDAgLTI1NnEtMjQgLTExIC00OCAwbC02MTYgMjQ2bC02MTYgLTI0NnEtMTAgLTUgLTI0IC01cS0xOSAwIC0zNiAxMXEtMjggMjAgLTI4IDUzdjE0MDhxMCAyMCAxMSAzNnQyOSAyM2w2NDAgMjU2cTI0IDExIDQ4IDBsNjE2IC0yNDZsNjE2IDI0NnEzMiAxMyA2MCAtNnpNNzM2IDEzOTB2LTEyNzBsNTc2IC0yMzB2MTI3MHpNMTI4IDExNzMNCnYtMTI3MGw1NDQgMjE3djEyNzB6TTE5MjAgMTA3djEyNzBsLTU0NCAtMjE3di0xMjcweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5NCIgdW5pY29kZT0iJiN4ZjI3OTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik01MTIgMTUzNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE0NzJxMCAtMjAgLTE3IC0yOGwtNDgwIC0yNTZxLTcgLTQgLTE1IC00cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTQ3MnEwIDIwIDE3IDI4bDQ4MCAyNTZxNyA0IDE1IDR6TTE3NjAgMTUzNnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE0NzJxMCAtMjAgLTE3IC0yOGwtNDgwIC0yNTZxLTcgLTQgLTE1IC00cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV2MTQ3Mg0KcTAgMjAgMTcgMjhsNDgwIDI1NnE3IDQgMTUgNHpNNjQwIDE1MzZxOCAwIDE0IC0zbDUxMiAtMjU2cTE4IC0xMCAxOCAtMjl2LTE0NzJxMCAtMTMgLTkuNSAtMjIuNXQtMjIuNSAtOS41cS04IDAgLTE0IDNsLTUxMiAyNTZxLTE4IDEwIC0xOCAyOXYxNDcycTAgMTMgOS41IDIyLjV0MjIuNSA5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTk1IiB1bmljb2RlPSImI3hmMjdhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTY0MCA2NDBxMCA1MyAtMzcuNSA5MC41dC05MC41IDM3LjV0LTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV0MzcuNSAtOTAuNXQ5MC41IC0zNy41dDkwLjUgMzcuNXQzNy41IDkwLjV6TTEwMjQgNjQwcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNDA4IDY0MHEwIDUzIC0zNy41IDkwLjV0LTkwLjUgMzcuNQ0KdC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41ek0xNzkyIDY0MHEwIC0xNzQgLTEyMCAtMzIxLjV0LTMyNiAtMjMzdC00NTAgLTg1LjVxLTExMCAwIC0yMTEgMThxLTE3MyAtMTczIC00MzUgLTIyOXEtNTIgLTEwIC04NiAtMTNxLTEyIC0xIC0yMiA2dC0xMyAxOHEtNCAxNSAyMCAzN3E1IDUgMjMuNSAyMS41dDI1LjUgMjMuNXQyMy41IDI1LjV0MjQgMzEuNXQyMC41IDM3DQp0MjAgNDh0MTQuNSA1Ny41dDEyLjUgNzIuNXEtMTQ2IDkwIC0yMjkuNSAyMTYuNXQtODMuNSAyNjkuNXEwIDE3NCAxMjAgMzIxLjV0MzI2IDIzM3Q0NTAgODUuNXQ0NTAgLTg1LjV0MzI2IC0yMzN0MTIwIC0zMjEuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il81OTYiIHVuaWNvZGU9IiYjeGYyN2I7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjQwIDY0MHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTEwMjQgNjQwcTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41dC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXpNMTQwOCA2NDBxMCAtNTMgLTM3LjUgLTkwLjV0LTkwLjUgLTM3LjUNCnQtOTAuNSAzNy41dC0zNy41IDkwLjV0MzcuNSA5MC41dDkwLjUgMzcuNXQ5MC41IC0zNy41dDM3LjUgLTkwLjV6TTg5NiAxMTUycS0yMDQgMCAtMzgxLjUgLTY5LjV0LTI4MiAtMTg3LjV0LTEwNC41IC0yNTVxMCAtMTEyIDcxLjUgLTIxMy41dDIwMS41IC0xNzUuNWw4NyAtNTBsLTI3IC05NnEtMjQgLTkxIC03MCAtMTcycTE1MiA2MyAyNzUgMTcxbDQzIDM4bDU3IC02cTY5IC04IDEzMCAtOHEyMDQgMCAzODEuNSA2OS41dDI4MiAxODcuNQ0KdDEwNC41IDI1NXQtMTA0LjUgMjU1dC0yODIgMTg3LjV0LTM4MS41IDY5LjV6TTE3OTIgNjQwcTAgLTE3NCAtMTIwIC0zMjEuNXQtMzI2IC0yMzN0LTQ1MCAtODUuNXEtNzAgMCAtMTQ1IDhxLTE5OCAtMTc1IC00NjAgLTI0MnEtNDkgLTE0IC0xMTQgLTIyaC01cS0xNSAwIC0yNyAxMC41dC0xNiAyNy41djFxLTMgNCAtMC41IDEydDIgMTB0NC41IDkuNWw2IDl0NyA4LjV0OCA5cTcgOCAzMSAzNC41dDM0LjUgMzh0MzEgMzkuNXQzMi41IDUxDQp0MjcgNTl0MjYgNzZxLTE1NyA4OSAtMjQ3LjUgMjIwdC05MC41IDI4MXEwIDEzMCA3MSAyNDguNXQxOTEgMjA0LjV0Mjg2IDEzNi41dDM0OCA1MC41dDM0OCAtNTAuNXQyODYgLTEzNi41dDE5MSAtMjA0LjV0NzEgLTI0OC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzU5NyIgdW5pY29kZT0iJiN4ZjI3YzsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik01MTIgMzQ1bDUxMiAyOTV2LTU5MWwtNTEyIC0yOTZ2NTkyek0wIDY0MHYtNTkxbDUxMiAyOTZ6TTUxMiAxNTI3di01OTFsLTUxMiAtMjk2djU5MXpNNTEyIDkzNmw1MTIgMjk1di01OTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNTk4IiB1bmljb2RlPSImI3hmMjdkOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3MDkgMTAxOHEtMTAgLTIzNiAtMzMyIC02NTFxLTMzMyAtNDMxIC01NjIgLTQzMXEtMTQyIDAgLTI0MCAyNjNxLTQ0IDE2MCAtMTMyIDQ4MnEtNzIgMjYyIC0xNTcgMjYycS0xOCAwIC0xMjcgLTc2bC03NyA5OHEyNCAyMSAxMDggOTYuNXQxMzAgMTE1LjVxMTU2IDEzOCAyNDEgMTQ2cTk1IDkgMTUzIC01NS41dDgxIC0yMDMuNXE0NCAtMjg3IDY2IC0zNzNxNTUgLTI0OSAxMjAgLTI0OXE1MSAwIDE1NCAxNjFxMTAxIDE2MSAxMDkgMjQ2DQpxMTMgMTM5IC0xMDkgMTM5cS01NyAwIC0xMjEgLTI2cTEyMCAzOTMgNDU5IDM4MnEyNTEgLTggMjM2IC0zMjZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJmMjdlIiB1bmljb2RlPSImI3hmMjdlOyIgDQpkPSJNMCAxNDA4aDE1MzZ2LTE1MzZoLTE1MzZ2MTUzNnpNMTA4NSAyOTNsLTIyMSA2MzFsMjIxIDI5N2gtNjM0bDIyMSAtMjk3bC0yMjEgLTYzMWwzMTcgLTMwNHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyODAiIHVuaWNvZGU9IiYjeGYyODA7IiANCmQ9Ik0wIDE0MDhoMTUzNnYtMTUzNmgtMTUzNnYxNTM2ek05MDggMTA4OGwtMTIgLTMzbDc1IC04M2wtMzEgLTExNGwyNSAtMjVsMTA3IDU3bDEwNyAtNTdsMjUgMjVsLTMxIDExNGw3NSA4M2wtMTIgMzNoLTk1bC01MyA5NmgtMzJsLTUzIC05NmgtOTV6TTY0MSA5MjVxMzIgMCA0NC41IC0xNnQxMS41IC02M2wxNzQgMjFxMCA1NSAtMTcuNSA5Mi41dC01MC41IDU2dC02OSAyNS41dC04NSA3cS0xMzMgMCAtMTk5IC01Ny41dC02NiAtMTgyLjV2LTcyDQpoLTk2di0xMjhoNzZxMjAgMCAyMCAtOHYtMzgycTAgLTE0IC01IC0yMHQtMTggLTdsLTczIC03di04OGg0NDh2ODZsLTE0OSAxNHEtNiAxIC04LjUgMS41dC0zLjUgMi41dC0wLjUgNHQxIDd0MC41IDEwdjM4N2gxOTFsMzggMTI4aC0yMzFxLTYgMCAtMiA2dDQgOXY4MHEwIDI3IDEuNSA0MC41dDcuNSAyOHQxOS41IDIwdDM2LjUgNS41ek0xMjQ4IDk2djg2bC01NCA5cS03IDEgLTkuNSAyLjV0LTIuNSAzdDEgNy41dDEgMTJ2NTIwaC0yNzUNCmwtMjMgLTEwMWw4MyAtMjJxMjMgLTcgMjMgLTI3di0zNzBxMCAtMTQgLTYgLTE4LjV0LTIwIC02LjVsLTcwIC05di04NmgzNTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMjgxIiB1bmljb2RlPSImI3hmMjgxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgNjkwcTAgLTU4IC0yOS41IC0xMDUuNXQtNzkuNSAtNzIuNXExMiAtNDYgMTIgLTk2cTAgLTE1NSAtMTA2LjUgLTI4N3QtMjkwLjUgLTIwOC41dC00MDAgLTc2LjV0LTM5OS41IDc2LjV0LTI5MCAyMDguNXQtMTA2LjUgMjg3cTAgNDcgMTEgOTRxLTUxIDI1IC04MiA3My41dC0zMSAxMDYuNXEwIDgyIDU4IDE0MC41dDE0MSA1OC41cTg1IDAgMTQ1IC02M3EyMTggMTUyIDUxNSAxNjJsMTE2IDUyMXEzIDEzIDE1IDIxdDI2IDUNCmwzNjkgLTgxcTE4IDM3IDU0IDU5LjV0NzkgMjIuNXE2MiAwIDEwNiAtNDMuNXQ0NCAtMTA1LjV0LTQ0IC0xMDZ0LTEwNiAtNDR0LTEwNS41IDQzLjV0LTQzLjUgMTA1LjVsLTMzNCA3NGwtMTA0IC00NzJxMzAwIC05IDUxOSAtMTYwcTU4IDYxIDE0MyA2MXE4MyAwIDE0MSAtNTguNXQ1OCAtMTQwLjV6TTQxOCA0OTFxMCAtNjIgNDMuNSAtMTA2dDEwNS41IC00NHQxMDYgNDR0NDQgMTA2dC00NCAxMDUuNXQtMTA2IDQzLjVxLTYxIDAgLTEwNSAtNDQNCnQtNDQgLTEwNXpNMTIyOCAxMzZxMTEgMTEgMTEgMjZ0LTExIDI2cS0xMCAxMCAtMjUgMTB0LTI2IC0xMHEtNDEgLTQyIC0xMjEgLTYydC0xNjAgLTIwdC0xNjAgMjB0LTEyMSA2MnEtMTEgMTAgLTI2IDEwdC0yNSAtMTBxLTExIC0xMCAtMTEgLTI1LjV0MTEgLTI2LjVxNDMgLTQzIDExOC41IC02OHQxMjIuNSAtMjkuNXQ5MSAtNC41dDkxIDQuNXQxMjIuNSAyOS41dDExOC41IDY4ek0xMjI1IDM0MXE2MiAwIDEwNS41IDQ0dDQzLjUgMTA2DQpxMCA2MSAtNDQgMTA1dC0xMDUgNDRxLTYyIDAgLTEwNiAtNDMuNXQtNDQgLTEwNS41dDQ0IC0xMDZ0MTA2IC00NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MDIiIHVuaWNvZGU9IiYjeGYyODI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjkgNzQxaDFxMTYgMTI2IDU4LjUgMjQxLjV0MTE1IDIxN3QxNjcuNSAxNzZ0MjIzLjUgMTE3LjV0Mjc2LjUgNDNxMjMxIDAgNDE0IC0xMDUuNXQyOTQgLTMwMy41cTEwNCAtMTg3IDEwNCAtNDQydi0xODhoLTExMjVxMSAtMTExIDUzLjUgLTE5Mi41dDEzNi41IC0xMjIuNXQxODkuNSAtNTd0MjEzIC0zdDIwOCA0Ni41dDE3My41IDg0LjV2LTM3N3EtOTIgLTU1IC0yMjkuNSAtOTJ0LTMxMi41IC0zOHQtMzE2IDUzDQpxLTE4OSA3MyAtMzExLjUgMjQ5dC0xMjQuNSAzNzJxLTMgMjQyIDExMSA0MTJ0MzI1IDI2OHEtNDggLTYwIC03OCAtMTI1LjV0LTQ2IC0xNTkuNWg2MzVxOCA3NyAtOCAxNDB0LTQ3IDEwMS41dC03MC41IDY2LjV0LTgwLjUgNDF0LTc1IDIwLjV0LTU2IDguNWwtMjIgMXEtMTM1IC01IC0yNTkuNSAtNDQuNXQtMjIzLjUgLTEwNC41dC0xNzYgLTE0MC41dC0xMzggLTE2My41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwMyIgdW5pY29kZT0iJiN4ZjI4MzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0wIDMydjYwOGgyMzA0di02MDhxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE5ODRxLTY2IDAgLTExMyA0N3QtNDcgMTEzek02NDAgMjU2di0xMjhoMzg0djEyOGgtMzg0ek0yNTYgMjU2di0xMjhoMjU2djEyOGgtMjU2ek0yMTQ0IDE0MDhxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTIyNGgtMjMwNHYyMjRxMCA2NiA0NyAxMTN0MTEzIDQ3aDE5ODR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjA0IiB1bmljb2RlPSImI3hmMjg0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE1ODQgMjQ2bC0yMTggMTExcS03NCAtMTIwIC0xOTYuNSAtMTg5dC0yNjMuNSAtNjlxLTE0NyAwIC0yNzEgNzJ0LTE5NiAxOTZ0LTcyIDI3MHEwIDExMCA0Mi41IDIwOS41dDExNSAxNzJ0MTcyIDExNXQyMDkuNSA0Mi41cTEzMSAwIDI0Ny41IC02MC41dDE5Mi41IC0xNjguNWwyMTUgMTI1cS0xMTAgMTY5IC0yODYuNSAyNjV0LTM3OC41IDk2cS0xNjEgMCAtMzA4IC02M3QtMjUzIC0xNjl0LTE2OSAtMjUzdC02MyAtMzA4dDYzIC0zMDgNCnQxNjkgLTI1M3QyNTMgLTE2OXQzMDggLTYzcTIxMyAwIDM5Ny41IDEwN3QyOTAuNSAyOTJ6TTEwMzAgNjQzbDY5MyAtMzUycS0xMTYgLTI1MyAtMzM0LjUgLTQwMHQtNDkyLjUgLTE0N3EtMTgyIDAgLTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxcTI2MCAwIDQ3MC41IC0xMzMuNXQzMzUuNSAtMzY2LjV6TTE1NDMgNjQwaC0zOXYtMTYwaC05NnYzNTJoMTM2cTMyIDAgNTQuNSAtMjANCnQyOC41IC00OHQxIC01NnQtMjcuNSAtNDh0LTU3LjUgLTIweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjI4NSIgdW5pY29kZT0iJiN4ZjI4NTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNDI3IDgyN2wtNjE0IDM4Nmw5MiAxNTFoODU1ek00MDUgNTYybC0xODQgMTE2djg1OGwxMTgzIC03NDN6TTE0MjQgNjk3bDE0NyAtOTV2LTg1OGwtNTMyIDMzNXpNMTM4NyA3MThsLTUwMCAtODAyaC04NTVsMzU2IDU3MXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyODYiIHVuaWNvZGU9IiYjeGYyODY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNNjQwIDUyOHYyMjRxMCAxNiAtMTYgMTZoLTk2cS0xNiAwIC0xNiAtMTZ2LTIyNHEwIC0xNiAxNiAtMTZoOTZxMTYgMCAxNiAxNnpNMTE1MiA1Mjh2MjI0cTAgMTYgLTE2IDE2aC05NnEtMTYgMCAtMTYgLTE2di0yMjRxMCAtMTYgMTYgLTE2aDk2cTE2IDAgMTYgMTZ6TTE2NjQgNDk2di03NTJoLTY0MHYzMjBxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTMyMGgtNjQwdjc1MnEwIDE2IDE2IDE2aDk2DQpxMTYgMCAxNiAtMTZ2LTExMmgxMjh2NjI0cTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ2LTExMmgxMjh2MTEycTAgMTYgMTYgMTZoOTZxMTYgMCAxNiAtMTZ2LTExMmgxMjh2MTEycTAgNiAyLjUgOS41dDguNSA1dDkuNSAydDExLjUgMHQ5IC0wLjV2MzkxcS0zMiAxNSAtMzIgNTBxMCAyMyAxNi41IDM5dDM4LjUgMTZ0MzguNSAtMTZ0MTYuNSAtMzlxMCAtMzUgLTMyIC01MHYtMTdxNDUgMTAgODMgMTBxMjEgMCA1OS41IC03LjV0NTQuNSAtNy41DQpxMTcgMCA0NyA3LjV0MzcgNy41cTE2IDAgMTYgLTE2di0yMTBxMCAtMTUgLTM1IC0yMS41dC02MiAtNi41cS0xOCAwIC01NC41IDcuNXQtNTUuNSA3LjVxLTQwIDAgLTkwIC0xMnYtMTMzcTEgMCA5IDAuNXQxMS41IDB0OS41IC0ydDguNSAtNXQyLjUgLTkuNXYtMTEyaDEyOHYxMTJxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnYtMTEyaDEyOHYxMTJxMCAxNiAxNiAxNmg5NnExNiAwIDE2IC0xNnYtNjI0aDEyOHYxMTJxMCAxNiAxNiAxNmg5Ng0KcTE2IDAgMTYgLTE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwNyIgdW5pY29kZT0iJiN4ZjI4NzsiIGhvcml6LWFkdi14PSIyMzA0IiANCmQ9Ik0yMjg4IDczMXExNiAtOCAxNiAtMjd0LTE2IC0yN2wtMzIwIC0xOTJxLTggLTUgLTE2IC01cS05IDAgLTE2IDRxLTE2IDEwIC0xNiAyOHYxMjhoLTg1OHEzNyAtNTggODMgLTE2NXExNiAtMzcgMjQuNSAtNTV0MjQgLTQ5dDI3IC00N3QyNyAtMzR0MzEuNSAtMjZ0MzMgLThoOTZ2OTZxMCAxNCA5IDIzdDIzIDloMzIwcTE0IDAgMjMgLTl0OSAtMjN2LTMyMHEwIC0xNCAtOSAtMjN0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDl0LTkgMjN2OTZoLTk2DQpxLTMyIDAgLTYxIDEwdC01MSAyMy41dC00NSA0MC41dC0zNyA0NnQtMzMuNSA1N3QtMjguNSA1Ny41dC0yOCA2MC41cS0yMyA1MyAtMzcgODEuNXQtMzYgNjV0LTQ0LjUgNTMuNXQtNDYuNSAxN2gtMzYwcS0yMiAtODQgLTkxIC0xMzh0LTE1NyAtNTRxLTEwNiAwIC0xODEgNzV0LTc1IDE4MXQ3NSAxODF0MTgxIDc1cTg4IDAgMTU3IC01NHQ5MSAtMTM4aDEwNHEyNCAwIDQ2LjUgMTd0NDQuNSA1My41dDM2IDY1dDM3IDgxLjVxMTkgNDEgMjggNjAuNQ0KdDI4LjUgNTcuNXQzMy41IDU3dDM3IDQ2dDQ1IDQwLjV0NTEgMjMuNXQ2MSAxMGgxMDdxMjEgNTcgNzAgOTIuNXQxMTEgMzUuNXE4MCAwIDEzNiAtNTZ0NTYgLTEzNnQtNTYgLTEzNnQtMTM2IC01NnEtNjIgMCAtMTExIDM1LjV0LTcwIDkyLjVoLTEwN3EtMTcgMCAtMzMgLTh0LTMxLjUgLTI2dC0yNyAtMzR0LTI3IC00N3QtMjQgLTQ5dC0yNC41IC01NXEtNDYgLTEwNyAtODMgLTE2NWgxMTE0djEyOHEwIDE4IDE2IDI4dDMyIC0xeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYwOCIgdW5pY29kZT0iJiN4ZjI4ODsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMTUwIDc3NHEwIC01NiAtMzkuNSAtOTV0LTk1LjUgLTM5aC0yNTN2MjY5aDI1M3E1NiAwIDk1LjUgLTM5LjV0MzkuNSAtOTUuNXpNMTMyOSA3NzRxMCAxMzAgLTkxLjUgMjIydC0yMjIuNSA5MmgtNDMzdi04OTZoMTgwdjI2OWgyNTNxMTMwIDAgMjIyIDkxLjV0OTIgMjIxLjV6TTE3OTIgNjQwcTAgLTE4MiAtNzEgLTM0OHQtMTkxIC0yODZ0LTI4NiAtMTkxdC0zNDggLTcxdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OA0KdDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MDkiIHVuaWNvZGU9IiYjeGYyODk7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTY0NSA0MzhxMCA1OSAtMzQgMTA2LjV0LTg3IDY4LjVxLTcgLTQ1IC0yMyAtOTJxLTcgLTI0IC0yNy41IC0zOHQtNDQuNSAtMTRxLTEyIDAgLTI0IDNxLTMxIDEwIC00NSAzOC41dC00IDU4LjVxMjMgNzEgMjMgMTQzcTAgMTIzIC02MSAyMjcuNXQtMTY2IDE2NS41dC0yMjggNjFxLTEzNCAwIC0yNDcgLTczdC0xNjcgLTE5NHExMDggLTI4IDE4OCAtMTA2cTIyIC0yMyAyMiAtNTV0LTIyIC01NHQtNTQgLTIydC01NSAyMg0KcS03NSA3NSAtMTgwIDc1cS0xMDYgMCAtMTgxIC03NC41dC03NSAtMTgwLjV0NzUgLTE4MC41dDE4MSAtNzQuNWgxMDQ2cTc5IDAgMTM0LjUgNTUuNXQ1NS41IDEzMy41ek0xNzk4IDQzOHEwIC0xNDIgLTEwMC41IC0yNDJ0LTI0Mi41IC0xMDBoLTEwNDZxLTE2OSAwIC0yODkgMTE5LjV0LTEyMCAyODguNXEwIDE1MyAxMDAgMjY3dDI0OSAxMzZxNjIgMTg0IDIyMSAyOTh0MzU0IDExNHEyMzUgMCA0MDguNSAtMTU4LjV0MTk2LjUgLTM4OS41DQpxMTE2IC0yNSAxOTIuNSAtMTE4LjV0NzYuNSAtMjE0LjV6TTIwNDggNDM4cTAgLTE3NSAtOTcgLTMxOXEtMjMgLTMzIC02NCAtMzNxLTI0IDAgLTQzIDEzcS0yNiAxNyAtMzIgNDguNXQxMiA1Ny41cTcxIDEwNCA3MSAyMzN0LTcxIDIzM3EtMTggMjYgLTEyIDU3dDMyIDQ5dDU3LjUgMTEuNXQ0OS41IC0zMi41cTk3IC0xNDIgOTcgLTMxOHpNMjMwNCA0MzhxMCAtMjQ0IC0xMzQgLTQ0M3EtMjMgLTM0IC02NCAtMzRxLTIzIDAgLTQyIDEzDQpxLTI2IDE4IC0zMi41IDQ5dDExLjUgNTdxMTA4IDE2NCAxMDggMzU4cTAgMTk1IC0xMDggMzU3cS0xOCAyNiAtMTEuNSA1Ny41dDMyLjUgNDguNXEyNiAxOCA1NyAxMnQ0OSAtMzNxMTM0IC0xOTggMTM0IC00NDJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEwIiB1bmljb2RlPSImI3hmMjhhOyIgDQpkPSJNMTUwMCAtMTNxMCAtODkgLTYzIC0xNTIuNXQtMTUzIC02My41dC0xNTMuNSA2My41dC02My41IDE1Mi41cTAgOTAgNjMuNSAxNTMuNXQxNTMuNSA2My41dDE1MyAtNjMuNXQ2MyAtMTUzLjV6TTEyNjcgMjY4cS0xMTUgLTE1IC0xOTIuNSAtMTAyLjV0LTc3LjUgLTIwNS41cTAgLTc0IDMzIC0xMzhxLTE0NiAtNzggLTM3OSAtNzhxLTEwOSAwIC0yMDEgMjF0LTE1My41IDU0LjV0LTExMC41IDc2LjV0LTc2IDg1dC00NC41IDgzDQp0LTIzLjUgNjYuNXQtNiAzOS41cTAgMTkgNC41IDQyLjV0MTguNSA1NnQzNi41IDU4dDY0IDQzLjV0OTQuNSAxOHQ5NCAtMTcuNXQ2MyAtNDF0MzUuNSAtNTN0MTcuNSAtNDl0NCAtMzMuNXEwIC0zNCAtMjMgLTgxcTI4IC0yNyA4MiAtNDJ0OTMgLTE3bDQwIC0xcTExNSAwIDE5MCA1MXQ3NSAxMzNxMCAyNiAtOSA0OC41dC0zMS41IDQ0LjV0LTQ5LjUgNDF0LTc0IDQ0dC05My41IDQ3LjV0LTExOS41IDU2LjVxLTI4IDEzIC00MyAyMA0KcS0xMTYgNTUgLTE4NyAxMDB0LTEyMi41IDEwMnQtNzIgMTI1LjV0LTIwLjUgMTYyLjVxMCA3OCAyMC41IDE1MHQ2NiAxMzcuNXQxMTIuNSAxMTR0MTY2LjUgNzd0MjIxLjUgMjguNXExMjAgMCAyMjAgLTI2dDE2NC41IC02N3QxMDkuNSAtOTR0NjQgLTEwNS41dDE5IC0xMDMuNXEwIC00NiAtMTUgLTgyLjV0LTM2LjUgLTU4dC00OC41IC0zNnQtNDkgLTE5LjV0LTM5IC01aC04aC0zMnQtMzkgNXQtNDQgMTR0LTQxIDI4dC0zNyA0NnQtMjQgNzAuNQ0KdC0xMCA5Ny41cS0xNSAxNiAtNTkgMjUuNXQtODEgMTAuNWwtMzcgMXEtNjggMCAtMTE3LjUgLTMxdC03MC41IC03MHQtMjEgLTc2cTAgLTI0IDUgLTQzdDI0IC00NnQ1MyAtNTF0OTcgLTUzLjV0MTUwIC01OC41cTc2IC0yNSAxMzguNSAtNTMuNXQxMDkgLTU1LjV0ODMgLTU5dDYwLjUgLTU5LjV0NDEgLTYyLjV0MjYuNSAtNjJ0MTQuNSAtNjMuNXQ2IC02MnQxIC02Mi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxMSIgdW5pY29kZT0iJiN4ZjI4YjsiIA0KZD0iTTcwNCAzNTJ2NTc2cTAgMTQgLTkgMjN0LTIzIDloLTI1NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi01NzZxMCAtMTQgOSAtMjN0MjMgLTloMjU2cTE0IDAgMjMgOXQ5IDIzek0xMTUyIDM1MnY1NzZxMCAxNCAtOSAyM3QtMjMgOWgtMjU2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTU3NnEwIC0xNCA5IC0yM3QyMyAtOWgyNTZxMTQgMCAyMyA5dDkgMjN6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzDQp0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEyIiB1bmljb2RlPSImI3hmMjhjOyIgDQpkPSJNNzY4IDE0MDhxMjA5IDAgMzg1LjUgLTEwM3QyNzkuNSAtMjc5LjV0MTAzIC0zODUuNXQtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3pNNzY4IDk2cTE0OCAwIDI3MyA3M3QxOTggMTk4dDczIDI3M3QtNzMgMjczdC0xOTggMTk4dC0yNzMgNzN0LTI3MyAtNzN0LTE5OCAtMTk4dC03MyAtMjczDQp0NzMgLTI3M3QxOTggLTE5OHQyNzMgLTczek04NjQgMzIwcS0xNCAwIC0yMyA5dC05IDIzdjU3NnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3YtNTc2cTAgLTE0IC05IC0yM3QtMjMgLTloLTE5MnpNNDgwIDMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloMTkycTE0IDAgMjMgLTl0OSAtMjN2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjEzIiB1bmljb2RlPSImI3hmMjhkOyIgDQpkPSJNMTA4OCAzNTJ2NTc2cTAgMTQgLTkgMjN0LTIzIDloLTU3NnEtMTQgMCAtMjMgLTl0LTkgLTIzdi01NzZxMCAtMTQgOSAtMjN0MjMgLTloNTc2cTE0IDAgMjMgOXQ5IDIzek0xNTM2IDY0MHEwIC0yMDkgLTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN0Mzg1LjUgLTEwM3QyNzkuNSAtMjc5LjUNCnQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxNCIgdW5pY29kZT0iJiN4ZjI4ZTsiIA0KZD0iTTc2OCAxNDA4cTIwOSAwIDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV0LTEwMyAtMzg1LjV0LTI3OS41IC0yNzkuNXQtMzg1LjUgLTEwM3QtMzg1LjUgMTAzdC0yNzkuNSAyNzkuNXQtMTAzIDM4NS41dDEwMyAzODUuNXQyNzkuNSAyNzkuNXQzODUuNSAxMDN6TTc2OCA5NnExNDggMCAyNzMgNzN0MTk4IDE5OHQ3MyAyNzN0LTczIDI3M3QtMTk4IDE5OHQtMjczIDczdC0yNzMgLTczdC0xOTggLTE5OHQtNzMgLTI3Mw0KdDczIC0yNzN0MTk4IC0xOTh0MjczIC03M3pNNDgwIDMyMHEtMTQgMCAtMjMgOXQtOSAyM3Y1NzZxMCAxNCA5IDIzdDIzIDloNTc2cTE0IDAgMjMgLTl0OSAtMjN2LTU3NnEwIC0xNCAtOSAtMjN0LTIzIC05aC01NzZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE1IiB1bmljb2RlPSImI3hmMjkwOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3NTcgMTI4bDM1IC0zMTNxMyAtMjggLTE2IC01MHEtMTkgLTIxIC00OCAtMjFoLTE2NjRxLTI5IDAgLTQ4IDIxcS0xOSAyMiAtMTYgNTBsMzUgMzEzaDE3MjJ6TTE2NjQgOTY3bDg2IC03NzVoLTE3MDhsODYgNzc1cTMgMjQgMjEgNDAuNXQ0MyAxNi41aDI1NnYtMTI4cTAgLTUzIDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41djEyOGgzODR2LTEyOHEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjUNCnQ5MC41IDM3LjV0MzcuNSA5MC41djEyOGgyNTZxMjUgMCA0MyAtMTYuNXQyMSAtNDAuNXpNMTI4MCAxMTUydi0yNTZxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV2MjU2cTAgMTA2IC03NSAxODF0LTE4MSA3NXQtMTgxIC03NXQtNzUgLTE4MXYtMjU2cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1djI1NnEwIDE1OSAxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNXQyNzEuNSAtMTEyLjV0MTEyLjUgLTI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYxNiIgdW5pY29kZT0iJiN4ZjI5MTsiIGhvcml6LWFkdi14PSIyMDQ4IiANCmQ9Ik0xOTIwIDc2OHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXQtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNWgtMTVsLTExNSAtNjYycS04IC00NiAtNDQgLTc2dC04MiAtMzBoLTEyODBxLTQ2IDAgLTgyIDMwdC00NCA3NmwtMTE1IDY2MmgtMTVxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41dDM3LjUgOTAuNXQ5MC41IDM3LjVoMTc5MnpNNDg1IC0zMnEyNiAyIDQzLjUgMjIuNXQxNS41IDQ2LjVsLTMyIDQxNnEtMiAyNiAtMjIuNSA0My41DQp0LTQ2LjUgMTUuNXQtNDMuNSAtMjIuNXQtMTUuNSAtNDYuNWwzMiAtNDE2cTIgLTI1IDIwLjUgLTQydDQzLjUgLTE3aDV6TTg5NiAzMnY0MTZxMCAyNiAtMTkgNDV0LTQ1IDE5dC00NSAtMTl0LTE5IC00NXYtNDE2cTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDV6TTEyODAgMzJ2NDE2cTAgMjYgLTE5IDQ1dC00NSAxOXQtNDUgLTE5dC0xOSAtNDV2LTQxNnEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1ek0xNjMyIDI3bDMyIDQxNg0KcTIgMjYgLTE1LjUgNDYuNXQtNDMuNSAyMi41dC00Ni41IC0xNS41dC0yMi41IC00My41bC0zMiAtNDE2cS0yIC0yNiAxNS41IC00Ni41dDQzLjUgLTIyLjVoNXEyNSAwIDQzLjUgMTd0MjAuNSA0MnpNNDc2IDEyNDRsLTkzIC00MTJoLTEzMmwxMDEgNDQxcTE5IDg4IDg5IDE0My41dDE2MCA1NS41aDE2N3EwIDI2IDE5IDQ1dDQ1IDE5aDM4NHEyNiAwIDQ1IC0xOXQxOSAtNDVoMTY3cTkwIDAgMTYwIC01NS41dDg5IC0xNDMuNWwxMDEgLTQ0MQ0KaC0xMzJsLTkzIDQxMnEtMTEgNDQgLTQ1LjUgNzJ0LTc5LjUgMjhoLTE2N3EwIC0yNiAtMTkgLTQ1dC00NSAtMTloLTM4NHEtMjYgMCAtNDUgMTl0LTE5IDQ1aC0xNjdxLTQ1IDAgLTc5LjUgLTI4dC00NS41IC03MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MTciIHVuaWNvZGU9IiYjeGYyOTI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNOTkxIDUxMmw2NCAyNTZoLTI1NGwtNjQgLTI1NmgyNTR6TTE3NTkgMTAxNmwtNTYgLTIyNHEtNyAtMjQgLTMxIC0yNGgtMzI3bC02NCAtMjU2aDMxMXExNSAwIDI1IC0xMnExMCAtMTQgNiAtMjhsLTU2IC0yMjRxLTUgLTI0IC0zMSAtMjRoLTMyN2wtODEgLTMyOHEtNyAtMjQgLTMxIC0yNGgtMjI0cS0xNiAwIC0yNiAxMnEtOSAxMiAtNiAyOGw3OCAzMTJoLTI1NGwtODEgLTMyOHEtNyAtMjQgLTMxIC0yNGgtMjI1cS0xNSAwIC0yNSAxMg0KcS05IDEyIC02IDI4bDc4IDMxMmgtMzExcS0xNSAwIC0yNSAxMnEtOSAxMiAtNiAyOGw1NiAyMjRxNyAyNCAzMSAyNGgzMjdsNjQgMjU2aC0zMTFxLTE1IDAgLTI1IDEycS0xMCAxNCAtNiAyOGw1NiAyMjRxNSAyNCAzMSAyNGgzMjdsODEgMzI4cTcgMjQgMzIgMjRoMjI0cTE1IDAgMjUgLTEycTkgLTEyIDYgLTI4bC03OCAtMzEyaDI1NGw4MSAzMjhxNyAyNCAzMiAyNGgyMjRxMTUgMCAyNSAtMTJxOSAtMTIgNiAtMjhsLTc4IC0zMTJoMzExDQpxMTUgMCAyNSAtMTJxOSAtMTIgNiAtMjh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE4IiB1bmljb2RlPSImI3hmMjkzOyIgDQpkPSJNODQxIDQ4M2wxNDggLTE0OGwtMTQ5IC0xNDl6TTg0MCAxMDk0bDE0OSAtMTQ5bC0xNDggLTE0OHpNNzEwIC0xMzBsNDY0IDQ2NGwtMzA2IDMwNmwzMDYgMzA2bC00NjQgNDY0di02MTFsLTI1NSAyNTVsLTkzIC05M2wzMjAgLTMyMWwtMzIwIC0zMjFsOTMgLTkzbDI1NSAyNTV2LTYxMXpNMTQyOSA2NDBxMCAtMjA5IC0zMiAtMzY1LjV0LTg3LjUgLTI1N3QtMTQwLjUgLTE2Mi41dC0xODEuNSAtODYuNXQtMjE5LjUgLTI0LjUNCnQtMjE5LjUgMjQuNXQtMTgxLjUgODYuNXQtMTQwLjUgMTYyLjV0LTg3LjUgMjU3dC0zMiAzNjUuNXQzMiAzNjUuNXQ4Ny41IDI1N3QxNDAuNSAxNjIuNXQxODEuNSA4Ni41dDIxOS41IDI0LjV0MjE5LjUgLTI0LjV0MTgxLjUgLTg2LjV0MTQwLjUgLTE2Mi41dDg3LjUgLTI1N3QzMiAtMzY1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjE5IiB1bmljb2RlPSImI3hmMjk0OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTU5NiAxMTNsMTczIDE3MmwtMTczIDE3MnYtMzQ0ek01OTYgODIzbDE3MyAxNzJsLTE3MyAxNzJ2LTM0NHpNNjI4IDY0MGwzNTYgLTM1NmwtNTM5IC01NDB2NzExbC0yOTcgLTI5NmwtMTA4IDEwOGwzNzIgMzczbC0zNzIgMzczbDEwOCAxMDhsMjk3IC0yOTZ2NzExbDUzOSAtNTQweiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYyMCIgdW5pY29kZT0iJiN4ZjI5NTsiIA0KZD0iTTEyODAgMjU2cTAgNTIgLTM4IDkwdC05MCAzOHQtOTAgLTM4dC0zOCAtOTB0MzggLTkwdDkwIC0zOHQ5MCAzOHQzOCA5MHpNNTEyIDEwMjRxMCA1MiAtMzggOTB0LTkwIDM4dC05MCAtMzh0LTM4IC05MHQzOCAtOTB0OTAgLTM4dDkwIDM4dDM4IDkwek0xNTM2IDI1NnEwIC0xNTkgLTExMi41IC0yNzEuNXQtMjcxLjUgLTExMi41dC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjV0MjcxLjUgLTExMi41DQp0MTEyLjUgLTI3MS41ek0xNDQwIDEzNDRxMCAtMjAgLTEzIC0zOGwtMTA1NiAtMTQwOHEtMTkgLTI2IC01MSAtMjZoLTE2MHEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMjAgMTMgMzhsMTA1NiAxNDA4cTE5IDI2IDUxIDI2aDE2MHEyNiAwIDQ1IC0xOXQxOSAtNDV6TTc2OCAxMDI0cTAgLTE1OSAtMTEyLjUgLTI3MS41dC0yNzEuNSAtMTEyLjV0LTI3MS41IDExMi41dC0xMTIuNSAyNzEuNXQxMTIuNSAyNzEuNXQyNzEuNSAxMTIuNQ0KdDI3MS41IC0xMTIuNXQxMTIuNSAtMjcxLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjIxIiB1bmljb2RlPSImI3hmMjk2OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNCA4MzBsNzkyIC0xMDE1bC04NjggNjMwcS0xOCAxMyAtMjUgMzQuNXQwIDQyLjVsMTAxIDMwOHYwek01NjYgODMwaDY2MGwtMzMwIC0xMDE1djB6TTM2OCAxNDQybDE5OCAtNjEyaC00NjJsMTk4IDYxMnE4IDIzIDMzIDIzdDMzIC0yM3pNMTY4OCA4MzBsMTAxIC0zMDhxNyAtMjEgMCAtNDIuNXQtMjUgLTM0LjVsLTg2OCAtNjMwbDc5MiAxMDE1djB6TTE2ODggODMwaC00NjJsMTk4IDYxMnE4IDIzIDMzIDIzdDMzIC0yM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjIiIHVuaWNvZGU9IiYjeGYyOTc7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMzg0IDcwNGgxNjB2MjI0aC0xNjB2LTIyNHpNMTIyMSAzNzJ2OTJxLTEwNCAtMzYgLTI0MyAtMzhxLTEzNSAtMSAtMjU5LjUgNDYuNXQtMjIwLjUgMTIyLjVsMSAtOTZxODggLTgwIDIxMiAtMTI4LjV0MjcyIC00Ny41cTEyOSAwIDIzOCA0OXpNNjQwIDcwNGg2NDB2MjI0aC02NDB2LTIyNHpNMTc5MiA3MzZxMCAtMTg3IC05OSAtMzUycTg5IC0xMDIgODkgLTIyOXEwIC0xNTcgLTEyOS41IC0yNjh0LTMxMy41IC0xMTENCnEtMTIyIDAgLTIyNSA1Mi41dC0xNjEgMTQwLjVxLTE5IC0xIC01NyAtMXQtNTcgMXEtNTggLTg4IC0xNjEgLTE0MC41dC0yMjUgLTUyLjVxLTE4NCAwIC0zMTMuNSAxMTF0LTEyOS41IDI2OHEwIDEyNyA4OSAyMjlxLTk5IDE2NSAtOTkgMzUycTAgMjA5IDEyMCAzODUuNXQzMjYuNSAyNzkuNXQ0NDkuNSAxMDN0NDQ5LjUgLTEwM3QzMjYuNSAtMjc5LjV0MTIwIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjMiIHVuaWNvZGU9IiYjeGYyOTg7IiANCmQ9Ik01MTUgNjI1di0xMjhoLTI1MnYxMjhoMjUyek01MTUgODgwdi0xMjdoLTI1MnYxMjdoMjUyek0xMjczIDM2OXYtMTI4aC0zNDF2MTI4aDM0MXpNMTI3MyA2MjV2LTEyOGgtNjcydjEyOGg2NzJ6TTEyNzMgODgwdi0xMjdoLTY3MnYxMjdoNjcyek0xNDA4IDIwdjEyNDBxMCA4IC02IDE0dC0xNCA2aC0zMmwtMzc4IC0yNTZsLTIxMCAxNzFsLTIxMCAtMTcxbC0zNzggMjU2aC0zMnEtOCAwIC0xNCAtNnQtNiAtMTR2LTEyNDBxMCAtOCA2IC0xNA0KdDE0IC02aDEyNDBxOCAwIDE0IDZ0NiAxNHpNNTUzIDExMzBsMTg1IDE1MGgtNDA2ek05ODMgMTEzMGwyMjEgMTUwaC00MDZ6TTE1MzYgMTI2MHYtMTI0MHEwIC02MiAtNDMgLTEwNXQtMTA1IC00M2gtMTI0MHEtNjIgMCAtMTA1IDQzdC00MyAxMDV2MTI0MHEwIDYyIDQzIDEwNXQxMDUgNDNoMTI0MHE2MiAwIDEwNSAtNDN0NDMgLTEwNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Il82MjQiIHVuaWNvZGU9IiYjeGYyOTk7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDcyMHEtMTA0IDE5NiAtMTYwIDI3OHEtMTM5IDIwMiAtMzQ3IDMxOHEtMzQgMTkgLTcwIDM2cS04OSA0MCAtOTQgMzJ0MzQgLTM4bDM5IC0zMXE2MiAtNDMgMTEyLjUgLTkzLjV0OTQuNSAtMTE2LjV0NzAuNSAtMTEzdDcwLjUgLTEzMXE5IC0xNyAxMyAtMjVxNDQgLTg0IDg0IC0xNTN0OTggLTE1NHQxMTUuNSAtMTUwdDEzMSAtMTIzLjV0MTQ4LjUgLTkwLjVxMTUzIC02NiAxNTQgLTYwcTEgMyAtNDkgMzdxLTUzIDM2IC04MSA1Nw0KcS03NyA1OCAtMTc5IDIxMXQtMTg1IDMxMHpNNTQ5IDE3N3EtNzYgNjAgLTEzMi41IDEyNXQtOTggMTQzLjV0LTcxIDE1NC41dC01OC41IDE4NnQtNTIgMjA5dC02MC41IDI1MnQtNzYuNSAyODlxMjczIDAgNDk3LjUgLTM2dDM3OSAtOTJ0MjcxIC0xNDQuNXQxODUuNSAtMTcyLjV0MTEwIC0xOTguNXQ1NiAtMTk5LjV0MTIuNSAtMTk4LjV0LTkuNSAtMTczdC0yMCAtMTQzLjV0LTEzIC0xMDdsMzIzIC0zMjdoLTEwNGwtMjgxIDI4NQ0KcS0yMiAtMiAtOTEuNSAtMTR0LTEyMS41IC0xOXQtMTM4IC02dC0xNjAuNSAxN3QtMTY3LjUgNTl0LTE3OSAxMTF6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI1IiB1bmljb2RlPSImI3hmMjlhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEzNzQgODc5cS02IDI2IC0yOC41IDM5LjV0LTQ4LjUgNy41cS0yNjEgLTYyIC00MDEgLTYydC00MDEgNjJxLTI2IDYgLTQ4LjUgLTcuNXQtMjguNSAtMzkuNXQ3LjUgLTQ4LjV0MzkuNSAtMjguNXExOTQgLTQ2IDMwMyAtNThxLTIgLTE1OCAtMTUuNSAtMjY5dC0yNi41IC0xNTUuNXQtNDEgLTExNS41bC05IC0yMXEtMTAgLTI1IDEgLTQ5dDM2IC0zNHE5IC00IDIzIC00cTQ0IDAgNjAgNDFsOCAyMHE1NCAxMzkgNzEgMjU5aDQyDQpxMTcgLTEyMCA3MSAtMjU5bDggLTIwcTE2IC00MSA2MCAtNDFxMTQgMCAyMyA0cTI1IDEwIDM2IDM0dDEgNDlsLTkgMjFxLTI4IDcxIC00MSAxMTUuNXQtMjYuNSAxNTUuNXQtMTUuNSAyNjlxMTA5IDEyIDMwMyA1OHEyNiA2IDM5LjUgMjguNXQ3LjUgNDguNXpNMTAyNCAxMDI0cTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41dC05MC41IC0zNy41dC0zNy41IC05MC41dDM3LjUgLTkwLjV0OTAuNSAtMzcuNXQ5MC41IDM3LjV0MzcuNSA5MC41eg0KTTE2MDAgNjQwcTAgLTE0MyAtNTUuNSAtMjczLjV0LTE1MCAtMjI1dC0yMjUgLTE1MHQtMjczLjUgLTU1LjV0LTI3My41IDU1LjV0LTIyNSAxNTB0LTE1MCAyMjV0LTU1LjUgMjczLjV0NTUuNSAyNzMuNXQxNTAgMjI1dDIyNSAxNTB0MjczLjUgNTUuNXQyNzMuNSAtNTUuNXQyMjUgLTE1MHQxNTAgLTIyNXQ1NS41IC0yNzMuNXpNODk2IDE0MDhxLTE1NiAwIC0yOTggLTYxdC0yNDUgLTE2NHQtMTY0IC0yNDV0LTYxIC0yOTh0NjEgLTI5OA0KdDE2NCAtMjQ1dDI0NSAtMTY0dDI5OCAtNjF0Mjk4IDYxdDI0NSAxNjR0MTY0IDI0NXQ2MSAyOTh0LTYxIDI5OHQtMTY0IDI0NXQtMjQ1IDE2NHQtMjk4IDYxek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iXzYyNiIgdW5pY29kZT0iJiN4ZjI5YjsiIA0KZD0iTTE0MzggNzIzcTM0IC0zNSAyOSAtODJsLTQ0IC01NTFxLTQgLTQyIC0zNC41IC03MHQtNzEuNSAtMjhxLTYgMCAtOSAxcS00NCAzIC03Mi41IDM2LjV0LTI1LjUgNzcuNWwzNSA0MjlsLTE0MyAtOHE1NSAtMTEzIDU1IC0yNDBxMCAtMjE2IC0xNDggLTM3MmwtMTM3IDEzN3E5MSAxMDEgOTEgMjM1cTAgMTQ1IC0xMDIuNSAyNDh0LTI0Ny41IDEwM3EtMTM0IDAgLTIzNiAtOTJsLTEzNyAxMzhxMTIwIDExNCAyODQgMTQxbDI2NCAzMDANCmwtMTQ5IDg3bC0xODEgLTE2MXEtMzMgLTMwIC03NyAtMjcuNXQtNzMgMzUuNXQtMjYuNSA3N3QzNC41IDczbDIzOSAyMTNxMjYgMjMgNjAgMjYuNXQ2NCAtMTQuNWw0ODggLTI4M3EzNiAtMjEgNDggLTY4cTE3IC02NyAtMjYgLTExN2wtMjA1IC0yMzJsMzcxIDIwcTQ5IDMgODMgLTMyek0xMjQwIDExODBxLTc0IDAgLTEyNiA1MnQtNTIgMTI2dDUyIDEyNnQxMjYgNTJ0MTI2LjUgLTUydDUyLjUgLTEyNnQtNTIuNSAtMTI2dC0xMjYuNSAtNTJ6DQpNNjEzIC02MnExMDYgMCAxOTYgNjFsMTM5IC0xMzlxLTE0NiAtMTE2IC0zMzUgLTExNnEtMTQ4IDAgLTI3My41IDczdC0xOTguNSAxOTh0LTczIDI3M3EwIDE4OCAxMTYgMzM2bDEzOSAtMTM5cS02MCAtODggLTYwIC0xOTdxMCAtMTQ1IDEwMi41IC0yNDcuNXQyNDcuNSAtMTAyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI3IiB1bmljb2RlPSImI3hmMjljOyIgDQpkPSJNODgwIDMzNnYtMTYwcTAgLTE0IC05IC0yM3QtMjMgLTloLTE2MHEtMTQgMCAtMjMgOXQtOSAyM3YxNjBxMCAxNCA5IDIzdDIzIDloMTYwcTE0IDAgMjMgLTl0OSAtMjN6TTExMzYgODMycTAgLTUwIC0xNSAtOTB0LTQ1LjUgLTY5dC01MiAtNDR0LTU5LjUgLTM2cS0zMiAtMTggLTQ2LjUgLTI4dC0yNiAtMjR0LTExLjUgLTI5di0zMnEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNjBxLTE0IDAgLTIzIDl0LTkgMjN2NjhxMCAzNSAxMC41IDY0LjUNCnQyNCA0Ny41dDM5IDM1LjV0NDEgMjUuNXQ0NC41IDIxcTUzIDI1IDc1IDQzdDIyIDQ5cTAgNDIgLTQzLjUgNzEuNXQtOTUuNSAyOS41cS01NiAwIC05NSAtMjdxLTI5IC0yMCAtODAgLTgzcS05IC0xMiAtMjUgLTEycS0xMSAwIC0xOSA2bC0xMDggODJxLTEwIDcgLTEyIDIwdDUgMjNxMTIyIDE5MiAzNDkgMTkycTEyOSAwIDIzOC41IC04OS41dDEwOS41IC0yMTQuNXpNNzY4IDEyODBxLTEzMCAwIC0yNDguNSAtNTF0LTIwNCAtMTM2LjUNCnQtMTM2LjUgLTIwNHQtNTEgLTI0OC41dDUxIC0yNDguNXQxMzYuNSAtMjA0dDIwNCAtMTM2LjV0MjQ4LjUgLTUxdDI0OC41IDUxdDIwNCAxMzYuNXQxMzYuNSAyMDR0NTEgMjQ4LjV0LTUxIDI0OC41dC0xMzYuNSAyMDR0LTIwNCAxMzYuNXQtMjQ4LjUgNTF6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41DQp0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41dDEwMyAtMzg1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI4IiB1bmljb2RlPSImI3hmMjlkOyIgaG9yaXotYWR2LXg9IjE0MDgiIA0KZD0iTTM2NiAxMjI1cS02NCAwIC0xMTAgNDUuNXQtNDYgMTEwLjVxMCA2NCA0NiAxMDkuNXQxMTAgNDUuNXQxMDkuNSAtNDUuNXQ0NS41IC0xMDkuNXEwIC02NSAtNDUuNSAtMTEwLjV0LTEwOS41IC00NS41ek05MTcgNTgzcTAgLTUwIC0zMCAtNjcuNXQtNjMuNSAtNi41dC00Ny41IDM0bC0zNjcgNDM4cS03IDEyIC0xNCAxNS41dC0xMSAxLjVsLTMgLTNxLTcgLTggNCAtMjFsMTIyIC0xMzlsMSAtMzU0bC0xNjEgLTQ1Nw0KcS02NyAtMTkyIC05MiAtMjM0cS0xNSAtMjYgLTI4IC0zMnEtNTAgLTI2IC0xMDMgLTFxLTI5IDEzIC00MS41IDQzdC05LjUgNTdxMiAxNyAxOTcgNjE4bDUgNDE2bC04NSAtMTY0bDM1IC0yMjJxNCAtMjQgLTEgLTQydC0xNCAtMjcuNXQtMTkgLTE2dC0xNyAtNy41bC03IC0ycS0xOSAtMyAtMzQuNSAzdC0yNCAxNnQtMTQgMjJ0LTcuNSAxOS41dC0yIDkuNWwtNDYgMjk5bDIxMSAzODFxMjMgMzQgMTEzIDM0cTc1IDAgMTA3IC00MGw0MjQgLTUyMQ0KcTcgLTUgMTQgLTE3bDMgLTNsLTEgLTFxNyAtMTMgNyAtMjl6TTUxNCA0MzNxNDMgLTExMyA4OC41IC0yMjV0NjkuNSAtMTY4bDI0IC01NXEzNiAtOTMgNDIgLTEyNXExMSAtNzAgLTM2IC05N3EtMzUgLTIyIC02NiAtMTZ0LTUxIDIydC0yOSAzNWgtMXEtNiAxNiAtOCAyNWwtMTI0IDM1MXpNMTMzOCAtMTU5cTMxIC00OSAzMSAtNTdxMCAtNSAtMyAtN3EtOSAtNSAtMTQuNSAwLjV0LTE1LjUgMjZ0LTE2IDMwLjVxLTExNCAxNzIgLTQyMyA2NjENCnEzIC0xIDcgMXQ3IDRsMyAycTExIDkgMTEgMTd6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjI5IiB1bmljb2RlPSImI3hmMjllOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTUwNCA1NDJoMTcxbC0xIDI2NXpNMTUzMCA2NDFxMCA4NyAtNTAuNSAxNDB0LTE0Ni41IDUzaC01NHYtMzg4aDUycTkxIDAgMTQ1IDU3dDU0IDEzOHpNOTU2IDEwMThsMSAtNzU2cTAgLTE0IC05LjUgLTI0dC0yMy41IC0xMGgtMjE2cS0xNCAwIC0yMy41IDEwdC05LjUgMjR2NjJoLTI5MWwtNTUgLTgxcS0xMCAtMTUgLTI4IC0xNWgtMjY3cS0yMSAwIC0zMC41IDE4dDMuNSAzNWw1NTYgNzU3cTkgMTQgMjcgMTRoMzMycTE0IDAgMjQgLTEwDQp0MTAgLTI0ek0xNzgzIDY0MXEwIC0xOTMgLTEyNS41IC0zMDN0LTMyNC41IC0xMTBoLTI3MHEtMTQgMCAtMjQgMTB0LTEwIDI0djc1NnEwIDE0IDEwIDI0dDI0IDEwaDI2OHEyMDAgMCAzMjYgLTEwOXQxMjYgLTMwMnpNMTkzOSA2NDBxMCAtMTEgLTAuNSAtMjl0LTggLTcxLjV0LTIxLjUgLTEwMnQtNDQuNSAtMTA4dC03My41IC0xMDIuNWgtNTFxMzggNDUgNjYuNSAxMDQuNXQ0MS41IDExMnQyMSA5OHQ5IDcyLjVsMSAyN3EwIDggLTAuNSAyMi41DQp0LTcuNSA2MHQtMjAgOTEuNXQtNDEgMTExLjV0LTY2IDEyNC41aDQzcTQxIC00NyA3MiAtMTA3dDQ1LjUgLTExMS41dDIzIC05NnQxMC41IC03MC41ek0yMTIzIDY0MHEwIC0xMSAtMC41IC0yOXQtOCAtNzEuNXQtMjEuNSAtMTAydC00NSAtMTA4dC03NCAtMTAyLjVoLTUxcTM4IDQ1IDY2LjUgMTA0LjV0NDEuNSAxMTJ0MjEgOTh0OSA3Mi41bDEgMjdxMCA4IC0wLjUgMjIuNXQtNy41IDYwdC0xOS41IDkxLjV0LTQwLjUgMTExLjV0LTY2IDEyNC41DQpoNDNxNDEgLTQ3IDcyIC0xMDd0NDUuNSAtMTExLjV0MjMgLTk2dDEwLjUgLTcwLjV6TTIzMDQgNjQwcTAgLTExIC0wLjUgLTI5dC04IC03MS41dC0yMS41IC0xMDJ0LTQ0LjUgLTEwOHQtNzMuNSAtMTAyLjVoLTUxcTM4IDQ1IDY2IDEwNC41dDQxIDExMnQyMSA5OHQ5IDcyLjVsMSAyN3EwIDggLTAuNSAyMi41dC03LjUgNjB0LTE5LjUgOTEuNXQtNDAuNSAxMTEuNXQtNjYgMTI0LjVoNDNxNDEgLTQ3IDcyIC0xMDd0NDUuNSAtMTExLjV0MjMgLTk2DQp0OS41IC03MC41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBMCIgdW5pY29kZT0iJiN4ZjJhMDsiIGhvcml6LWFkdi14PSIxNDA4IiANCmQ9Ik02MTcgLTE1M3EwIDExIC0xMyA1OHQtMzEgMTA3dC0yMCA2OXEtMSA0IC01IDI2LjV0LTguNSAzNnQtMTMuNSAyMS41cS0xNSAxNCAtNTEgMTRxLTIzIDAgLTcwIC01LjV0LTcxIC01LjVxLTM0IDAgLTQ3IDExcS02IDUgLTExIDE1LjV0LTcuNSAyMHQtNi41IDI0dC01IDE4LjVxLTM3IDEyOCAtMzcgMjU1dDM3IDI1NXExIDQgNSAxOC41dDYuNSAyNHQ3LjUgMjB0MTEgMTUuNXExMyAxMSA0NyAxMXEyNCAwIDcxIC01LjV0NzAgLTUuNQ0KcTM2IDAgNTEgMTRxOSA4IDEzLjUgMjEuNXQ4LjUgMzZ0NSAyNi41cTIgOSAyMCA2OXQzMSAxMDd0MTMgNThxMCAyMiAtNDMuNSA1Mi41dC03NS41IDQyLjVxLTIwIDggLTQ1IDhxLTM0IDAgLTk4IC0xOHEtNTcgLTE3IC05Ni41IC00MC41dC03MSAtNjZ0LTQ2IC03MHQtNDUuNSAtOTQuNXEtNiAtMTIgLTkgLTE5cS00OSAtMTA3IC02OCAtMjE2dC0xOSAtMjQ0dDE5IC0yNDR0NjggLTIxNnE1NiAtMTIyIDgzIC0xNjFxNjMgLTkxIDE3OSAtMTI3DQpsNiAtMnE2NCAtMTggOTggLTE4cTI1IDAgNDUgOHEzMiAxMiA3NS41IDQyLjV0NDMuNSA1Mi41ek03NzYgNzYwcS0yNiAwIC00NSAxOXQtMTkgNDUuNXQxOSA0NS41cTM3IDM3IDM3IDkwcTAgNTIgLTM3IDkxcS0xOSAxOSAtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5cTc1IC03NSA3NSAtMTgxdC03NSAtMTgxcS0yMSAtMTkgLTQ1IC0xOXpNOTU3IDU3OXEtMjcgMCAtNDUgMTlxLTE5IDE5IC0xOSA0NXQxOSA0NXExMTIgMTE0IDExMiAyNzINCnQtMTEyIDI3MnEtMTkgMTkgLTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXExNTAgLTE1MCAxNTAgLTM2MnQtMTUwIC0zNjJxLTE4IC0xOSAtNDUgLTE5ek0xMTM4IDM5OHEtMjcgMCAtNDUgMTlxLTE5IDE5IC0xOSA0NXQxOSA0NXE5MCA5MSAxMzguNSAyMDh0NDguNSAyNDV0LTQ4LjUgMjQ1dC0xMzguNSAyMDhxLTE5IDE5IC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTlxMTA5IC0xMDkgMTY3IC0yNDl0NTggLTI5NHQtNTggLTI5NHQtMTY3IC0yNDkNCnEtMTggLTE5IC00NSAtMTl6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkExIiB1bmljb2RlPSImI3hmMmExOyIgaG9yaXotYWR2LXg9IjIxNzYiIA0KZD0iTTE5MiAzNTJxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN0LTQ3IDExM3QtMTEzIDQ3ek03MDQgMzUycS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNNzA0IDg2NHEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTE0NzIgMzUyDQpxLTY2IDAgLTExMyAtNDd0LTQ3IC0xMTN0NDcgLTExM3QxMTMgLTQ3dDExMyA0N3Q0NyAxMTN0LTQ3IDExM3QtMTEzIDQ3ek0xOTg0IDM1MnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTE0NzIgODY0cS02NiAwIC0xMTMgLTQ3dC00NyAtMTEzdDQ3IC0xMTN0MTEzIC00N3QxMTMgNDd0NDcgMTEzdC00NyAxMTN0LTExMyA0N3pNMTk4NCA4NjQNCnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTE5ODQgMTM3NnEtNjYgMCAtMTEzIC00N3QtNDcgLTExM3Q0NyAtMTEzdDExMyAtNDd0MTEzIDQ3dDQ3IDExM3QtNDcgMTEzdC0xMTMgNDd6TTM4NCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek04OTYgMTkycTAgLTgwIC01NiAtMTM2DQp0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0zODQgNzA0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNODk2IDcwNHEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTM4NCAxMjE2cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2DQp0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTg5NiAxMjE2cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMjE3NiAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1Ng0KdC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTE2NjQgNzA0cTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnQ1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnpNMjE3NiA3MDRxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2ek0xNjY0IDEyMTZxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2DQp0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6TTIxNzYgMTIxNnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZ0NTYgMTM2dDEzNiA1NnQxMzYgLTU2dDU2IC0xMzZ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkEyIiB1bmljb2RlPSImI3hmMmEyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyOCAtMTkycTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTMyMCAwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV6TTM2NSAzNjVsMjU2IC0yNTZsLTkwIC05MGwtMjU2IDI1NnpNNzA0IDM4NHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1eg0KTTE0MTEgNzA0cTAgLTU5IC0xMS41IC0xMDguNXQtMzcuNSAtOTMuNXQtNDQgLTY3LjV0LTUzIC02NC41cS0zMSAtMzUgLTQ1LjUgLTU0dC0zMy41IC01MHQtMjYuNSAtNjR0LTcuNSAtNzRxMCAtMTU5IC0xMTIuNSAtMjcxLjV0LTI3MS41IC0xMTIuNXEtMjYgMCAtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5cTEwNiAwIDE4MSA3NXQ3NSAxODFxMCA1NyAxMS41IDEwNS41dDM3IDkxdDQzLjUgNjYuNXQ1MiA2M3E0MCA0NiA1OS41IDcyDQp0MzcuNSA3NC41dDE4IDEwMy41cTAgMTg1IC0xMzEuNSAzMTYuNXQtMzE2LjUgMTMxLjV0LTMxNi41IC0xMzEuNXQtMTMxLjUgLTMxNi41cTAgLTI2IC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1cTAgMTE3IDQ1LjUgMjIzLjV0MTIzIDE4NHQxODQgMTIzdDIyMy41IDQ1LjV0MjIzLjUgLTQ1LjV0MTg0IC0xMjN0MTIzIC0xODR0NDUuNSAtMjIzLjV6TTg5NiA1NzZxMCAtMjYgLTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDUNCnQ0NSAxOXQ0NSAtMTl0MTkgLTQ1ek0xMTg0IDcwNHEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXEwIDkzIC02NS41IDE1OC41dC0xNTguNSA2NS41cS05MiAwIC0xNTggLTY1LjV0LTY2IC0xNTguNXEwIC0yNiAtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXEwIDE0NiAxMDMgMjQ5dDI0OSAxMDN0MjQ5IC0xMDN0MTAzIC0yNDl6TTE1NzggOTkzcTEwIC0yNSAtMSAtNDl0LTM2IC0zNHEtOSAtNCAtMjMgLTQNCnEtMTkgMCAtMzUuNSAxMXQtMjMuNSAzMHEtNjggMTc4IC0yMjQgMjk1cS0yMSAxNiAtMjUgNDJ0MTIgNDdxMTcgMjEgNDMgMjV0NDcgLTEycTE4MyAtMTM3IDI2NiAtMzUxek0xNzg4IDEwNzRxOSAtMjUgLTEuNSAtNDl0LTM1LjUgLTM0cS0xMSAtNCAtMjMgLTRxLTQ0IDAgLTYwIDQxcS05MiAyMzggLTI5NyAzOTNxLTIyIDE2IC0yNS41IDQydDEyLjUgNDdxMTYgMjIgNDIgMjUuNXQ0NyAtMTIuNXEyMzUgLTE3NSAzNDEgLTQ0OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQTMiIHVuaWNvZGU9IiYjeGYyYTM7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTAzMiA1NzZxLTU5IDIgLTg0IDU1cS0xNyAzNCAtNDggNTMuNXQtNjggMTkuNXEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXEwIC01NiAzNiAtODlsMTAgLThxMzQgLTMxIDgyIC0zMXEzNyAwIDY4IDE5LjV0NDggNTMuNXEyNSA1MyA4NCA1NXpNMTYwMCA3MDRxMCA1NiAtMzYgODlsLTEwIDhxLTM0IDMxIC04MiAzMXEtMzcgMCAtNjggLTE5LjV0LTQ4IC01My41cS0yNSAtNTMgLTg0IC01NXE1OSAtMiA4NCAtNTUNCnExNyAtMzQgNDggLTUzLjV0NjggLTE5LjVxNTMgMCA5MC41IDM3LjV0MzcuNSA5MC41ek0xMTc0IDkyNXEtMTcgLTM1IC01NSAtNDh0LTczIDRxLTYyIDMxIC0xMzQgMzFxLTUxIDAgLTk5IC0xN3EzIDAgOS41IDAuNXQ5LjUgMC41cTkyIDAgMTcwLjUgLTUwdDExOC41IC0xMzNxMTcgLTM2IDMuNSAtNzMuNXQtNDkuNSAtNTQuNXEtMTggLTkgLTM5IC05cTIxIDAgMzkgLTlxMzYgLTE3IDQ5LjUgLTU0LjV0LTMuNSAtNzMuNQ0KcS00MCAtODMgLTExOC41IC0xMzN0LTE3MC41IC01MGgtNnEtMTYgMiAtNDQgNGwtMjkwIDI3bC0yMzkgLTEyMHEtMTQgLTcgLTI5IC03cS00MCAwIC01NyAzNWwtMTYwIDMyMHEtMTEgMjMgLTQgNDcuNXQyOSAzNy41bDIwOSAxMTlsMTQ4IDI2N3ExNyAxNTUgOTEuNSAyOTEuNXQxOTUuNSAyMzYuNXEzMSAyNSA3MC41IDIxLjV0NjQuNSAtMzQuNXQyMS41IC03MHQtMzQuNSAtNjVxLTcwIC01OSAtMTE3IC0xMjhxMTIzIDg0IDI2NyAxMDENCnE0MCA1IDcxLjUgLTE5dDM1LjUgLTY0cTUgLTQwIC0xOSAtNzEuNXQtNjQgLTM1LjVxLTg0IC0xMCAtMTU5IC01NXE0NiAxMCA5OSAxMHExMTUgMCAyMTggLTUwcTM2IC0xOCA0OSAtNTUuNXQtNSAtNzMuNXpNMjEzNyAxMDg1bDE2MCAtMzIwcTExIC0yMyA0IC00Ny41dC0yOSAtMzcuNWwtMjA5IC0xMTlsLTE0OCAtMjY3cS0xNyAtMTU1IC05MS41IC0yOTEuNXQtMTk1LjUgLTIzNi41cS0yNiAtMjIgLTYxIC0yMnEtNDUgMCAtNzQgMzUNCnEtMjUgMzEgLTIxLjUgNzB0MzQuNSA2NXE3MCA1OSAxMTcgMTI4cS0xMjMgLTg0IC0yNjcgLTEwMXEtNCAtMSAtMTIgLTFxLTM2IDAgLTYzLjUgMjR0LTMxLjUgNjBxLTUgNDAgMTkgNzEuNXQ2NCAzNS41cTg0IDEwIDE1OSA1NXEtNDYgLTEwIC05OSAtMTBxLTExNSAwIC0yMTggNTBxLTM2IDE4IC00OSA1NS41dDUgNzMuNXExNyAzNSA1NSA0OHQ3MyAtNHE2MiAtMzEgMTM0IC0zMXE1MSAwIDk5IDE3cS0zIDAgLTkuNSAtMC41dC05LjUgLTAuNQ0KcS05MiAwIC0xNzAuNSA1MHQtMTE4LjUgMTMzcS0xNyAzNiAtMy41IDczLjV0NDkuNSA1NC41cTE4IDkgMzkgOXEtMjEgMCAtMzkgOXEtMzYgMTcgLTQ5LjUgNTQuNXQzLjUgNzMuNXE0MCA4MyAxMTguNSAxMzN0MTcwLjUgNTBoNmgxcTE0IC0yIDQyIC00bDI5MSAtMjdsMjM5IDEyMHExNCA3IDI5IDdxNDAgMCA1NyAtMzV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE0IiB1bmljb2RlPSImI3hmMmE0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNTYgNzA0cTAgLTI2IDE5IC00NXQ0NSAtMTl0NDUgMTl0MTkgNDVxMCAxNDYgLTEwMyAyNDl0LTI0OSAxMDN0LTI0OSAtMTAzdC0xMDMgLTI0OXEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5dDE5IDQ1cTAgOTMgNjYgMTU4LjV0MTU4IDY1LjV0MTU4IC02NS41dDY2IC0xNTguNXpNODM1IDEyODBxLTExNyAwIC0yMjMuNSAtNDUuNXQtMTg0IC0xMjN0LTEyMyAtMTg0dC00NS41IC0yMjMuNXEwIC0yNiAxOSAtNDV0NDUgLTE5dDQ1IDE5DQp0MTkgNDVxMCAxODUgMTMxLjUgMzE2LjV0MzE2LjUgMTMxLjV0MzE2LjUgLTEzMS41dDEzMS41IC0zMTYuNXEwIC01NSAtMTggLTEwMy41dC0zNy41IC03NC41dC01OS41IC03MnEtMzQgLTM5IC01MiAtNjN0LTQzLjUgLTY2LjV0LTM3IC05MXQtMTEuNSAtMTA1LjVxMCAtMTA2IC03NSAtMTgxdC0xODEgLTc1cS0yNiAwIC00NSAtMTl0LTE5IC00NXQxOSAtNDV0NDUgLTE5cTE1OSAwIDI3MS41IDExMi41dDExMi41IDI3MS41cTAgNDEgNy41IDc0DQp0MjYuNSA2NHQzMy41IDUwdDQ1LjUgNTRxMzUgNDEgNTMgNjQuNXQ0NCA2Ny41dDM3LjUgOTMuNXQxMS41IDEwOC41cTAgMTE3IC00NS41IDIyMy41dC0xMjMgMTg0dC0xODQgMTIzdC0yMjMuNSA0NS41ek01OTEgNTYxbDIyNiAtMjI2bC01NzkgLTU3OXEtMTIgLTEyIC0yOSAtMTJ0LTI5IDEybC0xNjggMTY4cS0xMiAxMiAtMTIgMjl0MTIgMjl6TTE2MTIgMTUyNGwxNjggLTE2OHExMiAtMTIgMTIgLTI5dC0xMiAtMzBsLTIzMyAtMjMzDQpsLTI2IC0yNWwtNzEgLTcxcS02NiAxNTMgLTE5NSAyNThsOTEgOTFsMjA3IDIwN3ExMyAxMiAzMCAxMnQyOSAtMTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE1IiB1bmljb2RlPSImI3hmMmE1OyIgDQpkPSJNODY2IDEwMjFxMCAtMjcgLTEzIC05NHEtMTEgLTUwIC0zMS41IC0xNTB0LTMwLjUgLTE1MHEtMiAtMTEgLTQuNSAtMTIuNXQtMTMuNSAtMi41cS0yMCAtMiAtMzEgLTJxLTU4IDAgLTg0IDQ5LjV0LTI2IDExMy41cTAgODggMzUgMTc0dDEwMyAxMjRxMjggMTQgNTEgMTRxMjggMCAzNi41IC0xNi41dDguNSAtNDcuNXpNMTM1MiA1OTdxMCAxNCAtMzkgNzUuNXQtNTIgNjYuNXEtMjEgOCAtMzQgOHEtOTEgMCAtMjI2IC03N2wtMiAyDQpxMyAyMiAyNy41IDEzNXQyNC41IDE3OHEwIDIzMyAtMjQyIDIzM3EtMjQgMCAtNjggLTZxLTk0IC0xNyAtMTY4LjUgLTg5LjV0LTExMS41IC0xNjYuNXQtMzcgLTE4OXEwIC0xNDYgODAuNSAtMjI1dDIyNy41IC03OXEyNSAwIDI1IC0zdC0xIC01cS00IC0zNCAtMjYgLTExN3EtMTQgLTUyIC01MS41IC0xMDF0LTgyLjUgLTQ5cS00MiAwIC00MiA0N3EwIDI0IDEwLjUgNDcuNXQyNSAzOS41dDI5LjUgMjguNXQyNiAyMHQxMSA4LjVxMCAzIC03IDEwDQpxLTI0IDIyIC01OC41IDM2LjV0LTY1LjUgMTQuNXEtMzUgMCAtNjMuNSAtMzR0LTQxIC03NXQtMTIuNSAtNzVxMCAtODggNTEuNSAtMTQydDEzOC41IC01NHE4MiAwIDE1NSA1M3QxMTcuNSAxMjZ0NjUuNSAxNTNxNiAyMiAxNS41IDY2LjV0MTQuNSA2Ni41cTMgMTIgMTQgMThxMTE4IDYwIDIyNyA2MHE0OCAwIDEyNyAtMThxMSAtMSA0IC0xcTUgMCA5LjUgNC41dDQuNSA4LjV6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjUNCnQtMjAzLjUgLTg0LjVoLTk2MHEtMTE5IDAgLTIwMy41IDg0LjV0LTg0LjUgMjAzLjV2OTYwcTAgMTE5IDg0LjUgMjAzLjV0MjAzLjUgODQuNWg5NjBxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE2IiB1bmljb2RlPSImI3hmMmE2OyIgaG9yaXotYWR2LXg9IjE1MzUiIA0KZD0iTTc0NCAxMjMxcTAgMjQgLTIgMzguNXQtOC41IDMwdC0yMSAyM3QtMzcuNSA3LjVxLTM5IDAgLTc4IC0yM3EtMTA1IC01OCAtMTU5IC0xOTAuNXQtNTQgLTI2OS41cTAgLTQ0IDguNSAtODUuNXQyNi41IC04MC41dDUyLjUgLTYyLjV0ODEuNSAtMjMuNXE0IDAgMTggLTAuNXQyMCAwdDE2IDN0MTUgOC41dDcgMTZxMTYgNzcgNDggMjMxLjV0NDggMjMxLjVxMTkgOTEgMTkgMTQ2ek0xNDk4IDU3NXEwIC03IC03LjUgLTEzLjV0LTE1LjUgLTYuNQ0KbC02IDFxLTIyIDMgLTYyIDExdC03MiAxMi41dC02MyA0LjVxLTE2NyAwIC0zNTEgLTkzcS0xNSAtOCAtMjEgLTI3cS0xMCAtMzYgLTI0LjUgLTEwNS41dC0yMi41IC0xMDAuNXEtMjMgLTkxIC03MCAtMTc5LjV0LTExMi41IC0xNjQuNXQtMTU0LjUgLTEyM3QtMTg1IC00N3EtMTM1IDAgLTIxNC41IDgzLjV0LTc5LjUgMjE5LjVxMCA1MyAxOS41IDExN3Q2MyAxMTYuNXQ5Ny41IDUyLjVxMzggMCAxMjAgLTMzLjV0ODMgLTYxLjUNCnEwIC0xIC0xNi41IC0xMi41dC0zOS41IC0zMXQtNDYgLTQ0LjV0LTM5IC02MXQtMTYgLTc0cTAgLTMzIDE2LjUgLTUzdDQ4LjUgLTIwcTQ1IDAgODUgMzEuNXQ2Ni41IDc4dDQ4IDEwNS41dDMyLjUgMTA3dDE2IDkwdjlxMCAyIC0zLjUgMy41dC04LjUgMS41aC0xMHQtMTAgLTAuNXQtNiAtMC41cS0yMjcgMCAtMzUyIDEyMi41dC0xMjUgMzQ4LjVxMCAxMDggMzQuNSAyMjF0OTYgMjEwdDE1NiAxNjcuNXQyMDQuNSA4OS41cTUyIDkgMTA2IDkNCnEzNzQgMCAzNzQgLTM2MHEwIC05OCAtMzggLTI3M3QtNDMgLTIxMWwzIC0zcTEwMSA1NyAxODIuNSA4OHQxNjcuNSAzMXEyMiAwIDUzIC0xM3ExOSAtNyA4MCAtMTAyLjV0NjEgLTExNi41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBNyIgdW5pY29kZT0iJiN4ZjJhNzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik04MzEgODYzcTMyIDAgNTkgLTE4bDIyMiAtMTQ4cTYxIC00MCAxMTAgLTk3bDE0NiAtMTcwcTQwIC00NiAyOSAtMTA2bC03MiAtNDEzcS02IC0zMiAtMjkuNSAtNTMuNXQtNTUuNSAtMjUuNWwtNTI3IC01NmwtMzUyIC0zMmgtOXEtMzkgMCAtNjcuNSAyOHQtMjguNSA2OHEwIDM3IDI3IDY0dDY1IDMybDI2MCAzMmgtNDQ4cS00MSAwIC02OS41IDMwdC0yNi41IDcxcTIgMzkgMzIgNjV0NjkgMjZsNDQyIDFsLTUyMSA2NHEtNDEgNSAtNjYgMzcNCnQtMTkgNzNxNiAzNSAzNC41IDU3LjV0NjUuNSAyMi41aDEwbDQ4MSAtNjBsLTM1MSA5NHEtMzggMTAgLTYyIDQxLjV0LTE4IDY4LjVxNiAzNiAzMyA1OC41dDYyIDIyLjVxNiAwIDIwIC0ybDQ0OCAtOTZsMjE3IC0zN3ExIDAgMyAtMC41dDMgLTAuNXEyMyAwIDMwLjUgMjN0LTEyLjUgMzZsLTE4NiAxMjVxLTM1IDIzIC00MiA2My41dDE4IDczLjVxMjcgMzggNzYgMzh6TTc2MSA2NjFsMTg2IC0xMjVsLTIxOCAzN2wtNSAybC0zNiAzOA0KbC0yMzggMjYycS0xIDEgLTIuNSAzLjV0LTIuNSAzLjVxLTI0IDMxIC0xOC41IDcwdDM3LjUgNjRxMzEgMjMgNjggMTcuNXQ2NCAtMzMuNWwxNDIgLTE0N3EtMiAtMSAtNSAtMy41dC00IC00LjVxLTMyIC00NSAtMjMgLTk5dDU1IC04NXpNMTY0OCAxMTE1bDE1IC0yNjZxNCAtNzMgLTExIC0xNDdsLTQ4IC0yMTlxLTEyIC01OSAtNjcgLTg3bC0xMDYgLTU0cTIgNjIgLTM5IDEwOWwtMTQ2IDE3MHEtNTMgNjEgLTExNyAxMDNsLTIyMiAxNDgNCnEtMzQgMjMgLTc2IDIzcS01MSAwIC04OCAtMzdsLTIzNSAzMTJxLTI1IDMzIC0xOCA3My41dDQxIDYzLjVxMzMgMjIgNzEuNSAxNHQ2Mi41IC00MGwyNjYgLTM1MmwtMjYyIDQ1NXEtMjEgMzUgLTEwLjUgNzV0NDcuNSA1OXEzNSAxOCA3Mi41IDZ0NTcuNSAtNDZsMjQxIC00MjBsLTEzNiAzMzdxLTE1IDM1IC00LjUgNzR0NDQuNSA1NnEzNyAxOSA3NiA2dDU2IC01MWwxOTMgLTQxNWwxMDEgLTE5NnE4IC0xNSAyMyAtMTcuNXQyNyA3LjV0MTEgMjYNCmwtMTIgMjI0cS0yIDQxIDI2IDcxdDY5IDMxcTM5IDAgNjcgLTI4LjV0MzAgLTY3LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkE4IiB1bmljb2RlPSImI3hmMmE4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTMzNSAxODBxLTIgMCAtNiAycS04NiA1NyAtMTY4LjUgMTQ1dC0xMzkuNSAxODBxLTIxIDMwIC0yMSA2OXEwIDkgMiAxOXQ0IDE4dDcgMTh0OC41IDE2dDEwLjUgMTd0MTAgMTV0MTIgMTUuNXQxMSAxNC41cTE4NCAyNTEgNDUyIDM2NXEtMTEwIDE5OCAtMTEwIDIxMXEwIDE5IDE3IDI5cTExNiA2NCAxMjggNjRxMTggMCAyOCAtMTZsMTI0IC0yMjlxOTIgMTkgMTkyIDE5cTI2NiAwIDQ5Ny41IC0xMzcuNXQzNzguNSAtMzY5LjUNCnEyMCAtMzEgMjAgLTY5dC0yMCAtNjlxLTkxIC0xNDIgLTIxOC41IC0yNTMuNXQtMjc4LjUgLTE3NS41cTExMCAtMTk4IDExMCAtMjExcTAgLTIwIC0xNyAtMjlxLTExNiAtNjQgLTEyNyAtNjRxLTE5IDAgLTI5IDE2bC0xMjQgMjI5bC02NCAxMTlsLTQ0NCA4MjBsNyA3cS01OCAtMjQgLTk5IC00N3EzIC01IDEyNyAtMjM0dDI0MyAtNDQ5dDExOSAtMjIzcTAgLTcgLTkgLTlxLTEzIC0zIC03MiAtM3EtNTcgMCAtNjAgN2wtNDU2IDg0MQ0KcS0zOSAtMjggLTgyIC02OHEyNCAtNDMgMjE0IC0zOTMuNXQxOTAgLTM1NC41cTAgLTEwIC0xMSAtMTBxLTE0IDAgLTgyLjUgMjJ0LTcyLjUgMjhsLTEwNiAxOTdsLTIyNCA0MTNxLTQ0IC01MyAtNzggLTEwNnEyIC0zIDE4IC0yNXQyMyAtMzRsMTc2IC0zMjdxMCAtMTAgLTEwIC0xMHpNMTE2NSAyODJsNDkgLTkxcTI3MyAxMTEgNDUwIDM4NXEtMTgwIDI3NyAtNDU5IDM4OXE2NyAtNjQgMTAzIC0xNDguNXQzNiAtMTc2LjUNCnEwIC0xMDYgLTQ3IC0yMDAuNXQtMTMyIC0xNTcuNXpNODQ4IDg5NnEwIC0yMCAxNCAtMzR0MzQgLTE0cTg2IDAgMTQ3IC02MXQ2MSAtMTQ3cTAgLTIwIDE0IC0zNHQzNCAtMTR0MzQgMTR0MTQgMzRxMCAxMjYgLTg5IDIxNXQtMjE1IDg5cS0yMCAwIC0zNCAtMTR0LTE0IC0zNHpNMTIxNCA5NjFsLTkgNGw3IC03eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBOSIgdW5pY29kZT0iJiN4ZjJhOTsiIGhvcml6LWFkdi14PSIxMjgwIiANCmQ9Ik0xMDUwIDQzMHEwIC0yMTUgLTE0NyAtMzc0cS0xNDggLTE2MSAtMzc4IC0xNjFxLTIzMiAwIC0zNzggMTYxcS0xNDcgMTU5IC0xNDcgMzc0cTAgMTQ3IDY4IDI3MC41dDE4OSAxOTYuNXQyNjggNzNxOTYgMCAxODIgLTMxcS0zMiAtNjIgLTM5IC0xMjZxLTY2IDI4IC0xNDMgMjhxLTE2NyAwIC0yODAuNSAtMTIzdC0xMTMuNSAtMjkxcTAgLTE3MCAxMTIuNSAtMjg4LjV0MjgxLjUgLTExOC41dDI4MSAxMTguNXQxMTIgMjg4LjUNCnEwIDg5IC0zMiAxNjZxNjYgMTMgMTIzIDQ5cTQxIC05OCA0MSAtMjEyek04NDYgNjE5cTAgLTE5MiAtNzkuNSAtMzQ1dC0yMzguNSAtMjUzbC0xNCAtMXEtMjkgMCAtNjIgNXE4MyAzMiAxNDYuNSAxMDIuNXQ5OS41IDE1NC41dDU4LjUgMTg5dDMwIDE5Mi41dDcuNSAxNzguNXEwIDY5IC0zIDEwM3E1NSAtMTYwIDU1IC0zMjZ6TTc5MSA5NDd2LTJxLTczIDIxNCAtMjA2IDQ0MHE4OCAtNTkgMTQyLjUgLTE4Ni41dDYzLjUgLTI1MS41eg0KTTEwMzUgNzQ0cS04MyAwIC0xNjAgNzVxMjE4IDEyMCAyOTAgMjQ3cTE5IDM3IDIxIDU2cS00MiAtOTQgLTEzOS41IC0xNjYuNXQtMjA0LjUgLTk3LjVxLTM1IDU0IC0zNSAxMTNxMCAzNyAxNyA3OXQ0MyA2OHE0NiA0NCAxNTcgNzRxNTkgMTYgMTA2IDU4LjV0NzQgMTAwLjVxNzQgLTEwNSA3NCAtMjUzcTAgLTEwOSAtMjQgLTE3MHEtMzIgLTc3IC04OC41IC0xMzAuNXQtMTMwLjUgLTUzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkFBIiB1bmljb2RlPSImI3hmMmFhOyIgDQpkPSJNMTA1MCA0OTVxMCA3OCAtMjggMTQ3cS00MSAtMjUgLTg1IC0zNHEyMiAtNTAgMjIgLTExNHEwIC0xMTcgLTc3IC0xOTguNXQtMTkzIC04MS41dC0xOTMuNSA4MS41dC03Ny41IDE5OC41cTAgMTE1IDc4IDE5OS41dDE5MyA4NC41cTUzIDAgOTggLTE5cTQgNDMgMjcgODdxLTYwIDIxIC0xMjUgMjFxLTE1NCAwIC0yNTcuNSAtMTA4LjV0LTEwMy41IC0yNjMuNXQxMDMuNSAtMjYxdDI1Ny41IC0xMDZ0MjU3LjUgMTA2LjV0MTAzLjUgMjYwLjV6DQpNODcyIDg1MHEyIC0yNCAyIC03MXEwIC02MyAtNSAtMTIzdC0yMC41IC0xMzIuNXQtNDAuNSAtMTMwdC02OC41IC0xMDZ0LTEwMC41IC03MC41cTIxIC0zIDQyIC0zaDEwcTIxOSAxMzkgMjE5IDQxMXEwIDExNiAtMzggMjI1ek04NzIgODUwcS00IDgwIC00NCAxNzEuNXQtOTggMTMwLjVxOTIgLTE1NiAxNDIgLTMwMnpNMTIwNyA5NTVxMCAxMDIgLTUxIDE3NHEtNDEgLTg2IC0xMjQgLTEwOXEtNjkgLTE5IC0xMDkgLTUzLjV0LTQwIC05OS41DQpxMCAtNDAgMjQgLTc3cTc0IDE3IDE0MC41IDY3dDk1LjUgMTE1cS00IC01MiAtNzQuNSAtMTExLjV0LTEzOC41IC05Ny41cTUyIC01MiAxMTAgLTUycTUxIDAgOTAgMzd0NjAgOTBxMTcgNDIgMTcgMTE3ek0xNTM2IDExMjB2LTk2MHEwIC0xMTkgLTg0LjUgLTIwMy41dC0yMDMuNSAtODQuNWgtOTYwcS0xMTkgMCAtMjAzLjUgODQuNXQtODQuNSAyMDMuNXY5NjBxMCAxMTkgODQuNSAyMDMuNXQyMDMuNSA4NC41aDk2MHExMTkgMCAyMDMuNSAtODQuNQ0KdDg0LjUgLTIwMy41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJBQiIgdW5pY29kZT0iJiN4ZjJhYjsiIA0KZD0iTTEyNzkgMzg4cTAgMjIgLTIyIDI3cS02NyAxNSAtMTE4IDU5dC04MCAxMDhxLTcgMTkgLTcgMjVxMCAxNSAxOS41IDI2dDQzIDE3dDQzIDIwLjV0MTkuNSAzNi41cTAgMTkgLTE4LjUgMzEuNXQtMzguNSAxMi41cS0xMiAwIC0zMiAtOHQtMzEgLThxLTQgMCAtMTIgMnE1IDk1IDUgMTE0cTAgNzkgLTE3IDExNHEtMzYgNzggLTEwMyAxMjEuNXQtMTUyIDQzLjVxLTE5OSAwIC0yNzUgLTE2NXEtMTcgLTM1IC0xNyAtMTE0cTAgLTE5IDUgLTExNA0KcS00IC0yIC0xNCAtMnEtMTIgMCAtMzIgNy41dC0zMCA3LjVxLTIxIDAgLTM4LjUgLTEydC0xNy41IC0zMnEwIC0yMSAxOS41IC0zNS41dDQzIC0yMC41dDQzIC0xN3QxOS41IC0yNnEwIC02IC03IC0yNXEtNjQgLTEzOCAtMTk4IC0xNjdxLTIyIC01IC0yMiAtMjdxMCAtNDYgMTM3IC02OHEyIC01IDYgLTI2dDExLjUgLTMwLjV0MjMuNSAtOS41cTEyIDAgMzcuNSA0LjV0MzkuNSA0LjVxMzUgMCA2NyAtMTV0NTQgLTMyLjV0NTcuNSAtMzIuNQ0KdDc2LjUgLTE1cTQzIDAgNzkgMTV0NTcuNSAzMi41dDUzLjUgMzIuNXQ2NyAxNXExNCAwIDM5LjUgLTR0MzguNSAtNHExNiAwIDIzIDEwdDExIDMwdDYgMjVxMTM3IDIyIDEzNyA2OHpNMTUzNiA2NDBxMCAtMjA5IC0xMDMgLTM4NS41dC0yNzkuNSAtMjc5LjV0LTM4NS41IC0xMDN0LTM4NS41IDEwM3QtMjc5LjUgMjc5LjV0LTEwMyAzODUuNXQxMDMgMzg1LjV0Mjc5LjUgMjc5LjV0Mzg1LjUgMTAzdDM4NS41IC0xMDN0Mjc5LjUgLTI3OS41DQp0MTAzIC0zODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQUMiIHVuaWNvZGU9IiYjeGYyYWM7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNODQ4IDE0MDhxMTM0IDEgMjQwLjUgLTY4LjV0MTYzLjUgLTE5Mi41cTI3IC01OCAyNyAtMTc5cTAgLTQ3IC05IC0xOTFxMTQgLTcgMjggLTdxMTggMCA1MSAxMy41dDUxIDEzLjVxMjkgMCA1NiAtMTh0MjcgLTQ2cTAgLTMyIC0zMS41IC01NHQtNjkgLTMxLjV0LTY5IC0yOXQtMzEuNSAtNDcuNXEwIC0xNSAxMiAtNDNxMzcgLTgyIDEwMi41IC0xNTB0MTQ0LjUgLTEwMXEyOCAtMTIgODAgLTIzcTI4IC02IDI4IC0zNQ0KcTAgLTcwIC0yMTkgLTEwM3EtNyAtMTEgLTExIC0zOXQtMTQgLTQ2LjV0LTMzIC0xOC41cS0yMCAwIC02MiA2LjV0LTY0IDYuNXEtMzcgMCAtNjIgLTVxLTMyIC01IC02MyAtMjIuNXQtNTggLTM4dC01OCAtNDAuNXQtNzYgLTMzLjV0LTk5IC0xMy41cS01MiAwIC05Ni41IDEzLjV0LTc1IDMzLjV0LTU3LjUgNDAuNXQtNTggMzh0LTYyIDIyLjVxLTI2IDUgLTYzIDVxLTI0IDAgLTY1LjUgLTcuNXQtNTguNSAtNy41cS0yNSAwIC0zNSAxOC41DQp0LTE0IDQ3LjV0LTExIDQwcS0yMTkgMzMgLTIxOSAxMDNxMCAyOSAyOCAzNXE1MiAxMSA4MCAyM3E3OCAzMiAxNDQuNSAxMDF0MTAyLjUgMTUwcTEyIDI4IDEyIDQzcTAgMjggLTMxLjUgNDcuNXQtNjkuNSAyOS41dC02OS41IDMxLjV0LTMxLjUgNTIuNXEwIDI3IDI2IDQ1LjV0NTUgMTguNXExNSAwIDQ4IC0xM3Q1MyAtMTNxMTggMCAzMiA3cS05IDE0MiAtOSAxOTBxMCAxMjIgMjcgMTgwcTY0IDEzNyAxNzIgMTk4dDI2NCA2M3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQUQiIHVuaWNvZGU9IiYjeGYyYWQ7IiANCmQ9Ik0xMjgwIDM4OHEwIDIyIC0yMiAyN3EtNjcgMTQgLTExOCA1OHQtODAgMTA5cS03IDE0IC03IDI1cTAgMTUgMTkuNSAyNnQ0Mi41IDE3dDQyLjUgMjAuNXQxOS41IDM2LjVxMCAxOSAtMTguNSAzMS41dC0zOC41IDEyLjVxLTExIDAgLTMxIC04dC0zMiAtOHEtNCAwIC0xMiAycTUgNjMgNSAxMTVxMCA3OCAtMTcgMTE0cS0zNiA3OCAtMTAyLjUgMTIxLjV0LTE1Mi41IDQzLjVxLTE5OCAwIC0yNzUgLTE2NXEtMTggLTM4IC0xOCAtMTE1DQpxMCAtMzggNiAtMTE0cS0xMCAtMiAtMTUgLTJxLTExIDAgLTMxLjUgOHQtMzAuNSA4cS0yMCAwIC0zNy41IC0xMi41dC0xNy41IC0zMi41cTAgLTIxIDE5LjUgLTM1LjV0NDIuNSAtMjAuNXQ0Mi41IC0xN3QxOS41IC0yNnEwIC0xMSAtNyAtMjVxLTY0IC0xMzggLTE5OCAtMTY3cS0yMiAtNSAtMjIgLTI3cTAgLTQ3IDEzOCAtNjlxMiAtNSA2IC0yNnQxMSAtMzAuNXQyMyAtOS41cTEzIDAgMzguNSA1dDM4LjUgNXEzNSAwIDY3LjUgLTE1DQp0NTQuNSAtMzIuNXQ1Ny41IC0zMi41dDc2LjUgLTE1cTQzIDAgNzkgMTV0NTcuNSAzMi41dDU0IDMyLjV0NjcuNSAxNXExMyAwIDM5IC00LjV0MzkgLTQuNXExNSAwIDIyLjUgOS41dDExLjUgMzF0NSAyNC41cTEzOCAyMiAxMzggNjl6TTE1MzYgMTEyMHYtOTYwcTAgLTExOSAtODQuNSAtMjAzLjV0LTIwMy41IC04NC41aC05NjBxLTExOSAwIC0yMDMuNSA4NC41dC04NC41IDIwMy41djk2MHEwIDExOSA4NC41IDIwMy41dDIwMy41IDg0LjVoOTYwDQpxMTE5IDAgMjAzLjUgLTg0LjV0ODQuNSAtMjAzLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkFFIiB1bmljb2RlPSImI3hmMmFlOyIgaG9yaXotYWR2LXg9IjIzMDQiIA0KZD0iTTIzMDQgMTUzNnEtNjkgLTQ2IC0xMjUgLTkydC04OSAtODF0LTU5LjUgLTcxLjV0LTM3LjUgLTU3LjV0LTIyIC00NC41dC0xNCAtMjkuNXEtMTAgLTE4IC0zNS41IC0xMzYuNXQtNDguNSAtMTY0LjVxLTE1IC0yOSAtNTAgLTYwLjV0LTY3LjUgLTUwLjV0LTcyLjUgLTQxdC00OCAtMjhxLTQ3IC0zMSAtMTUxIC0yMzFxLTM0MSAxNCAtNjMwIC0xNThxLTkyIC01MyAtMzAzIC0xNzlxNDcgMTYgODYgMzF0NTUgMjJsMTUgNw0KcTcxIDI3IDE2MyA2NC41dDEzMy41IDUzLjV0MTA4IDM0LjV0MTQyLjUgMzEuNXExODYgMzEgNDY1IC03cTEgMCAxMCAtM3ExMSAtNiAxNCAtMTd0LTMgLTIybC0xOTQgLTM0NXEtMTUgLTI5IC00NyAtMjJxLTEyOCAyNCAtMzU0IDI0cS0xNDYgMCAtNDAyIC00NC41dC0zOTIgLTQ2LjVxLTgyIC0xIC0xNDkgMTN0LTEwNyAzN3QtNjEgNDB0LTMzIDM0bC0xIDF2MnEwIDYgNiA2cTEzOCAwIDM3MSA1NXExOTIgMzY2IDM3NC41IDUyNHQzODMuNSAxNTgNCnE1IDAgMTQuNSAtMC41dDM4IC01dDU1IC0xMnQ2MS41IC0yNC41dDYzIC0zOS41dDU0IC01OXQ0MCAtODIuNWwxMDIgMTc3cTIgNCAyMSA0Mi41dDQ0LjUgODYuNXQ2MSAxMDkuNXQ4NCAxMzMuNXQxMDAuNSAxMzdxNjYgODIgMTI4IDE0MS41dDEyMS41IDk2LjV0OTIuNSA1My41dDg4IDM5LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkIwIiB1bmljb2RlPSImI3hmMmIwOyIgDQpkPSJNMTMyMiA2NDBxMCAtNDUgLTUgLTc2bC0yMzYgMTRsMjI0IC03OHEtMTkgLTczIC01OCAtMTQxbC0yMTQgMTAzbDE3NyAtMTU4cS00NCAtNjEgLTEwNyAtMTA4bC0xNTcgMTc4bDEwMyAtMjE1cS02MSAtMzcgLTE0MCAtNTlsLTc5IDIyOGwxNCAtMjQwcS0zOCAtNiAtNzYgLTZ0LTc2IDZsMTQgMjM4bC03OCAtMjI2cS03NCAxOSAtMTQwIDU5bDEwMyAyMTVsLTE1NyAtMTc4cS01OSA0MyAtMTA4IDEwOGwxNzggMTU4bC0yMTQgLTEwNA0KcS0zOSA2OSAtNTggMTQxbDIyNCA3OWwtMjM3IC0xNHEtNSA0MiAtNSA3NnEwIDM1IDUgNzdsMjM4IC0xNGwtMjI1IDc5cTE5IDczIDU4IDE0MGwyMTQgLTEwNGwtMTc3IDE1OXE0NiA2MSAxMDcgMTA4bDE1OCAtMTc4bC0xMDMgMjE1cTY3IDM5IDE0MCA1OGw3NyAtMjI0bC0xMyAyMzZxMzYgNiA3NSA2cTM4IDAgNzYgLTZsLTE0IC0yMzdsNzggMjI1cTc0IC0xOSAxNDAgLTU5bC0xMDMgLTIxNGwxNTggMTc4cTYxIC00NyAxMDcgLTEwOA0KbC0xNzcgLTE1OWwyMTMgMTA0cTM3IC02MiA1OCAtMTQxbC0yMjQgLTc4bDIzNyAxNHE1IC0zMSA1IC03N3pNMTM1MiA2NDBxMCAxNjAgLTc4LjUgMjk1LjV0LTIxMyAyMTR0LTI5Mi41IDc4LjVxLTExOSAwIC0yMjcgLTQ2LjV0LTE4Ni41IC0xMjV0LTEyNC41IC0xODcuNXQtNDYgLTIyOXEwIC0xMTkgNDYgLTIyOHQxMjQuNSAtMTg3LjV0MTg2LjUgLTEyNXQyMjcgLTQ2LjVxMTU4IDAgMjkyLjUgNzguNXQyMTMgMjE0dDc4LjUgMjk0LjV6DQpNMTQyNSAxMDIzdi03NjZsLTY1NyAtMzgzbC02NTcgMzgzdjc2Nmw2NTcgMzgzek03NjggLTE4M2w3MDggNDEydjgyM2wtNzA4IDQxMWwtNzA4IC00MTF2LTgyM3pNMTUzNiAxMDg4di04OTZsLTc2OCAtNDQ4bC03NjggNDQ4djg5Nmw3NjggNDQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCMSIgdW5pY29kZT0iJiN4ZjJiMTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0zMzkgMTMxOGg2OTFsLTI2IC03MmgtNjY1cS0xMTAgMCAtMTg4LjUgLTc5dC03OC41IC0xODl2LTc3MXEwIC05NSA2MC41IC0xNjkuNXQxNTMuNSAtOTMuNXEyMyAtNSA5OCAtNXYtNzJoLTQ1cS0xNDAgMCAtMjM5LjUgMTAwdC05OS41IDI0MHY3NzFxMCAxNDAgOTkuNSAyNDB0MjM5LjUgMTAwek0xMTkwIDE1MzZoMjQ3bC00ODIgLTEyOTRxLTIzIC02MSAtNDAuNSAtMTAzLjV0LTQ1IC05OHQtNTQgLTkzLjV0LTY0LjUgLTc4LjUNCnQtNzkuNSAtNjV0LTk1LjUgLTQxdC0xMTYgLTE4LjV2MTk1cTE2MyAyNiAyMjAgMTgycTIwIDUyIDIwIDEwNXEwIDU0IC0yMCAxMDZsLTI4NSA3MzNoMjI4bDE4NyAtNTg1ek0xNjY0IDk3OHYtMTExMWgtNzk1cTM3IDU1IDQ1IDczaDY3OHYxMDM4cTAgODUgLTQ5LjUgMTU1dC0xMjkuNSA5OWwyNSA2N3ExMDEgLTM0IDE2My41IC0xMjMuNXQ2Mi41IC0xOTcuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjIiIHVuaWNvZGU9IiYjeGYyYjI7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODUyIDEyMjdxMCAtMjkgLTE3IC01Mi41dC00NSAtMjMuNXQtNDUgMjMuNXQtMTcgNTIuNXQxNyA1Mi41dDQ1IDIzLjV0NDUgLTIzLjV0MTcgLTUyLjV6TTY4OCAtMTQ5djExNHEwIDMwIC0yMC41IDUxLjV0LTUwLjUgMjEuNXQtNTAgLTIxLjV0LTIwIC01MS41di0xMTRxMCAtMzAgMjAuNSAtNTJ0NDkuNSAtMjJxMzAgMCA1MC41IDIydDIwLjUgNTJ6TTg2MCAtMTQ5djExNHEwIDMwIC0yMCA1MS41dC01MCAyMS41dC01MC41IC0yMS41DQp0LTIwLjUgLTUxLjV2LTExNHEwIC0zMCAyMC41IC01MnQ1MC41IC0yMnEyOSAwIDQ5LjUgMjJ0MjAuNSA1MnpNMTAzNCAtMTQ5djExNHEwIDMwIC0yMC41IDUxLjV0LTUwLjUgMjEuNXQtNTAuNSAtMjEuNXQtMjAuNSAtNTEuNXYtMTE0cTAgLTMwIDIwLjUgLTUydDUwLjUgLTIydDUwLjUgMjJ0MjAuNSA1MnpNMTIwOCAtMTQ5djExNHEwIDMwIC0yMC41IDUxLjV0LTUwLjUgMjEuNXQtNTAuNSAtMjEuNXQtMjAuNSAtNTEuNXYtMTE0DQpxMCAtMzAgMjAuNSAtNTJ0NTAuNSAtMjJ0NTAuNSAyMnQyMC41IDUyek0xNDc2IDUzNXEtODQgLTE2MCAtMjMyIC0yNTkuNXQtMzIzIC05OS41cS0xMjMgMCAtMjI5LjUgNTEuNXQtMTc4LjUgMTM3dC0xMTMgMTk3LjV0LTQxIDIzMnEwIDg4IDIxIDE3NHEtMTA0IC0xNzUgLTEwNCAtMzkwcTAgLTE2MiA2NSAtMzEydDE4NSAtMjUxcTMwIDU3IDkxIDU3cTU2IDAgODYgLTUwcTMyIDUwIDg3IDUwcTU2IDAgODYgLTUwcTMyIDUwIDg3IDUwdDg3IC01MA0KcTMwIDUwIDg2IDUwcTI4IDAgNTIuNSAtMTUuNXQzNy41IC00MC41cTExMiA5NCAxNzcgMjMxLjV0NzMgMjg3LjV6TTEzMjYgNTY0cTAgNzUgLTcyIDc1cS0xNyAwIC00NyAtNnEtOTUgLTE5IC0xNDkgLTE5cS0yMjYgMCAtMjI2IDI0M3EwIDg2IDMwIDIwNHEtODMgLTEyNyAtODMgLTI3NXEwIC0xNTAgODkgLTI2MC41dDIzNSAtMTEwLjVxMTExIDAgMjEwIDcwcTEzIDQ4IDEzIDc5ek04ODQgMTIyM3EwIDUwIC0zMiA4OS41dC04MSAzOS41DQp0LTgxIC0zOS41dC0zMiAtODkuNXEwIC01MSAzMS41IC05MC41dDgxLjUgLTM5LjV0ODEuNSAzOS41dDMxLjUgOTAuNXpNMTUxMyA4ODRxMCA5NiAtMzcuNSAxNzl0LTExMyAxMzd0LTE3My41IDU0cS03NyAwIC0xNDkgLTM1dC0xMjcgLTk0cS00OCAtMTU5IC00OCAtMjY4cTAgLTEwNCA0NS41IC0xNTd0MTQ3LjUgLTUzcTUzIDAgMTQyIDE5cTM2IDYgNTMgNnE1MSAwIDc3LjUgLTI4dDI2LjUgLTgwcTAgLTI2IC00IC00Ng0KcTc1IDY4IDExNy41IDE2NS41dDQyLjUgMjAwLjV6TTE3OTIgNjY3cTAgLTExMSAtMzMuNSAtMjQ5LjV0LTkzLjUgLTIwNC41cS01OCAtNjQgLTE5NSAtMTQyLjV0LTIyOCAtMTA0LjVsLTQgLTF2LTExNHEwIC00MyAtMjkuNSAtNzV0LTcyLjUgLTMycS01NiAwIC04NiA1MHEtMzIgLTUwIC04NyAtNTB0LTg3IDUwcS0zMCAtNTAgLTg2IC01MHEtNTUgMCAtODcgNTBxLTMwIC01MCAtODYgLTUwcS00NyAwIC03NSAzMy41dC0yOCA4MS41DQpxLTkwIC02OCAtMTk4IC02OHEtMTE4IDAgLTIxMSA4MHE1NCAxIDEwNiAyMHEtMTEzIDMxIC0xODIgMTI3cTMyIC03IDcxIC03cTg5IDAgMTY0IDQ2cS0xOTIgMTkyIC0yNDAgMzA2cS0yNCA1NiAtMjQgMTYwcTAgNTcgOSAxMjUuNXQzMS41IDE0Ni41dDU1IDE0MXQ4Ni41IDEwNXQxMjAgNDJxNTkgMCA4MSAtNTJxMTkgMjkgNDIgNTRxMiAzIDEyIDEzdDEzIDE2cTEwIDE1IDIzIDM4dDI1IDQydDI4IDM5cTg3IDExMSAyMTEuNSAxNzcNCnQyNjAuNSA2NnEzNSAwIDYyIC00cTU5IDY0IDE0NiA2NHE4MyAwIDE0MCAtNTdxNSAtNSA1IC0xMnEwIC01IC02IC0xMy41dC0xMi41IC0xNnQtMTYgLTE3bC0xMC41IC0xMC41cTE3IC02IDM2IC0xOHQxOSAtMjRxMCAtNiAtMTYgLTI1cTE1NyAtMTM4IDE5NyAtMzc4cTI1IDMwIDYwIDMwcTQ1IDAgMTAwIC00OXE5MCAtODAgOTAgLTI3OXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjMiIHVuaWNvZGU9IiYjeGYyYjM7IiANCmQ9Ik05MTcgNjMxcTAgMzMgLTYgNjRoLTM2MnYtMTMyaDIxN3EtMTIgLTc2IC03NC41IC0xMjAuNXQtMTQyLjUgLTQ0LjVxLTk5IDAgLTE2OSA3MS41dC03MCAxNzAuNXQ3MCAxNzAuNXQxNjkgNzEuNXE5MyAwIDE1MyAtNTlsMTA0IDEwMXEtMTA4IDEwMCAtMjU3IDEwMHEtMTYwIDAgLTI3MiAtMTEyLjV0LTExMiAtMjcxLjV0MTEyIC0yNzEuNXQyNzIgLTExMi41cTE2NSAwIDI2Ni41IDEwNXQxMDEuNSAyNzB6TTEyNjIgNTg1aDEwOXYxMTANCmgtMTA5djExMGgtMTEwdi0xMTBoLTExMHYtMTEwaDExMHYtMTEwaDExMHYxMTB6TTE1MzYgNjQwcTAgLTIwOSAtMTAzIC0zODUuNXQtMjc5LjUgLTI3OS41dC0zODUuNSAtMTAzdC0zODUuNSAxMDN0LTI3OS41IDI3OS41dC0xMDMgMzg1LjV0MTAzIDM4NS41dDI3OS41IDI3OS41dDM4NS41IDEwM3QzODUuNSAtMTAzdDI3OS41IC0yNzkuNXQxMDMgLTM4NS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCNCIgdW5pY29kZT0iJiN4ZjJiNDsiIA0KZD0iTTE1MzYgMTAyNHYtODM5cTAgLTQ4IC00OSAtNjJxLTE3NCAtNTIgLTMzOCAtNTJxLTczIDAgLTIxNS41IDI5LjV0LTIyNy41IDI5LjVxLTE2NCAwIC0zNzAgLTQ4di0zMzhoLTE2MHYxMzY4cS02MyAyNSAtMTAxIDgxdC0zOCAxMjRxMCA5MSA2NCAxNTV0MTU1IDY0dDE1NSAtNjR0NjQgLTE1NXEwIC02OCAtMzggLTEyNHQtMTAxIC04MXYtNjhxMTkwIDQ0IDM0MyA0NHE5OSAwIDE5OCAtMTVxMTQgLTIgMTExLjUgLTIyLjV0MTQ5LjUgLTIwLjUNCnE3NyAwIDE2NSAxOHExMSAyIDgwIDIxdDg5IDE5cTI2IDAgNDUgLTE5dDE5IC00NXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjUiIHVuaWNvZGU9IiYjeGYyYjU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNMTkyIDM4NHE0MCAwIDU2IDMydDAgNjR0LTU2IDMydC01NiAtMzJ0MCAtNjR0NTYgLTMyek0xNjY1IDQ0MnEtMTAgMTMgLTM4LjUgNTB0LTQxLjUgNTR0LTM4IDQ5dC00Mi41IDUzdC00MC41IDQ3dC00NSA0OWwtMTI1IC0xNDBxLTgzIC05NCAtMjA4LjUgLTkydC0yMDUuNSA5OHEtNTcgNjkgLTU2LjUgMTU4dDU4LjUgMTU3bDE3NyAyMDZxLTIyIDExIC01MSAxNi41dC00Ny41IDZ0LTU2LjUgLTAuNXQtNDkgLTFxLTkyIDAgLTE1OCAtNjYNCmwtMTU4IC0xNThoLTE1NXYtNTQ0cTUgMCAyMSAwLjV0MjIgMHQxOS41IC0ydDIwLjUgLTQuNXQxNy41IC04LjV0MTguNSAtMTMuNWwyOTcgLTI5MnExMTUgLTExMSAyMjcgLTExMXE3OCAwIDEyNSA0N3E1NyAtMjAgMTEyLjUgOHQ3Mi41IDg1cTc0IC02IDEyNyA0NHEyMCAxOCAzNiA0NS41dDE0IDUwLjVxMTAgLTEwIDQzIC0xMHE0MyAwIDc3IDIxdDQ5LjUgNTN0MTIgNzEuNXQtMzAuNSA3My41ek0xODI0IDM4NGg5NnY1MTJoLTkzbC0xNTcgMTgwDQpxLTY2IDc2IC0xNjkgNzZoLTE2N3EtODkgMCAtMTQ2IC02N2wtMjA5IC0yNDNxLTI4IC0zMyAtMjggLTc1dDI3IC03NXE0MyAtNTEgMTEwIC01MnQxMTEgNDlsMTkzIDIxOHEyNSAyMyA1My41IDIxLjV0NDcgLTI3dDguNSAtNTYuNXExNiAtMTkgNTYgLTYzdDYwIC02OHEyOSAtMzYgODIuNSAtMTA1LjV0NjQuNSAtODQuNXE1MiAtNjYgNjAgLTE0MHpNMjExMiAzODRxNDAgMCA1NiAzMnQwIDY0dC01NiAzMnQtNTYgLTMydDAgLTY0dDU2IC0zMnoNCk0yMzA0IDk2MHYtNjQwcTAgLTI2IC0xOSAtNDV0LTQ1IC0xOWgtNDM0cS0yNyAtNjUgLTgyIC0xMDYuNXQtMTI1IC01MS41cS0zMyAtNDggLTgwLjUgLTgxLjV0LTEwMi41IC00NS41cS00MiAtNTMgLTEwNC41IC04MS41dC0xMjguNSAtMjQuNXEtNjAgLTM0IC0xMjYgLTM5LjV0LTEyNy41IDE0dC0xMTcgNTMuNXQtMTAzLjUgODFsLTI4NyAyODJoLTM1OHEtMjYgMCAtNDUgMTl0LTE5IDQ1djY3MnEwIDI2IDE5IDQ1dDQ1IDE5aDQyMQ0KcTE0IDE0IDQ3IDQ4dDQ3LjUgNDh0NDQgNDB0NTAuNSAzNy41dDUxIDI1LjV0NjIgMTkuNXQ2OCA1LjVoMTE3cTk5IDAgMTgxIC01NnE4MiA1NiAxODEgNTZoMTY3cTM1IDAgNjcgLTZ0NTYuNSAtMTQuNXQ1MS41IC0yNi41dDQ0LjUgLTMxdDQzIC0zOS41dDM5IC00MnQ0MSAtNDh0NDEuNSAtNDguNWgzNTVxMjYgMCA0NSAtMTl0MTkgLTQ1eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCNiIgdW5pY29kZT0iJiN4ZjJiNjsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNzkyIDg4MnYtOTc4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NzhxMCAxNSAxMSAyNHE4IDcgMzkgMzQuNXQ0MS41IDM2dDQ1LjUgMzcuNXQ3MCA1NS41dDk2IDczdDE0My41IDEwN3QxOTIuNSAxNDAuNXE1IDQgNTIuNSA0MHQ3MS41IDUyLjV0NjQgMzV0NjkgMTguNXQ2OSAtMTguNXQ2NSAtMzUuNXQ3MSAtNTJ0NTIgLTQwcTExMCAtODAgMTkyLjUgLTE0MC41dDE0My41IC0xMDcNCnQ5NiAtNzN0NzAgLTU1LjV0NDUuNSAtMzcuNXQ0MS41IC0zNnQzOSAtMzQuNXExMSAtOSAxMSAtMjR6TTEyMjggMjk3cTI2MyAxOTEgMzQ1IDI1MnExMSA4IDEyLjUgMjAuNXQtNi41IDIzLjVsLTM4IDUycS04IDExIC0yMSAxMi41dC0yNCAtNi41cS0yMzEgLTE2OSAtMzQzIC0yNTBxLTUgLTMgLTUyIC0zOXQtNzEuNSAtNTIuNXQtNjQuNSAtMzV0LTY5IC0xOC41dC02OSAxOC41dC02NC41IDM1dC03MS41IDUyLjV0LTUyIDM5DQpxLTE4NiAxMzQgLTM0MyAyNTBxLTExIDggLTI0IDYuNXQtMjEgLTEyLjVsLTM4IC01MnEtOCAtMTEgLTYuNSAtMjMuNXQxMi41IC0yMC41cTgyIC02MSAzNDUgLTI1MnExMCAtOCA1MCAtMzh0NjUgLTQ3dDY0IC0zOS41dDc3LjUgLTMzLjV0NzUuNSAtMTF0NzUuNSAxMXQ3OSAzNC41dDY0LjUgMzkuNXQ2NSA0Ny41dDQ4IDM2LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkI3IiB1bmljb2RlPSImI3hmMmI3OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE0NzQgNjIzbDM5IC01MXE4IC0xMSA2LjUgLTIzLjV0LTExLjUgLTIwLjVxLTQzIC0zNCAtMTI2LjUgLTk4LjV0LTE0Ni41IC0xMTN0LTY3IC01MS41cS0zOSAtMzIgLTYwIC00OHQtNjAuNSAtNDF0LTc2LjUgLTM2LjV0LTc0IC0xMS41aC0xaC0xcS0zNyAwIC03NCAxMS41dC03NiAzNi41dC02MSA0MS41dC02MCA0Ny41cS01IDQgLTY1IDUwLjV0LTE0My41IDExMXQtMTIyLjUgOTQuNXEtMTEgOCAtMTIuNSAyMC41dDYuNSAyMy41DQpsMzcgNTJxOCAxMSAyMS41IDEzdDI0LjUgLTdxOTQgLTczIDMwNiAtMjM2cTUgLTQgNDMuNSAtMzV0NjAuNSAtNDYuNXQ1Ni41IC0zMi41dDU4LjUgLTE3aDFoMXEyNCAwIDU4LjUgMTd0NTYuNSAzMi41dDYwLjUgNDYuNXQ0My41IDM1cTI1OCAxOTggMzEzIDI0MnExMSA4IDI0IDYuNXQyMSAtMTIuNXpNMTY2NCAtOTZ2OTI4cS05MCA4MyAtMTU5IDEzOXEtOTEgNzQgLTM4OSAzMDRxLTMgMiAtNDMgMzV0LTYxIDQ4dC01NiAzMi41dC01OSAxNy41DQpoLTFoLTFxLTI0IDAgLTU5IC0xNy41dC01NiAtMzIuNXQtNjEgLTQ4dC00MyAtMzVxLTIxNSAtMTY2IC0zMTUuNSAtMjQ1LjV0LTEyOS41IC0xMDR0LTgyIC03NC41cS0xNCAtMTIgLTIxIC0xOXYtOTI4cTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTQ3MnExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xNzkyIDgzMnYtOTI4cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xNDcycS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5MjhxMCA1NiA0MSA5NA0KcTEyMyAxMTQgMzUwIDI5MC41dDIzMyAxODEuNXEzNiAzMCA1OSA0Ny41dDYxLjUgNDJ0NzYgMzYuNXQ3NC41IDEyaDFoMXEzNyAwIDc0LjUgLTEydDc2IC0zNi41dDYxLjUgLTQydDU5IC00Ny41cTQzIC0zNiAxNTYgLTEyMnQyMjYgLTE3N3QyMDEgLTE3M3E0MSAtMzggNDEgLTk0eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCOCIgdW5pY29kZT0iJiN4ZjJiODsiIA0KZD0iTTMzMCAxbDIwMiAtMjE0bC0zNCAyMzZsLTIxNiAyMTN6TTU1NiAtMjI1bDI3NCAyMThsLTExIDI0NWwtMzAwIC0yMTV6TTI0NSA0MTNsMjI3IC0yMTNsLTQ4IDMyN2wtMjQ1IDIwNHpNNDk1IDE4OWwzMTcgMjE0bC0xNCAzMjRsLTM1MiAtMjAwek04NDMgMTc4bDk1IC04MGwtMiAyMzlsLTEwMyA3OXEwIC0xIDEgLTguNXQwIC0xMnQtNSAtNy41bC03OCAtNTJsODUgLTcwcTcgLTYgNyAtODh6TTEzOCA5MzBsMjU2IC0yMDBsLTY4IDQ2NQ0KbC0yNzkgMTczek0xMTczIDI2N2wxNSAyMzRsLTIzMCAtMTY0bDIgLTI0MHpNNDE3IDcyMmwzNzMgMTk0bC0xOSA0NDFsLTQyMyAtMTYzek0xMjcwIDM1N2wyMCAyMzNsLTIyNiAxNDJsLTIgLTEwNWwxNDQgLTk1cTYgLTQgNCAtOWwtNyAtMTE5ek0xNDYxIDQ5NmwzMCAyMjJsLTE3OSAtMTI4bC0yMCAtMjI4ek0xMjczIDMyOWwtNzEgNDlsLTggLTExN3EwIC01IC00IC04bC0yMzQgLTE4N3EtNyAtNSAtMTQgMGwtOTggODNsNyAtMTYxDQpxMCAtNSAtNCAtOGwtMjkzIC0yMzRxLTQgLTIgLTYgLTJxLTggMiAtOCAzbC0yMjggMjQycS00IDQgLTU5IDI3N3EtMiA3IDUgMTFsNjEgMzdxLTk0IDg2IC05NSA5MmwtNzIgMzUxcS0yIDcgNiAxMmw5NCA0NXEtMTMzIDEwMCAtMTM1IDEwOGwtOTYgNDY2cS0yIDEwIDcgMTNsNDMzIDEzNXE1IDAgOCAtMWwzMTcgLTE1M3E2IC00IDYgLTlsMjAgLTQ2M3EwIC03IC02IC0xMGwtMTE4IC02MWwxMjYgLTg1cTUgLTIgNSAtOGw1IC0xMjNsMTIxIDc0DQpxNSA0IDExIDBsODQgLTU2bDMgMTEwcTAgNiA1IDlsMjA2IDEyNnE2IDMgMTEgMGwyNDUgLTEzNXE0IC00IDUgLTd0LTYuNSAtNjB0LTE3LjUgLTEyNC41dC0xMCAtNzAuNXEwIC01IC00IC03bC0xOTEgLTE1M3EtNiAtNSAtMTMgMHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQjkiIHVuaWNvZGU9IiYjeGYyYjk7IiBob3Jpei1hZHYteD0iMTY2NCIgDQpkPSJNMTIwMSAyOThxMCA1NyAtNS41IDEwN3QtMjEgMTAwLjV0LTM5LjUgODZ0LTY0IDU4dC05MSAyMi41cS02IC00IC0zMy41IC0yMC41dC00Mi41IC0yNC41dC00MC41IC0yMHQtNDkgLTE3dC00Ni41IC01dC00Ni41IDV0LTQ5IDE3dC00MC41IDIwdC00Mi41IDI0LjV0LTMzLjUgMjAuNXEtNTEgMCAtOTEgLTIyLjV0LTY0IC01OHQtMzkuNSAtODZ0LTIxIC0xMDAuNXQtNS41IC0xMDdxMCAtNzMgNDIgLTEyMS41dDEwMyAtNDguNWg1NzYNCnE2MSAwIDEwMyA0OC41dDQyIDEyMS41ek0xMDI4IDg5MnEwIDEwOCAtNzYuNSAxODR0LTE4My41IDc2dC0xODMuNSAtNzZ0LTc2LjUgLTE4NHEwIC0xMDcgNzYuNSAtMTgzdDE4My41IC03NnQxODMuNSA3NnQ3Ni41IDE4M3pNMTY2NCAzNTJ2LTE5MnEwIC0xNCAtOSAtMjN0LTIzIC05aC05NnYtMjI0cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExM3YxNDcycTAgNjYgNDcgMTEzdDExMyA0N2gxMjE2DQpxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTIyNGg5NnExNCAwIDIzIC05dDkgLTIzdi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTEyOGg5NnExNCAwIDIzIC05dDkgLTIzdi0xOTJxMCAtMTQgLTkgLTIzdC0yMyAtOWgtOTZ2LTEyOGg5NnExNCAwIDIzIC05dDkgLTIzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCQSIgdW5pY29kZT0iJiN4ZjJiYTsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xMDI4IDg5MnEwIC0xMDcgLTc2LjUgLTE4M3QtMTgzLjUgLTc2dC0xODMuNSA3NnQtNzYuNSAxODNxMCAxMDggNzYuNSAxODR0MTgzLjUgNzZ0MTgzLjUgLTc2dDc2LjUgLTE4NHpNOTgwIDY3MnE0NiAwIDgyLjUgLTE3dDYwIC00Ny41dDM5LjUgLTY3dDI0IC04MXQxMS41IC04Mi41dDMuNSAtNzlxMCAtNjcgLTM5LjUgLTExOC41dC0xMDUuNSAtNTEuNWgtNTc2cS02NiAwIC0xMDUuNSA1MS41dC0zOS41IDExOC41cTAgNDggNC41IDkzLjUNCnQxOC41IDk4LjV0MzYuNSA5MS41dDYzIDY0LjV0OTMuNSAyNmg1cTcgLTQgMzIgLTE5LjV0MzUuNSAtMjF0MzMgLTE3dDM3IC0xNnQzNSAtOXQzOS41IC00LjV0MzkuNSA0LjV0MzUgOXQzNyAxNnQzMyAxN3QzNS41IDIxdDMyIDE5LjV6TTE2NjQgOTI4cTAgLTEzIC05LjUgLTIyLjV0LTIyLjUgLTkuNWgtOTZ2LTEyOGg5NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTk2di0xMjhoOTYNCnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE5MnEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjVoLTk2di0yMjRxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTEyMTZxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjE0NzJxMCA2NiA0NyAxMTN0MTEzIDQ3aDEyMTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN2LTIyNGg5NnExMyAwIDIyLjUgLTkuNXQ5LjUgLTIyLjV2LTE5MnpNMTQwOCAtOTZ2MTQ3MnEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjVoLTEyMTYNCnEtMTMgMCAtMjIuNSAtOS41dC05LjUgLTIyLjV2LTE0NzJxMCAtMTMgOS41IC0yMi41dDIyLjUgLTkuNWgxMjE2cTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkJCIiB1bmljb2RlPSImI3hmMmJiOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTEwMjQgNDA1cTAgNjQgLTkgMTE3LjV0LTI5LjUgMTAzdC02MC41IDc4dC05NyAyOC41cS02IC00IC0zMCAtMTh0LTM3LjUgLTIxLjV0LTM1LjUgLTE3LjV0LTQzIC0xNC41dC00MiAtNC41dC00MiA0LjV0LTQzIDE0LjV0LTM1LjUgMTcuNXQtMzcuNSAyMS41dC0zMCAxOHEtNTcgMCAtOTcgLTI4LjV0LTYwLjUgLTc4dC0yOS41IC0xMDN0LTkgLTExNy41dDM3IC0xMDYuNXQ5MSAtNDIuNWg1MTJxNTQgMCA5MSA0Mi41dDM3IDEwNi41eg0KTTg2NyA5MjVxMCA5NCAtNjYuNSAxNjAuNXQtMTYwLjUgNjYuNXQtMTYwLjUgLTY2LjV0LTY2LjUgLTE2MC41dDY2LjUgLTE2MC41dDE2MC41IC02Ni41dDE2MC41IDY2LjV0NjYuNSAxNjAuNXpNMTc5MiA0MTZ2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNTc2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDU3NnExNCAwIDIzIDl0OSAyM3pNMTc5MiA2NzZ2NTZxMCAxNSAtMTAuNSAyNS41dC0yNS41IDEwLjVoLTU2OA0KcS0xNSAwIC0yNS41IC0xMC41dC0xMC41IC0yNS41di01NnEwIC0xNSAxMC41IC0yNS41dDI1LjUgLTEwLjVoNTY4cTE1IDAgMjUuNSAxMC41dDEwLjUgMjUuNXpNMTc5MiA5Mjh2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNTc2cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDU3NnExNCAwIDIzIDl0OSAyM3pNMjA0OCAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0zNTJ2OTZxMCAxNCAtOSAyM3QtMjMgOQ0KaC02NHEtMTQgMCAtMjMgLTl0LTkgLTIzdi05NmgtNzY4djk2cTAgMTQgLTkgMjN0LTIzIDloLTY0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2aC0zNTJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE3MjhxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkJDIiB1bmljb2RlPSImI3hmMmJjOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTEwMjQgNDA1cTAgLTY0IC0zNyAtMTA2LjV0LTkxIC00Mi41aC01MTJxLTU0IDAgLTkxIDQyLjV0LTM3IDEwNi41dDkgMTE3LjV0MjkuNSAxMDN0NjAuNSA3OHQ5NyAyOC41cTYgLTQgMzAgLTE4dDM3LjUgLTIxLjV0MzUuNSAtMTcuNXQ0MyAtMTQuNXQ0MiAtNC41dDQyIDQuNXQ0MyAxNC41dDM1LjUgMTcuNXQzNy41IDIxLjV0MzAgMThxNTcgMCA5NyAtMjguNXQ2MC41IC03OHQyOS41IC0xMDN0OSAtMTE3LjV6TTg2NyA5MjUNCnEwIC05NCAtNjYuNSAtMTYwLjV0LTE2MC41IC02Ni41dC0xNjAuNSA2Ni41dC02Ni41IDE2MC41dDY2LjUgMTYwLjV0MTYwLjUgNjYuNXQxNjAuNSAtNjYuNXQ2Ni41IC0xNjAuNXpNMTc5MiA0ODB2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTU3NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg1NzZxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiA3MzJ2LTU2cTAgLTE1IC0xMC41IC0yNS41dC0yNS41IC0xMC41aC01NjgNCnEtMTUgMCAtMjUuNSAxMC41dC0xMC41IDI1LjV2NTZxMCAxNSAxMC41IDI1LjV0MjUuNSAxMC41aDU2OHExNSAwIDI1LjUgLTEwLjV0MTAuNSAtMjUuNXpNMTc5MiA5OTJ2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTU3NnEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg1NzZxMTQgMCAyMyAtOXQ5IC0yM3pNMTkyMCAzMnYxMjE2cTAgMTMgLTkuNSAyMi41dC0yMi41IDkuNWgtMTcyOHEtMTMgMCAtMjIuNSAtOS41DQp0LTkuNSAtMjIuNXYtMTIxNnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDM1MnY5NnEwIDE0IDkgMjN0MjMgOWg2NHExNCAwIDIzIC05dDkgLTIzdi05Nmg3Njh2OTZxMCAxNCA5IDIzdDIzIDloNjRxMTQgMCAyMyAtOXQ5IC0yM3YtOTZoMzUycTEzIDAgMjIuNSA5LjV0OS41IDIyLjV6TTIwNDggMTI0OHYtMTIxNnEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtMTcyOHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExMw0KdDExMyA0N2gxNzI4cTY2IDAgMTEzIC00N3Q0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJCRCIgdW5pY29kZT0iJiN4ZjJiZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNTIzIDE5N3EtMjIgMTU1IC04Ny41IDI1Ny41dC0xODQuNSAxMTguNXEtNjcgLTc0IC0xNTkuNSAtMTE1LjV0LTE5NS41IC00MS41dC0xOTUuNSA0MS41dC0xNTkuNSAxMTUuNXEtMTE5IC0xNiAtMTg0LjUgLTExOC41dC04Ny41IC0yNTcuNXExMDYgLTE1MCAyNzEgLTIzNy41dDM1NiAtODcuNXQzNTYgODcuNXQyNzEgMjM3LjV6TTEyODAgODk2cTAgMTU5IC0xMTIuNSAyNzEuNXQtMjcxLjUgMTEyLjV0LTI3MS41IC0xMTIuNQ0KdC0xMTIuNSAtMjcxLjV0MTEyLjUgLTI3MS41dDI3MS41IC0xMTIuNXQyNzEuNSAxMTIuNXQxMTIuNSAyNzEuNXpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ3LjV0LTE5MC41IC0yODZ0LTI4NS41IC0xOTEuNXQtMzQ5IC03MXEtMTgyIDAgLTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzF0Mjg2IC0xOTF0MTkxIC0yODZ0NzEgLTM0OHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQkUiIHVuaWNvZGU9IiYjeGYyYmU7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNODk2IDE1MzZxMTgyIDAgMzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4cTAgLTE4MSAtNzAuNSAtMzQ3dC0xOTAuNSAtMjg2dC0yODYgLTE5MS41dC0zNDkgLTcxLjV0LTM0OSA3MXQtMjg1LjUgMTkxLjV0LTE5MC41IDI4NnQtNzEgMzQ3LjV0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF6TTE1MTUgMTg1cTE0OSAyMDUgMTQ5IDQ1NXEwIDE1NiAtNjEgMjk4dC0xNjQgMjQ1dC0yNDUgMTY0dC0yOTggNjF0LTI5OCAtNjENCnQtMjQ1IC0xNjR0LTE2NCAtMjQ1dC02MSAtMjk4cTAgLTI1MCAxNDkgLTQ1NXE2NiAzMjcgMzA2IDMyN3ExMzEgLTEyOCAzMTMgLTEyOHQzMTMgMTI4cTI0MCAwIDMwNiAtMzI3ek0xMjgwIDgzMnEwIDE1OSAtMTEyLjUgMjcxLjV0LTI3MS41IDExMi41dC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDMCIgdW5pY29kZT0iJiN4ZjJjMDsiIA0KZD0iTTEyMDEgNzUycTQ3IC0xNCA4OS41IC0zOHQ4OSAtNzN0NzkuNSAtMTE1LjV0NTUgLTE3MnQyMiAtMjM2LjVxMCAtMTU0IC0xMDAgLTI2My41dC0yNDEgLTEwOS41aC04NTRxLTE0MSAwIC0yNDEgMTA5LjV0LTEwMCAyNjMuNXEwIDEzMSAyMiAyMzYuNXQ1NSAxNzJ0NzkuNSAxMTUuNXQ4OSA3M3Q4OS41IDM4cS03OSAxMjUgLTc5IDI3MnEwIDEwNCA0MC41IDE5OC41dDEwOS41IDE2My41dDE2My41IDEwOS41dDE5OC41IDQwLjUNCnQxOTguNSAtNDAuNXQxNjMuNSAtMTA5LjV0MTA5LjUgLTE2My41dDQwLjUgLTE5OC41cTAgLTE0NyAtNzkgLTI3MnpNNzY4IDE0MDhxLTE1OSAwIC0yNzEuNSAtMTEyLjV0LTExMi41IC0yNzEuNXQxMTIuNSAtMjcxLjV0MjcxLjUgLTExMi41dDI3MS41IDExMi41dDExMi41IDI3MS41dC0xMTIuNSAyNzEuNXQtMjcxLjUgMTEyLjV6TTExOTUgLTEyOHE4OCAwIDE1MC41IDcxLjV0NjIuNSAxNzMuNXEwIDIzOSAtNzguNSAzNzd0LTIyNS41IDE0NQ0KcS0xNDUgLTEyNyAtMzM2IC0xMjd0LTMzNiAxMjdxLTE0NyAtNyAtMjI1LjUgLTE0NXQtNzguNSAtMzc3cTAgLTEwMiA2Mi41IC0xNzMuNXQxNTAuNSAtNzEuNWg4NTR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkMxIiB1bmljb2RlPSImI3hmMmMxOyIgaG9yaXotYWR2LXg9IjEyODAiIA0KZD0iTTEwMjQgMjc4cTAgLTY0IC0zNyAtMTA3dC05MSAtNDNoLTUxMnEtNTQgMCAtOTEgNDN0LTM3IDEwN3Q5IDExOHQyOS41IDEwNHQ2MSA3OC41dDk2LjUgMjguNXE4MCAtNzUgMTg4IC03NXQxODggNzVxNTYgMCA5Ni41IC0yOC41dDYxIC03OC41dDI5LjUgLTEwNHQ5IC0xMTh6TTg3MCA3OTdxMCAtOTQgLTY3LjUgLTE2MC41dC0xNjIuNSAtNjYuNXQtMTYyLjUgNjYuNXQtNjcuNSAxNjAuNXQ2Ny41IDE2MC41dDE2Mi41IDY2LjUNCnQxNjIuNSAtNjYuNXQ2Ny41IC0xNjAuNXpNMTE1MiAtOTZ2MTM3NmgtMTAyNHYtMTM3NnEwIC0xMyA5LjUgLTIyLjV0MjIuNSAtOS41aDk2MHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0xMjgwIDEzNzZ2LTE0NzJxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTk2MHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTQ3MnEwIDY2IDQ3IDExM3QxMTMgNDdoMzUydi05NnEwIC0xNCA5IC0yM3QyMyAtOWgxOTJxMTQgMCAyMyA5dDkgMjN2OTZoMzUyDQpxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkMyIiB1bmljb2RlPSImI3hmMmMyOyIgaG9yaXotYWR2LXg9IjIwNDgiIA0KZD0iTTg5NiAzMjRxMCA1NCAtNy41IDEwMC41dC0yNC41IDkwdC01MSA2OC41dC04MSAyNXEtNjQgLTY0IC0xNTYgLTY0dC0xNTYgNjRxLTQ3IDAgLTgxIC0yNXQtNTEgLTY4LjV0LTI0LjUgLTkwdC03LjUgLTEwMC41cTAgLTU1IDMxLjUgLTkzLjV0NzUuNSAtMzguNWg0MjZxNDQgMCA3NS41IDM4LjV0MzEuNSA5My41ek03NjggNzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2dDU2IC0xMzZ0MTM2IC01NnQxMzYgNTYNCnQ1NiAxMzZ6TTE3OTIgMjg4djY0cTAgMTQgLTkgMjN0LTIzIDloLTcwNHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWg3MDRxMTQgMCAyMyA5dDkgMjN6TTE0MDggNTQ0djY0cTAgMTQgLTkgMjN0LTIzIDloLTMyMHEtMTQgMCAtMjMgLTl0LTkgLTIzdi02NHEwIC0xNCA5IC0yM3QyMyAtOWgzMjBxMTQgMCAyMyA5dDkgMjN6TTE3OTIgNTQ0djY0cTAgMTQgLTkgMjN0LTIzIDloLTE5MnEtMTQgMCAtMjMgLTl0LTkgLTIzDQp2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDE5MnExNCAwIDIzIDl0OSAyM3pNMTc5MiA4MDB2NjRxMCAxNCAtOSAyM3QtMjMgOWgtNzA0cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTY0cTAgLTE0IDkgLTIzdDIzIC05aDcwNHExNCAwIDIzIDl0OSAyM3pNMTI4IDExNTJoMTc5MnY5NnEwIDE0IC05IDIzdC0yMyA5aC0xNzI4cS0xNCAwIC0yMyAtOXQtOSAtMjN2LTk2ek0yMDQ4IDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE3MjgNCnEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExM3QxMTMgNDdoMTcyOHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzMiIHVuaWNvZGU9IiYjeGYyYzM7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNODk2IDMyNHEwIC01NSAtMzEuNSAtOTMuNXQtNzUuNSAtMzguNWgtNDI2cS00NCAwIC03NS41IDM4LjV0LTMxLjUgOTMuNXEwIDU0IDcuNSAxMDAuNXQyNC41IDkwdDUxIDY4LjV0ODEgMjVxNjQgLTY0IDE1NiAtNjR0MTU2IDY0cTQ3IDAgODEgLTI1dDUxIC02OC41dDI0LjUgLTkwdDcuNSAtMTAwLjV6TTc2OCA3NjhxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2dDU2IDEzNnQxMzYgNTZ0MTM2IC01NnQ1NiAtMTM2eg0KTTE3OTIgMzUydi02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC03MDRxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloNzA0cTE0IDAgMjMgLTl0OSAtMjN6TTE0MDggNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0zMjBxLTE0IDAgLTIzIDl0LTkgMjN2NjRxMCAxNCA5IDIzdDIzIDloMzIwcTE0IDAgMjMgLTl0OSAtMjN6TTE3OTIgNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xOTJxLTE0IDAgLTIzIDl0LTkgMjN2NjQNCnEwIDE0IDkgMjN0MjMgOWgxOTJxMTQgMCAyMyAtOXQ5IC0yM3pNMTc5MiA4NjR2LTY0cTAgLTE0IC05IC0yM3QtMjMgLTloLTcwNHEtMTQgMCAtMjMgOXQtOSAyM3Y2NHEwIDE0IDkgMjN0MjMgOWg3MDRxMTQgMCAyMyAtOXQ5IC0yM3pNMTkyMCAzMnYxMTIwaC0xNzkydi0xMTIwcTAgLTEzIDkuNSAtMjIuNXQyMi41IC05LjVoMTcyOHExMyAwIDIyLjUgOS41dDkuNSAyMi41ek0yMDQ4IDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDcNCmgtMTcyOHEtNjYgMCAtMTEzIDQ3dC00NyAxMTN2MTIxNnEwIDY2IDQ3IDExM3QxMTMgNDdoMTcyOHE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzQiIHVuaWNvZGU9IiYjeGYyYzQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTI1NSA3NDlxMCAzMTggLTEwNSA0NzQuNXQtMzMwIDE1Ni41cS0yMjIgMCAtMzI2IC0xNTd0LTEwNCAtNDc0cTAgLTMxNiAxMDQgLTQ3MS41dDMyNiAtMTU1LjVxNzQgMCAxMzEgMTdxLTIyIDQzIC0zOSA3M3QtNDQgNjV0LTUzLjUgNTYuNXQtNjMgMzZ0LTc3LjUgMTQuNXEtNDYgMCAtNzkgLTE2bC00OSA5N3ExMDUgOTEgMjc2IDkxcTEzMiAwIDIxNS41IC01NHQxNTAuNSAtMTU1cTY3IDE0OSA2NyA0MDJ6TTE2NDUgMTE3aDExNw0KcTMgLTI3IC0yIC02N3QtMjYuNSAtOTV0LTU4IC0xMDAuNXQtMTA3IC03OHQtMTYyLjUgLTMyLjVxLTcxIDAgLTEzMC41IDE5dC0xMDUuNSA1NnQtNzkgNzh0LTY2IDk2cS05NyAtMjcgLTIwNSAtMjdxLTE1MCAwIC0yOTIuNSA1OHQtMjUzIDE1OC41dC0xNzggMjQ5dC02Ny41IDMxNy41cTAgMTcwIDY3LjUgMzE5LjV0MTc4LjUgMjUwLjV0MjUzLjUgMTU5dDI5MS41IDU4cTEyMSAwIDIzOC41IC0zNnQyMTcgLTEwNnQxNzYgLTE2NC41DQp0MTE5LjUgLTIxOXQ0MyAtMjYxLjVxMCAtMTkwIC04MC41IC0zNDcuNXQtMjE4LjUgLTI2NC41cTQ3IC03MCA5My41IC0xMDYuNXQxMDQuNSAtMzYuNXE2MSAwIDk0IDM3LjV0MzggODUuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzUiIHVuaWNvZGU9IiYjeGYyYzU7IiBob3Jpei1hZHYteD0iMjMwNCIgDQpkPSJNNDUzIC0xMDFxMCAtMjEgLTE2IC0zNy41dC0zNyAtMTYuNXEtMSAwIC0xMyAzcS02MyAxNSAtMTYyIDE0MHEtMjI1IDI4NCAtMjI1IDY3NnEwIDM0MSAyMTMgNjE0cTM5IDUxIDk1IDEwMy41dDk0IDUyLjVxMTkgMCAzNSAtMTMuNXQxNiAtMzIuNXEwIC0yNyAtNjMgLTkwcS05OCAtMTAyIC0xNDcgLTE4NHEtMTE5IC0xOTkgLTExOSAtNDQ5cTAgLTI4MSAxMjMgLTQ5MXE1MCAtODUgMTM2IC0xNzNxMiAtMyAxNC41IC0xNnQxOS41IC0yMQ0KdDE3IC0yMC41dDE0LjUgLTIzLjV0NC41IC0yMXpNMTc5NiAzM3EwIC0yOSAtMTcuNSAtNDguNXQtNDYuNSAtMTkuNWgtMTA4MXEtMjYgMCAtNDUgMTl0LTE5IDQ1cTAgMjkgMTcuNSA0OC41dDQ2LjUgMTkuNWgxMDgxcTI2IDAgNDUgLTE5dDE5IC00NXpNMTU4MSA2NDRxMCAtMTM0IC02NyAtMjMzcS0yNSAtMzggLTY5LjUgLTc4LjV0LTgzLjUgLTYwLjVxLTE2IC0xMCAtMjcgLTEwcS03IDAgLTE1IDZ0LTggMTJxMCA5IDE5IDMwdDQyIDQ2DQp0NDIgNjcuNXQxOSA4OC41cTAgNzYgLTM1IDEzMHEtMjkgNDIgLTQ2IDQycS0zIDAgLTMgLTVxMCAtMTIgNy41IC0zNS41dDcuNSAtMzYuNXEwIC0yMiAtMjEuNSAtMzV0LTQ0LjUgLTEzcS02NiAwIC02NiA3NnEwIDE1IDEuNSA0NHQxLjUgNDRxMCAyNSAtMTAgNDZxLTEzIDI1IC00MiA1My41dC01MSAyOC41cS01IDAgLTcgLTAuNXQtMy41IC0yLjV0LTEuNSAtNnEwIC0yIDE2IC0yNnQxNiAtNTRxMCAtMzcgLTE5IC02OHQtNDYgLTU0DQp0LTUzLjUgLTQ2dC00NS41IC01NHQtMTkgLTY4cTAgLTk4IDQyIC0xNjBxMjkgLTQzIDc5IC02M3ExNiAtNSAxNyAtMTBxMSAtMiAxIC01cTAgLTE2IC0xOCAtMTZxLTYgMCAtMzMgMTFxLTExOSA0MyAtMTk1IDEzOS41dC03NiAyMTguNXEwIDU1IDI0LjUgMTE1LjV0NjAgMTE1dDcwLjUgMTA4LjV0NTkuNSAxMTMuNXQyNC41IDExMS41cTAgNTMgLTI1IDk0cS0yOSA0OCAtNTYgNjRxLTE5IDkgLTE5IDIxcTAgMjAgNDEgMjBxNTAgMCAxMTAgLTI5DQpxNDEgLTE5IDcxIC00NC41dDQ5LjUgLTUxdDMzLjUgLTYyLjV0MjIgLTY5dDE2IC04MHEwIC0xIDMgLTE3LjV0NC41IC0yNXQ1LjUgLTI1dDkgLTI3dDExIC0yMS41dDE0LjUgLTE2LjV0MTguNSAtNS41cTIzIDAgMzcgMTR0MTQgMzdxMCAyNSAtMjAgNjd0LTIwIDUydDEwIDEwcTI3IDAgOTMgLTcwcTcyIC03NiAxMDIuNSAtMTU2dDMwLjUgLTE4NnpNMjMwNCA2MTVxMCAtMjc0IC0xMzggLTUwM3EtMTkgLTMyIC00OCAtNzJ0LTY4IC04Ni41DQp0LTgxIC03N3QtNzQgLTMwLjVxLTE2IDAgLTMxIDE1LjV0LTE1IDMxLjVxMCAxNSAyOSA1MC41dDY4LjUgNzd0NDguNSA1Mi41cTE4MyAyMzAgMTgzIDUzMXEwIDEzMSAtMjAuNSAyMzV0LTcyLjUgMjExcS01OCAxMTkgLTE2MyAyMjhxLTIgMyAtMTMgMTMuNXQtMTYuNSAxNi41dC0xNSAxNy41dC0xNSAyMHQtOS41IDE4LjV0LTQgMTlxMCAxOSAxNiAzNS41dDM1IDE2LjVxNzAgMCAxOTYgLTE2OXE5OCAtMTMxIDE0NiAtMjczdDYwIC0zMTQNCnEyIC00MiAyIC02NHoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzYiIHVuaWNvZGU9IiYjeGYyYzY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTE4OSAyMjlsMTQ3IDY5M3E5IDQ0IC0xMC41IDYzdC01MS41IDdsLTg2NCAtMzMzcS0yOSAtMTEgLTM5LjUgLTI1dC0yLjUgLTI2LjV0MzIgLTE5LjVsMjIxIC02OWw1MTMgMzIzcTIxIDE0IDMyIDZxNyAtNSAtNCAtMTVsLTQxNSAtMzc1djB2MGwtMTYgLTIyOHEyMyAwIDQ1IDIybDEwOCAxMDRsMjI0IC0xNjVxNjQgLTM2IDgxIDM4ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MQ0KdC0zNDggNzF0LTI4NiAxOTF0LTE5MSAyODZ0LTcxIDM0OHQ3MSAzNDh0MTkxIDI4NnQyODYgMTkxdDM0OCA3MXQzNDggLTcxdDI4NiAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkM3IiB1bmljb2RlPSImI3hmMmM3OyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTY0MCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2cTAgNjAgMzUgMTEwdDkzIDcxdjkwN2gxMjh2LTkwN3E1OCAtMjEgOTMgLTcxdDM1IC0xMTB6TTc2OCAxOTJxMCA3NyAtMzQgMTQ0dC05NCAxMTJ2NzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2di03NjhxLTYwIC00NSAtOTQgLTExMnQtMzQgLTE0NHEwIC0xMzMgOTMuNSAtMjI2LjV0MjI2LjUgLTkzLjV0MjI2LjUgOTMuNQ0KdDkzLjUgMjI2LjV6TTg5NiAxOTJxMCAtMTg1IC0xMzEuNSAtMzE2LjV0LTMxNi41IC0xMzEuNXQtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTgyIDEyOCAzMTN2NzExcTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNXQyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXYtNzExcTEyOCAtMTMxIDEyOCAtMzEzek0xMDI0IDc2OHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMDI0di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEyODB2LTEyOGgtMTkyDQp2MTI4aDE5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQzgiIHVuaWNvZGU9IiYjeGYyYzg7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNjQwIDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA2MCAzNSAxMTB0OTMgNzF2NjUxaDEyOHYtNjUxcTU4IC0yMSA5MyAtNzF0MzUgLTExMHpNNzY4IDE5MnEwIDc3IC0zNCAxNDR0LTk0IDExMnY3NjhxMCA4MCAtNTYgMTM2dC0xMzYgNTZ0LTEzNiAtNTZ0LTU2IC0xMzZ2LTc2OHEtNjAgLTQ1IC05NCAtMTEydC0zNCAtMTQ0cTAgLTEzMyA5My41IC0yMjYuNXQyMjYuNSAtOTMuNXQyMjYuNSA5My41DQp0OTMuNSAyMjYuNXpNODk2IDE5MnEwIC0xODUgLTEzMS41IC0zMTYuNXQtMzE2LjUgLTEzMS41dC0zMTYuNSAxMzEuNXQtMTMxLjUgMzE2LjVxMCAxODIgMTI4IDMxM3Y3MTFxMCAxMzMgOTMuNSAyMjYuNXQyMjYuNSA5My41dDIyNi41IC05My41dDkzLjUgLTIyNi41di03MTFxMTI4IC0xMzEgMTI4IC0zMTN6TTEwMjQgNzY4di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEwMjR2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTI4MHYtMTI4aC0xOTINCnYxMjhoMTkyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDOSIgdW5pY29kZT0iJiN4ZjJjOTsiIGhvcml6LWFkdi14PSIxMDI0IiANCmQ9Ik02NDAgMTkycTAgLTgwIC01NiAtMTM2dC0xMzYgLTU2dC0xMzYgNTZ0LTU2IDEzNnEwIDYwIDM1IDExMHQ5MyA3MXYzOTVoMTI4di0zOTVxNTggLTIxIDkzIC03MXQzNSAtMTEwek03NjggMTkycTAgNzcgLTM0IDE0NHQtOTQgMTEydjc2OHEwIDgwIC01NiAxMzZ0LTEzNiA1NnQtMTM2IC01NnQtNTYgLTEzNnYtNzY4cS02MCAtNDUgLTk0IC0xMTJ0LTM0IC0xNDRxMCAtMTMzIDkzLjUgLTIyNi41dDIyNi41IC05My41dDIyNi41IDkzLjUNCnQ5My41IDIyNi41ek04OTYgMTkycTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDE4MiAxMjggMzEzdjcxMXEwIDEzMyA5My41IDIyNi41dDIyNi41IDkzLjV0MjI2LjUgLTkzLjV0OTMuNSAtMjI2LjV2LTcxMXExMjggLTEzMSAxMjggLTMxM3pNMTAyNCA3Njh2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTAyNHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMjgwdi0xMjhoLTE5Mg0KdjEyOGgxOTJ6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkNBIiB1bmljb2RlPSImI3hmMmNhOyIgaG9yaXotYWR2LXg9IjEwMjQiIA0KZD0iTTY0MCAxOTJxMCAtODAgLTU2IC0xMzZ0LTEzNiAtNTZ0LTEzNiA1NnQtNTYgMTM2cTAgNjAgMzUgMTEwdDkzIDcxdjEzOWgxMjh2LTEzOXE1OCAtMjEgOTMgLTcxdDM1IC0xMTB6TTc2OCAxOTJxMCA3NyAtMzQgMTQ0dC05NCAxMTJ2NzY4cTAgODAgLTU2IDEzNnQtMTM2IDU2dC0xMzYgLTU2dC01NiAtMTM2di03NjhxLTYwIC00NSAtOTQgLTExMnQtMzQgLTE0NHEwIC0xMzMgOTMuNSAtMjI2LjV0MjI2LjUgLTkzLjV0MjI2LjUgOTMuNQ0KdDkzLjUgMjI2LjV6TTg5NiAxOTJxMCAtMTg1IC0xMzEuNSAtMzE2LjV0LTMxNi41IC0xMzEuNXQtMzE2LjUgMTMxLjV0LTEzMS41IDMxNi41cTAgMTgyIDEyOCAzMTN2NzExcTAgMTMzIDkzLjUgMjI2LjV0MjI2LjUgOTMuNXQyMjYuNSAtOTMuNXQ5My41IC0yMjYuNXYtNzExcTEyOCAtMTMxIDEyOCAtMzEzek0xMDI0IDc2OHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMDI0di0xMjhoLTE5MnYxMjhoMTkyek0xMDI0IDEyODB2LTEyOGgtMTkyDQp2MTI4aDE5MnoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyQ0IiIHVuaWNvZGU9IiYjeGYyY2I7IiBob3Jpei1hZHYteD0iMTAyNCIgDQpkPSJNNjQwIDE5MnEwIC04MCAtNTYgLTEzNnQtMTM2IC01NnQtMTM2IDU2dC01NiAxMzZxMCA3OSA1NiAxMzUuNXQxMzYgNTYuNXQxMzYgLTU2LjV0NTYgLTEzNS41ek03NjggMTkycTAgNzcgLTM0IDE0NHQtOTQgMTEydjc2OHEwIDgwIC01NiAxMzZ0LTEzNiA1NnQtMTM2IC01NnQtNTYgLTEzNnYtNzY4cS02MCAtNDUgLTk0IC0xMTJ0LTM0IC0xNDRxMCAtMTMzIDkzLjUgLTIyNi41dDIyNi41IC05My41dDIyNi41IDkzLjV0OTMuNSAyMjYuNXoNCk04OTYgMTkycTAgLTE4NSAtMTMxLjUgLTMxNi41dC0zMTYuNSAtMTMxLjV0LTMxNi41IDEzMS41dC0xMzEuNSAzMTYuNXEwIDE4MiAxMjggMzEzdjcxMXEwIDEzMyA5My41IDIyNi41dDIyNi41IDkzLjV0MjI2LjUgLTkzLjV0OTMuNSAtMjI2LjV2LTcxMXExMjggLTEzMSAxMjggLTMxM3pNMTAyNCA3Njh2LTEyOGgtMTkydjEyOGgxOTJ6TTEwMjQgMTAyNHYtMTI4aC0xOTJ2MTI4aDE5MnpNMTAyNCAxMjgwdi0xMjhoLTE5MnYxMjhoMTkyeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDQyIgdW5pY29kZT0iJiN4ZjJjYzsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xNDMzIDEyODdxMTAgLTEwIDEwIC0yM3QtMTAgLTIzbC02MjYgLTYyNnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC04MiA4MnEtMTAgMTAgLTEwIDIzdDEwIDIzbDQ0IDQ0cS03MiA5MSAtODEuNSAyMDd0NDYuNSAyMTVxLTc0IDcxIC0xNzYgNzFxLTEwNiAwIC0xODEgLTc1dC03NSAtMTgxdi0xMjgwaC0yNTZ2MTI4MHEwIDEwNCA0MC41IDE5OC41dDEwOS41IDE2My41dDE2My41IDEwOS41dDE5OC41IDQwLjVxMTA2IDAgMjAxIC00MQ0KdDE2NiAtMTE1cTk0IDM5IDE5NyAyNC41dDE4NSAtNzkuNWw0NCA0NHExMCAxMCAyMyAxMHQyMyAtMTB6TTEzNDQgMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTE2MDAgODk2cS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl6TTE4NTYgMTAyNHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5DQp0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTIxNiA4OTZxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xNDA4IDgzMnEwIDI2IDE5IDQ1dDQ1IDE5dDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV6TTE3MjggODk2cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTA4OCA3NjgNCnEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEzNDQgNjQwcS0yNiAwIC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl0NDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl6TTE2MDAgNzY4cTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTIxNiA1MTJxLTI2IDAgLTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXQ0NSAtMTkNCnQxOSAtNDV0LTE5IC00NXQtNDUgLTE5ek0xNDcyIDY0MHEyNiAwIDQ1IC0xOXQxOSAtNDV0LTE5IC00NXQtNDUgLTE5dC00NSAxOXQtMTkgNDV0MTkgNDV0NDUgMTl6TTEwODggNTEycTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTM0NCA1MTJxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5ek0xMjE2IDM4NA0KcTI2IDAgNDUgLTE5dDE5IC00NXQtMTkgLTQ1dC00NSAtMTl0LTQ1IDE5dC0xOSA0NXQxOSA0NXQ0NSAxOXpNMTA4OCAyNTZxMjYgMCA0NSAtMTl0MTkgLTQ1dC0xOSAtNDV0LTQ1IC0xOXQtNDUgMTl0LTE5IDQ1dDE5IDQ1dDQ1IDE5eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJDRCIgdW5pY29kZT0iJiN4ZjJjZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xNjY0IDQ0OHYtMTkycTAgLTE2OSAtMTI4IC0yODZ2LTE5NHEwIC0xNCAtOSAtMjN0LTIzIC05aC02NHEtMTQgMCAtMjMgOXQtOSAyM3YxMThxLTYzIC0yMiAtMTI4IC0yMmgtNzY4cS02NSAwIC0xMjggMjJ2LTExMHEwIC0xNyAtOS41IC0yOC41dC0yMi41IC0xMS41aC02NHEtMTMgMCAtMjIuNSAxMS41dC05LjUgMjguNXYxODZxLTEyOCAxMTcgLTEyOCAyODZ2MTkyaDE1MzZ6TTcwNCA4NjRxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOQ0KdC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzY4IDkyOHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzA0IDk5MnEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNODMyIDk5MnEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzY4IDEwNTZxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOQ0KdC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNNzA0IDExMjBxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTE3OTIgNjA4di02NHEwIC0xNCAtOSAtMjN0LTIzIC05aC0xNzI4cS0xNCAwIC0yMyA5dC05IDIzdjY0cTAgMTQgOSAyM3QyMyA5aDk2djY0MHEwIDEwNiA3NSAxODF0MTgxIDc1cTEwOCAwIDE4NCAtNzhxNDYgMTkgOTggMTJ0OTMgLTM5bDIyIDIycTExIDExIDIyIDBsNDIgLTQyDQpxMTEgLTExIDAgLTIybC0zMTQgLTMxNHEtMTEgLTExIC0yMiAwbC00MiA0MnEtMTEgMTEgMCAyMmwyMiAyMnEtMzYgNDYgLTQwLjUgMTA0dDIzLjUgMTA4cS0zNyAzNSAtODggMzVxLTUzIDAgLTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV2LTY0MGgxNTA0cTE0IDAgMjMgLTl0OSAtMjN6TTg5NiAxMDU2cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek04MzIgMTEyMHEwIC0xNCAtOSAtMjN0LTIzIC05DQp0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek03NjggMTE4NHEwIC0xNCAtOSAtMjN0LTIzIC05dC0yMyA5dC05IDIzdDkgMjN0MjMgOXQyMyAtOXQ5IC0yM3pNOTYwIDExMjBxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTg5NiAxMTg0cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek04MzIgMTI0OHEwIC0xNCAtOSAtMjMNCnQtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek0xMDI0IDExODRxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6TTk2MCAxMjQ4cTAgLTE0IC05IC0yM3QtMjMgLTl0LTIzIDl0LTkgMjN0OSAyM3QyMyA5dDIzIC05dDkgLTIzek0xMDg4IDEyNDhxMCAtMTQgLTkgLTIzdC0yMyAtOXQtMjMgOXQtOSAyM3Q5IDIzdDIzIDl0MjMgLTl0OSAtMjN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkNFIiB1bmljb2RlPSImI3hmMmNlOyIgDQpkPSJNOTk0IDM0NHEwIC04NiAtMTcgLTE5N3EtMzEgLTIxNSAtNTUgLTMxM3EtMjIgLTkwIC0xNTIgLTkwdC0xNTIgOTBxLTI0IDk4IC01NSAzMTNxLTE3IDExMCAtMTcgMTk3cTAgMTY4IDIyNCAxNjh0MjI0IC0xNjh6TTE1MzYgNzY4cTAgLTI0MCAtMTM0IC00MzR0LTM1MCAtMjgwcS04IC0zIC0xNSAzdC02IDE1cTcgNDggMTAgNjZxNCAzMiA2IDQ3cTEgOSA5IDEycTE1OSA4MSAyNTUuNSAyMzR0OTYuNSAzMzdxMCAxODAgLTkxIDMzMC41DQp0LTI0NyAyMzQuNXQtMzM3IDc0cS0xMjQgLTcgLTIzNyAtNjF0LTE5My41IC0xNDAuNXQtMTI4IC0yMDJ0LTQ2LjUgLTI0MC41cTEgLTE4NCA5OSAtMzM2LjV0MjU3IC0yMzEuNXE3IC0zIDkgLTEycTMgLTIxIDYgLTQ1cTEgLTkgNSAtMzIuNXQ2IC0zNS41cTEgLTkgLTYuNSAtMTV0LTE1LjUgLTJxLTE0OCA1OCAtMjYxIDE2OS41dC0xNzMuNSAyNjR0LTUyLjUgMzE5LjVxNyAxNDMgNjYgMjczLjV0MTU0LjUgMjI3dDIyNSAxNTcuNXQyNzIuNSA3MA0KcTE2NCAxMCAzMTUuNSAtNDYuNXQyNjEgLTE2MC41dDE3NSAtMjUwLjV0NjUuNSAtMzA4LjV6TTk5NCA4MDBxMCAtOTMgLTY1LjUgLTE1OC41dC0xNTguNSAtNjUuNXQtMTU4LjUgNjUuNXQtNjUuNSAxNTguNXQ2NS41IDE1OC41dDE1OC41IDY1LjV0MTU4LjUgLTY1LjV0NjUuNSAtMTU4LjV6TTEyODIgNzY4cTAgLTEyMiAtNTMuNSAtMjI4LjV0LTE0Ni41IC0xNzcuNXEtOCAtNiAtMTYgLTJ0LTEwIDE0cS02IDUyIC0yOSA5MnEtNyAxMCAzIDIwDQpxNTggNTQgOTEgMTI3dDMzIDE1NXEwIDExMSAtNTguNSAyMDR0LTE1Ny41IDE0MS41dC0yMTIgMzYuNXEtMTMzIC0xNSAtMjI5IC0xMTN0LTEwOSAtMjMxcS0xMCAtOTIgMjMuNSAtMTc2dDk4LjUgLTE0NHExMCAtMTAgMyAtMjBxLTI0IC00MSAtMjkgLTkzcS0yIC05IC0xMCAtMTN0LTE2IDJxLTk1IDc0IC0xNDguNSAxODN0LTUxLjUgMjM0cTMgMTMxIDY5IDI0NHQxNzcgMTgxLjV0MjQxIDc0LjVxMTQ0IDcgMjY4IC02MHQxOTYuNSAtMTg3LjUNCnQ3Mi41IC0yNjMuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDAiIHVuaWNvZGU9IiYjeGYyZDA7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMjU2IDEyOGgxMjgwdjc2OGgtMTI4MHYtNzY4ek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQxIiB1bmljb2RlPSImI3hmMmQxOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTE3OTIgMjI0di0xOTJxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjE5MnEwIDY2IDQ3IDExM3QxMTMgNDdoMTQ3MnE2NiAwIDExMyAtNDd0NDcgLTExM3oiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDIiIHVuaWNvZGU9IiYjeGYyZDI7IiBob3Jpei1hZHYteD0iMjA0OCIgDQpkPSJNMjU2IDBoNzY4djUxMmgtNzY4di01MTJ6TTEyODAgNTEyaDUxMnY3NjhoLTc2OHYtMjU2aDk2cTY2IDAgMTEzIC00N3Q0NyAtMTEzdi0zNTJ6TTIwNDggMTM3NnYtOTYwcTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC02MDh2LTM1MnEwIC02NiAtNDcgLTExM3QtMTEzIC00N2gtOTYwcS02NiAwIC0xMTMgNDd0LTQ3IDExM3Y5NjBxMCA2NiA0NyAxMTN0MTEzIDQ3aDYwOHYzNTJxMCA2NiA0NyAxMTN0MTEzIDQ3aDk2MHE2NiAwIDExMyAtNDcNCnQ0NyAtMTEzeiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEMyIgdW5pY29kZT0iJiN4ZjJkMzsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik0xMTc1IDIxNWwxNDYgMTQ2cTEwIDEwIDEwIDIzdC0xMCAyM2wtMjMzIDIzM2wyMzMgMjMzcTEwIDEwIDEwIDIzdC0xMCAyM2wtMTQ2IDE0NnEtMTAgMTAgLTIzIDEwdC0yMyAtMTBsLTIzMyAtMjMzbC0yMzMgMjMzcS0xMCAxMCAtMjMgMTB0LTIzIC0xMGwtMTQ2IC0xNDZxLTEwIC0xMCAtMTAgLTIzdDEwIC0yM2wyMzMgLTIzM2wtMjMzIC0yMzNxLTEwIC0xMCAtMTAgLTIzdDEwIC0yM2wxNDYgLTE0NnExMCAtMTAgMjMgLTEwdDIzIDEwDQpsMjMzIDIzM2wyMzMgLTIzM3ExMCAtMTAgMjMgLTEwdDIzIDEwek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ0IiB1bmljb2RlPSImI3hmMmQ0OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEyNTcgNDI1bC0xNDYgLTE0NnEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xNjkgMTY5bC0xNjkgLTE2OXEtMTAgLTEwIC0yMyAtMTB0LTIzIDEwbC0xNDYgMTQ2cS0xMCAxMCAtMTAgMjN0MTAgMjNsMTY5IDE2OWwtMTY5IDE2OXEtMTAgMTAgLTEwIDIzdDEwIDIzbDE0NiAxNDZxMTAgMTAgMjMgMTB0MjMgLTEwbDE2OSAtMTY5bDE2OSAxNjlxMTAgMTAgMjMgMTB0MjMgLTEwbDE0NiAtMTQ2cTEwIC0xMCAxMCAtMjN0LTEwIC0yMw0KbC0xNjkgLTE2OWwxNjkgLTE2OXExMCAtMTAgMTAgLTIzdC0xMCAtMjN6TTI1NiAxMjhoMTI4MHYxMDI0aC0xMjgwdi0xMDI0ek0xNzkyIDEyNDh2LTEyMTZxMCAtNjYgLTQ3IC0xMTN0LTExMyAtNDdoLTE0NzJxLTY2IDAgLTExMyA0N3QtNDcgMTEzdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDE0NzJxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ1IiB1bmljb2RlPSImI3hmMmQ1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEwNzAgMzU4bDMwNiA1NjRoLTY1NGwtMzA2IC01NjRoNjU0ek0xNzkyIDY0MHEwIC0xODIgLTcxIC0zNDh0LTE5MSAtMjg2dC0yODYgLTE5MXQtMzQ4IC03MXQtMzQ4IDcxdC0yODYgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2IDE5MXQzNDggNzF0MzQ4IC03MXQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJENiIgdW5pY29kZT0iJiN4ZjJkNjsiIGhvcml6LWFkdi14PSIxNzk0IiANCmQ9Ik0xMjkxIDEwNjBxLTE1IDE3IC0zNSA4LjV0LTI2IC0yOC41dDUgLTM4cTE0IC0xNyA0MCAtMTQuNXQzNCAyMC41dC0xOCA1MnpNODk1IDgxNHEtOCAtOCAtMTkuNSAtOHQtMTguNSA4cS04IDggLTggMTl0OCAxOHE3IDggMTguNSA4dDE5LjUgLThxNyAtNyA3IC0xOHQtNyAtMTl6TTEwNjAgNzQwbC0zNSAtMzVxLTEyIC0xMyAtMjkuNSAtMTN0LTMwLjUgMTNsLTM4IDM4cS0xMiAxMyAtMTIgMzB0MTIgMzBsMzUgMzVxMTIgMTIgMjkuNSAxMg0KdDMwLjUgLTEybDM4IC0zOXExMiAtMTIgMTIgLTI5LjV0LTEyIC0yOS41ek05NTEgODcwcS03IC04IC0xOC41IC04dC0xOS41IDhxLTcgOCAtNyAxOXQ3IDE5cTggOCAxOSA4dDE5IC04dDggLTE5dC04IC0xOXpNMTM1NCA5NjhxLTM0IC02NCAtMTA3LjUgLTg1LjV0LTEyNy41IDE2LjVxLTM4IDI4IC02MSA2Ni41dC0yMSA4Ny41dDM5IDkydDc1LjUgNTN0NzAuNSAtNXQ3MCAtNTFxMiAtMiAxMyAtMTIuNXQxNC41IC0xMy41dDEzIC0xMy41DQp0MTIuNSAtMTUuNXQxMCAtMTUuNXQ4LjUgLTE4dDQgLTE4LjV0MSAtMjF0LTUgLTIydC05LjUgLTI0ek0xNTU1IDQ4NnEzIDIwIC04LjUgMzQuNXQtMjcuNSAyMS41dC0zMyAxN3QtMjMgMjBxLTQwIDcxIC04NCA5OC41dC0xMTMgMTEuNXExOSAxMyA0MCAxOC41dDMzIDQuNWwxMiAtMXEyIDQ1IC0zNCA5MHE2IDIwIDYuNSA0MC41dC0yLjUgMzAuNWwtMyAxMHE0MyAyNCA3MSA2NXQzNCA5MXExMCA4NCAtNDMgMTUwLjV0LTEzNyA3Ni41DQpxLTYwIDcgLTExNCAtMTguNXQtODIgLTc0LjVxLTMwIC01MSAtMzMuNSAtMTAxdDE0LjUgLTg3dDQzLjUgLTY0dDU2LjUgLTQycS00NSA0IC04OCAzNnQtNTcgODhxLTI4IDEwOCAzMiAyMjJxLTE2IDIxIC0yOSAzMnEtNTAgMCAtODkgLTE5cTE5IDI0IDQyIDM3dDM2IDE0bDEzIDFxMCA1MCAtMTMgNzhxLTEwIDIxIC0zMi41IDI4LjV0LTQ3IC0zLjV0LTM3LjUgLTQwcTIgNCA0IDdxLTcgLTI4IC02LjUgLTc1LjV0MTkgLTExN3Q0OC41IC0xMjIuNQ0KcS0yNSAtMTQgLTQ3IC0zNnEtMzUgLTE2IC04NS41IC03MC41dC04NC41IC0xMDEuNWwtMzMgLTQ2cS05MCAtMzQgLTE4MSAtMTI1LjV0LTc1IC0xNjIuNXExIC0xNiAxMSAtMjdxLTE1IC0xMiAtMzAgLTMwcS0yMSAtMjUgLTIxIC01NHQyMS41IC00MHQ2My41IDZxNDEgMTkgNzcgNDkuNXQ1NSA2MC41cS0yIDIgLTYuNSA1dC0yMC41IDcuNXQtMzMgMy41cTIzIDUgNTEgMTIuNXQ0MCAxMHQyNy41IDZ0MjYgNHQyMy41IDAuNXExNCAtNyAyMiAzNA0KcTcgMzcgNyA5MHEwIDEwMiAtNDAgMTUwcTEwNiAtMTAzIDEwMSAtMjE5cS0xIC0yOSAtMTUgLTUwdC0yNyAtMjdsLTEzIC02cS00IC03IC0xOSAtMzJ0LTI2IC00NS41dC0yNi41IC01MnQtMjUgLTYxdC0xNyAtNjN0LTYuNSAtNjYuNXQxMCAtNjNxLTM1IDU0IC0zNyA4MHEtMjIgLTI0IC0zNC41IC0zOXQtMzMuNSAtNDJ0LTMwLjUgLTQ2dC0xNi41IC00MXQtMC41IC0zOHQyNS41IC0yN3E0NSAtMjUgMTQ0IDY0dDE5MC41IDIyMS41DQp0MTIyLjUgMjI4LjVxODYgNTIgMTQ1IDExNS41dDg2IDExOS41cTQ3IC05MyAxNTQgLTE3OHExMDQgLTgzIDE2NyAtODBxMzkgMiA0NiA0M3pNMTc5NCA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2LjUgLTE5MXQtMzQ4LjUgLTcxdC0zNDguNSA3MXQtMjg2LjUgMTkxdC0xOTEgMjg2dC03MSAzNDh0NzEgMzQ4dDE5MSAyODZ0Mjg2LjUgMTkxdDM0OC41IDcxdDM0OC41IC03MXQyODYuNSAtMTkxdDE5MSAtMjg2dDcxIC0zNDh6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ3IiB1bmljb2RlPSImI3hmMmQ3OyIgDQpkPSJNNTE4IDEzNTN2LTY1NXExMDMgLTEgMTkxLjUgMS41dDEyNS41IDUuNWwzNyAzcTY4IDIgOTAuNSAyNC41dDM5LjUgOTQuNWwzMyAxNDJoMTAzbC0xNCAtMzIybDcgLTMxOWgtMTAzbC0yOSAxMjdxLTE1IDY4IC00NSA5M3QtODQgMjZxLTg3IDggLTM1MiA4di01NTZxMCAtNzggNDMuNSAtMTE1LjV0MTMzLjUgLTM3LjVoMzU3cTM1IDAgNTkuNSAydDU1IDcuNXQ1NCAxOHQ0OC41IDMydDQ2IDUwLjV0MzkgNzNsOTMgMjE2aDg5DQpxLTYgLTM3IC0zMS41IC0yNTJ0LTMwLjUgLTI3NnEtMTQ2IDUgLTI2My41IDh0LTE2Mi41IDRoLTQ0aC02MjhsLTM3NiAtMTJ2MTAybDEyNyAyNXE2NyAxMyA5MS41IDM3dDI1LjUgNzlsOCA2NDNxMyA0MDIgLTggNjQ1cS0yIDYxIC0yNS41IDg0dC05MS41IDM2bC0xMjcgMjR2MTAybDM3NiAtMTJoNzAycTEzOSAwIDM3NCAyN3EtNiAtNjggLTE0IC0xOTQuNXQtMTIgLTIxOS41bC01IC05MmgtOTNsLTMyIDEyNHEtMzEgMTIxIC03NCAxNzkuNQ0KdC0xMTMgNTguNWgtNTQ4cS0yOCAwIC0zNS41IC04LjV0LTcuNSAtMzAuNXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRDgiIHVuaWNvZGU9IiYjeGYyZDg7IiANCmQ9Ik05MjIgNzM5di0xODJxMCAtNCAwLjUgLTE1dDAgLTE1bC0xLjUgLTEydC0zLjUgLTExLjV0LTYuNSAtNy41dC0xMSAtNS41dC0xNiAtMS41djMwOXE5IDAgMTYgLTF0MTEgLTV0Ni41IC01LjV0My41IC05LjV0MSAtMTAuNXYtMTMuNXYtMTR6TTEyMzggNjQzdi0xMjFxMCAtMSAwLjUgLTEyLjV0MCAtMTUuNXQtMi41IC0xMS41dC03LjUgLTEwLjV0LTEzLjUgLTNxLTkgMCAtMTQgOXEtNCAxMCAtNCAxNjV2N3Y4LjV2OXQxLjUgOC41bDMuNSA3DQp0NSA1LjV0OCAxLjVxNiAwIDEwIC0xLjV0Ni41IC00LjV0NCAtNnQyIC04LjV0MC41IC04di05LjV2LTl6TTE4MCA0MDdoMTIydjQ3MmgtMTIydi00NzJ6TTYxNCA0MDdoMTA2djQ3MmgtMTU5bC0yOCAtMjIxcS0yMCAxNDggLTMyIDIyMWgtMTU4di00NzJoMTA3djMxMmw0NSAtMzEyaDc2bDQzIDMxOXYtMzE5ek0xMDM5IDcxMnEwIDY3IC01IDkwcS0zIDE2IC0xMSAyOC41dC0xNyAyMC41dC0yNSAxNHQtMjYuNSA4LjV0LTMxIDR0LTI5IDEuNQ0KaC0yOS41aC0xMmgtOTF2LTQ3Mmg1NnExNjkgLTEgMTk3IDI0LjV0MjUgMTgwLjVxLTEgNjIgLTEgMTAwek0xMzU2IDUxNXYxMzNxMCAyOSAtMiA0NXQtOS41IDMzLjV0LTI0LjUgMjV0LTQ2IDcuNXEtNDYgMCAtNzcgLTM0djE1NGgtMTE3di00NzJoMTEwbDcgMzBxMzAgLTM2IDc3IC0zNnE1MCAwIDY2IDMwLjV0MTYgODMuNXpNMTUzNiAxMjQ4di0xMjE2cTAgLTY2IC00NyAtMTEzdC0xMTMgLTQ3aC0xMjE2cS02NiAwIC0xMTMgNDd0LTQ3IDExMw0KdjEyMTZxMCA2NiA0NyAxMTN0MTEzIDQ3aDEyMTZxNjYgMCAxMTMgLTQ3dDQ3IC0xMTN6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkQ5IiB1bmljb2RlPSImI3hmMmQ5OyIgaG9yaXotYWR2LXg9IjIxNzYiIA0KZD0iTTExNDMgLTE5N3EtNiAxIC0xMSA0cS0xMyA4IC0zNiAyM3QtODYgNjV0LTExNi41IDEwNC41dC0xMTIgMTQwdC04OS41IDE3Mi41cS0xNyAzIC0xNzUgMzdxNjYgLTIxMyAyMzUgLTM2MnQzOTEgLTE4NHpNNTAyIDQwOWwxNjggLTI4cS0yNSA3NiAtNDEgMTY3LjV0LTE5IDE0NS41bC00IDUzcS04NCAtODIgLTEyMSAtMjI0cTUgLTY1IDE3IC0xMTR6TTYxMiAxMDE4cS00MyAtNjQgLTc3IC0xNDhxNDQgNDYgNzQgNjh6TTIwNDkgNTg0DQpxMCAxNjEgLTYyIDMwN3QtMTY3LjUgMjUydC0yNTAuNSAxNjguNXQtMzA0IDYyLjVxLTE0NyAwIC0yODEgLTUyLjV0LTI0MCAtMTQ4LjVxLTMwIC01OCAtNDUgLTE2MHE2MCA1MSAxNDMgODMuNXQxNTguNSA0M3QxNDMgMTMuNXQxMDguNSAtMWw0MCAtM3EzMyAtMSA1MyAtMTUuNXQyNC41IC0zM3Q2LjUgLTM3dC0xIC0yOC41cS0xMjYgMTEgLTIyNy41IDAuNXQtMTgzIC00My41dC0xNDIuNSAtNzEuNXQtMTMxIC05OC41DQpxNCAtMzYgMTEuNSAtOTIuNXQzNS41IC0xNzh0NjIgLTE3OS41cTEyMyAtNiAyNDcuNSAxNC41dDIxNC41IDUzLjV0MTYyLjUgNjd0MTA5LjUgNTlsMzcgMjRxMjIgMTYgMzkuNSAyMC41dDMwLjUgLTV0MTcgLTM0LjVxMTQgLTk3IC0zOSAtMTIxcS0yMDggLTk3IC00NjcgLTEzNHEtMTM1IC0yMCAtMzE3IC0xNnE0MSAtOTYgMTEwIC0xNzYuNXQxMzcgLTEyN3QxMzAuNSAtNzl0MTAxLjUgLTQzLjVsMzkgLTEycTE0MyAtMjMgMjYzIDE1DQpxMTk1IDk5IDMxNCAyODl0MTE5IDQxOHpNMjEyMyA2MjFxLTE0IC0xMzUgLTQwIC0yMTJxLTcwIC0yMDggLTE4MS41IC0zNDYuNXQtMzE4LjUgLTI1My41cS00OCAtMzMgLTgyIC00NHEtNzIgLTI2IC0xNjMgLTE2cS0zNiAtMyAtNzMgLTNxLTI4MyAwIC01MDQuNSAxNzN0LTI5NS41IDQ0MnEtMSAwIC00IDAuNXQtNSAwLjVxLTYgLTUwIDIuNSAtMTEyLjV0MjYgLTExNXQzNiAtOTh0MzEuNSAtNzEuNWwxNCAtMjZxOCAtMTIgNTQgLTgyDQpxLTcxIDM4IC0xMjQuNSAxMDYuNXQtNzguNSAxNDB0LTM5LjUgMTM3dC0xNy41IDEwNy41bC0yIDQycS01IDIgLTMzLjUgMTIuNXQtNDguNSAxOHQtNTMgMjAuNXQtNTcuNSAyNXQtNTAgMjUuNXQtNDIuNSAyN3QtMjUgMjUuNXExOSAtMTAgNTAuNSAtMjUuNXQxMTMgLTQ1LjV0MTQ1LjUgLTM4bDIgMzJxMTEgMTQ5IDk0IDI5MHE0MSAyMDIgMTc2IDM2NXEyOCAxMTUgODEgMjE0cTE1IDI4IDMyIDQ1dDQ5IDMycTE1OCA3NCAzMDMuNSAxMDQNCnQzMDIgMTF0MzA2LjUgLTk3cTIyMCAtMTE1IDMzMyAtMzM2dDg3IC00NzR6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkRBIiB1bmljb2RlPSImI3hmMmRhOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KZD0iTTEzNDEgNzUycTI5IDQ0IC02LjUgMTI5LjV0LTEyMS41IDE0Mi41cS01OCAzOSAtMTI1LjUgNTMuNXQtMTE4IDQuNXQtNjguNSAtMzdxLTEyIC0yMyAtNC41IC0yOHQ0Mi41IC0xMHEyMyAtMyAzOC41IC01dDQ0LjUgLTkuNXQ1NiAtMTcuNXEzNiAtMTMgNjcuNSAtMzEuNXQ1MyAtMzd0NDAgLTM4LjV0MzAuNSAtMzh0MjIgLTM0LjV0MTYuNSAtMjguNXQxMiAtMTguNXQxMC41IC02dDExIDkuNXpNMTcwNCAxNzgNCnEtNTIgLTEyNyAtMTQ4LjUgLTIyMHQtMjE0LjUgLTE0MS41dC0yNTMgLTYwLjV0LTI2NiAxMy41dC0yNTEgOTF0LTIxMCAxNjEuNXQtMTQxLjUgMjM1LjV0LTQ2LjUgMzAzLjVxMSA0MSA4LjUgODQuNXQxMi41IDY0dDI0IDgwLjV0MjMgNzNxLTUxIC0yMDggMSAtMzk3dDE3MyAtMzE4dDI5MSAtMjA2dDM0NiAtODN0MzQ5IDc0LjV0Mjg5IDI0NC41cTIwIDI3IDE4IDE0cTAgLTQgLTQgLTE0ek0xNDY1IDYyN3EwIC0xMDQgLTQwLjUgLTE5OQ0KdC0xMDguNSAtMTY0dC0xNjIgLTEwOS41dC0xOTggLTQwLjV0LTE5OCA0MC41dC0xNjIgMTA5LjV0LTEwOC41IDE2NHQtNDAuNSAxOTl0NDAuNSAxOTl0MTA4LjUgMTY0dDE2MiAxMDkuNXQxOTggNDAuNXQxOTggLTQwLjV0MTYyIC0xMDkuNXQxMDguNSAtMTY0dDQwLjUgLTE5OXpNMTc1MiA5MTVxLTY1IDE0NyAtMTgwLjUgMjUxdC0yNTMgMTUzLjV0LTI5MiA1My41dC0zMDEgLTM2LjV0LTI3NS41IC0xMjl0LTIyMCAtMjExLjV0LTEzMSAtMjk3DQp0LTEwIC0zNzNxLTQ5IDE2MSAtNTEuNSAzMTEuNXQzNS41IDI3Mi41dDEwOSAyMjd0MTY1LjUgMTgwLjV0MjA3IDEyNnQyMzIgNzF0MjQyLjUgOXQyMzYgLTU0dDIxNiAtMTI0LjV0MTc4IC0xOTdxMzMgLTUwIDYyIC0xMjF0MzEgLTExMnpNMTY5MCA1NzNxMTIgMjQ0IC0xMzYuNSA0MTZ0LTM5Ni41IDI0MHEtOCAwIC0xMCA1dDI0IDhxMTI1IC00IDIzMCAtNTB0MTczIC0xMjB0MTE2IC0xNjguNXQ1OC41IC0xOTl0LTEgLTIwOA0KdC02MS41IC0xOTcuNXQtMTIyLjUgLTE2N3QtMTg1IC0xMTcuNXQtMjQ4LjUgLTQ2LjVxMTA4IDMwIDIwMS41IDgwdDE3NCAxMjN0MTI5LjUgMTc2LjV0NTUgMjI1LjV6IiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkRCIiB1bmljb2RlPSImI3hmMmRiOyIgDQpkPSJNMTkyIDI1NnYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNnEwIDE2IDE2IDE2aDExMnpNMTkyIDUxMnYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNnEwIDE2IDE2IDE2aDExMnpNMTkyIDc2OHYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNg0KcTAgMTYgMTYgMTZoMTEyek0xOTIgMTAyNHYtMTI4aC0xMTJxLTE2IDAgLTE2IDE2djE2aC00OHEtMTYgMCAtMTYgMTZ2MzJxMCAxNiAxNiAxNmg0OHYxNnEwIDE2IDE2IDE2aDExMnpNMTkyIDEyODB2LTEyOGgtMTEycS0xNiAwIC0xNiAxNnYxNmgtNDhxLTE2IDAgLTE2IDE2djMycTAgMTYgMTYgMTZoNDh2MTZxMCAxNiAxNiAxNmgxMTJ6TTEyODAgMTQ0MHYtMTQ3MnEwIC00MCAtMjggLTY4dC02OCAtMjhoLTgzMnEtNDAgMCAtNjggMjgNCnQtMjggNjh2MTQ3MnEwIDQwIDI4IDY4dDY4IDI4aDgzMnE0MCAwIDY4IC0yOHQyOCAtNjh6TTE1MzYgMjA4di0zMnEwIC0xNiAtMTYgLTE2aC00OHYtMTZxMCAtMTYgLTE2IC0xNmgtMTEydjEyOGgxMTJxMTYgMCAxNiAtMTZ2LTE2aDQ4cTE2IDAgMTYgLTE2ek0xNTM2IDQ2NHYtMzJxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNmg0OHExNiAwIDE2IC0xNnpNMTUzNiA3MjB2LTMyDQpxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNmg0OHExNiAwIDE2IC0xNnpNMTUzNiA5NzZ2LTMycTAgLTE2IC0xNiAtMTZoLTQ4di0xNnEwIC0xNiAtMTYgLTE2aC0xMTJ2MTI4aDExMnExNiAwIDE2IC0xNnYtMTZoNDhxMTYgMCAxNiAtMTZ6TTE1MzYgMTIzMnYtMzJxMCAtMTYgLTE2IC0xNmgtNDh2LTE2cTAgLTE2IC0xNiAtMTZoLTExMnYxMjhoMTEycTE2IDAgMTYgLTE2di0xNg0KaDQ4cTE2IDAgMTYgLTE2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJEQyIgdW5pY29kZT0iJiN4ZjJkYzsiIGhvcml6LWFkdi14PSIxNjY0IiANCmQ9Ik0xNTY2IDQxOWwtMTY3IC0zM2wxODYgLTEwN3EyMyAtMTMgMjkuNSAtMzguNXQtNi41IC00OC41cS0xNCAtMjMgLTM5IC0yOS41dC00OCA2LjVsLTE4NiAxMDZsNTUgLTE2MHExMyAtMzggLTEyIC02My41dC02MC41IC0yMC41dC00OC41IDQybC0xMDIgMzAwbC0yNzEgMTU2di0zMTNsMjA4IC0yMzhxMTYgLTE4IDE3IC0zOXQtMTEgLTM2LjV0LTI4LjUgLTI1dC0zNyAtNS41dC0zNi41IDIybC0xMTIgMTI4di0yMTRxMCAtMjYgLTE5IC00NQ0KdC00NSAtMTl0LTQ1IDE5dC0xOSA0NXYyMTRsLTExMiAtMTI4cS0xNiAtMTggLTM2LjUgLTIydC0zNyA1LjV0LTI4LjUgMjV0LTExIDM2LjV0MTcgMzlsMjA4IDIzOHYzMTNsLTI3MSAtMTU2bC0xMDIgLTMwMHEtMTMgLTM3IC00OC41IC00MnQtNjAuNSAyMC41dC0xMiA2My41bDU1IDE2MGwtMTg2IC0xMDZxLTIzIC0xMyAtNDggLTYuNXQtMzkgMjkuNXEtMTMgMjMgLTYuNSA0OC41dDI5LjUgMzguNWwxODYgMTA3bC0xNjcgMzMNCnEtMjkgNiAtNDIgMjl0LTguNSA0Ni41dDI1LjUgNDB0NTAgMTAuNWwzMTAgLTYybDI3MSAxNTdsLTI3MSAxNTdsLTMxMCAtNjJxLTQgLTEgLTEzIC0xcS0yNyAwIC00NCAxOHQtMTkgNDB0MTEgNDN0NDAgMjZsMTY3IDMzbC0xODYgMTA3cS0yMyAxMyAtMjkuNSAzOC41dDYuNSA0OC41dDM5IDMwdDQ4IC03bDE4NiAtMTA2bC01NSAxNjBxLTEzIDM4IDEyIDYzLjV0NjAuNSAyMC41dDQ4LjUgLTQybDEwMiAtMzAwbDI3MSAtMTU2djMxMw0KbC0yMDggMjM4cS0xNiAxOCAtMTcgMzl0MTEgMzYuNXQyOC41IDI1dDM3IDUuNXQzNi41IC0yMmwxMTIgLTEyOHYyMTRxMCAyNiAxOSA0NXQ0NSAxOXQ0NSAtMTl0MTkgLTQ1di0yMTRsMTEyIDEyOHExNiAxOCAzNi41IDIydDM3IC01LjV0MjguNSAtMjV0MTEgLTM2LjV0LTE3IC0zOWwtMjA4IC0yMzh2LTMxM2wyNzEgMTU2bDEwMiAzMDBxMTMgMzcgNDguNSA0MnQ2MC41IC0yMC41dDEyIC02My41bC01NSAtMTYwbDE4NiAxMDYNCnEyMyAxMyA0OCA2LjV0MzkgLTI5LjVxMTMgLTIzIDYuNSAtNDguNXQtMjkuNSAtMzguNWwtMTg2IC0xMDdsMTY3IC0zM3EyNyAtNSA0MCAtMjZ0MTEgLTQzdC0xOSAtNDB0LTQ0IC0xOHEtOSAwIC0xMyAxbC0zMTAgNjJsLTI3MSAtMTU3bDI3MSAtMTU3bDMxMCA2MnEyOSA2IDUwIC0xMC41dDI1LjUgLTQwdC04LjUgLTQ2LjV0LTQyIC0yOXoiIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyREQiIHVuaWNvZGU9IiYjeGYyZGQ7IiBob3Jpei1hZHYteD0iMTc5MiIgDQpkPSJNMTQ3MyA2MDdxNyAxMTggLTMzIDIyNi41dC0xMTMgMTg5dC0xNzcgMTMxdC0yMjEgNTcuNXEtMTE2IDcgLTIyNS41IC0zMnQtMTkyIC0xMTAuNXQtMTM1IC0xNzV0LTU5LjUgLTIyMC41cS03IC0xMTggMzMgLTIyNi41dDExMyAtMTg5dDE3Ny41IC0xMzF0MjIxLjUgLTU3LjVxMTU1IC05IDI5MyA1OXQyMjQgMTk1LjV0OTQgMjgzLjV6TTE3OTIgMTUzNmwtMzQ5IC0zNDhxMTIwIC0xMTcgMTgwLjUgLTI3MnQ1MC41IC0zMjENCnEtMTEgLTE4MyAtMTAyIC0zMzl0LTI0MSAtMjU1LjV0LTMzMiAtMTI0LjVsLTk5OSAtMTMybDM0NyAzNDdxLTEyMCAxMTYgLTE4MC41IDI3MS41dC01MC41IDMyMS41cTExIDE4NCAxMDIgMzQwdDI0MS41IDI1NS41dDMzMi41IDEyNC41cTE2NyAyMiA1MDAgNjZ0NTAwIDY2eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJERSIgdW5pY29kZT0iJiN4ZjJkZTsiIGhvcml6LWFkdi14PSIxNzkyIiANCmQ9Ik05NDggNTA4bDE2MyAtMzI5aC01MWwtMTc1IDM1MGwtMTcxIC0zNTBoLTQ5bDE3OSAzNzRsLTc4IDMzbDIxIDQ5bDI0MCAtMTAybC0yMSAtNTB6TTU2MyAxMTAwbDMwNCAtMTMwbC0xMzAgLTMwNGwtMzA0IDEzMHpNOTA3IDkxNWwyNDAgLTEwM2wtMTAzIC0yMzlsLTIzOSAxMDJ6TTExODggNzY1bDE5MSAtODFsLTgyIC0xOTBsLTE5MCA4MXpNMTY4MCA2NDBxMCAxNTkgLTYyIDMwNHQtMTY3LjUgMjUwLjV0LTI1MC41IDE2Ny41dC0zMDQgNjINCnQtMzA0IC02MnQtMjUwLjUgLTE2Ny41dC0xNjcuNSAtMjUwLjV0LTYyIC0zMDR0NjIgLTMwNHQxNjcuNSAtMjUwLjV0MjUwLjUgLTE2Ny41dDMwNCAtNjJ0MzA0IDYydDI1MC41IDE2Ny41dDE2Ny41IDI1MC41dDYyIDMwNHpNMTc5MiA2NDBxMCAtMTgyIC03MSAtMzQ4dC0xOTEgLTI4NnQtMjg2IC0xOTF0LTM0OCAtNzF0LTM0OCA3MXQtMjg2IDE5MXQtMTkxIDI4NnQtNzEgMzQ4dDcxIDM0OHQxOTEgMjg2dDI4NiAxOTF0MzQ4IDcxdDM0OCAtNzENCnQyODYgLTE5MXQxOTEgLTI4NnQ3MSAtMzQ4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFMCIgdW5pY29kZT0iJiN4ZjJlMDsiIGhvcml6LWFkdi14PSIxOTIwIiANCmQ9Ik0xMzM0IDMwMnEtNCAyNCAtMjcuNSAzNHQtNDkuNSAxMC41dC00OC41IDEyLjV0LTI1LjUgMzhxLTUgNDcgMzMgMTM5LjV0NzUgMTgxdDMyIDEyNy41cS0xNCAxMDEgLTExNyAxMDNxLTQ1IDEgLTc1IC0xNmwtMyAtMmwtNSAtMi41dC00LjUgLTJ0LTUgLTJ0LTUgLTAuNXQtNiAxLjV0LTYgMy41dC02LjUgNXEtMyAyIC05IDguNXQtOSA5dC04LjUgNy41dC05LjUgNy41dC05LjUgNS41dC0xMSA0LjV0LTExLjUgMi41cS0zMCA1IC00OCAtMw0KdC00NSAtMzFxLTEgLTEgLTkgLTguNXQtMTIuNSAtMTF0LTE1IC0xMHQtMTYuNSAtNS41dC0xNyAzcS01NCAyNyAtODQgNDBxLTQxIDE4IC05NCAtNXQtNzYgLTY1cS0xNiAtMjggLTQxIC05OC41dC00My41IC0xMzIuNXQtNDAgLTEzNHQtMjEuNSAtNzNxLTIyIC02OSAxOC41IC0xMTl0MTEwLjUgLTQ2cTMwIDIgNTAuNSAxNXQzOC41IDQ2cTcgMTMgNzkgMTk5LjV0NzcgMTk0LjVxNiAxMSAyMS41IDE4dDI5LjUgMHEyNyAtMTUgMjEgLTUzDQpxLTIgLTE4IC01MSAtMTM5LjV0LTUwIC0xMzIuNXEtNiAtMzggMTkuNSAtNTYuNXQ2MC41IC03dDU1IDQ5LjVxNCA4IDQ1LjUgOTJ0ODEuNSAxNjMuNXQ0NiA4OC41cTIwIDI5IDQxIDI4cTI5IDAgMjUgLTM4cS0yIC0xNiAtNjUuNSAtMTQ3LjV0LTcwLjUgLTE1OS41cS0xMiAtNTMgMTMgLTEwM3Q3NCAtNzRxMTcgLTkgNTEgLTE1LjV0NzEuNSAtOHQ2Mi41IDE0dDIwIDQ4LjV6TTM4MyA4NnEzIC0xNSAtNSAtMjcuNXQtMjMgLTE1LjUNCnEtMTQgLTMgLTI2LjUgNXQtMTUuNSAyM3EtMyAxNCA1IDI3dDIyIDE2dDI3IC01dDE2IC0yM3pNOTUzIC0xNzdxMTIgLTE3IDguNSAtMzcuNXQtMjAuNSAtMzIuNXQtMzcuNSAtOHQtMzIuNSAyMXEtMTEgMTcgLTcuNSAzNy41dDIwLjUgMzIuNXQzNy41IDh0MzEuNSAtMjF6TTE3NyA2MzVxLTE4IC0yNyAtNDkuNSAtMzN0LTU3LjUgMTNxLTI2IDE4IC0zMiA1MHQxMiA1OHExOCAyNyA0OS41IDMzdDU3LjUgLTEycTI2IC0xOSAzMiAtNTAuNQ0KdC0xMiAtNTguNXpNMTQ2NyAtNDJxMTkgLTI4IDEzIC02MS41dC0zNCAtNTIuNXQtNjAuNSAtMTN0LTUxLjUgMzR0LTEzIDYxdDMzIDUzcTI4IDE5IDYwLjUgMTN0NTIuNSAtMzR6TTE1NzkgNTYycTY5IC0xMTMgNDIuNSAtMjQ0LjV0LTEzNC41IC0yMDcuNXEtOTAgLTYzIC0xOTkgLTYwcS0yMCAtODAgLTg0LjUgLTEyN3QtMTQzLjUgLTQ0LjV0LTE0MCA1Ny41cS0xMiAtOSAtMTMgLTEwcS0xMDMgLTcxIC0yMjUgLTQ4LjV0LTE5MyAxMjYuNQ0KcS01MCA3MyAtNTMgMTY0cS04MyAxNCAtMTQyLjUgNzAuNXQtODAuNSAxMjh0LTIgMTUydDgxIDEzOC41cS0zNiA2MCAtMzggMTI4dDI0LjUgMTI1dDc5LjUgOTguNXQxMjEgNTAuNXEzMiA4NSA5OSAxNDh0MTQ2LjUgOTEuNXQxNjggMTd0MTU5LjUgLTY2LjVxNzIgMjEgMTQwIDE3LjV0MTI4LjUgLTM2dDEwNC41IC04MHQ2Ny41IC0xMTV0MTcuNSAtMTQwLjVxNTIgLTE2IDg3IC01N3Q0NS41IC04OXQtNS41IC05OS41dC01OCAtODcuNXoNCk00NTUgMTIyMnExNCAtMjAgOS41IC00NC41dC0yNC41IC0zOC41cS0xOSAtMTQgLTQzLjUgLTkuNXQtMzcuNSAyNC41cS0xNCAyMCAtOS41IDQ0LjV0MjQuNSAzOC41cTE5IDE0IDQzLjUgOS41dDM3LjUgLTI0LjV6TTYxNCAxNTAzcTQgLTE2IC01IC0zMC41dC0yNiAtMTguNXQtMzEgNS41dC0xOCAyNi41cS0zIDE3IDYuNSAzMXQyNS41IDE4cTE3IDQgMzEgLTUuNXQxNyAtMjYuNXpNMTgwMCA1NTVxNCAtMjAgLTYuNSAtMzd0LTMwLjUgLTIxDQpxLTE5IC00IC0zNiA2LjV0LTIxIDMwLjV0Ni41IDM3dDMwLjUgMjJxMjAgNCAzNi41IC03LjV0MjAuNSAtMzAuNXpNMTEzNiAxNDQ4cTE2IC0yNyA4LjUgLTU4LjV0LTM1LjUgLTQ3LjVxLTI3IC0xNiAtNTcuNSAtOC41dC00Ni41IDM0LjVxLTE2IDI4IC04LjUgNTl0MzQuNSA0OHQ1OCA5dDQ3IC0zNnpNMTg4MiA3OTJxNCAtMTUgLTQgLTI3LjV0LTIzIC0xNi41cS0xNSAtMyAtMjcuNSA1LjV0LTE1LjUgMjIuNXEtMyAxNSA1IDI4dDIzIDE2DQpxMTQgMyAyNi41IC01dDE1LjUgLTIzek0xNjkxIDEwMzNxMTUgLTIyIDEwLjUgLTQ5dC0yNi41IC00M3EtMjIgLTE1IC00OSAtMTB0LTQyIDI3dC0xMCA0OXQyNyA0M3Q0OC41IDExdDQxLjUgLTI4eiIgLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFMSIgdW5pY29kZT0iJiN4ZjJlMTsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkUyIiB1bmljb2RlPSImI3hmMmUyOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTMiIHVuaWNvZGU9IiYjeGYyZTM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFNCIgdW5pY29kZT0iJiN4ZjJlNDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkU1IiB1bmljb2RlPSImI3hmMmU1OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTYiIHVuaWNvZGU9IiYjeGYyZTY7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFNyIgdW5pY29kZT0iJiN4ZjJlNzsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJfNjk4IiB1bmljb2RlPSImI3hmMmU4OyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRTkiIHVuaWNvZGU9IiYjeGYyZTk7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFQSIgdW5pY29kZT0iJiN4ZjJlYTsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkVCIiB1bmljb2RlPSImI3hmMmViOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUYyRUMiIHVuaWNvZGU9IiYjeGYyZWM7IiBob3Jpei1hZHYteD0iMTc5MiIgDQogLz4NCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRjJFRCIgdW5pY29kZT0iJiN4ZjJlZDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlGMkVFIiB1bmljb2RlPSImI3hmMmVlOyIgaG9yaXotYWR2LXg9IjE3OTIiIA0KIC8+DQogICAgPGdseXBoIGdseXBoLW5hbWU9Imxlc3NlcXVhbCIgdW5pY29kZT0iJiN4ZjUwMDsiIGhvcml6LWFkdi14PSIxNzkyIiANCiAvPg0KICA8L2ZvbnQ+DQo8L2RlZnM+PC9zdmc+DQo="},function(A,M,t){var g=t(56),I=t(215);"string"==typeof(I=I.__esModule?I.default:I)&&(I=[[A.i,I,""]]);var e={insert:"head",singleton:!1};g(I,e);A.exports=I.locals||{}},function(A,M,t){var g=t(57),I=t(109),e=t(216),i=t(217),T=t(218),E=t(219);M=g(!1);var N=I(e),n=I(e,{hash:"#iefix"}),D=I(i),C=I(T),r=I(E,{hash:"#iconfont"});M.push([A.i,'@font-face {font-family: "iconfont";\r\n src: url('+N+"); /* IE9 */\r\n src: url("+n+") format('embedded-opentype'), \r\n url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAWwAAsAAAAAC7QAAAViAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDdAqJTIdvATYCJAMgCxIABCAFhG0Hexv8CREVpMGRfXFgnrR3yGVcg8V7C46keQ4e/t+p3qf3BHkKSAphCVmp03abk9oFYA3IHpDtMaEzwr+d4wSQoVrUadshHY+ufeGv7xj+gOy6BnmyMmqAgLS4DMZg4tb/3LvX5vHA5rVnucyxbVk4JgcU0N7UiaIwC/8A/ML4F/MqdnCqyZn82l2HADRN9EdMnzk/xEEB8wQgNm9Y14ETUaEKCAJHamVsVYjzMHGMM43XwbnO74tfSDhgYErgpsVrZySZnDc775dRIXKcjIjaMwDXsSCB/oCifXamKYX0Qv2R6Hei4gTAE39RQt7MB/nWfCyf6ryr8/5CIVFKRaJWEf0XDywUNiYSAwHCAkTFDJ8M25A3FQIL8gECBflWVrE4RoXgxCmKQELnXQgM6Lyfs7Mix2zxgFoQF4J4D5CMd0TujhgEiuapSruuJrAcMTqoKK+Snu8HvudVwInr0DVuQ3SRXl7vCt2cy7luJtNLBSpCHYvxIYTRRRUXZauqJlJGfMOJuVymsjUmdItbr+trOXQqK7KYT2msJUY6v54yUgStXnw607tG4yptt0QEU6PYWlOq4KKI3hdlhajrTGfCCn/liVpns9XVOXdGGqJDIUJ/8Uk19oturItfdlt1xw1XrA9vfrTOvOzSnu03Xlofy7kdmVtqj4viatehsg8+aFXvvx+WfvjhcvOjj+Ju+ra24m5N3VyB1unRLStcMrckRfrO3xJSVAsE+5cK0S1xN3c1i+ytj5H73BtuqVUX39xd33hrj7VuW80TY1zzwQz3pgqJPXXqViEufYR2uC991M1LrCG6WevruwltEtd+OJMm9nDTt8Algwjt1M+/30JD9eLE29wWjg+yRodINDnrrG1CrQmSjVabFV+cqtfqzWxjae05tcYCpz1dZExXI1uW3jvt4idurTDm1hht1r7VJw6bNveekWztF5MTZNhsxsydcm2RMdPaYG1qP5QurkwYiSZ7vbXdTMpkg7v/34r9ap2dPqRmlyesw01GEEYZH3moKT/pL1/UyclmRTBV7rCsCbJy8cmPd02YW2yr/+Be5U8EcrtlH5GM26WOm7Ou6LK5xwbO3//465JDInx6Mf417347ao4v6w+LhR2K9v+/mzb7srIhvN0TnvEpfPV07zhl06ZUzxPJJPPqmGer5oknSqDFMuLFf3jDy/4o9ev9kvfeo6gGZ9t77xfz4J9lw70/HtaVf5fkSEqRDn/uH28XC0q/hKA+mDmMm76Ktv9uL7F/3+7UeojYnfx+VDlr1pLIO7376V4U7Asisb/7/tCPlsyaVRmIRAazqEV+iHsOx4BCAQrxBgrvy+fkWADZx/gahaflk3KqQxepUwBke1bkA3mb7HeeTGPrX/1+ipeN/89x/zrezybtPcHhF8D4tKJ+Gg4GoNlnhUT1yvtwQeWol7pQcCooFpricC3uFwxAo4FzwRbwZZuSSpYJAofKAAxsGkHi0B2t8P3BxGU4WDhMAk0/Zu12KWcnEqGKgL6cSkDgcRcYlPIUSDzeQCv8F2BSxW9g4QkJ0m2fnRy547RtnzG2ggN0f2B6CkpqZdvNfkU9upbDXIf4iZyMF6q8jEevMCC3sSJ961pEgWLycEluQ+cIItMSe8kXInFeFCrrSXlPfrLtDEMtgQag8wcYPRIo01tsJ37+FdJGTosLyr5pPyGWmMFBJVci0FeigCo7lsLkm1YTFlCAumYSD1wyA3IiREDMnrSEeiK3qBGI5gpWTWFFef8Sf6T7AA0ec0qljXWeH9s3Qf+a+6erJ3+MI02rrambza05OQnFQ/w1kqnRuSz1jBg2/tu9LAh682tsQ3SVkwkAAA==') format('woff2'),\r\n url("+D+") format('woff'),\r\n url("+C+") format('truetype'), \r\n url("+r+') format(\'svg\'); /* iOS 4.1- */\r\n}\r\n\r\n.iconfont {\r\n font-family: "iconfont" !important;\r\n font-size: 16px;\r\n font-style: normal;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.iconqingxiLOGO:before {\r\n content: "\\e7b4";\r\n}\r\n\r\n.iconqingxilogo:before {\r\n content: "\\e7af";\r\n}\r\n\r\n.iconai23:before {\r\n content: "\\e68a";\r\n}\r\n\r\n.iconiconstop:before {\r\n content: "\\e612";\r\n}\r\n\r\n.iconexit-full-screen:before {\r\n content: "\\e657";\r\n}\r\n\r\n.iconzanting:before {\r\n content: "\\e605";\r\n}\r\n\r\n.iconquanping:before {\r\n content: "\\e655";\r\n}\r\n\r\n',""]),A.exports=M},function(A,M,t){"use strict";t.r(M),M.default="data:application/vnd.ms-fontobject;base64,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AQEAAikC4P1AAWAAAAEAAP/AA74DQgAPAAATIR4BFxEOAQchLgEnET4B9AIXTGUBAWVM/elMZQICZQNBAmVM/eZMZQICZUwCGkxlAAAEAAD/wAPAA0EAEAAhADMARAAAEzMyNj0BNCYiBgcVIyIGFBYTMxUeATI2PQE0JisBIgYUFgUyNjc1MzI2NCYrASIGHQEUFhMzPgE0JisBNS4BIgYdARQWYO8QFBIbEgHTDhISDtMBEhsSFBDvDhISAlsNEgHTDhISDu8QFBIS7w4SEg7TARIbEhQCDRUP7w4SEg7TEhwS/qfUDRISDfAPFRIcEvMSDtMSHBIVD+8OEgJLARIbEtQNExMN8A8UAAACAAAAAANgAuAADwAfAAABMx4BFxEOAQcjLgEnET4BJTMeARcRDgEHIy4BJxE+AQKogBgfAQEfGIAYHwEBH/5IgBgfAQEfGIAYHwEBHwLgAR8Y/a8YHwEBHxgCURgfAQEfGP2vGB8BAR8YAlEYHwAABAAA/9UDqwMrABMAJwA7AE8AADcVHgEXMz4BNCYnIyImPQEuASIGATM+ATc1LgEiBgcVFAYrAQ4BFBYBNS4BJyMOARQWFzMyFh0BHgEyNgEjDgEHFR4BMjY3NTQ2OwE+ATQmVQJINoASGRkSgBIYARgkGAJVgDZIAgEYJBgBGBKAEhkZARICSDaAEhkZEoASGAEYJBj9q4A2SAIBGCQYARgSgBIZGdWANkgCARgkGAEYEoASGRn+7gJINoASGRkSgBIYARgkGAJVgDZIAgEYJBgBGBKAEhkZARICSDaAEhkZEoASGAEYJBgAAAAAABIA3gABAAAAAAAAABUAAAABAAAAAAABAAgAFQABAAAAAAACAAcAHQABAAAAAAADAAgAJAABAAAAAAAEAAgALAABAAAAAAAFAAsANAABAAAAAAAGAAgAPwABAAAAAAAKACsARwABAAAAAAALABMAcgADAAEECQAAACoAhQADAAEECQABABAArwADAAEECQACAA4AvwADAAEECQADABAAzQADAAEECQAEABAA3QADAAEECQAFABYA7QADAAEECQAGABABAwADAAEECQAKAFYBEwADAAEECQALACYBaQpDcmVhdGVkIGJ5IGljb25mb250Cmljb25mb250UmVndWxhcmljb25mb250aWNvbmZvbnRWZXJzaW9uIDEuMGljb25mb250R2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20ACgBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AAoAaQBjAG8AbgBmAG8AbgB0AFIAZQBnAHUAbABhAHIAaQBjAG8AbgBmAG8AbgB0AGkAYwBvAG4AZgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbgBmAG8AbgB0AEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAAcwB2AGcAMgB0AHQAZgAgAGYAcgBvAG0AIABGAG8AbgB0AGUAbABsAG8AIABwAHIAbwBqAGUAYwB0AC4AaAB0AHQAcAA6AC8ALwBmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBAgEDAQQBBQEGAQcBCAEJAApxaW5neGlMT0dPCnFpbmd4aWxvZ28EYWkyMwhpY29uc3RvcBBleGl0LWZ1bGwtc2NyZWVuB3phbnRpbmcIcXVhbnBpbmcAAAA="},function(A,M,t){"use strict";t.r(M),M.default="data:font/woff;base64,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"},function(A,M,t){"use strict";t.r(M),M.default="data:font/ttf;base64,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"},function(A,M,t){"use strict";t.r(M),M.default="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIiA+DQo8IS0tDQoyMDEzLTktMzA6IENyZWF0ZWQuDQotLT4NCjxzdmc+DQo8bWV0YWRhdGE+DQpDcmVhdGVkIGJ5IGljb25mb250DQo8L21ldGFkYXRhPg0KPGRlZnM+DQoNCjxmb250IGlkPSJpY29uZm9udCIgaG9yaXotYWR2LXg9IjEwMjQiID4NCiAgPGZvbnQtZmFjZQ0KICAgIGZvbnQtZmFtaWx5PSJpY29uZm9udCINCiAgICBmb250LXdlaWdodD0iNTAwIg0KICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIg0KICAgIHVuaXRzLXBlci1lbT0iMTAyNCINCiAgICBhc2NlbnQ9Ijg5NiINCiAgICBkZXNjZW50PSItMTI4Ig0KICAvPg0KICAgIDxtaXNzaW5nLWdseXBoIC8+DQogICAgDQogICAgPGdseXBoIGdseXBoLW5hbWU9InFpbmd4aUxPR08iIHVuaWNvZGU9IiYjNTkzMTY7IiBkPSJNMjc1LjQgNDA3bC0wLjEtMS42aC05Ny4ybC0wLjgtMTguN2g5OWwtMS45LTQ2LjhjLTAuMi01LjEtMS40LTkuMS0zLjYtMTItMi4yLTIuNy01LjQtNC05LjUtNGwtMTEyIDEuOSAwLjkgMjEuM2gxMDAuNWwwLjcgMTguMWgtMTAwbDEuOSA0NS41YzAuMiA0LjYgMS40IDguNCAzLjYgMTEuNCAyLjIgMy4xIDUuNCA0LjYgOS42IDQuNmg5NC40YzguNCAwIDE0LjktOC44IDE0LjUtMTkuN3pNMjk0LjIgNDI2LjdoOS44YzguNCAwIDE0LjgtOC44IDE0LjQtMTkuNEwzMTUgMzI0aC0yNWw0LjIgMTAyLjd6TTQzMi41IDM1MC4xbDMuMiA3Ny41aDguNGM5LjIgMCAxNi4yLTkuNSAxNS44LTIxLjNsLTIuOC02OS41Yy0wLjEtMi42LTAuOS01LTIuNC03LjQtMS4zLTItMi44LTMuNi00LjMtNC42LTQuNC0xLjgtOC42LTIuMi0xMi41LTEuMy00LjEgMC43LTcuOSAyLjUtMTEuMyA1LjMtMy4xIDMuMS02LjMgNi4yLTkuNSA5LjMtMy4yIDMuMS02LjYgNi41LTEwLjEgMTAuMi0zLjYgMy43LTcuMyA3LjctMTEuMyAxMS45LTguMSA4LjQtMTUuNyAxNi40LTIzIDI0LTcuNCA3LjUtMTEuNyAxMi42LTEyLjkgMTUuNGwtMy4xLTc0LjhoLTI0bDMuNyA4OS4zYzAuMSAzLjUgMSA3LjcgMy41IDEwLjQgMi43IDIuNyA1LjIgNC4yIDcuOSA1LjEgMy44IDEuMiAxMC45IDEgMTYuMS00LjhsNjguNi03NC43ek02MTAuMyA0MDUuNHYtMC4ySDQ5OS45bC0yLjUtNjBoODYuNWwwLjggMjBoLTYwLjVsMC44IDIwaDg0LjRsLTItNDhjLTAuMy03LjMtNS4yLTEzLjMtMTAuOS0xMy4zSDQ4MS45Yy0yIDAtNC4yIDEuMS02LjYgMy40LTIuMyAyLjItMy40IDYuNS0zLjEgMTIuNmwyLjkgNzAuOGMwLjIgNC41IDEuNCA4LjIgMy42IDExLjIgMi4yIDMuMiA1LjQgNC44IDkuNiA0LjhoMTA2LjJjOS4yIDAgMTYuMi05LjUgMTUuOC0yMS4zek03NTAuNCA0MjcuMmwtMC45LTIxLjNoLTk4LjlsLTAuOC0xOC43aDk5bC0xLjktNDYuOGMtMC4yLTUuMS0xLjQtOS4xLTMuNi0xMi0yLjItMi43LTUuNC00LTkuNS00SDYyMi4zbDAuOSAyMS4zaDEwMGwwLjggMjBINjI0bDEuOSA0NS41YzAuMiA0LjYgMS40IDguNCAzLjYgMTEuNCAyLjIgMy4xIDUuNCA0LjYgOS42IDQuNmgxMTEuM3pNODgzLjcgNDA1LjlINzY0bDAuOSAyMS4zSDg2OGM5LjIgMCAxNi4yLTkuNSAxNS43LTIxLjN6TTg2MC4xIDM4Ny4ybC0wLjktMjEuNWgtNzEuOGwtMC44LTE4LjZoOTlsLTAuOS0yMi43aC0xMjRsMi41IDYyLjh6TTEwMjEuNSA0MDUuOUg5MDEuOGwwLjkgMjEuM2gxMDMuMWM5LjIgMCAxNi4yLTkuNSAxNS43LTIxLjN6TTk5Ny45IDM4Ny4ybC0wLjktMjEuNWgtNzEuOWwtMC43LTE4LjZoOTlsLTEtMjIuN0g4OTguNWwyLjUgNjIuOHpNMTU4LjIgNDUxLjNsLTE2LjUtMTguNmMtMC44LTAuOS0xLjktMS40LTMtMS40SDExM2MtMS4yIDAtMC41LTcyLjEtMS4zLTczLjJsLTE3LjMtMjEuNGMtMi43LTMuNC03LjUtMS4xLTcuNSAzLjZsMC4xIDExM2MwLjEgNC4yIDMuNCA3IDYuNSA3bDYxLjgtMC4xYzMuOSAwLjEgNS44LTUuNyAyLjktOC45ek03OSAzMjIuNGwtMTEuNy0xMy4xYy0zLjktNC40LTEwLjMtMS0xMC4zIDUuNGwwLjQgMTA5LjVjMCA0LTIuNyA3LjMtNi4xIDcuM2wtNDQuNi0wLjFjLTUuNCAwLTguMSA3LjctNC40IDEyLjNsMTIuMSAxNC44YzEuMiAxLjQgMi43IDIuMiA0LjQgMi4ybDU2LjItMC4zYzMuNCAwIDYuMS0zLjMgNi4xLTcuM0w4MSAzMjcuN2MwLTItMC43LTMuOS0yLTUuM3oiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxaW5neGlsb2dvIiB1bmljb2RlPSImIzU5MzExOyIgZD0iTTk1MS4yIDc3Mi40bC05Mi44LTc0LjVjLTQuNS01LjEtMTAuNS04LTE2LjgtOEg2ODYuN2MtNi43IDAtMi42LTQzNS4xLTcuNC00NDEuM2wtNzcuMS0xMjAuNGMtMTUuMi0xOS00Mi4xLTYuMS00Mi4xIDIwLjJsMC44IDYzNS41YzAuNiAyMy4zIDE4LjkgMzkuNiAzNi4zIDM5LjZsMzM3LjItMC42YzIyLjItMC4xIDMyLjktMzIuMyAxNi44LTUwLjV6TTQ5NiA0Ny42bC01NS44LTczLjhjLTIyLTI0LjctNTMtNS45LTUyLjggMzAuMmwtMC44IDYzNS41YzAuMiAyMi44IDYuNCA1MC45LTI2LjMgNTEuM2wtMjYwLjgtMC41Yy0zMC4zLTAuMS00NS44IDIzLjUtMjQuNyA0OS40TDE0Mi43IDgxM2M2LjUgOCAxNS40IDEyLjUgMjQuOCAxMi40bDMwNi4xLTEuN2MxOC45LTAuMSAzNC4xLTE4LjQgMzQuMS00MC45bC0wLjgtNzA1LjRjLTAuMS0xMS4zLTQtMjIuMS0xMC45LTI5Ljh6IiAgaG9yaXotYWR2LXg9IjEwMjQiIC8+DQoNCiAgICANCiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0iYWkyMyIgdW5pY29kZT0iJiM1OTAxODsiIGQ9Ik0yNTYuMDc5ODE4IDczNS42MzQ2MTYgMjU2LjA3OTgxOCAzMi4zNjY0MDggODA4LjY0OTgxNSAzODQuMDE2MzczWiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPg0KDQogICAgDQogICAgPGdseXBoIGdseXBoLW5hbWU9Imljb25zdG9wIiB1bmljb2RlPSImIzU4ODk4OyIgZD0iTTI0My42MTEzNDQgODMzLjQwMjMxM2w1MzUuNDAzMDEzIDBjOTguNTY1ODc2IDAgMTc4LjQ2NDYwMS04MC4yNjUwNjggMTc4LjQ2NDYwMS0xNzkuMjgzMjQ2bDAtNTM3Ljg0OTczOGMwLTk5LjAwODk2OC03OS44OTg3MjUtMTc5LjI4MzI0Ni0xNzguNDY0NjAxLTE3OS4yODMyNDZMMjQzLjYxMTM0NC02My4wMTM5MTdjLTk4LjU1NjY2NyAwLTE3OC40NTUzOTEgODAuMjc0Mjc4LTE3OC40NTUzOTEgMTc5LjI4MzI0NmwwIDUzNy44NDk3MzhDNjUuMTU1OTUyIDc1My4xMzcyNDUgMTQ1LjA1NDY3NyA4MzMuNDAyMzEzIDI0My42MTEzNDQgODMzLjQwMjMxM3oiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJleGl0LWZ1bGwtc2NyZWVuIiB1bmljb2RlPSImIzU4OTY3OyIgZD0iTTk1Ljk0NCA1MjQuOTE4aDIzOS40ODdjMTkuODUxIDAgMzYgMTYuMTQ5IDM2IDM2djIzOS40ODhjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMycy0zMi0xNC4zMjctMzItMzJ2LTIxMS40ODhoLTIxMS40ODdjLTE3LjY3MyAwLTMyLTE0LjMyNy0zMi0zMiAwLTE3LjY3MiAxNC4zMjctMzIgMzItMzJ6TTk1Ljk0NCAxNzkuOTg0aDIxMS40ODd2LTIxMS40ODdjMC0xNy42NzMgMTQuMzI3LTMyIDMyLTMyczMyIDE0LjMyNyAzMiAzMnYyMzkuNDg3YzAgMTkuODUxLTE2LjE0OSAzNi0zNiAzNmgtMjM5LjQ4N2MtMTcuNjczIDAtMzItMTQuMzI3LTMyLTMyczE0LjMyNy0zMiAzMi0zMnpNNjg0LjUxMy02My40MDJjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjIxMS40ODdoMjExLjQ4N2MxNy42NzMgMCAzMiAxNC4zMjcgMzIgMzJzLTE0LjMyNyAzMi0zMiAzMmgtMjM5LjQ4N2MtMTkuODUxIDAtMzYtMTYuMTQ5LTM2LTM2di0yMzkuNDg3YzAtMTcuNjczIDE0LjMyNy0zMiAzMi0zMnpNNjg4LjUxMyA1MjQuMzYxaDIzOS40ODdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMycy0xNC4zMjcgMzItMzIgMzJoLTIxMS40ODd2MjExLjQ4OGMwIDE3LjY3My0xNC4zMjcgMzItMzIgMzJzLTMyLTE0LjMyNy0zMi0zMnYtMjM5LjQ4OGMwLTE5Ljg1IDE2LjE0OS0zNiAzNi0zNnoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ6YW50aW5nIiB1bmljb2RlPSImIzU4ODg1OyIgZD0iTTY4MCA3MzZoMTI4YzMwLjkyOCAwIDU2LTI1LjA3MiA1Ni01NnYtNTkzYzAtMzAuOTI4LTI1LjA3Mi01Ni01Ni01Nkg2ODBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NlY2ODBjMCAzMC45MjggMjUuMDcyIDU2IDU2IDU2eiBtLTQ2NCAwaDEyOGMzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU5M2MwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZIMjE2Yy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZWNjgwYzAgMzAuOTI4IDI1LjA3MiA1NiA1NiA1NnoiICBob3Jpei1hZHYteD0iMTAyNCIgLz4NCg0KICAgIA0KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJxdWFucGluZyIgdW5pY29kZT0iJiM1ODk2NTsiIGQ9Ik04NS4zMzMzMzMgMjEzLjMzMzMzM3YtMTI4YTEyOCAxMjggMCAwIDEgMTI4LTEyOGgxMjhhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMSAwIDg1LjMzMzMzNEgyMTMuMzMzMzMzYTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDAtNDIuNjY2NjY2IDQyLjY2NjY2NnYxMjhhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMS04NS4zMzMzMzQgMHogbTU5Ny4zMzMzMzQtMjU2aDEyOGExMjggMTI4IDAgMCAxIDEyOCAxMjh2MTI4YTQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDEtODUuMzMzMzM0IDB2LTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwLTQyLjY2NjY2Ni00Mi42NjY2NjZoLTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAtODUuMzMzMzM0eiBtMjU2IDU5Ny4zMzMzMzRWNjgyLjY2NjY2N2ExMjggMTI4IDAgMCAxLTEyOCAxMjhoLTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAtODUuMzMzMzM0aDEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAwIDQyLjY2NjY2Ni00Mi42NjY2NjZ2LTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDg1LjMzMzMzNCAwek0zNDEuMzMzMzMzIDgxMC42NjY2NjdIMjEzLjMzMzMzM2ExMjggMTI4IDAgMCAxLTEyOC0xMjh2LTEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDg1LjMzMzMzNCAwVjY4Mi42NjY2NjdhNDIuNjY2NjY3IDQyLjY2NjY2NyAwIDAgMCA0Mi42NjY2NjYgNDIuNjY2NjY2aDEyOGE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAgODUuMzMzMzM0eiIgIGhvcml6LWFkdi14PSIxMDI0IiAvPg0KDQogICAgDQoNCg0KICA8L2ZvbnQ+DQo8L2RlZnM+PC9zdmc+DQo="},function(A,M,t){var g=t(56),I=t(221);"string"==typeof(I=I.__esModule?I.default:I)&&(I=[[A.i,I,""]]);var e={insert:"head",singleton:!1};g(I,e);A.exports=I.locals||{}},function(A,M,t){(M=t(57)(!1)).push([A.i,"input[type=range] {\r\n -webkit-appearance: none;\r\n}\r\ninput[type=range]::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n} \r\ninput[type=range]::-webkit-slider-runnable-track {\r\n height: 15px;\r\n border-radius: 10px; /*将轨道设为圆角的*/\r\n}\r\ninput[type=range]:focus {\r\n outline: none;\r\n}\r\ninput[type=range]::-webkit-slider-thumb {\r\n -webkit-appearance: none;\r\n height: 15px;\r\n width: 15px;\r\n margin-top: -2px; /*使滑块超出轨道部分的偏移量相等*/\r\n background: #ffffff; \r\n border-radius: 50%; /*外观设置为圆形*/\r\n}\r\n.conter{\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%,-50%);\r\n}\r\n.Loding{\r\n margin: 0 auto;\r\n margin-bottom: 5px;\r\n border:3px solid #f3f3f3;\r\n border-radius:50%;\r\n border-top:3px solid #2e8e9a;\r\n width:25px;\r\n height:25px;\r\n /* animation-name:load; */\r\n animation:load .5s linear infinite;\r\n\r\n}\r\n.LodingTitle {\r\n margin-top: 20px;\r\n color: #fff;\r\n font-size: 14px;\r\n}\r\n@keyframes load{\r\n 0%{\r\n transform: rotate(0deg);\r\n }\r\n 100%{\r\n transform:rotate(360deg);\r\n }\r\n}\r\n/* 中间大播放按钮样式 */\r\n.bigPlayBox{\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%,-50%);\r\n background-color: rgba(0,0,0,.5);\r\n cursor: pointer;\r\n width: 80px;\r\n height:80px;\r\n border-radius: 40px;\r\n text-align: center;\r\n line-height: 80px;\r\n font-size: 36px;\r\n color: #fff;\r\n z-index: 9;\r\n}",""]),A.exports=M},function(A,M,t){"use strict";t.r(M),t.d(M,"default",(function(){return hA}));var g=function(){function A(A){this.gl=A,this.texture=null}var M=A.prototype;return M.create=function(A,M){var t=this.gl;this.texture=t.createTexture(),t.bindTexture(t.TEXTURE_2D,this.texture),1==A&&t.texImage2D(t.TEXTURE_2D,1,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,M),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)},M.bind=function(A,M,t){var g=this.gl;g.activeTexture([g.TEXTURE0,g.TEXTURE1,g.TEXTURE2,g.TEXTURE3][A]),g.bindTexture(g.TEXTURE_2D,this.texture),g.uniform1i(g.getUniformLocation(M,t),A)},M.fill=function(A,M,t){var g=this.gl;g.bindTexture(g.TEXTURE_2D,this.texture),g.texImage2D(g.TEXTURE_2D,0,g.LUMINANCE,A,M,0,g.LUMINANCE,g.UNSIGNED_BYTE,t)},A}(),I=function(){function A(A){this.enableTextTexture=0,this.canvas=A,this.gl=A.getContext("webgl")||A.getContext("experimental-webgl"),this.textCtx=null}var M=A.prototype;return M.destroy=function(){this.gl&&this.gl.commit&&this.gl.commit()},M.makeTextCanvas=function(A,M,t){return textCtx.canvas.width=M,textCtx.canvas.height=t,textCtx.font="10px monospace",textCtx.textAlign="center",textCtx.textBaseline="middle",textCtx.fillStyle="rgba(100, 0, 0, 0.6)",textCtx.clearRect(0,0,textCtx.canvas.width,textCtx.canvas.height),textCtx.fillText(A,M/2,t/2),textCtx.canvas},M.initGL=function(A){if(this.gl){var M=this.gl;M.pixelStorei(M.UNPACK_ALIGNMENT,1);var t=M.createProgram(),I=["attribute highp vec4 aVertexPosition;","attribute vec2 aTextureCoord;","varying highp vec2 vTextureCoord;","void main(void) {"," gl_Position = aVertexPosition;"," vTextureCoord = aTextureCoord;","}"].join("\n"),e=M.createShader(M.VERTEX_SHADER);M.shaderSource(e,I),M.compileShader(e);var i=["precision highp float;","varying lowp vec2 vTextureCoord;","uniform sampler2D YTexture;","uniform sampler2D UTexture;","uniform sampler2D VTexture;","uniform sampler2D TTexture;","const mat4 YUV2RGB = mat4","("," 1.1643828125, 0, 1.59602734375, -.87078515625,"," 1.1643828125, -.39176171875, -.81296875, .52959375,"," 1.1643828125, 2.017234375, 0, -1.081390625,"," 0, 0, 0, 1",");","void main(void) {"," gl_FragColor = mix(vec4( texture2D(YTexture, vTextureCoord).x, texture2D(UTexture, vTextureCoord).x, texture2D(VTexture, vTextureCoord).x, 1) * YUV2RGB, texture2D(TTexture, vTextureCoord), 0.1);","}"].join("\n"),T=M.createShader(M.FRAGMENT_SHADER);M.shaderSource(T,i),M.compileShader(T),M.attachShader(t,e),M.attachShader(t,T),M.linkProgram(t),M.useProgram(t),M.getProgramParameter(t,M.LINK_STATUS)||console.log("[ER] Shader link failed.");var E=M.getAttribLocation(t,"aVertexPosition");M.enableVertexAttribArray(E);var N=M.getAttribLocation(t,"aTextureCoord");M.enableVertexAttribArray(N);var n=M.createBuffer();M.bindBuffer(M.ARRAY_BUFFER,n),M.bufferData(M.ARRAY_BUFFER,new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0]),M.STATIC_DRAW),M.vertexAttribPointer(E,3,M.FLOAT,!1,0,0);var D=M.createBuffer();M.bindBuffer(M.ARRAY_BUFFER,D),M.bufferData(M.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),M.STATIC_DRAW),M.vertexAttribPointer(N,2,M.FLOAT,!1,0,0),1==this.enableTextTexture&&(void 0!==document&&(this.textCtx=document.createElement("canvas").getContext("2d")),console.log("textCtx:"+this.textCtx),null!=this.textCtx?(this.textCtx.canvas.width=256,this.textCtx.canvas.height=256,this.textCtx.font="10px monospace",this.textCtx.textAlign="center",this.textCtx.textBaseline="middle",this.textCtx.fillStyle="rgba(100, 0, 0, 0.6)",this.textCtx.clearRect(0,0,this.textCtx.canvas.width,this.textCtx.canvas.height),this.textCtx.fillText("Hello",this.textCtx.canvas.width/2,this.textCtx.canvas.height/2),M.t=new g(M),M.t.create(1,this.textCtx.canvas),console.log("create textctx ok.")):console.log("create textctx fail.")),M.y=new g(M),M.y.create(0,null),M.u=new g(M),M.u.create(0,null),M.v=new g(M),M.v.create(0,null),M.y.bind(0,t,"YTexture"),M.u.bind(1,t,"UTexture"),M.v.bind(2,t,"VTexture"),1==this.enableTextTexture&&this.textCtx&&M.t.bind(3,t,"TTexture")}else console.log("[ER] WebGL not supported.")},M.renderFrame=function(A,M,t,g,I){if(this.gl){var e=this.gl;e.viewport(0,0,e.canvas.width,e.canvas.height),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),A&&(e.y.fill(M,t,A.subarray(0,g)),e.u.fill(M>>1,t>>1,A.subarray(g,g+I)),e.v.fill(M>>1,t>>1,A.subarray(g+I,A.length))),1==this.enableTextTexture&&this.textCtx&&e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.textCtx.canvas),e.drawArrays(e.TRIANGLE_STRIP,0,4)}else console.log("[ER] Render frame failed due to WebGL not supported.")},M.renderVideoFrame=function(A,M,t){if(M<1||t<1){var g=this.gl,I=new Uint8Array(g.canvas.width*g.canvas.height*3/2),e=0,i=g.canvas.width*g.canvas.height,T=g.canvas.width*g.canvas.height*5/4,E=I.byteLength;for(e=i;e=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)||[],g={browser:M[5]||M[3]||M[1]||"",version:M[2]||M[4]||"0",majorVersion:M[4]||M[2]||"0",platform:t[0]||""},I={};if(g.browser){I[g.browser]=!0;var e=g.majorVersion.split(".");I.version={major:parseInt(g.majorVersion,10),string:g.version},e.length>1&&(I.version.minor=parseInt(e[1],10)),e.length>2&&(I.version.build=parseInt(e[2],10))}if(g.platform&&(I[g.platform]=!0),(I.chrome||I.opr||I.safari)&&(I.webkit=!0),I.rv||I.iemobile){I.rv&&delete I.rv;g.browser="msie",I.msie=!0}if(I.edge){delete I.edge;g.browser="msedge",I.msedge=!0}if(I.opr){g.browser="opera",I.opera=!0}if(I.safari&&I.android){g.browser="android",I.android=!0}for(var i in I.name=g.browser,I.platform=g.platform,D)D.hasOwnProperty(i)&&delete D[i];Object.assign(D,I)}();var C=D,r={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info"};function c(A,M){for(var t=0;t0){var t=A.getConfig();M.emit("change",t)}},A.registerListener=function(M){A.emitter.addListener("change",M)},A.removeListener=function(M){A.emitter.removeListener("change",M)},A.addLogListener=function(M){n.a.emitter.addListener("log",M),n.a.emitter.listenerCount("log")>0&&(n.a.ENABLE_CALLBACK=!0,A._notifyChange())},A.removeLogListener=function(M){n.a.emitter.removeListener("log",M),0===n.a.emitter.listenerCount("log")&&(n.a.ENABLE_CALLBACK=!1,A._notifyChange())},M=A,g=[{key:"forceGlobalTag",get:function(){return n.a.FORCE_GLOBAL_TAG},set:function(M){n.a.FORCE_GLOBAL_TAG=M,A._notifyChange()}},{key:"globalTag",get:function(){return n.a.GLOBAL_TAG},set:function(M){n.a.GLOBAL_TAG=M,A._notifyChange()}},{key:"enableAll",get:function(){return n.a.ENABLE_VERBOSE&&n.a.ENABLE_DEBUG&&n.a.ENABLE_INFO&&n.a.ENABLE_WARN&&n.a.ENABLE_ERROR},set:function(M){n.a.ENABLE_VERBOSE=M,n.a.ENABLE_DEBUG=M,n.a.ENABLE_INFO=M,n.a.ENABLE_WARN=M,n.a.ENABLE_ERROR=M,A._notifyChange()}},{key:"enableDebug",get:function(){return n.a.ENABLE_DEBUG},set:function(M){n.a.ENABLE_DEBUG=M,A._notifyChange()}},{key:"enableVerbose",get:function(){return n.a.ENABLE_VERBOSE},set:function(M){n.a.ENABLE_VERBOSE=M,A._notifyChange()}},{key:"enableInfo",get:function(){return n.a.ENABLE_INFO},set:function(M){n.a.ENABLE_INFO=M,A._notifyChange()}},{key:"enableWarn",get:function(){return n.a.ENABLE_WARN},set:function(M){n.a.ENABLE_WARN=M,A._notifyChange()}},{key:"enableError",get:function(){return n.a.ENABLE_ERROR},set:function(M){n.a.ENABLE_ERROR=M,A._notifyChange()}}],(t=null)&&c(M.prototype,t),g&&c(M,g),A}();o.emitter=new N.a;var B=o,Q=t(13),a=t(36),h=function(){function A(){}return A.init=function(){for(var M in A.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":[]},A.types)A.types.hasOwnProperty(M)&&(A.types[M]=[M.charCodeAt(0),M.charCodeAt(1),M.charCodeAt(2),M.charCodeAt(3)]);var t=A.constants={};t.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),t.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),t.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),t.STSC=t.STCO=t.STTS,t.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),t.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]),t.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]),t.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),t.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),t.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])},A.box=function(A){for(var M=8,t=null,g=Array.prototype.slice.call(arguments,1),I=g.length,e=0;e>>24&255,t[1]=M>>>16&255,t[2]=M>>>8&255,t[3]=255&M,t.set(A,4);for(var i=8,T=0;T>>24&255,M>>>16&255,M>>>8&255,255&M,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]))},A.trak=function(M){return A.box(A.types.trak,A.tkhd(M),A.mdia(M))},A.tkhd=function(M){var t=M.id,g=M.duration,I=M.presentWidth,e=M.presentHeight;return A.box(A.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,g>>>24&255,g>>>16&255,g>>>8&255,255&g,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,e>>>8&255,255&e,0,0]))},A.mdia=function(M){return A.box(A.types.mdia,A.mdhd(M),A.hdlr(M),A.minf(M))},A.mdhd=function(M){var t=M.timescale,g=M.duration;return A.box(A.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,g>>>24&255,g>>>16&255,g>>>8&255,255&g,85,196,0,0]))},A.hdlr=function(M){var t=null;return t="audio"===M.type?A.constants.HDLR_AUDIO:A.constants.HDLR_VIDEO,A.box(A.types.hdlr,t)},A.minf=function(M){var t=null;return t="audio"===M.type?A.box(A.types.smhd,A.constants.SMHD):A.box(A.types.vmhd,A.constants.VMHD),A.box(A.types.minf,t,A.dinf(),A.stbl(M))},A.dinf=function(){return A.box(A.types.dinf,A.box(A.types.dref,A.constants.DREF))},A.stbl=function(M){return A.box(A.types.stbl,A.stsd(M),A.box(A.types.stts,A.constants.STTS),A.box(A.types.stsc,A.constants.STSC),A.box(A.types.stsz,A.constants.STSZ),A.box(A.types.stco,A.constants.STCO))},A.stsd=function(M){return"audio"===M.type?"mp3"===M.codec?A.box(A.types.stsd,A.constants.STSD_PREFIX,A.mp3(M)):A.box(A.types.stsd,A.constants.STSD_PREFIX,A.mp4a(M)):A.box(A.types.stsd,A.constants.STSD_PREFIX,A.avc1(M))},A.mp3=function(M){var t=M.channelCount,g=M.audioSampleRate,I=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,g>>>8&255,255&g,0,0]);return A.box(A.types[".mp3"],I)},A.mp4a=function(M){var t=M.channelCount,g=M.audioSampleRate,I=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,g>>>8&255,255&g,0,0]);return A.box(A.types.mp4a,I,A.esds(M))},A.esds=function(M){var t=M.config||[],g=t.length,I=new Uint8Array([0,0,0,0,3,23+g,0,1,0,4,15+g,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([g]).concat(t).concat([6,1,2]));return A.box(A.types.esds,I)},A.avc1=function(M){var t=M.avcc,g=M.codecWidth,I=M.codecHeight,e=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,g>>>8&255,255&g,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 A.box(A.types.avc1,e,A.box(A.types.avcC,t))},A.mvex=function(M){return A.box(A.types.mvex,A.trex(M))},A.trex=function(M){var t=M.id,g=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 A.box(A.types.trex,g)},A.moof=function(M,t){return A.box(A.types.moof,A.mfhd(M.sequenceNumber),A.traf(M,t))},A.mfhd=function(M){var t=new Uint8Array([0,0,0,0,M>>>24&255,M>>>16&255,M>>>8&255,255&M]);return A.box(A.types.mfhd,t)},A.traf=function(M,t){var g=M.id,I=A.box(A.types.tfhd,new Uint8Array([0,0,0,0,g>>>24&255,g>>>16&255,g>>>8&255,255&g])),e=A.box(A.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),i=A.sdtp(M),T=A.trun(M,i.byteLength+16+16+8+16+8+8);return A.box(A.types.traf,I,e,T,i)},A.sdtp=function(M){for(var t=M.samples||[],g=t.length,I=new Uint8Array(4+g),e=0;e>>24&255,I>>>16&255,I>>>8&255,255&I,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);for(var T=0;T>>24&255,E>>>16&255,E>>>8&255,255&E,N>>>24&255,N>>>16&255,N>>>8&255,255&N,n.isLeading<<2|n.dependsOn,n.isDependedOn<<6|n.hasRedundancy<<4|n.isNonSync,0,0,D>>>24&255,D>>>16&255,D>>>8&255,255&D],12+16*T)}return A.box(A.types.trun,i)},A.mdat=function(M){return A.box(A.types.mdat,M)},A}();h.init();var s=h,y=function(){function A(){}return A.getSilentFrame=function(A,M){if("mp4a.40.2"===A){if(1===M)return new Uint8Array([0,200,0,128,35,128]);if(2===M)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===M)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===M)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===M)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===M)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===M)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===M)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===M)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},A}();function w(A,M){for(var t=0;t0&&A[0].originalDts=M[I].dts&&AM[g].lastSample.originalDts&&A=M[g].lastSample.originalDts&&(g===M.length-1||g0&&(I=this._searchNearestSegmentBefore(t.originalBeginDts)+1),this._lastAppendLocation=I,this._list.splice(I,0,t)},I.getLastSegmentBefore=function(A){var M=this._searchNearestSegmentBefore(A);return M>=0?this._list[M]:null},I.getLastSampleBefore=function(A){var M=this.getLastSegmentBefore(A);return null!=M?M.lastSample:null},I.getLastSyncPointBefore=function(A){for(var M=this._searchNearestSegmentBefore(A),t=this._list[M].syncPoints;0===t.length&&M>0;)M--,t=this._list[M].syncPoints;return t.length>0?t[t.length-1]:null},M=A,(t=[{key:"type",get:function(){return this._type}},{key:"length",get:function(){return this._list.length}}])&&w(M.prototype,t),g&&w(M,g),A}(),Y=t(2);function u(A,M){for(var t=0;t1&&(o-=(B=I.pop()).length),null!=this._audioStashedLastSample){var Q=this._audioStashedLastSample;this._audioStashedLastSample=null,I.unshift(Q),o+=Q.length}null!=B&&(this._audioStashedLastSample=B);var a=I[0].dts-this._dtsBase;if(this._audioNextDts)e=a-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())e=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(D=!0);else{var h=this._audioSegmentInfoList.getLastSampleBefore(a);if(null!=h){var w=a-(h.originalDts+h.duration);w<=3&&(w=0),e=a-(h.dts+h.duration+w)}else e=0}if(D){var d=a-e,x=this._videoSegmentInfoList.getLastSegmentBefore(a);if(null!=x&&x.beginDts=1?l[l.length-1].duration:Math.floor(T);var R=!1,k=null;if(m>1.5*T&&"mp3"!==this._audioMeta.codec&&this._fillAudioTimestampGap&&!C.safari){R=!0;var p=Math.abs(m-T),b=Math.ceil(p/T),G=F+T;n.a.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\ndts: "+(F+m)+" ms, expected: "+(F+Math.round(T))+" ms, delta: "+Math.round(p)+" ms, generate: "+b+" framessampleDuration: "+m+" ms, refSampleDuration: "+T);var J=y.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);null==J&&(n.a.w(this.TAG,"Unable to generate silent frame for "+this._audioMeta.originalCodec+" with "+this._audioMeta.channelCount+" channels, repeat last frame"),J=f),k=[];for(var H=0;H0){var v=k[k.length-1];v.duration=X-v.dts}var V={dts:X,pts:X,cts:0,unit:J,size:J.byteLength,duration:0,originalDts:O,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};k.push(V),o+=V.size,G+=T}var W=k[k.length-1];W.duration=F+m-W.dts,m=Math.round(T)}l.push({dts:F,pts:F,cts:0,unit:U.unit,size:U.unit.byteLength,duration:m,originalDts:O,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),R&&l.push.apply(l,k)}E?c=new Uint8Array(o):((c=new Uint8Array(o))[0]=o>>>24&255,c[1]=o>>>16&255,c[2]=o>>>8&255,c[3]=255&o,c.set(s.types.mdat,4));for(var P=0;P1&&(D-=(C=e.pop()).length),null!=this._videoStashedLastSample){var r=this._videoStashedLastSample;this._videoStashedLastSample=null,e.unshift(r),D+=r.length}null!=C&&(this._videoStashedLastSample=C);var c=e[0].dts-this._dtsBase;if(this._videoNextDts)i=c-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())i=0;else{var o=this._videoSegmentInfoList.getLastSampleBefore(c);if(null!=o){var B=c-(o.originalDts+o.duration);B<=3&&(B=0),i=c-(o.dts+o.duration+B)}else i=0}for(var Q=new L,a=[],h=0;h=1?a[a.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(d){var l=new j(x,u,S,y.dts,!0);l.fileposition=y.fileposition,Q.appendSyncPoint(l)}a.push({dts:x,pts:u,cts:Y,units:y.units,size:y.length,isKeyframe:d,duration:S,originalDts:w,flags:{isLeading:0,dependsOn:d?2:1,isDependedOn:d?1:0,hasRedundancy:0,isNonSync:d?0:1}})}(n=new Uint8Array(D))[0]=D>>>24&255,n[1]=D>>>16&255,n[2]=D>>>8&255,n[3]=255&D,n.set(s.types.mdat,4);for(var z=0;z=500?this.currentKBps:0}},{key:"averageKBps",get:function(){var A=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/A/1024}}])&&z(M.prototype,t),g&&z(M,g),A}();function f(A,M){for(var t=0;t=15048,M=!C.msedge||A;return self.fetch&&self.ReadableStream&&M}catch(A){return!1}};var I=g.prototype;return I.destroy=function(){this.isWorking()&&this.abort(),A.prototype.destroy.call(this)},I.fetchStream=function(){var A=this,M=this._fetchParam;this._retryConnectTimes++,this._triggerReconnectingNotify&&(this._triggerReconnectingNotify=!1,this._onDataArrival&&this._onDataArrival(null,-this._retryConnectTimes,0)),this._triggerReconnectSuccessNotify=!0,self.fetch(this._fetchUrl,M).then((function(M){if(A._requestAbort)return A._requestAbort=!1,void(A._status=O);if(M.ok&&M.status>=200&&M.status<=299){if(M.url!==A._fetchUrl&&A._onURLRedirect){console.log("full");var t=A._seekHandler.removeURLParameters(M.url);A._onURLRedirect(t)}var g=M.headers.get("Content-Length");return null!=g&&(A._contentLength=parseInt(g),0!==A._contentLength&&A._onContentLengthKnown&&A._onContentLengthKnown(A._contentLength)),A._triggerReconnectingNotify=!0,A._pump.call(A,M.body.getReader())}A._status=R,A._onError,e.d("fetch-stream: code:"+M.status+" msg:"+M.statusText),A._callbackFunc({code:M.status,msg:M.statusText});var I=A;e.i(3e3).then((function(){console.log("Reconnecting..."),I.fetchStream()}))})).catch((function(M){if(A._status=R,!A._onError)throw M;A._onError(p,{code:-1,msg:M.message});var t=A;e.i(3e3).then((function(){t.fetchStream()}))}))},I.open=function(A,M){this._dataSource=A,this._range=M;var t=A.url;this._config.reuseRedirectedURL&&null!=A.redirectedURL&&(t=A.redirectedURL);var g=this._seekHandler.getConfig(t,M),I=new self.Headers;if("object"==typeof g.headers){var e=g.headers;for(var i in e)e.hasOwnProperty(i)&&I.append(i,e[i])}var T={method:"GET",headers:I,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(var E in this._config.headers)I.append(E,this._config.headers[E]);!1===A.cors&&(T.mode="same-origin"),A.withCredentials&&(T.credentials="include"),A.referrerPolicy&&(T.referrerPolicy=A.referrerPolicy),this._status=F,this._fetchUrl=g.url,this._fetchParam=T,this.fetchStream()},I.abort=function(){this._requestAbort=!0},I._pump=function(A){var M=this;return A.read().then((function(t){if(t.done)if(null!==M._contentLength&&M._receivedLength0?(e.h(!1),M._onComplete(M._range.from,M._range.from+M._receivedLength-1)):M._onComplete(-1,-1)}else M._status=k,M._onComplete&&(null!==M._contentLength&&M._receivedLength===M._contentLength&&M._receivedLength>0?(e.h(!1),M._onComplete(M._range.from,M._range.from+M._receivedLength-1)):M._onComplete(-1,-1));else{if(!0===M._requestAbort)return M._requestAbort=!1,M._status=k,A.cancel();M._status=m;var i=t.value.buffer,T=M._range.from+M._receivedLength;M._receivedLength+=i.byteLength,M._onDataArrival&&M._onDataArrival(i,T,M._receivedLength),M._triggerReconnectSuccessNotify&&(M._triggerReconnectSuccessNotify=!1,M._onDataArrival&&(M._onDataArrival(null,M._retryConnectTimes,0),M._retryConnectTimes++)),M._pump(A)}})).catch((function(A){console.log("fetch-stream-loader:: errCode:"+A.code+" msg:"+A.message),M._onComplete(-1,-1)}))},g}(H);var v=function(A){var M,t;function g(M,t){var g;return(g=A.call(this,"xhr-moz-chunked-loader")||this).TAG="MozChunkedLoader",g._seekHandler=M,g._config=t,g._needStash=!0,g._xhr=null,g._requestAbort=!1,g._contentLength=null,g._receivedLength=0,g}t=A,(M=g).prototype=Object.create(t.prototype),M.prototype.constructor=M,M.__proto__=t,g.isSupported=function(){try{var A=new XMLHttpRequest;return A.open("GET","https://example.com",!0),A.responseType="moz-chunked-arraybuffer","moz-chunked-arraybuffer"===A.responseType}catch(A){return n.a.w("MozChunkedLoader",A.message),!1}};var I=g.prototype;return I.destroy=function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),A.prototype.destroy.call(this)},I.open=function(A,M){this._dataSource=A,this._range=M;var t=A.url;this._config.reuseRedirectedURL&&null!=A.redirectedURL&&(t=A.redirectedURL);var g=this._seekHandler.getConfig(t,M);this._requestURL=g.url;var I=this._xhr=new XMLHttpRequest;if(I.open("GET",g.url,!0),I.responseType="moz-chunked-arraybuffer",I.onreadystatechange=this._onReadyStateChange.bind(this),I.onprogress=this._onProgress.bind(this),I.onloadend=this._onLoadEnd.bind(this),I.onerror=this._onXhrError.bind(this),A.withCredentials&&(I.withCredentials=!0),"object"==typeof g.headers){var e=g.headers;for(var i in e)e.hasOwnProperty(i)&&I.setRequestHeader(i,e[i])}if("object"==typeof this._config.headers){var T=this._config.headers;for(var E in T)T.hasOwnProperty(E)&&I.setRequestHeader(E,T[E])}this._status=F,I.send()},I.abort=function(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=k},I._onReadyStateChange=function(A){var M=A.target;if(2===M.readyState){if(null!=M.responseURL&&M.responseURL!==this._requestURL&&this._onURLRedirect){var t=this._seekHandler.removeURLParameters(M.responseURL);this._onURLRedirect(t)}if(0!==M.status&&(M.status<200||M.status>299)){if(this._status=R,!this._onError)throw new Y.d("MozChunkedLoader: Http code invalid, "+M.status+" "+M.statusText);this._onError(b,{code:M.status,msg:M.statusText})}else this._status=m}},I._onProgress=function(A){if(this._status!==R){null===this._contentLength&&null!==A.total&&0!==A.total&&(this._contentLength=A.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var M=A.target.response,t=this._range.from+this._receivedLength;this._receivedLength+=M.byteLength,this._onDataArrival&&this._onDataArrival(M,t,this._receivedLength)}},I._onLoadEnd=function(A){!0!==this._requestAbort?this._status!==R&&(this._status=k,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)):this._requestAbort=!1},I._onXhrError=function(A){this._status=R;var M=0,t=null;if(this._contentLength&&A.loaded=this._contentLength&&(t=this._range.from+this._contentLength-1),this._currentRequestRange={from:M,to:t},this._internalOpen(this._dataSource,this._currentRequestRange)},T._internalOpen=function(A,M){this._lastTimeLoaded=0;var t=A.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?t=this._currentRedirectedURL:null!=A.redirectedURL&&(t=A.redirectedURL));var g=this._seekHandler.getConfig(t,M);this._currentRequestURL=g.url;var I=this._xhr=new XMLHttpRequest;if(I.open("GET",g.url,!0),I.responseType="arraybuffer",I.onreadystatechange=this._onReadyStateChange.bind(this),I.onprogress=this._onProgress.bind(this),I.onload=this._onLoad.bind(this),I.onerror=this._onXhrError.bind(this),A.withCredentials&&(I.withCredentials=!0),"object"==typeof g.headers){var e=g.headers;for(var i in e)e.hasOwnProperty(i)&&I.setRequestHeader(i,e[i])}if("object"==typeof this._config.headers){var T=this._config.headers;for(var E in T)T.hasOwnProperty(E)&&I.setRequestHeader(E,T[E])}I.send()},T.abort=function(){this._requestAbort=!0,this._internalAbort(),this._status=k},T._internalAbort=function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)},T._onReadyStateChange=function(A){var M=A.target;if(2===M.readyState){if(null!=M.responseURL){var t=this._seekHandler.removeURLParameters(M.responseURL);M.responseURL!==this._currentRequestURL&&t!==this._currentRedirectedURL&&(this._currentRedirectedURL=t,this._onURLRedirect&&this._onURLRedirect(t))}if(M.status>=200&&M.status<=299){if(this._waitForTotalLength)return;this._status=m}else{if(this._status=R,!this._onError)throw new Y.d("RangeLoader: Http code invalid, "+M.status+" "+M.statusText);this._onError(b,{code:M.status,msg:M.statusText})}}},T._onProgress=function(A){if(this._status!==R){if(null===this._contentLength){var M=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,M=!0;var 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,M)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var g=A.loaded-this._lastTimeLoaded;this._lastTimeLoaded=A.loaded,this._speedSampler.addBytes(g)}},T._normalizeSpeed=function(A){var M=this._chunkSizeKBList,t=M.length-1,g=0,I=0,e=t;if(A=M[g]&&A=3&&(M=this._speedSampler.currentKBps)),0!==M){var t=this._normalizeSpeed(M);this._currentSpeedNormalized!==t&&(this._currentSpeedNormalized=t,this._currentChunkSizeKB=t)}var g=A.target.response,I=this._range.from+this._receivedLength;this._receivedLength+=g.byteLength;var e=!1;null!=this._contentLength&&this._receivedLength0&&this._receivedLength0)for(var e=t.split("&"),i=0;i0;T[0]!==this._startName&&T[0]!==this._endName&&(E&&(I+="&"),I+=e[i])}return 0===I.length?M:M+"?"+I},A}();var q=function(A){var M,t;function g(M,t){var g;return(g=A.call(this,"m3u8-loader")||this).TAG="M3U8Loader",g._needStash=!0,g.url="",g.startPlayTime=0,g._requestAbort=!1,g._receivedLength=0,g._callbackFunc=t.callbackFunc,g.getNextFileFlag=!0,g.pauseDisplay=!1,g.totalDuration=0,g.seeking=!1,g}t=A,(M=g).prototype=Object.create(t.prototype),M.prototype.constructor=M,M.__proto__=t,g.isSupported=function(){return!0};var I=g.prototype;return I.destroy=function(){this.abort(),A.prototype.destroy.call(this)},I.GetM3u8TotalDuration=function(){return this.totalDuration},I.createDownloadWorker=function(){var A;if(!this.downloadWorker)if("undefined"!=typeof Worker)try{A=this.downloadWorker=i(223),this.onwmsg=this.onWorkerMessage.bind(this);var M={cmd:e.u,url:this.url,time:this.startPlayTime};A.postMessage(M),A.addEventListener("message",this.onwmsg),A.onerror=function(A){}}catch(A){console.log("Create download Worker fail: "+A),this.downloadWorker=void 0}else console.log("Unsupport worker...")},I.setStartPlaySecs=function(A){this.startPlayTime=A},I.open=function(A){try{this.url=A.url,this.createDownloadWorker(),this._status=F}catch(A){this._status=R;var M={code:A.code,msg:A.message};if(!this._onError)throw new Y.d(M.msg);this._onError(p,M)}},I.abort=function(){var A={cmd:e.k};this.downloadWorker&&void 0!==this.downloadWorker&&this.downloadWorker.postMessage(A),this._status=k},I._onWebSocketOpen=function(A){this._status=m},I._onWebSocketClose=function(A){!0!==this._requestAbort?(this._status=k,this._onComplete&&this._onComplete(0,this._receivedLength-1)):this._requestAbort=!1},I.seek=function(A,M){this.pauseDisplay=!1;var t={cmd:e.z,type:M,time:A};this.downloadWorker&&void 0!==this.downloadWorker&&(this.downloadWorker.postMessage(t),this.seeking=!0)},I.pause=function(){this.pauseDisplay=!0;var A={cmd:e.v};this.downloadWorker&&void 0!==this.downloadWorker&&this.downloadWorker.postMessage(A)},I.resume=function(){this.pauseDisplay=!1;var A={cmd:e.y};this.downloadWorker&&void 0!==this.downloadWorker&&this.downloadWorker.postMessage(A)},I.onWorkerMessage=function(A){var M=A.data;switch(M.cmd){case e.u:var t={cmd:e.q,t:0};this.downloadWorker.postMessage(t);break;case e.r:this.getNextFileFlag=!0;break;case e.p:this.playComplete=!0;break;case e.n:console.log("disconnect..");t={cmd:e.w};this.downloadWorker.postMessage(t);break;case e.k:M.workerId==e.b?(this.downloadWorker.terminate(),this.downloadWorker=null):M.workerId==e.a?(this.decodeWorker.terminate(),this.decodeWorker=null,this.soundPlayer&&(this.soundPlayer.destroy(),delete this.soundPlayer,this.soundPlayer=null),this.webGLPlayer&&this.webGLPlayer.renderVideoFrame(null,0,0)):M.workerId==e.e&&(this.renderWorker.terminate(),this.renderWorker=null);break;case e.o:if(M.workerId==e.b){var g=M.dat,I=this._receivedLength;this._receivedLength+=g.byteLength,this._onDataArrival&&this._onDataArrival(g,I,this._receivedLength);break}if(M.workerId==e.a){if(this.pauseDisplay)break;1==M.mediaType?(this.canvas.width=M.width,this.canvas.height=M.height,this.webGLPlayer.renderVideoFrame(M.dat,M.width,M.height),this.OnUpdatePlayInfo(M.playTimeSec,M.frameNum)):2==M.mediaType&&(null==this.soundPlayer&&this.OpenAudioPlayer(M.fmt,M.ch,M.samplerate),null!=this.soundPlayer&&this.soundPlayer.play(M.dat))}break;case e.s:this.totalDuration=M.duration,e.h(M.live);break;case e.q:this.pauseDisplay||this.getNextFileFlag&&(this.downloadWorker.postMessage(M),this.getNextFileFlag=!1);break;case e.z:this.seeking=!1;break;case 410:this._callbackFunc(M);break;case e.x:this._onDataArrival&&(this._receivedLength=0,this._onDataArrival(null,M.fileSequence,0))}},I._dispatchArrayBuffer=function(A){var M=A,t=this._receivedLength;this._receivedLength+=M.byteLength,this._onDataArrival&&this._onDataArrival(M,t,this._receivedLength)},I._onWebSocketError=function(A){this._status=R;var M={code:A.code,msg:A.message};if(!this._onError)throw new Y.d(M.msg);this._onError(p,M)},g}(H);function _(A,M){for(var t=0;t0&&(this._stashInitialSize=M.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===M.enableStashBuffer&&(this._enableStash=!1),"soft"===M.decodeType&&(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 U,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(g)}var M,t,g,I=A.prototype;return I.destroy=function(){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},I.isWorking=function(){return this._loader&&this._loader.isWorking()&&!this._paused},I.isPaused=function(){return this._paused},I._selectSeekHandler=function(){var A=this._config;if("range"===A.seekType)this._seekHandler=new Z(this._config.rangeLoadZeroStart);else if("param"===A.seekType){var M=A.seekParamStart||"bstart",t=A.seekParamEnd||"bend";this._seekHandler=new K(M,t)}else{if("custom"!==A.seekType)throw new Y.b("Invalid seekType in config: "+A.seekType);if("function"!=typeof A.customSeekHandler)throw new Y.b("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new A.customSeekHandler}},I._selectLoader=function(){if(null!=this._config.customLoader)this._loaderClass=this._config.customLoader;else if("m3u8"===this._config.streamType)this._loaderClass=q;else if(this._isWebSocketURL)this._loaderClass=P;else if(X.isSupported())this._loaderClass=X;else if(v.isSupported())this._loaderClass=v;else{if(!W.isSupported())throw new Y.d("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=W}},I._IsM3u8Loader=function(){return this._loaderClass==q},I._GetM3u8Loader=function(){return this._loaderClass==q?this._loader:null},I._createLoader=function(A){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loaderClass==q&&this._loader.setStartPlaySecs(A),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)},I.open=function(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))},I.abort=function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)},I.pause=function(){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)},I.resume=function(){if(this._paused){this._paused=!1;var A=this._resumeFrom;this._resumeFrom=0,this._internalSeek(A,!0)}},I.seek=function(A){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(A,!0)},I._internalSeek=function(A,M){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(M),this._loader.destroy(),this._loader=null;var 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()},I.updateUrl=function(A){if(!A||"string"!=typeof A||0===A.length)throw new Y.b("Url must be a non-empty string!");this._dataSource.url=A},I._expandBuffer=function(A){for(var M=this._stashSize;M+10485760){var g=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(t,0,M).set(g,0)}this._stashBuffer=t,this._bufferSize=M}},I._normalizeSpeed=function(A){var M=this._speedNormalizeList,t=M.length-1,g=0,I=0,e=t;if(A=M[g]&&A=512&&A<=1024?Math.floor(1.5*A):2*A)>8192&&(M=8192);var t=1024*M+1048576;this._bufferSize1&&this._onComplete&&this._onComplete(-1)):this._onDataArrival(A,M):(this._currentRange.to=M+A.byteLength-1,this._onDataArrival(A,M))},I._onURLRedirect=function(A){this._redirectedURL=A,this._onRedirect&&this._onRedirect(A)},I._onContentLengthKnown=function(A){A&&this._fullRequestFlag&&(this._totalLength=A,this._fullRequestFlag=!1)},I._onLoaderChunkArrival=function(A,M,t){if(!this._onDataArrival)throw new Y.a("IOController: No existing consumer (onDataArrival) callback!");if(!this._paused)if(this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),null===A&&t<1)this._dispatchChunks(A,M);else{this._speedSampler.addBytes(A.byteLength);var g=this._speedSampler.lastSecondKBps;if(0!==g){var I=this._normalizeSpeed(g);this._speedNormalized!==I&&(this._speedNormalized=I,this._adjustStashSize(I))}if(this._enableStash)if(0===this._stashUsed&&0===this._stashByteStart&&(this._stashByteStart=M),this._stashUsed+A.byteLength<=this._stashSize){new Uint8Array(this._stashBuffer,0,this._stashSize).set(new Uint8Array(A),this._stashUsed),this._stashUsed+=A.byteLength}else{var e=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){var i=this._stashBuffer.slice(0,this._stashUsed),T=this._dispatchChunks(i,this._stashByteStart);if(T0){var E=new Uint8Array(i,T);e.set(E,0),this._stashUsed=E.byteLength,this._stashByteStart+=T}}else this._stashUsed=0,this._stashByteStart+=T;this._stashUsed+A.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+A.byteLength),e=new Uint8Array(this._stashBuffer,0,this._bufferSize)),e.set(new Uint8Array(A),this._stashUsed),this._stashUsed+=A.byteLength}else{var N=this._dispatchChunks(A,M);if(Nthis._bufferSize&&(this._expandBuffer(n),e=new Uint8Array(this._stashBuffer,0,this._bufferSize)),e.set(new Uint8Array(A,N),0),this._stashUsed+=n,this._stashByteStart=M+N}}}else if(0===this._stashUsed){var D=this._dispatchChunks(A,M);if(Dthis._bufferSize&&this._expandBuffer(C),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(A,D),0),this._stashUsed+=C,this._stashByteStart=M+D}}else{this._stashUsed+A.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+A.byteLength);var r=new Uint8Array(this._stashBuffer,0,this._bufferSize);r.set(new Uint8Array(A),this._stashUsed),this._stashUsed+=A.byteLength;var c=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(c0){var o=new Uint8Array(this._stashBuffer,c);r.set(o,0)}this._stashUsed-=c,this._stashByteStart+=c}}},I._flushStashBuffer=function(A){if(this._stashUsed>0){var M=this._stashBuffer.slice(0,this._stashUsed),t=this._dispatchChunks(M,this._stashByteStart),g=M.byteLength-t;if(t0){var I=new Uint8Array(this._stashBuffer,0,this._bufferSize),e=new Uint8Array(M,t);I.set(e,0),this._stashUsed=e.byteLength,this._stashByteStart+=t}return 0}n.a.w(this.TAG,g+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,g}return 0},I._onLoaderComplete=function(A,M){this._flushStashBuffer(!0),A!=M||-1!=M?this._onComplete&&this._onComplete(this._extraData):this._onComplete&&this._onComplete(-1)},I._onLoaderError=function(A,M){switch(n.a.e(this.TAG,"Loader error, code = "+M.code+", msg = "+M.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,A=J),A){case G:if(!this._config.isLive&&this._totalLength){var t=this._currentRange.to+1;return void(t0)return;var g=0;if(M>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,this._demuxer.append(A,M,0),g=A.length;else{this._demuxer=new MA.a(this._config,this._callbackMediaData,this._callbackUserPtr),this._remuxer||(this._remuxer=new S(this._config));var I=this._mediaDataSource;null==I.duration||isNaN(I.duration)||(this._demuxer.overridedDuration=I.duration),"boolean"==typeof I.hasAudio&&(this._demuxer.overridedHasAudio=I.hasAudio),"boolean"==typeof I.hasVideo&&(this._demuxer.overridedHasVideo=I.hasVideo),this._demuxer.timestampBase=I.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),this._demuxer.append(A,M,0),g=A.length}return g}var e=null,i=0;if(null==A&&M<0)this._emitter.emit(AA.RECONNECT_ING,M);else if(!(null==A&&M>0)){if(M>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,i=this._demuxer.parseChunks(A,M);else if((e=a.a.probe(A)).match){this._demuxer=new a.a(e,this._config,this._callbackMediaData,this._callbackUserPtr),this._remuxer||(this._remuxer=new S(this._config));var T=this._mediaDataSource;null==T.duration||isNaN(T.duration)||(this._demuxer.overridedDuration=T.duration),"boolean"==typeof T.hasAudio&&(this._demuxer.overridedHasAudio=T.hasAudio),"boolean"==typeof T.hasVideo&&(this._demuxer.overridedHasVideo=T.hasVideo),this._demuxer.timestampBase=T.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,M),this._reconnectTimes++,this._reconnectTimes>0&&this._emitter.emit(AA.RECONNECT_SUCCESS,this._reconnectTimes)}else e=null,n.a.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then((function(){t._internalAbort()})),this._emitter.emit(AA.DEMUX_ERROR,l.a.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),i=0;return i}},M._GetM3u8Loader=function(){if(null==this._ioctl)return null;var A=this._ioctl._GetM3u8Loader();return A||null},M._GetM3u8TotalDuration=function(){if(null==this._ioctl)return 0;var A=this._ioctl._GetM3u8Loader();return A?A.GetM3u8TotalDuration():0},M._onMediaInfo=function(A){var M=this;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,Q.a.prototype));var t=Object.assign({},A);Object.setPrototypeOf(t,Q.a.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=t,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then((function(){var A=M._pendingSeekTime;M._pendingSeekTime=null,M.seek(A)}))},M._onMetaDataArrived=function(A){this._emitter.emit(AA.METADATA_ARRIVED,A)},M._onScriptDataArrived=function(A){this._emitter.emit(AA.SCRIPTDATA_ARRIVED,A)},M._onIOSeeked=function(){this._remuxer.insertDiscontinuity()},M._onIOComplete=function(A){var M=A+1;if(this._ioctl&&this._ioctl._IsM3u8Loader()){this._ioctl._GetM3u8Loader();e.c()&&(console.log("M3u8: Reconnect Success"),this._emitter.emit(AA.RECONNECT_SUCCESS,2),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this.start())}else if(M0&&t[0].originalDts===g&&(g=t[0].pts),this._emitter.emit(AA.RECOMMEND_SEEKPOINT,g)}},M._enableStatisticsReporter=function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))},M._disableStatisticsReporter=function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},M._reportSegmentMediaInfo=function(A){var M=this._mediaInfo.segments[A],t=Object.assign({},M);t.duration=this._mediaInfo.duration,t.segmentCount=this._mediaInfo.segmentCount,delete t.segments,delete t.keyframesIndex,this._emitter.emit(AA.MEDIA_INFO,t)},M._reportStatisticsInfo=function(){var A={};null!=this._ioctl&&(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(AA.STATISTICS_INFO,A))},A}(),gA=function(){function A(){}return A.install=function(){Object.setPrototypeOf=Object.setPrototypeOf||function(A,M){return A.__proto__=M,A},Object.assign=Object.assign||function(A){if(null==A)throw new TypeError("Cannot convert undefined or null to object");for(var M=Object(A),t=1;t-1||i.indexOf("Adr")>-1,this.isiOS=!!i.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),this.isiPad=!1;var T=navigator.userAgent;if(("iPad"==T.match(/iPad/i)||T.indexOf("Macintosh;")>-1&&T.indexOf("AppleWebKit/"))&&(this.isiPad=!0),this._callbackUserPtr=I,this._callbackWasmTypePtr=e,M.enableWorker&&"undefined"!=typeof Worker)try{var E=t(115);this._worker=E(eA),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[A,M]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},B.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:B.getConfig()})}catch(t){n.a.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new tA(A,M)}else this._controller=new tA(A,M);if(this._controller){var D=this._controller;D.on(AA.IO_ERROR,this._onIOError.bind(this)),D.on(AA.DEMUX_ERROR,this._onDemuxError.bind(this)),D.on(AA.INIT_SEGMENT,this._onInitSegment.bind(this)),D.on(AA.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),D.on(AA.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),D.on(AA.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),D.on(AA.MEDIA_INFO,this._onMediaInfo.bind(this)),D.on(AA.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),D.on(AA.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),D.on(AA.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),D.on(AA.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this)),D.on(AA.RECONNECT_ING,this._onReconnecting.bind(this)),D.on(AA.RECONNECT_SUCCESS,this._onReconnectSuccess.bind(this))}}var M=A.prototype;return M.destroy=function(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),B.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null,this.soundPlayer&&(this.soundPlayer.destroy(),delete this.soundPlayer,this.soundPlayer=null)},M.on=function(A,M){this._emitter.addListener(A,M)},M.off=function(A,M){this._emitter.removeListener(A,M)},M.hasWorker=function(){return null!=this._worker},M.OpenAudioPlayer=function(A,M,t){if(null==this.soundPlayer){1;var g="16bitInt";g="16bitInt",this.soundPlayer=new T.a,this.soundPlayer.init({encoding:g,channels:M,sampleRate:t,flushingTime:1e3}),this.initAudioPlayer=!0}},M.createDecodeWorker=function(){var A;if(this.decodeWorker=null,"undefined"!=typeof Worker)try{A=this.decodeWorker=i(60),this.onwmsg=this.onWorkerMessage.bind(this);var M={cmd:e.u,url:e.f(),isFlv:!this._controller._isM3u8};A.postMessage(M),A.addEventListener("message",this.onwmsg),A.onerror=function(A){}}catch(A){console.log("Create Decode Worker fail: "+A),this.w=void 0}else this.decodeWorker=null;this.decodeWorker&&null==this._webGLPlayer&&(this._webGLPlayer=new I(this._mediaCanvas),this._webGLPlayer.initGL({preserveDrawingBuffer:!1}))},M.getCurrentPlayTime=function(){return this.currentPlayTime},M.getTotalDuration=function(){return this._controller?this._controller._GetM3u8TotalDuration():this.totalDuration},M._onMediaDataCallback=function(A,M,t,g,I,i,T,E,N,n){if(g<1&&!M&&1===T)console.log("_onMediaDataCallback... Exception...");else if(M){null==A.decodeWorker&&(A.createDecodeWorker(),A._callbackWasmTypePtr&&A._callbackWasmTypePtr(A._callbackUserPtr,!0));var D=new Uint8Array(i);if(A.decodeWorker){var C={cmd:e.o,mediaType:t,codecId:g,frameType:I,samplerate:E,channelNum:N,bitPerSample:n,playTimeSec:E,dat:D};A.decodeWorker.postMessage(C,[C.dat.buffer])}}else A._callbackWasmTypePtr&&A._callbackWasmTypePtr(A._callbackUserPtr,!1)},M.onWorkerMessage=function(A){var M=A.data;switch(M.cmd){case e.n:var t={cmd:e.w};this.downloadWorker.postMessage(t);break;case e.k:M.workerId==e.b?(this.downloadWorker.terminate(),this.downloadWorker=null):M.workerId==e.a?(this.decodeWorker.terminate(),this.decodeWorker=null,this.soundPlayer&&(this.soundPlayer.destroy(),delete this.soundPlayer,this.soundPlayer=null),this._webGLPlayer&&this._webGLPlayer.renderVideoFrame(null,0,0)):M.workerId==e.e&&(this.renderWorker.terminate(),this.renderWorker=null);break;case e.m:this.enableAudio&&this.openAudio();break;case e.o:if(M.workerId==e.b)this.decodeWorker;else if(M.workerId==e.a){if(this.pauseDisplay)break;if(1==M.mediaType){if(this._mediaCanvas.width=M.width,this._mediaCanvas.height=M.height,M.playTimeSec>0){var g=Math.floor((M.playTimeSec+1e3)/1e3);this.currentPlayTime!==g&&(this.initDuration>0&&(this.currentPlayTime+=g-this.initDuration),this.initDuration!==g&&(this.initDuration=g,this._emitter&&this._emitter.emit(iA.CB_PLAY_INFO)))}this._webGLPlayer.renderVideoFrame(M.dat,M.width,M.height)}else 2==M.mediaType&&(null==this.soundPlayer&&(null!=this.soundPlayer||this.isiOS||this.isiPad?(this.audioFmt=M.fmt,this.audioSamplerate=M.samplerate,this.audioChannelNum=M.ch,44100==this.audioSamplerate&&(this.audioFmt=1)):this.OpenAudioPlayer(M.fmt,M.samplerate>=16e3?2:M.ch,M.samplerate)),this.enableAudio&&this.soundPlayer&&this.initAudioPlayer&&this.soundPlayer.play(M.dat))}break;case e.l:this.avQueue.length>0&&this.pauseDisplay}},M.openAudio=function(){var A={cmd:e.t};if(this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(A),this.enableAudio=!0,null==this.soundPlayer&&(this.isiOS||this.isiPad)){if(!(this.audioSamplerate>0))return!1;this.OpenAudioPlayer(this.audioFmt,this.audioSamplerate>=16e3?2:this.audioChannelNum,this.audioSamplerate)}return!0},M.closeAudio=function(){var A={cmd:e.j};return this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(A),this.soundPlayer&&this.initAudioPlayer&&this.soundPlayer.clearAudioBuffer(),this.enableAudio=!1,!0},M.open=function(){this._worker?this._worker.postMessage({cmd:"start"}):(this._controller.setMediaSourceCallback(this._onMediaDataCallback,this),this._controller.start())},M.close=function(){var A={cmd:e.k};this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(A),this._webGLPlayer&&this._webGLPlayer.renderVideoFrame(null,0,0),this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()},M.changeSpeed=function(A){this._controller&&this._controller.changeSpeed(A)},M.seekToSecs=function(A,M){var t={cmd:e.z,type:M,time:A};this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(t),this._controller.seekToSecs(A,M)},M.seek=function(A){this._worker?this._worker.postMessage({cmd:"seek",param:A}):this._controller.seek(A)},M.isPaused=function(){return this.pauseDisplay},M.pause=function(){this.pauseDisplay=!0;var A={cmd:e.v};if(this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(A),this._controller){var M=this._controller._GetM3u8Loader();M?M.pause():this._controller.pauseOrResume(!0)}this._worker&&this._worker.postMessage({cmd:"pause"})},M.resume=function(){this.pauseDisplay=!1;var A={cmd:e.y};if(this.decodeWorker&&void 0!==this.decodeWorker&&this.decodeWorker.postMessage(A),this._controller){var M=this._controller._GetM3u8Loader();M?M.resume():this._controller.pauseOrResume(!1)}this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()},M._onReconnecting=function(A){var M=this;Promise.resolve().then((function(){M._emitter.emit(AA.RECONNECT_ING,A)}))},M._onReconnectSuccess=function(A){var M=this;Promise.resolve().then((function(){M._emitter.emit(AA.RECONNECT_SUCCESS,A)}))},M._onInitSegment=function(A,M){var t=this;Promise.resolve().then((function(){t._emitter.emit(AA.INIT_SEGMENT,A,M)}))},M._onMediaSegment=function(A,M){var t=this;Promise.resolve().then((function(){t._emitter.emit(AA.MEDIA_SEGMENT,A,M)}))},M._onLoadingComplete=function(){var A=this;Promise.resolve().then((function(){A._emitter.emit(AA.LOADING_COMPLETE)}))},M._onRecoveredEarlyEof=function(){var A=this;Promise.resolve().then((function(){A._emitter.emit(AA.RECOVERED_EARLY_EOF)}))},M._onMediaInfo=function(A){var M=this;Promise.resolve().then((function(){M._emitter.emit(AA.MEDIA_INFO,A)}))},M._onMetaDataArrived=function(A){var M=this;Promise.resolve().then((function(){M._emitter.emit(AA.METADATA_ARRIVED,A)}))},M._onScriptDataArrived=function(A){var M=this;Promise.resolve().then((function(){M._emitter.emit(AA.SCRIPTDATA_ARRIVED,A)}))},M._onStatisticsInfo=function(A){var M=this;Promise.resolve().then((function(){M._emitter.emit(AA.STATISTICS_INFO,A)}))},M._onIOError=function(A,M){var t=this;Promise.resolve().then((function(){t._emitter.emit(AA.IO_ERROR,A,M)}))},M._onDemuxError=function(A,M){var t=this;Promise.resolve().then((function(){t._emitter.emit(AA.DEMUX_ERROR,A,M)}))},M._onRecommendSeekpoint=function(A){var M=this;Promise.resolve().then((function(){M._emitter.emit(AA.RECOMMEND_SEEKPOINT,A)}))},M._onLoggingConfigChanged=function(A){this._worker&&this._worker.postMessage({cmd:"logging_config",param:A})},M._onWorkerMessage=function(A){var M=A.data,t=M.data;if("destroyed"===M.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(M.msg){case AA.INIT_SEGMENT:case AA.MEDIA_SEGMENT:this._emitter.emit(M.msg,t.type,t.data);break;case AA.LOADING_COMPLETE:case AA.RECOVERED_EARLY_EOF:this._emitter.emit(M.msg);break;case AA.MEDIA_INFO:Object.setPrototypeOf(t,Q.a.prototype),this._emitter.emit(M.msg,t);break;case AA.METADATA_ARRIVED:case AA.SCRIPTDATA_ARRIVED:case AA.STATISTICS_INFO:this._emitter.emit(M.msg,t);break;case AA.IO_ERROR:case AA.DEMUX_ERROR:this._emitter.emit(M.msg,t.type,t.info);break;case AA.RECOMMEND_SEEKPOINT:this._emitter.emit(M.msg,t);break;case"logcat_callback":n.a.emitter.emit("log",t.type,t.logcat);break;case AA.RECONNECT_ING:case AA.RECONNECT_SUCCESS:console.log("no process... reconnectSuccess")}},A}(),EA=function(){function A(A){this.TAG="MSEController",this._config=A,this._emitter=new N.a,this._currentPlayTime=0,this._hlsSeekTime=0,this._lastPlayTime=0,this._pause=!1,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._seek=!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 d}var M=A.prototype;return M.destroy=function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null},M.on=function(A,M){this._emitter.addListener(A,M)},M.off=function(A,M){this._emitter.removeListener(A,M)},M.setSeekPlayTime=function(A){this._mediaElement&&(this._lastPlayTime=Math.floor(this._mediaElement.currentTime)),this._hlsSeekTime=A},M.pause=function(){this._pause=!0},M.resume=function(){this._pause=!1},M.attachMediaElement=function(A){if(this._mediaSource)throw new Y.a("MediaSource has been attached to an HTMLMediaElement!");var M=this._mediaSource=new window.MediaSource;M.addEventListener("sourceopen",this.e.onSourceOpen),M.addEventListener("sourceended",this.e.onSourceEnded),M.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=A,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),A.src=this._mediaSourceObjectURL;var t=this;A.addEventListener("timeupdate",(function(){var M=Math.floor(A.currentTime);t._hlsSeekTime>0&&(M=M-t._lastPlayTime+t._hlsSeekTime),t._currentPlayTime!=M&&(t._currentPlayTime=M,t._emitter&&t._emitter.emit(iA.CB_PLAY_INFO))}),!1),A.addEventListener("pause",(function(){})),A.addEventListener("play",(function(){}))},M.getCurrentPlayTime=function(){return this._currentPlayTime},M.getTotalDuration=function(){return this._mediaElement.duration},M.detachMediaElement=function(){if(this._mediaSource){var A=this._mediaSource;for(var M in this._sourceBuffers){var t=this._pendingSegments[M];t.splice(0,t.length),this._pendingSegments[M]=null,this._pendingRemoveRanges[M]=null,this._lastInitSegments[M]=null;var g=this._sourceBuffers[M];if(g){if("closed"!==A.readyState){try{A.removeSourceBuffer(g)}catch(A){n.a.e(this.TAG,A.message)}g.removeEventListener("error",this.e.onSourceBufferError),g.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[M]=null,this._sourceBuffers[M]=null}}if("open"===A.readyState)try{A.endOfStream()}catch(A){n.a.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)},M.appendInitSegment=function(A,M){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(A),void this._pendingSegments[A.type].push(A);var t=A,g=""+t.container;t.codec&&t.codec.length>0&&(g+=";codecs="+t.codec);var I=!1;if(n.a.v(this.TAG,"Received Initialization Segment, mimeType: "+g),this._lastInitSegments[t.type]=t,g!==this._mimeTypes[t.type]){if(this._mimeTypes[t.type])n.a.v(this.TAG,"Notice: "+t.type+" mimeType changed, origin: "+this._mimeTypes[t.type]+", target: "+g);else{I=!0;try{var e=this._sourceBuffers[t.type]=this._mediaSource.addSourceBuffer(g);e.addEventListener("error",this.e.onSourceBufferError),e.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(A){return n.a.e(this.TAG,A.message),void this._emitter.emit(iA.ERROR,{code:A.code,msg:A.message})}}this._mimeTypes[t.type]=g}M||this._pendingSegments[t.type].push(t),I||this._sourceBuffers[t.type]&&!this._sourceBuffers[t.type].updating&&this._doAppendSegments(),C.safari&&"audio/mpeg"===t.container&&t.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=t.mediaDuration/1e3,this._updateMediaSourceDuration())},M.appendMediaSegment=function(A){var M=A;this._pendingSegments[M.type].push(M),(this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()||this._seek)&&(this._doCleanupSourceBuffer(),this._seek=!1);var t=this._sourceBuffers[M.type];!t||t.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()},M.reset=function(A){for(var M in this._sourceBuffers){var t=this._sourceBuffers[M];if(t){for(var g=t.buffered,I=!1,e=0;e=1&&A-g.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1},M.AdjustPlayTimeToEnd=function(){if(null!=this._emitter&&null!=this._emitter){var A=this._mediaElement.currentTime;for(var M in this._sourceBuffers)if("video"===M){var t=this._sourceBuffers[M];if(t&&!t.updating){var g=t.buffered;if(g.length>0){var I=g.end(g.length-1);I-A>2&&(this._mediaElement.pause(),(I=A+(I-A)/2)>0&&(this._mediaElement.currentTime=I),this._mediaElement.play())}}}}},M.GetSourceBufferStartTime=function(){for(var A in this._sourceBuffers){var M=this._sourceBuffers[A];if(M)for(var t=M.buffered,g=0;g=this._config.autoCleanupMaxBackwardDuration){I=!0;var E=A-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[M].push({start:i,end:E})}}else T0&&(isNaN(M)||t>M)&&(n.a.v(this.TAG,"Update MediaSource duration from "+M+" to "+t),this._mediaSource.duration=t),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}},M._doRemoveRanges=function(){for(var A in this._pendingRemoveRanges)if(this._sourceBuffers[A]&&!this._sourceBuffers[A].updating)for(var M=this._sourceBuffers[A],t=this._pendingRemoveRanges[A];t.length&&!M.updating;){var g=t.shift();M.remove(g.start,g.end)}},M._doAppendSegments=function(){var A=this._pendingSegments;for(var M in e.c()&&!this._pause&&this.AdjustPlayTimeToEnd(),A)if(this._sourceBuffers[M]&&!this._sourceBuffers[M].updating&&A[M].length>0){var t=A[M].shift();if(t.timestampOffset){var g=this._sourceBuffers[M].timestampOffset,I=t.timestampOffset/1e3;Math.abs(g-I)>.1&&(n.a.v(this.TAG,"Update MPEG audio timestampOffset from "+g+" to "+I),this._sourceBuffers[M].timestampOffset=I),delete t.timestampOffset}if(!t.data||0===t.data.byteLength)continue;try{this._sourceBuffers[M].appendBuffer(t.data),this._isBufferFull=!1,"video"===M&&t.hasOwnProperty("info")&&this._idrList.appendArray(t.info.syncPoints)}catch(A){this._pendingSegments[M].unshift(t),this.__ClearAllSourceBuffer(),22===A.code?(this._isBufferFull||this._emitter.emit(iA.BUFFER_FULL),this._isBufferFull=!0):(n.a.e(this.TAG,A.message),this._emitter.emit(iA.ERROR,{code:A.code,msg:A.message}))}}},M._onSourceOpen=function(){if(n.a.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var A=this._pendingSourceBufferInit;A.length;){var M=A.shift();this.appendInitSegment(M,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(iA.SOURCE_OPEN)},M._onSourceEnded=function(){n.a.v(this.TAG,"MediaSource onSourceEnded")},M._onSourceClose=function(){n.a.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))},M._hasPendingSegments=function(){var A=this._pendingSegments;return A.video.length>0||A.audio.length>0},M._hasPendingRemoveRanges=function(){var A=this._pendingRemoveRanges;return A.video.length>0||A.audio.length>0},M._onSourceBufferUpdateEnd=function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(iA.UPDATE_END)},M._onSourceBufferError=function(A){n.a.e(this.TAG,"SourceBuffer Error: "+A)},A}(),NA="NetworkError",nA="MediaError",DA=(l.a.FORMAT_ERROR,l.a.FORMAT_UNSUPPORTED,l.a.CODEC_UNSUPPORTED,{enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0});function CA(){return Object.assign({},DA)}function rA(A,M){for(var t=0;t0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0)}this._transmuxer=new TA(this._mediaDataSource,this._config,this._mediaCanvas,this,this.callbackWasmType),this._transmuxer.on(AA.INIT_SEGMENT,(function(M,t){A._IsWasm||(A._initFlag=!0,A._msectl.appendInitSegment(t),"video"===M?A._msectlInitSegmentVideoParams=t:"audio"===M&&(A._msectlInitSegmentAudioParams=t))})),this._transmuxer.on(AA.MEDIA_SEGMENT,(function(M,t){if(A._IsWasm||A._msectlResetComplete&&A._msectl.appendMediaSegment(t),A._config.lazyLoad&&!A._config.isLive){var g=A._mediaElement.currentTime;t.info.endDts>=1e3*(g+A._config.lazyLoadMaxDuration)&&null==A._progressChecker&&(n.a.v(A.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),A._suspendTransmuxer())}})),this._transmuxer.on(AA.LOADING_COMPLETE,(function(){A._IsWasm||A._msectl.endOfStream(),A._emitter.emit(r.LOADING_COMPLETE)})),this._transmuxer.on(AA.RECOVERED_EARLY_EOF,(function(){A._emitter.emit(r.RECOVERED_EARLY_EOF)})),this._transmuxer.on(AA.IO_ERROR,(function(M,t){A._emitter.emit(r.ERROR,NA,M,t)})),this._transmuxer.on(AA.DEMUX_ERROR,(function(M,t){A._emitter.emit(r.ERROR,nA,M,{code:-1,msg:t})})),this._transmuxer.on(AA.MEDIA_INFO,(function(M){A._mediaInfo=M,A._emitter.emit(r.MEDIA_INFO,Object.assign({},M))})),this._transmuxer.on(AA.METADATA_ARRIVED,(function(M){A._emitter.emit(r.METADATA_ARRIVED,M)})),this._transmuxer.on(AA.SCRIPTDATA_ARRIVED,(function(M){A._emitter.emit(r.SCRIPTDATA_ARRIVED,M)})),this._transmuxer.on(AA.STATISTICS_INFO,(function(M){A._statisticsInfo=A._fillStatisticsInfo(M),A._emitter.emit(r.STATISTICS_INFO,Object.assign({},A._statisticsInfo))})),this._transmuxer.on(AA.RECOMMEND_SEEKPOINT,(function(M){A._mediaElement&&!A._config.accurateSeek&&(A._requestSetTime=!0,A._mediaElement.currentTime=M/1e3)})),this._transmuxer.on(AA.RECONNECT_ING,(function(M){A.callbackConnectStatusFunc&&A.callbackConnectStatusFunc(A.callbackUserPtr,0)})),this._transmuxer.on(AA.RECONNECT_SUCCESS,(function(M){A._IsWasm||(M>1&&A._msectl&&(A._transmuxer.seekToSecs(0,0),console.log("msectl.reset..."),A._msectl.reset(!0)),A._mediaElement),A.callbackConnectStatusFunc&&A.callbackConnectStatusFunc(A.callbackUserPtr,1)})),this._transmuxer.on(iA.CB_PLAY_INFO,this._onmseCbPlayInfo.bind(this)),this._transmuxer.open()},I.unload=function(){this._IsWasm||(this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0)),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null),this._initFlag=!1},I.play=function(){return null==this._transmuxer?(this.needCallPlay=!0,this._mediaElement&&(this._mediaElement.volume=0),!1):this._mediaElement?(this.needCallPlay=!1,this._mediaElement.play()):void 0},I.pause=function(){this._transmuxer&&this._transmuxer.pause(),this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.pause()},I.resume=function(){this._transmuxer&&this._transmuxer.resume(),this._msectl&&(e.c()&&this._msectl.reset(!1),this._msectl.resume()),this._mediaElement&&this._mediaElement.play()},I.openAudio=function(){if(this._IsWasm){if(this._transmuxer)return this._transmuxer.openAudio()}else if(this._mediaElement)return this._mediaElement.volume=1,!0;return!1},I.closeAudio=function(){if(this._IsWasm){if(this._transmuxer)return this._transmuxer.closeAudio()}else if(this._mediaElement)return this._mediaElement.volume=0,!0;return!1},I.seek=function(A,M){if(!this._IsWasm&&this.isFlv&&this._mediaElement&&this._mediaElement.duration>0){var t=Math.floor(A/100*this._mediaElement.duration);return this._mediaElement?this._internalSeek(t):this._pendingSeekTime=t,!0}if(this._transmuxer){t=Math.floor(A/100*this._transmuxer.getTotalDuration());return this._msectl&&this._msectl.getCurrentPlayTime()==t||(this._transmuxer.seekToSecs(A,M),this._msectl&&(this._msectl.setSeekPlayTime(t),this._msectl.reset(!0)),this._mediaElement?(Math.floor(this._mediaElement.currentTime),Math.floor(t),this._progressChecker):this._pendingSeekTime=t),!0}},I._fillStatisticsInfo=function(A){if(A.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return A;var M=!0,t=0,g=0;if(this._mediaElement.getVideoPlaybackQuality){var I=this._mediaElement.getVideoPlaybackQuality();t=I.totalVideoFrames,g=I.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(t=this._mediaElement.webkitDecodedFrameCount,g=this._mediaElement.webkitDroppedFrameCount):M=!1;return M&&(A.decodedFrames=t,A.droppedFrames=g),A},I._onmseCbPlayInfo=function(){if(this._transmuxer){var A=0,M=0;!this._IsWasm&&this._msectl?(A=this._msectl.getCurrentPlayTime(),(M=this._msectl.getTotalDuration())!=1/0||e.c()||(M=this._transmuxer.getTotalDuration())):((A=this._transmuxer.getCurrentPlayTime())<0&&(A=0),M=this._transmuxer.getTotalDuration()),this.callbackPlayTimeFunc&&this.callbackPlayTimeFunc(this.callbackUserPtr,this.isFlv?"flv":"m3u8",A,M)}},I._onmseUpdateEnd=function(){if(this._config.lazyLoad&&!this._config.isLive){for(var A=this._mediaElement.buffered,M=this._mediaElement.currentTime,t=0,g=0;g=M+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(n.a.v(this.TAG,"onmseUpdateEnd::Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}},I._onmseBufferFull=function(){n.a.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()},I._suspendTransmuxer=function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))},I._checkProgressAndResume=function(){if(null!=this._mediaElement){for(var A=this._mediaElement.currentTime,M=this._mediaElement.buffered,t=!1,g=0;g=I&&A=e-this._config.lazyLoadRecoverDuration&&(t=!0);break}}t&&(window.clearInterval(this._progressChecker),this._progressChecker=null,t&&(n.a.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}},I._isTimepointBuffered=function(A){for(var M=this._mediaElement.buffered,t=0;t=g&&A0){var I=this._mediaElement.buffered.start(0);(I<1&&A0&&e.c()){console.log("_checkAndApplyUnbufferedSeekpoint. RETURN..."),null!=this._progressChecker&&(window.clearTimeout(this._progressChecker),this._progressChecker=null);var A=!1;return this._transmuxer&&(A=this._transmuxer.isPaused()),void(this._mediaElement&&!A&&this._mediaElement.play())}if(this._seekpointRecord)if(this._seekpointRecord.recordTime<=this._now()-100){var M=this._mediaElement.currentTime;this._seekpointRecord=null,this._isTimepointBuffered(M)||(null!=this._progressChecker&&(window.clearTimeout(this._progressChecker),this._progressChecker=null),this._msectl.seek(M),this._transmuxer.seek(Math.floor(1e3*M)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=M))}else window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)},I._checkAndResumeStuckPlayback=function(A){var M=this._mediaElement;if(A||!this._receivedCanPlay||M.readyState<2){var t=M.buffered;t.length>0&&M.currentTime0){var g=t.start(0);if(g<1&&M0;){this.avQueue[0];this.avQueue.shift()}},M.play=function(A,M){return this.pauseDisplay?this.resume():(this.url=A,null==this.flvPlayer&&(this.flvPlayer=new cA({type:this.streamType,isLive:!0,url:A,startPlaySecs:M},{callbackFunc:this.cbFunc,streamType:this.streamType,enableWorker:!1,lazyLoadMaxDuration:"flv"===this.streamType?1:180,lazyLoadRecoverDuration:"flv"===this.streamType?1:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:"flv"===this.streamType?120:180,autoCleanupMinBackwardDuration:"flv"===this.streamType?60:120,seekType:"range",enableStashBuffer:!1,decodeType:this.decodeType}),"flv"===this.streamType&&e.h(!0)),this.flvPlayer.setCallback(this.callbackFunc,this.callbackPlayTimeFunc,this.callbackConnectStatusFunc,this.callbackUserPtr),this.flvPlayer.attachMediaElement(this.h5Video,this.canvas),this.flvPlayer.load(),this.flvPlayer.play()),!0},M.stop=function(){return this.pauseDisplay=!1,this.closeAudio(),this.flvPlayer&&(this.flvPlayer.unload(),this.flvPlayer.detachMediaElement()),!0},M.isPause=function(){return this.pauseDisplay},M.pause=function(){this.pauseDisplay=!0,this.flvPlayer&&this.flvPlayer.pause()},M.resume=function(){this.pauseDisplay=!1,this.flvPlayer&&this.flvPlayer.resume()},M.seek=function(A,M){this.pauseDisplay=!1,this.flvPlayer&&this.flvPlayer.seek(A,M)},M.setTrack=function(A,M){},M.openAudio=function(){return!!this.flvPlayer&&this.flvPlayer.openAudio()},M.closeAudio=function(){return!!this.flvPlayer&&this.flvPlayer.closeAudio()},M.openStatinfo=function(){return this.printStatInfo=!0,!0},M.closeStatinfo=function(){return this.printStatInfo=!1,!0},M.isFullScreen=function(){return this.fullScreenFlag},M.canvasFullscreen=function(){var A=this.canvas;A.RequestFullScreen?A.RequestFullScreen():A.webkitRequestFullScreen?A.webkitRequestFullScreen():A.mozRequestFullScreen?A.mozRequestFullScreen():A.msRequestFullscreen?A.msRequestFullscreen():e.d("This browser doesn't supporter fullscreen")},M.canvasExitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen?document.msExitFullscreen():e.d("Exit fullscreen doesn't work")},M.fullscreen=function(A){if(1==A){if(!this.fullScreenFlag)return this.canvasFullscreen(),this.fullScreenFlag=!0,!0}else if(this.fullScreenFlag)return this.canvasExitFullscreen(),this.fullScreenFlag=!1,!0;return!1},A}(),BA=function(){function A(){}return A.supportMSEH264Playback=function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')},A.supportNetworkStreamIO=function(){var A=new $({},CA()),M=A.loaderType;return A.destroy(),"fetch-stream-loader"==M||"xhr-moz-chunked-loader"==M},A.getNetworkLoaderTypeName=function(){var A=new $({},CA()),M=A.loaderType;return A.destroy(),M},A.supportNativeMediaPlayback=function(M){null==A.videoElement&&(A.videoElement=window.document.createElement("video"));var t=A.videoElement.canPlayType(M);return"probably"===t||"maybe"==t},A.getFeatureList=function(){var M={mseFlvPlayback:!1,mseLiveFlvPlayback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return M.mseFlvPlayback=A.supportMSEH264Playback(),M.networkStreamIO=A.supportNetworkStreamIO(),M.networkLoaderName=A.getNetworkLoaderTypeName(),M.mseLiveFlvPlayback=M.mseFlvPlayback&&M.networkStreamIO,M.nativeMP4H264Playback=A.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),M.nativeWebmVP8Playback=A.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),M.nativeWebmVP9Playback=A.supportNativeMediaPlayback('video/webm; codecs="vp9"'),M},A}();function QA(A,M){for(var t=0;t0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)},I.unload=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},I.play=function(){return this.pauseDisplay||(this.attachMediaElement(this.h5Video),this.load()),this.pauseDisplay=!1,this._mediaElement.play()},I.stop=function(){this.unload(),this.detachMediaElement()},I.pause=function(){this._mediaElement.pause(),this.pauseDisplay=!0},I.isPause=function(){return this.pauseDisplay},I.openAudio=function(){return this._mediaElement.volume=1,!0},I.closeAudio=function(){return this._mediaElement.volume=0,!0},I.seek=function(A,M){var t=A;1==M&&(t=A/100*this._mediaElement.duration),this._mediaElement?this._mediaElement.currentTime=t:this._pendingSeekTime=t},I._onvLoadedMetadata=function(A){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(r.MEDIA_INFO,this.mediaInfo)},I._reportStatisticsInfo=function(){this._emitter.emit(r.STATISTICS_INFO,this.statisticsInfo)},M=A,(t=[{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(A){this._mediaElement.volume=A}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(A){this._mediaElement.muted=A}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(A){this._mediaElement?this._mediaElement.currentTime=A:this._pendingSeekTime=A}},{key:"mediaInfo",get:function(){var A={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};if(this._mediaElement){A.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(A.width=this._mediaElement.videoWidth,A.height=this._mediaElement.videoHeight),this.callbackPlayTimeFunc&&this.callbackPlayTimeFunc(this.callbackUserPtr,"mp4",this._mediaElement.currentTime,A.duration/1e3);var M=this,t=0,g=A.duration/1e3;this._mediaElement.addEventListener("timeupdate",(function(){if(M._mediaElement){var A=M._mediaElement.currentTime;if(null!=A){var I=Math.floor(A);t!=I&&(t=I,M.callbackPlayTimeFunc(M.callbackUserPtr,"mp4",t,g))}}}),!1)}return A}},{key:"statisticsInfo",get:function(){var A={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return A;var M=!0,t=0,g=0;if(this._mediaElement.getVideoPlaybackQuality){var I=this._mediaElement.getVideoPlaybackQuality();t=I.totalVideoFrames,g=I.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(t=this._mediaElement.webkitDecodedFrameCount,g=this._mediaElement.webkitDroppedFrameCount):M=!1;return M&&(A.decodedFrames=t,A.droppedFrames=g),A}}])&&QA(M.prototype,t),g&&QA(M,g),A}(),hA=(t(206),t(214),t(220),function(){function A(A,M,t,g){void 0===g&&(g={});var I=g,e=I.cbUserPtr,i=I.decodeType,T=I.openAudio,E=I.BigPlay,N=I.Height,n=I.UnLogo,D=I.HideKbs,C=I.cfKbs;if(this.playerInstance=null,this.url=A,this.UnLogo=n,this.callbackFunc=t||function(){},this.fulls=!0,this.callbackUserPtr=e,this.decodeType="auto",this.version="v2.0.20200930",this.timeKbps=null,this.HideKbs=D,this.cfKbs=C||function(){},"auto"!==i&&"soft"!==i||(this.decodeType=i),BA.supportMSEH264Playback()||(this.decodeType="soft"),this.internalTriggerPlay=!1,this.showTimeLabel=!1,this.seeking=!1,this.callbackEnd=!1,this.initH5Flag=!1,this.currentH5Status=!1,this.seekTimeSecs=0,this.fullScreenFlag=!1,this.playerUI=document.getElementById(M),null!=this.playerUI){if(this.playerUI.style=N?"color:blue;position:relative;background-color:black;width:100%;height:100%;overflow: hidden;":"color:blue;position:relative;background-color:black;width:100%;padding-top:56.25%;overflow: hidden;",this.h5Video=null,this.h5Video=document.createElement("VIDEO"),this.h5Video.style="width:0%;height:0%;position:absolute;top:0px;left:0px;background: black;",this.h5Video.setAttribute("oncontextmenu","return false"),this.playerUI.appendChild(this.h5Video),null!=E&&E){this.bigPlayBox=document.createElement("div"),this.bigPlayBox.style="display:block",this.bigPlayBox.classList="bigPlayBox fa fa-play",this.playerUI.appendChild(this.bigPlayBox);var r=this;this.bigPlayBox.onclick=function(){""!==r.url&&(r.playFlag?(r.internalTriggerPlay=!1,r.play(r.url,1,r.seekTimeSecs)):(r.pause(),r.bigPlayBox.classList.remove("fa-pause"),r.bigPlayBox.classList.add("fa-play"),r.bigPlayBox.title="Play",r.playBtn.classList.remove("fa-pause"),r.playBtn.classList.add("fa-play"),r.bigPlayBox.style="display:block",r.playBtn.title="Play",r.playFlag=!0))}}this.lodingBox=document.createElement("div"),this.lodingBox.style="width:100%;height:100%;position: absolute;left:0px;top:0px;background:rgba(0,0,0,0.6);z-index:9;display:none",this.lodingBox.classList="lodingBox",this.playerUI.appendChild(this.lodingBox),this.conter=document.createElement("div"),this.conter.classList="conter",this.lodingBox.appendChild(this.conter),this.loding=document.createElement("div"),this.loding.classList="Loding",this.conter.appendChild(this.loding),this.loding=document.createElement("span"),this.loding.classList="LodingTitle",this.loding.innerHTML="加载中...",this.conter.appendChild(this.loding),this.offscreenCanvas=null,this.canvas=document.createElement("canvas"),this.canvas.style="width:100%;height:100%;position:absolute;top:0px;left:0px;background: black;",this.playerUI.appendChild(this.canvas),this.timeBox=document.createElement("div"),this.timeBox.style="position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;display:none;background-color: black;z-index:10;",this.playerUI.appendChild(this.timeBox),this.playBtn=document.createElement("span"),this.playFlag=!0,this.playBtn.classList="fa fa-play",this.playBtn.title="Play",this.playBtn.style="display:inine-block;width: 20px;color: #fff;line-height: 27px;margin: 0 10px;padding:0px 2px;cursor:pointer;text-align:center",this.timeRule=null,this.timeTrack=null,this.timeLabel=null;var c=this;this.playBtn.onclick=function(){""!==c.url&&(c.playFlag?(c.internalTriggerPlay=!1,c.play(c.url,1,c.seekTimeSecs)):(c.pause(),c.playBtn.classList.remove("fa-pause"),c.playBtn.classList.add("fa-play"),c.playBtn.title="Play",null!=c.bigPlayBox&&(c.bigPlayBox.classList.remove("fa-pause"),c.bigPlayBox.classList.add("fa-play"),c.bigPlayBox.style="display:block",c.bigPlayBox.title="Play"),c.playFlag=!0))},this.timeBox.appendChild(this.playBtn);var o=document.createElement("span");o.classList="fa fa-stop",o.title="Stop",o.onclick=function(){c.stop(),c.playBtn.classList.remove("fa-pause"),c.playBtn.classList.add("fa-play"),c.playBtn.title="Play",null!=c.bigPlayBox&&(c.bigPlayBox.classList.remove("fa-pause"),c.bigPlayBox.classList.add("fa-play"),c.bigPlayBox.style="display:block",c.bigPlayBox.title="Play"),c.playFlag=!0,c.timeTrack&&(c.timeTrack.value=0,c.timeLabel.innerHTML="00:00:00/00:00:00")},o.style="display:inine-block;width: 15px;color: #fff;line-height: 27px;margin-right:10px;padding:0px 2px;cursor:pointer;",this.timeBox.appendChild(o),this.soundButton=document.createElement("span"),this.defaultAudioStatus=1==T,this.enableAudio=1==T,this.enableAudio?this.soundButton.classList="fa fa-volume-up ":this.soundButton.classList="fa fa-volume-off ",this.soundButton.style="display:inine-block;width:23px;color:#fff;line-height: 27px;margin-right:10px; text-align:center;cursor:pointer;",this.soundButton.onclick=function(){c.enableAudio?c.closeAudio():c.openAudio()},this.timeBox.appendChild(this.soundButton);var B=document.createElement("span");B.classList="no-padding",B.style="display:inine-block;width:100%;display:flex;",this.timeBox.appendChild(B);var Q=document.createElement("input");Q.classList="timeTrack",Q.id="timeTrack",Q.type="range",Q.style="width:100%;-webkit-appearance: none;height:3px;border-radius:3px;cursor:pointer;margin:auto;display:none",Q.value=0,B.appendChild(Q),this.timeTrack=Q,this.timeRule=B;var a=document.createElement("span");a.classList="padding",a.style="display:inine-block;padding-left:10px;",this.timeBox.appendChild(a);var h=document.createElement("label");h.style="color: #fff;margin: 0 40px 0px 10px;line-height:27px;display:none",h.innerHTML="00:00:00/00:00:00",a.appendChild(h),this.timeLabel=h,this.timeTrack&&(this.timeTrack.oninput=function(){c.seeking||c.seekToPercent(c.timeTrack.value,1)},this.timeTrack.onchange=function(){}),n&&void 0!==n||(this.logo=document.createElement("a"),this.logo.classList="iconfont iconqingxiLOGO",this.logo.title="青犀视频",this.logo.href="http://www.tsingsee.com",this.logo.target="_blank",this.logo.style="display:inline-block;color: #fff;font-size:70px;margin-right:40px;line-height: 27px;text-align:center;position:absolute;top:1px;right:0px;cursor:pointer;overflow: hidden;opacity: 1;",this.timeBox.appendChild(this.logo),this.detectionLogo()),this.domKbps=document.createElement("div"),this.timeBox.appendChild(this.domKbps),this.full=document.createElement("span"),this.full.classList="fa fa-expand",this.full.title="Fullscreen",this.full.onclick=function(){c.fullScreen()},this.full.style="color: #fff;width:20px;margin-right: 10px;line-height: 27px;text-align:center;position:absolute;top:0px;right:0px;cursor:pointer",this.timeBox.appendChild(this.full),this.Menu=document.createElement("div"),this.Menu.style=" position: absolute;left: 0;top: 0;min-width:140px;border-radius: 4px;background:rgba(43, 51, 63, 0.7); color:#fff;font-size:12px;padding:5px 10px;display: none;z-index: 2;",this.playerUI.appendChild(this.Menu);var s=document.createElement("div");s.innerHTML="版本号:"+this.version,this.Menu.appendChild(s);var y=this;this.playerUI.oncontextmenu=function(A){var M=A.offsetX,t=A.offsetY;return y.Menu.style.display="block",y.Menu.style.left=M+"px",y.Menu.style.top=t+"px",console.dir(A),!1},this.playerUI.onclick=function(A){A=A||window.event;y.Menu.style.display="none"},y.Menu.onclick=function(A){(A=A||window.event).cancelBubble=!0},this.playerUI.onmousemove=function(){c.timeBox.style="position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;background-color: rgba(43,51,63,.7);z-index:10;",clearTimeout(this.Timer),this.Timer=setTimeout((function(){c.timeBox.style="position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;background-color: rgba(43,51,63,.7);z-index:10;opacity:0;"}),3e3)},this.playerUI.onmouseout=function(){clearTimeout(this.Timer),this.Timer=setTimeout((function(){c.timeBox.style="position: absolute;left: 0px;bottom: 0px;display:flex;width: 100%;background-color: rgba(43,51,63,.7);z-index:10;opacity:0;"}),3e3)},document.addEventListener("fullscreenchange",(function(A){document.fullscreenElement||(y.full.classList.remove("fa-compress"),y.full.classList.add("fa-expand"),document.exitFullScreen?document.exitFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():element.msExitFullscreen&&element.msExitFullscreen(),y.fulls=!0,y.full.title="Fullscreen")}))}}var M=A.prototype;return M.normal=function(){this.timeRule.innerHTML="",this.timeRule.style="color:#fff;line-height: 27px;font-size=16px;width:100%;display:flex;",this.timeLabel.style=" color: #fff;margin: 0 120px 0px 10px;display:none"},M.live=function(){this.timeRule.innerHTML="LIVE",this.timeRule.style="color:#fff;line-height: 27px;font-size=16px;width:100%;display:flex;",this.timeLabel.style=" color: #fff;margin: 0 120px 0px 10px;display:none"},M.playback=function(){this.timeRule.innerHTML="",this.timeTrack.style="width:100%;-webkit-appearance:none;height:3px;border-radius:3px;cursor:pointer;margin:auto;",this.timeTrack.value=0,this.timeRule.appendChild(this.timeTrack),this.UnLogo||this.HideKbs?this.UnLogo?this.timeLabel.style="color: #fff;margin: 0 40px 0px 10px;dispplay:block;line-height:27px;":this.timeLabel.style="color: #fff;margin: 0 120px 0px 10px;dispplay:block;line-height:27px;":this.timeLabel.style="color: #fff;margin: 0 174px 0px 10px;dispplay:block;line-height:27px;"},M.onUpdateTrackPos=function(A){},M.removeAllChilds=function(A){for(var M=A.childNodes.length-1;M>=0;M--)this.removeAllChilds(A.childNodes[M]),A.removeChild(A.childNodes[M])},M.destroy=function(){this.playerUI&&this.removeAllChilds(this.playerUI),this.stop(),this.playerInstance&&(this.playerInstance.stop(),this.playerInstance.destroy(),delete this.playerInstance,this.playerInstance=null),clearInterval(this.LogoTimer),clearInterval(this.timeKbps)},M.changeToH5Video=function(A){if(this.initH5Flag){if(A==this.currentH5Status)return}else this.initH5Flag=!0;this.currentH5Status=A,A?(this.canvas&&(this.playerUI.removeChild(this.canvas),this.playerUI.removeChild(this.timeBox)),null==this.h5Video&&(this.h5Video=document.createElement("VIDEO")),this.h5Video.style="width:100%;height:100%;position:absolute;top:0px;left:0px;background: black;",this.h5Video.setAttribute("oncontextmenu","return false"),this.playerUI.appendChild(this.h5Video),this.playerUI.appendChild(this.timeBox)):(this.h5Video&&(this.playerUI.removeChild(this.h5Video),this.playerUI.removeChild(this.timeBox)),null==this.canvas&&(this.canvas=document.createElement("canvas")),this.canvas.style="width:100%;height:100%;position:absolute;top:0px;left:0px;background: black;",this.playerUI.appendChild(this.canvas),this.playerUI.appendChild(this.timeBox))},M._onConnectStatus=function(A,M){A.lodingBox.style=1==M?"display:none":"width:100%;height:100%;position: absolute;left:0px;top:0px;background:rgba(0,0,0,0.6);z-index:9;display:block"},M._onChangeTypeCallback=function(A,M,t){A.changeToH5Video(!t)},M.formatTime=function(A){return(Math.floor(A/3600)<10?"0"+Math.floor(A/3600):Math.floor(A/3600))+":"+(Math.floor(A/60%60)<10?"0"+Math.floor(A/60%60):Math.floor(A/60%60))+":"+(A=Math.floor(A%60)<10?"0"+Math.floor(A%60):Math.floor(A%60))},M._onUpdatePlayTime=function(A,M,t,g){if(A.showTimeLabel||(A.showTimeLabel=!0,g!==1/0&&g>0?A.playback():A.live()),g!==1/0&&!(g<1)&&A.showTimeLabel&&A.timeTrack&&g>0){var I=parseInt((t+1)/g*100);I!==parseInt(A.timeTrack.value)&&(A.timeTrack.value=I),A.onUpdateTrackPos(I),A.timeLabel&&void 0!==A.timeLabel&&(t<1?t=0:t>g&&(t=g),A.timeLabel.innerHTML=A.formatTime(t)+"/"+A.formatTime(g)),A.callbackFunc&&!this.callbackEnd&&(A.callbackFunc("playbackTime",parseInt(t)),100!=I||this.callbackEnd||(A.callbackFunc("ended",0),this.callbackEnd=!0))}},M.startLoding=function(){this.callbackFunc("startLoding"),this.lodingBox.style="width:100%;height:100%;position: absolute;left:0px;top:0px;background:rgba(0,0,0,0.6);z-index:9;"},M.endLoding=function(){this.callbackFunc("endLoding"),this.lodingBox.style="display:none"},M.detectionLogo=function(){var A=this;this.LogoTimer=setInterval((function(){null!=A.logo&&"青犀视频"==A.logo.title&&"http://www.tsingsee.com/"===A.logo.href&&"inline-block"==A.logo.style.display&&"1"==A.logo.style.opacity||A.stop()}),1e3)},M.play=function(A,M,t){var g=this;if(null!=this.playerUI){if(this.callbackFunc("play"),0==M&&null!=this.bigPlayBox&&(this.bigPlayBox.style="display:block"),A&&(this.url=A),null!=t&&(this.seekTimeSecs=t),!this.url||""===this.url||void 0===this.url)return console.log("url is empty..."),!1;if(-1!=this.url.indexOf("rtmp:"))return console.log("Unsupport rtmp stream."),!1;if(-1!=this.url.indexOf("rtsp:"))return console.log("Unsupport rtsp stream."),!1;if(-1==this.url.indexOf("http:")&&-1==this.url.indexOf("https:")&&-1==this.url.indexOf("ws://")&&-1==this.url.indexOf("wss://"))return console.log("Unsupport stream: "+this.url),!1;if(1!=M)return!0;null!=this.bigPlayBox&&(this.bigPlayBox.style="display:none"),this._onConnectStatus(this,1);var I=!1,e=!1,i=!1,T=this.url.substr(this.url.lastIndexOf(".")+1);if(T){var E=T.toLowerCase();E.indexOf("m3u8")>-1?I=!0:E.indexOf("flv")>-1?e=!0:E.indexOf("mp4")>-1&&(i=!0),I||e||i||(this.url.indexOf(".flv")>-1?e=!0:this.url.indexOf(".m3u8")>-1?I=!0:this.url.indexOf(".mp4")>-1&&(i=!0))}else e=!0;this.callbackEnd=!1;var N=!1;return I?(this.showTimeLabel=!1,null!=this.playerInstance&&this.playerInstance.isPause()||this.live(),this.isHLS=!1,null==this.playerInstance&&(this.playerInstance=new oA("m3u8",this.h5Video,null==this.offscreenCanvas?this.canvas:this.offscreenCanvas,this.decodeType,this._onChangeTypeCallback,this._onUpdatePlayTime,this._onConnectStatus,this,this.enableAudio,this.callbackFunc)),N=this.playerInstance.play(this.url,this.seekTimeSecs),this.enableAudio=this.defaultAudioStatus,!this.internalTriggerPlay&&this.enableAudio&&this.openAudio(),this.seekTimeSecs=0):i?(this.changeToH5Video(!0),this.showTimeLabel=!1,null!=this.playerInstance&&this.playerInstance.isPause()||this.live(),this.isHLS=!1,null==this.playerInstance&&(this.playerInstance=new aA({type:"mp4",url:A},this.h5Video,this._onUpdatePlayTime,this)),this.playerInstance.play(),this.enableAudio=this.defaultAudioStatus,!this.internalTriggerPlay&&this.enableAudio?this.openAudio():this.closeAudio(),N=!0):e&&("undefined"!=typeof OffscreenCanvas&&this.offscreenCanvas,this.isHLS,this.showTimeLabel=!1,this.live(),this.isHLS=!1,null==this.playerInstance&&(this.playerInstance=new oA("flv",this.h5Video,null==this.offscreenCanvas?this.canvas:this.offscreenCanvas,this.decodeType,this._onChangeTypeCallback,this._onUpdatePlayTime,this._onConnectStatus,this,this.enableAudio,this.callbackFunc)),N=this.playerInstance.play(this.url,0),this.enableAudio=this.defaultAudioStatus,!this.internalTriggerPlay&&this.enableAudio&&this.openAudio()),this.HideKbs||(this.domKbps.style="position:absolute;top:6px;right:115px;z-index: 19;font-size: 12px;color: #fff;",this.timeKbps=setInterval((function(){if(g.playerInstance.flvPlayer&&g.playerInstance.flvPlayer._transmuxer&&g.playerInstance.flvPlayer._transmuxer._controller&&g.playerInstance.flvPlayer._transmuxer._controller._ioctl){var A=parseInt(g.playerInstance.flvPlayer._transmuxer._controller._ioctl.currentSpeed),M=parseInt(g.playerInstance.flvPlayer._transmuxer._controller._ioctl.averageKBps);g.domKbps.innerText=8*M>=1024?(8*M/1024).toFixed(2)+"Mb/s":8*M+"Kb/s",g.cfKbs({currentKbs:8*A,averageKbs:8*M,currentKbps:A,averageKbps:M})}}),1e3)),null==this.playerInstance?(console.log("Unsupport url: "+A),!1):(N&&(this.playBtn.classList.remove("fa-play"),this.playBtn.classList.add("fa-pause"),this.playBtn.title="Pause",null!=this.bigPlayBox&&(this.bigPlayBox.classList.remove("fa-play"),this.bigPlayBox.classList.add("fa-pause"),this.bigPlayBox.style="display:none",this.bigPlayBox.title="Pause"),this.playFlag=!1),N)}},M.stop=function(){if(null!=this.playerUI)return this.callbackFunc("stop"),this.callbackEnd=!1,this._onConnectStatus(this,1),!!this.playerInstance&&(this.closeAudio(),this.playerInstance.stop(),this.showTimeLabel=!1,this.normal(),!0)},M.pause=function(){this.callbackFunc("pause"),this.playerInstance&&this.playerInstance.pause()},M.resume=function(){this.callbackFunc("resume"),this.playerInstance&&this.playerInstance.resume()},M.seekToSecs=function(A){this.playerInstance&&this.playerInstance.seek(A,0)},M.seekToPercent=function(A){this.playerInstance&&this.playerInstance.seek(A,1)},M.setTrack=function(A,M){this.playerInstance&&this.playerInstance.setTrack(A,M)},M.openAudio=function(){return this.callbackFunc("openAudio"),this.playerInstance&&(this.playerInstance.openAudio()?(this.soundButton.classList.add("fa-volume-up"),this.soundButton.classList.remove("fa-volume-off"),this.enableAudio=!0):(this.soundButton.classList.add("fa-volume-off"),this.soundButton.classList.remove("fa-volume-up"),this.enableAudio=!1)),this.enableAudio},M.closeAudio=function(){if(this.callbackFunc("closeAudio"),this.playerInstance){if(!this.enableAudio)return!0;this.playerInstance.closeAudio()?(this.soundButton.classList.add("fa-volume-off"),this.soundButton.classList.remove("fa-volume-up"),this.enableAudio=!1):(this.soundButton.classList.add("fa-volume-up"),this.soundButton.classList.remove("fa-volume-off"),this.enableAudio=!0)}return!this.enableAudio},M.showStaticsInfo=function(A){return null!=this.playerInstance&&(A?this.playerInstance.openStatinfo():this.playerInstance.closeStatinfo())},M.fullScreen=function(){if(this.fulls){this.callbackFunc("full"),this.full.classList.remove("fa-expand"),this.full.classList.add("fa-compress"),this.playerUI.requestFullscreen?this.playerUI.requestFullscreen():this.playerUI.mozRequestFullScreen?this.playerUI.mozRequestFullScreen():this.playerUI.webkitRequestFullscreen?this.playerUI.webkitRequestFullscreen():this.playerUI.msRequestFullscreen&&this.playerUI.msRequestFullscreen(),this.fulls=!1,this.full.title="Exit Fullscreen";var A=navigator.userAgent;A.indexOf("Android")>-1||A.indexOf("Adr"),A.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)}else this.callbackFunc("unFull"),this.full.classList.remove("fa-compress"),this.full.classList.add("fa-expand"),document.exitFullScreen?document.exitFullScreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():element.msExitFullscreen&&element.msExitFullscreen(),this.fulls=!0,this.full.title="Fullscreen"},A}())},function(A,M,t){"use strict";t.r(M);var g=t(0),I=(t(58),t(22)),e=t.n(I);var i=function(A){for(var M,t=A.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')),g={},I=t.length;I--;)""!==t[I]&&((M=/([^=]*)=(.*)/.exec(t[I]).slice(1))[0]=M[0].replace(/^\s+|\s+$/g,""),M[1]=M[1].replace(/^\s+|\s+$/g,""),M[1]=M[1].replace(/^['"](.*)['"]$/g,"$1"),g[M[0]]=M[1]);return g},T=function(A){var M,t;function g(){var M;return(M=A.call(this)||this).customParsers=[],M.tagMappers=[],M}t=A,(M=g).prototype=Object.create(t.prototype),M.prototype.constructor=M,M.__proto__=t;var I=g.prototype;return I.push=function(A){var M,t,g=this;0!==(A=A.trim()).length&&("#"===A[0]?this.tagMappers.reduce((function(M,t){var g=t(A);return g===A?M:M.concat([g])}),[A]).forEach((function(A){for(var I=0;I-1;M=this.buffer.indexOf("\n"))this.trigger("data",this.buffer.substring(0,M)),this.buffer=this.buffer.substring(M+1)},g}(e.a),N=t(110),n=t.n(N);var D=function(A){var M,t;function g(){var M;(M=A.call(this)||this).lineStream=new E,M.parseStream=new T,M.lineStream.pipe(M.parseStream);var t,g,I=function(A){if(void 0===A)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return A}(M),e=[],i={},N=function(){},D={AUDIO:{},VIDEO:{},"CLOSED-CAPTIONS":{},SUBTITLES:{}},C=0;return M.manifest={allowCache:!0,discontinuityStarts:[],segments:[]},M.parseStream.on("data",(function(A){var M,T;({tag:function(){({"allow-cache":function(){this.manifest.allowCache=A.allowed,"allowed"in A||(this.trigger("info",{message:"defaulting allowCache to YES"}),this.manifest.allowCache=!0)},byterange:function(){var M={};"length"in A&&(i.byterange=M,M.length=A.length,"offset"in A||(this.trigger("info",{message:"defaulting offset to zero"}),A.offset=0)),"offset"in A&&(i.byterange=M,M.offset=A.offset)},endlist:function(){this.manifest.endList=!0},inf:function(){"mediaSequence"in this.manifest||(this.manifest.mediaSequence=0,this.trigger("info",{message:"defaulting media sequence to zero"})),"discontinuitySequence"in this.manifest||(this.manifest.discontinuitySequence=0,this.trigger("info",{message:"defaulting discontinuity sequence to zero"})),A.duration>0&&(i.duration=A.duration),0===A.duration&&(i.duration=.01,this.trigger("info",{message:"updating zero segment duration to a small value"})),this.manifest.segments=e},key:function(){if(A.attributes)if("NONE"!==A.attributes.METHOD)if(A.attributes.URI){if("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"===A.attributes.KEYFORMAT){return-1===["SAMPLE-AES","SAMPLE-AES-CTR","SAMPLE-AES-CENC"].indexOf(A.attributes.METHOD)?void this.trigger("warn",{message:"invalid key method provided for Widevine"}):("SAMPLE-AES-CENC"===A.attributes.METHOD&&this.trigger("warn",{message:"SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead"}),"data:text/plain;base64,"!==A.attributes.URI.substring(0,23)?void this.trigger("warn",{message:"invalid key URI provided for Widevine"}):A.attributes.KEYID&&"0x"===A.attributes.KEYID.substring(0,2)?void(this.manifest.contentProtection={"com.widevine.alpha":{attributes:{schemeIdUri:A.attributes.KEYFORMAT,keyId:A.attributes.KEYID.substring(2)},pssh:n()(A.attributes.URI.split(",")[1])}}):void this.trigger("warn",{message:"invalid key ID provided for Widevine"}))}A.attributes.METHOD||this.trigger("warn",{message:"defaulting key method to AES-128"}),g={method:A.attributes.METHOD||"AES-128",uri:A.attributes.URI},void 0!==A.attributes.IV&&(g.iv=A.attributes.IV)}else this.trigger("warn",{message:"ignoring key declaration without URI"});else g=null;else this.trigger("warn",{message:"ignoring key declaration without attribute list"})},"media-sequence":function(){isFinite(A.number)?this.manifest.mediaSequence=A.number:this.trigger("warn",{message:"ignoring invalid media sequence: "+A.number})},"discontinuity-sequence":function(){isFinite(A.number)?(this.manifest.discontinuitySequence=A.number,C=A.number):this.trigger("warn",{message:"ignoring invalid discontinuity sequence: "+A.number})},"playlist-type":function(){/VOD|EVENT/.test(A.playlistType)?this.manifest.playlistType=A.playlistType:this.trigger("warn",{message:"ignoring unknown playlist type: "+A.playlist})},map:function(){t={},A.uri&&(t.uri=A.uri),A.byterange&&(t.byterange=A.byterange)},"stream-inf":function(){this.manifest.playlists=e,this.manifest.mediaGroups=this.manifest.mediaGroups||D,A.attributes?(i.attributes||(i.attributes={}),Object.assign(i.attributes,A.attributes)):this.trigger("warn",{message:"ignoring empty stream-inf attributes"})},media:function(){if(this.manifest.mediaGroups=this.manifest.mediaGroups||D,A.attributes&&A.attributes.TYPE&&A.attributes["GROUP-ID"]&&A.attributes.NAME){var t=this.manifest.mediaGroups[A.attributes.TYPE];t[A.attributes["GROUP-ID"]]=t[A.attributes["GROUP-ID"]]||{},M=t[A.attributes["GROUP-ID"]],(T={default:/yes/i.test(A.attributes.DEFAULT)}).default?T.autoselect=!0:T.autoselect=/yes/i.test(A.attributes.AUTOSELECT),A.attributes.LANGUAGE&&(T.language=A.attributes.LANGUAGE),A.attributes.URI&&(T.uri=A.attributes.URI),A.attributes["INSTREAM-ID"]&&(T.instreamId=A.attributes["INSTREAM-ID"]),A.attributes.CHARACTERISTICS&&(T.characteristics=A.attributes.CHARACTERISTICS),A.attributes.FORCED&&(T.forced=/yes/i.test(A.attributes.FORCED)),M[A.attributes.NAME]=T}else this.trigger("warn",{message:"ignoring incomplete or missing media group"})},discontinuity:function(){C+=1,i.discontinuity=!0,this.manifest.discontinuityStarts.push(e.length)},"program-date-time":function(){void 0===this.manifest.dateTimeString&&(this.manifest.dateTimeString=A.dateTimeString,this.manifest.dateTimeObject=A.dateTimeObject),i.dateTimeString=A.dateTimeString,i.dateTimeObject=A.dateTimeObject},targetduration:function(){!isFinite(A.duration)||A.duration<0?this.trigger("warn",{message:"ignoring invalid target duration: "+A.duration}):this.manifest.targetDuration=A.duration},totalduration:function(){!isFinite(A.duration)||A.duration<0?this.trigger("warn",{message:"ignoring invalid total duration: "+A.duration}):this.manifest.totalDuration=A.duration},start:function(){A.attributes&&!isNaN(A.attributes["TIME-OFFSET"])?this.manifest.start={timeOffset:A.attributes["TIME-OFFSET"],precise:A.attributes.PRECISE}:this.trigger("warn",{message:"ignoring start declaration without appropriate attribute list"})},"cue-out":function(){i.cueOut=A.data},"cue-out-cont":function(){i.cueOutCont=A.data},"cue-in":function(){i.cueIn=A.data}}[A.tagType]||N).call(I)},uri:function(){i.uri=A.uri,e.push(i),this.manifest.targetDuration&&!("duration"in i)&&(this.trigger("warn",{message:"defaulting segment duration to the target duration"}),i.duration=this.manifest.targetDuration),g&&(i.key=g),i.timeline=C,t&&(i.map=t),i={}},comment:function(){},custom:function(){A.segment?(i.custom=i.custom||{},i.custom[A.customType]=A.data):(this.manifest.custom=this.manifest.custom||{},this.manifest.custom[A.customType]=A.data)}})[A.type].call(I)})),M}t=A,(M=g).prototype=Object.create(t.prototype),M.prototype.constructor=M,M.__proto__=t;var I=g.prototype;return I.push=function(A){this.lineStream.push(A)},I.end=function(){this.lineStream.push("\n")},I.addParser=function(A){this.parseStream.addParser(A)},I.addTagMapper=function(A){this.parseStream.addTagMapper(A)},g}(e.a),C=new WebAssembly.Memory({initial:256,maximum:256});new WebAssembly.Table({initial:0,maximum:0,element:"anyfunc"}),C.buffer.byteLength,M.default=function(A){A.url="",A.canvas=null,A.webGLPlayer=null,A.videoSampleQueue=[],A.audioSampleQueue=[],A.videoInterval=40,A.lastRenderTime=0,A.intervalVal=0,A.renderFrameCount=0,A.requestAbort=!1,A.pause=!1,A.cbStreamData=!0,A.reConnect=!0,A.isLiveStream=!0,A.seekTime=0,A.totalDuration=0,A.playDuration=0,A.startVideoPts=0,A.startAudioPts=0,A.tsFileList=[],A.getFileIndex=0,A.lastTsFile="",A.isFirstFile=!0,A.lastTsFileSequence=0,A.sequenceExceptNum=0,A.tsDemuxer=null,A.getFileCount=100,A.intervalHandle=-1,A.intervalValue=40,A.startDownloadTimeSecs=0;var M=function(A,M){for(var t=M,g=0,I=0;I>=0;)(I=t.indexOf("/"))>=0?(t=t.substring(I+1),g+=I+1):t=M.substring(0,g);return""!==A?t+A:t},t=function(){var M={cmd:g.k,workerId:g.b};A.postMessage(M),A.getFileIndex=0},I=function I(e,i){if(A.url=e,1!=A._requestAbort){if(!A.pause&&(!(A.totalDuration>0)||A.isLiveStream)){var T=new XMLHttpRequest;T.open("get",e,!0),T.responseType="text",T.onreadystatechange=function(){if(4!=T.readyState||200!=T.status&&304!=T.status)4===T.readyState&&410===T.status&&A.postMessage({cmd:410,code:T.status,msg:T.responseText});else{var t=new D;t.push(T.responseText),t.end();var e=t.manifest;if("undefined"!==t.manifest.endList&&1==t.manifest.endList?A.isLiveStream=!1:A.isLiveStream=!0,e.segments.length<1){console.log("Not found ts file... waiting for reconnect...");var E=A;return void g.i(3e3).then((function(){I(E.url,1)}))}var N=0,n=0;if(A.isLiveStream)if(""==A.lastTsFile){for(N=0;N2&&(C=e.segments.length-1-1),A.getFileIndex=C,A.lastTsFile=e.segments[C].uri}else{C=-1;var r=!1;for(N=0;N=0){B={filename:c,duration:e.segments[N].duration};A.totalDuration+=e.segments[N].duration,A.tsFileList.push(B),r||(A.lastTsFile=e.segments[N].uri,r=!0)}else;else C=N,A.tsFileList.length=0,A.tsFileList=[],A.getFileIndex=0}if(C<0)for(A.tsFileList.length=0,A.tsFileList=[],A.getFileIndex=0,N=0;N0&&(A.getFileIndex=-1),N=0;N0&&A.totalDuration>=A.seekTime&&A.getFileIndex<0&&(A.getFileIndex=N);var B={filename:c,duration:e.segments[N].duration};A.totalDuration+=e.segments[N].duration,0!==N||A.isLiveStream||A.tsFileList.push(B),A.tsFileList.push(B)}}A.getFileIndex<0&&(A.getFileIndex=0);var Q={cmd:g.s,duration:A.totalDuration,live:A.isLiveStream,workerId:g.b};A.postMessage(Q)}if(A.tsFileList.length>0&&1==i){Q={cmd:g.u,workerId:g.b};A.postMessage(Q)}}},T.send()}}else t()},e=function M(){if(!(A.getFileCount++<1)){var e=!1;if(!A.pause)if(1!=A._requestAbort){if(A.isLiveStream){if(A.getFileCount=0,A.getFileIndex>=A.tsFileList.length||3==A.getFileCount)return void I(A.url,1);e=!0}else if(A.getFileIndex>=A.tsFileList.length){A.getFileIndex++;var i={cmd:g.p,workerId:g.b};return void A.postMessage(i)}var T=A.tsFileList[A.getFileIndex].filename;if(A.isLiveStream){var E=function(A){var M=A.split("-"),t=M.length;if(t>0){var g=M[t-1].split(".");if(g.length>0)return g[0]}return""}(T),N=parseInt(E);if(N>0&&N>A.lastTsFileSequence+1){A.sequenceExceptNum++;i={cmd:g.x,workerId:g.b,fileSequence:A.sequenceExceptNum};A.postMessage(i)}A.lastTsFileSequence=N}var n=new XMLHttpRequest;n.open("get",T,!0),n.responseType="arraybuffer",n.onreadystatechange=function(){if(404==n.status)return g.d("current file not found. refresh list..."),void I(A.url,1);if(4==n.readyState&&(200==n.status||304==n.status)){var t=new Uint8Array(n.response),i=0;for(i=0;i=0&&(clearInterval(A.intervalHandle),A.intervalHandle=-1),!A.pause){var E=A.getFileIndex;E>=0&&E900&&(A.intervalValue-=900)),A.intervalHandle=setInterval(M,A.intervalValue)}A.getFileCount=100,A.getFileIndex++,A.getFileIndex>=0&&(A.getFileIndex,A.tsFileList.length);T={cmd:g.r,workerId:g.b};if(A.postMessage(T),e)return void I(A.url,0)}},n.send()}else t()}};A.addEventListener("message",(function(M){var i=M.data;switch(i.cmd){case g.u:A.url=i.url,A.seekTime=i.time,I(i.url,1);break;case g.q:0==i.t&&e();break;case g.w:I(A.url,1);break;case g.z:var T=i.time;1==i.type&&(T=i.time/100*A.totalDuration);var E=!1,N=0,n=0;for(n=0;nT){A.getFileIndex=n,e();var D={cmd:g.z,type:i.type,time:T};A.postMessage(D),E=!0;break}if(!E){D={cmd:g.z,type:i.type,time:T};A.postMessage(D)}break;case g.v:A.pause=!0;break;case g.y:A.pause=!1,I(A.url,1);break;case g.k:A._requestAbort=!0,A.seekTime=0,t()}}))}}]).default})); diff --git a/public/js/jessibuca-pro/decoder-pro-audio.js b/public/js/jessibuca-pro/decoder-pro-audio.js new file mode 100644 index 0000000..60d69dd --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-audio.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href,function(e){var t,i;(e=void 0!==(e=e||{})?e:{}).ready=new Promise((function(e,r){t=e,i=r})),(e=void 0!==e?e:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,s,a,o,d,l,c=Object.assign({},e),u="./this.program",h="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,_="";p?(_=f?require("path").dirname(_)+"/":__dirname+"/",l=()=>{d||(o=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{l(),e=d.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(u=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof J))throw e})),process.on("unhandledRejection",(function(e){throw e})),e.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?_=self.location.href:"undefined"!=typeof document&&document.currentScript&&(_=document.currentScript.src),r&&(_=r),_=0!==_.indexOf("blob:")?_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var m,g,y=e.print||console.log.bind(console),v=e.printErr||console.warn.bind(console);Object.assign(e,c),c=null,e.arguments&&e.arguments,e.thisProgram&&(u=e.thisProgram),e.quit&&e.quit,e.wasmBinary&&(m=e.wasmBinary),e.noExitRuntime,"object"!=typeof WebAssembly&&Y("no native wasm support detected");var b=!1;function w(e,t){e||Y(t)}var S,E,A,B,x,U,T,k,C,D,I="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&I)return I.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function P(e,t){return e?F(A,e,t):""}function L(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}e.INITIAL_MEMORY;var R,z,N,O,G=[],H=[],$=[],V=0,W=null;function j(t){V++,e.monitorRunDependencies&&e.monitorRunDependencies(V)}function q(t){if(V--,e.monitorRunDependencies&&e.monitorRunDependencies(V),0==V&&W){var r=W;W=null,r()}}function Y(t){e.onAbort&&e.onAbort(t),v(t="Aborted("+t+")"),b=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw i(r),r}function K(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){return e.startsWith("file://")}function Z(e){try{if(e==R&&m)return new Uint8Array(m);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){Y(e)}}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Q(t){for(;t.length>0;)t.shift()(e)}function ee(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){T[this.ptr+4>>2]=e},this.get_type=function(){return T[this.ptr+4>>2]},this.set_destructor=function(e){T[this.ptr+8>>2]=e},this.get_destructor=function(){return T[this.ptr+8>>2]},this.set_refcount=function(e){U[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,E[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=E[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,E[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=E[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=U[this.ptr>>2];U[this.ptr>>2]=e+1},this.release_ref=function(){var e=U[this.ptr>>2];return U[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){T[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return T[this.ptr+16>>2]},this.get_exception_ptr=function(){if(jt(this.get_type()))return T[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}e.locateFile?K(R="decoder-pro-audio.wasm")||(z=R,R=e.locateFile?e.locateFile(z,_):_+z):R=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-audio.js",document.baseURI).href).toString();var te={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=te.isAbs(e),r="/"===e.substr(-1);return(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=te.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return te.normalize(e.join("/"))},join2:(e,t)=>te.normalize(e+"/"+t)},re={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:oe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=te.isAbs(i)}return(t?"/":"")+(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=re.resolve(e).substr(1),t=re.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o0?r:M(e)+1,n=new Array(i),s=L(e,n,0,n.length);return t&&(n.length=s),n}var ne={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ne.ttys[e]={input:[],output:[],ops:t},oe.registerDevice(e,ne.stream_ops)},stream_ops:{open:function(e){var t=ne.ttys[e.node.rdev];if(!t)throw new oe.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new oe.ErrnoError(60);for(var s=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ie(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(y(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(F(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(v(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(v(F(e.output,0)),e.output=[])}}};function se(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Wt(65536,e);return t?(function(e,t){A.fill(0,e,e+t)}(t,e),t):0}var ae={ops_table:null,mount:function(e){return ae.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(oe.isBlkdev(r)||oe.isFIFO(r))throw new oe.ErrnoError(63);ae.ops_table||(ae.ops_table={dir:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,lookup:ae.node_ops.lookup,mknod:ae.node_ops.mknod,rename:ae.node_ops.rename,unlink:ae.node_ops.unlink,rmdir:ae.node_ops.rmdir,readdir:ae.node_ops.readdir,symlink:ae.node_ops.symlink},stream:{llseek:ae.stream_ops.llseek}},file:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:{llseek:ae.stream_ops.llseek,read:ae.stream_ops.read,write:ae.stream_ops.write,allocate:ae.stream_ops.allocate,mmap:ae.stream_ops.mmap,msync:ae.stream_ops.msync}},link:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,readlink:ae.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:oe.chrdev_stream_ops}});var n=oe.createNode(e,t,r,i);return oe.isDir(n.mode)?(n.node_ops=ae.ops_table.dir.node,n.stream_ops=ae.ops_table.dir.stream,n.contents={}):oe.isFile(n.mode)?(n.node_ops=ae.ops_table.file.node,n.stream_ops=ae.ops_table.file.stream,n.usedBytes=0,n.contents=null):oe.isLink(n.mode)?(n.node_ops=ae.ops_table.link.node,n.stream_ops=ae.ops_table.link.stream):oe.isChrdev(n.mode)&&(n.node_ops=ae.ops_table.chrdev.node,n.stream_ops=ae.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=oe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,oe.isDir(e.mode)?t.size=4096:oe.isFile(e.mode)?t.size=e.usedBytes:oe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&ae.resizeFileStorage(e,t.size)},lookup:function(e,t){throw oe.genericErrors[44]},mknod:function(e,t,r,i){return ae.createNode(e,t,r,i)},rename:function(e,t,r){if(oe.isDir(e.mode)){var i;try{i=oe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new oe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=oe.lookupNode(e,t);for(var i in r.contents)throw new oe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=ae.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!oe.isLink(e.mode))throw new oe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=re.resolve(oe.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new oe.ErrnoError(32);for(var i=te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=oe.root,s="/",a=0;a40)throw new oe.ErrnoError(32)}}return{path:s,node:n}},getPath:e=>{for(var t;;){if(oe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%oe.nameTable.length},hashAddNode:e=>{var t=oe.hashName(e.parent.id,e.name);e.name_next=oe.nameTable[t],oe.nameTable[t]=e},hashRemoveNode:e=>{var t=oe.hashName(e.parent.id,e.name);if(oe.nameTable[t]===e)oe.nameTable[t]=e.name_next;else for(var r=oe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=oe.mayLookup(e);if(r)throw new oe.ErrnoError(r,e);for(var i=oe.hashName(e.id,t),n=oe.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return oe.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new oe.FSNode(e,t,r,i);return oe.hashAddNode(n),n},destroyNode:e=>{oe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=oe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>oe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=oe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return oe.lookupNode(e,t),20}catch(e){}return oe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=oe.lookupNode(e,t)}catch(e){return e.errno}var n=oe.nodePermissions(e,"wx");if(n)return n;if(r){if(!oe.isDir(i.mode))return 54;if(oe.isRoot(i)||oe.getPath(i)===oe.cwd())return 10}else if(oe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?oe.isLink(e.mode)?32:oe.isDir(e.mode)&&("r"!==oe.flagsToPermissionString(t)||512&t)?31:oe.nodePermissions(e,oe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!oe.streams[r])return r;throw new oe.ErrnoError(33)},getStream:e=>oe.streams[e],createStream:(e,t,r)=>{oe.FSStream||(oe.FSStream=function(){this.shared={}},oe.FSStream.prototype={},Object.defineProperties(oe.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new oe.FSStream,e);var i=oe.nextfd(t,r);return e.fd=i,oe.streams[i]=e,e},closeStream:e=>{oe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=oe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new oe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{oe.devices[e]={stream_ops:t}},getDevice:e=>oe.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),oe.syncFSRequests++,oe.syncFSRequests>1&&v("warning: "+oe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=oe.getMounts(oe.root.mount),i=0;function n(e){return oe.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&oe.root)throw new oe.ErrnoError(10);if(!n&&!s){var a=oe.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,oe.isMountpoint(i))throw new oe.ErrnoError(10);if(!oe.isDir(i.mode))throw new oe.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?oe.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount:e=>{var t=oe.lookupPath(e,{follow_mount:!1});if(!oe.isMountpoint(t.node))throw new oe.ErrnoError(28);var r=t.node,i=r.mounted,n=oe.getMounts(i);Object.keys(oe.nameTable).forEach((e=>{for(var t=oe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&oe.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=oe.lookupPath(e,{parent:!0}).node,n=te.basename(e);if(!n||"."===n||".."===n)throw new oe.ErrnoError(28);var s=oe.mayCreate(i,n);if(s)throw new oe.ErrnoError(s);if(!i.node_ops.mknod)throw new oe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,oe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,oe.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,oe.mknod(e,t,r)),symlink:(e,t)=>{if(!re.resolve(e))throw new oe.ErrnoError(44);var r=oe.lookupPath(t,{parent:!0}).node;if(!r)throw new oe.ErrnoError(44);var i=te.basename(t),n=oe.mayCreate(r,i);if(n)throw new oe.ErrnoError(n);if(!r.node_ops.symlink)throw new oe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=te.dirname(e),s=te.dirname(t),a=te.basename(e),o=te.basename(t);if(r=oe.lookupPath(e,{parent:!0}).node,i=oe.lookupPath(t,{parent:!0}).node,!r||!i)throw new oe.ErrnoError(44);if(r.mount!==i.mount)throw new oe.ErrnoError(75);var d,l=oe.lookupNode(r,a),c=re.relative(e,s);if("."!==c.charAt(0))throw new oe.ErrnoError(28);if("."!==(c=re.relative(t,n)).charAt(0))throw new oe.ErrnoError(55);try{d=oe.lookupNode(i,o)}catch(e){}if(l!==d){var u=oe.isDir(l.mode),h=oe.mayDelete(r,a,u);if(h)throw new oe.ErrnoError(h);if(h=d?oe.mayDelete(i,o,u):oe.mayCreate(i,o))throw new oe.ErrnoError(h);if(!r.node_ops.rename)throw new oe.ErrnoError(63);if(oe.isMountpoint(l)||d&&oe.isMountpoint(d))throw new oe.ErrnoError(10);if(i!==r&&(h=oe.nodePermissions(r,"w")))throw new oe.ErrnoError(h);oe.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{oe.hashAddNode(l)}}},rmdir:e=>{var t=oe.lookupPath(e,{parent:!0}).node,r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!0);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.rmdir)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.rmdir(t,r),oe.destroyNode(i)},readdir:e=>{var t=oe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new oe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=oe.lookupPath(e,{parent:!0}).node;if(!t)throw new oe.ErrnoError(44);var r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!1);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.unlink)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.unlink(t,r),oe.destroyNode(i)},readlink:e=>{var t=oe.lookupPath(e).node;if(!t)throw new oe.ErrnoError(44);if(!t.node_ops.readlink)throw new oe.ErrnoError(28);return re.resolve(oe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=oe.lookupPath(e,{follow:!t}).node;if(!r)throw new oe.ErrnoError(44);if(!r.node_ops.getattr)throw new oe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>oe.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?oe.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new oe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{oe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);oe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?oe.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new oe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{oe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=oe.getStream(e);if(!i)throw new oe.ErrnoError(8);oe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new oe.ErrnoError(28);var r;if(!(r="string"==typeof e?oe.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new oe.ErrnoError(63);if(oe.isDir(r.mode))throw new oe.ErrnoError(31);if(!oe.isFile(r.mode))throw new oe.ErrnoError(28);var i=oe.nodePermissions(r,"w");if(i)throw new oe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);if(0==(2097155&r.flags))throw new oe.ErrnoError(28);oe.truncate(r.node,t)},utime:(e,t,r)=>{var i=oe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(t,r,i)=>{if(""===t)throw new oe.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?oe.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof t)n=t;else{t=te.normalize(t);try{n=oe.lookupPath(t,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new oe.ErrnoError(20)}else n=oe.mknod(t,i,0),s=!0;if(!n)throw new oe.ErrnoError(44);if(oe.isChrdev(n.mode)&&(r&=-513),65536&r&&!oe.isDir(n.mode))throw new oe.ErrnoError(54);if(!s){var a=oe.mayOpen(n,r);if(a)throw new oe.ErrnoError(a)}512&r&&!s&&oe.truncate(n,0),r&=-131713;var o=oe.createStream({node:n,path:oe.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!e.logReadFiles||1&r||(oe.readFiles||(oe.readFiles={}),t in oe.readFiles||(oe.readFiles[t]=1)),o},close:e=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{oe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new oe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new oe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(1==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.read)throw new oe.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.write)throw new oe.ErrnoError(28);e.seekable&&1024&e.flags&&oe.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(t<0||r<=0)throw new oe.ErrnoError(28);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(!oe.isFile(e.node.mode)&&!oe.isDir(e.node.mode))throw new oe.ErrnoError(43);if(!e.stream_ops.allocate)throw new oe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new oe.ErrnoError(2);if(1==(2097155&e.flags))throw new oe.ErrnoError(2);if(!e.stream_ops.mmap)throw new oe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new oe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=oe.open(e,t.flags),n=oe.stat(e),s=n.size,a=new Uint8Array(s);return oe.read(i,a,0,s,0),"utf8"===t.encoding?r=F(a,0):"binary"===t.encoding&&(r=a),oe.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=oe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),s=L(t,n,0,n.length);oe.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");oe.write(i,t,0,t.byteLength,void 0,r.canOwn)}oe.close(i)},cwd:()=>oe.currentPath,chdir:e=>{var t=oe.lookupPath(e,{follow:!0});if(null===t.node)throw new oe.ErrnoError(44);if(!oe.isDir(t.node.mode))throw new oe.ErrnoError(54);var r=oe.nodePermissions(t.node,"x");if(r)throw new oe.ErrnoError(r);oe.currentPath=t.path},createDefaultDirectories:()=>{oe.mkdir("/tmp"),oe.mkdir("/home"),oe.mkdir("/home/web_user")},createDefaultDevices:()=>{oe.mkdir("/dev"),oe.registerDevice(oe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),oe.mkdev("/dev/null",oe.makedev(1,3)),ne.register(oe.makedev(5,0),ne.default_tty_ops),ne.register(oe.makedev(6,0),ne.default_tty1_ops),oe.mkdev("/dev/tty",oe.makedev(5,0)),oe.mkdev("/dev/tty1",oe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>Y("randomDevice")}();oe.createDevice("/dev","random",e),oe.createDevice("/dev","urandom",e),oe.mkdir("/dev/shm"),oe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{oe.mkdir("/proc");var e=oe.mkdir("/proc/self");oe.mkdir("/proc/self/fd"),oe.mount({mount:()=>{var t=oe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=oe.getStream(r);if(!i)throw new oe.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?oe.createDevice("/dev","stdin",e.stdin):oe.symlink("/dev/tty","/dev/stdin"),e.stdout?oe.createDevice("/dev","stdout",null,e.stdout):oe.symlink("/dev/tty","/dev/stdout"),e.stderr?oe.createDevice("/dev","stderr",null,e.stderr):oe.symlink("/dev/tty1","/dev/stderr"),oe.open("/dev/stdin",0),oe.open("/dev/stdout",1),oe.open("/dev/stderr",1)},ensureErrnoError:()=>{oe.ErrnoError||(oe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},oe.ErrnoError.prototype=new Error,oe.ErrnoError.prototype.constructor=oe.ErrnoError,[44].forEach((e=>{oe.genericErrors[e]=new oe.ErrnoError(e),oe.genericErrors[e].stack=""})))},staticInit:()=>{oe.ensureErrnoError(),oe.nameTable=new Array(4096),oe.mount(ae,{},"/"),oe.createDefaultDirectories(),oe.createDefaultDevices(),oe.createSpecialDirectories(),oe.filesystems={MEMFS:ae}},init:(t,r,i)=>{oe.init.initialized=!0,oe.ensureErrnoError(),e.stdin=t||e.stdin,e.stdout=r||e.stdout,e.stderr=i||e.stderr,oe.createStandardStreams()},quit:()=>{oe.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=oe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=oe.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=oe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=te.basename(e),i=oe.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:oe.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var a=te.join2(e,s);try{oe.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,n)=>{var s=te.join2("string"==typeof e?e:oe.getPath(e),t),a=oe.getMode(i,n);return oe.create(s,a)},createDataFile:(e,t,r,i,n,s)=>{var a=t;e&&(e="string"==typeof e?e:oe.getPath(e),a=t?te.join2(e,t):e);var o=oe.getMode(i,n),d=oe.create(a,o);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;c{var n=te.join2("string"==typeof e?e:oe.getPath(e),t),s=oe.getMode(!!r,!!i);oe.createDevice.major||(oe.createDevice.major=64);var a=oe.makedev(oe.createDevice.major++,0);return oe.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ie(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new oe.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ie(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=oe.createFile(e,t,o,i,n);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return oe.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(oe.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{oe.forceLoadFile(d);var s=se(t);if(!s)throw new oe.ErrnoError(48);return c(e,E,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,a,o,d,l,c)=>{var u=t?re.resolve(te.join2(e,t)):e;function h(r){function s(r){c&&c(),d||oe.createDataFile(e,t,r,i,n,l),a&&a(),q()}Browser.handledByPreloadPlugin(r,u,s,(()=>{o&&o(),q()}))||s(r)}j(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{w(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&q()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&j()}(r,(e=>h(e)),o):h(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{y("creating db"),n.result.createObjectStore(oe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([oe.DB_STORE_NAME],"readwrite"),s=i.objectStore(oe.DB_STORE_NAME),a=0,o=0,d=e.length;function l(){0==o?t():r()}e.forEach((e=>{var t=s.put(oe.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==d&&l()},t.onerror=()=>{o++,a+o==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([oe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=s.objectStore(oe.DB_STORE_NAME),o=0,d=0,l=e.length;function c(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{oe.analyzePath(e).exists&&oe.unlink(e),oe.createDataFile(te.dirname(e),te.basename(e),t.result,!0,!0,!0),++o+d==l&&c()},t.onerror=()=>{d++,o+d==l&&c()}})),s.onerror=r},n.onerror=r}},de={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(te.isAbs(t))return t;var i;if(-100===e)i=oe.cwd();else{var n=oe.getStream(e);if(!n)throw new oe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new oe.ErrnoError(44);return i}return te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&te.normalize(t)!==te.normalize(oe.getPath(e.node)))return-54;throw e}return U[r>>2]=i.dev,U[r+4>>2]=0,U[r+8>>2]=i.ino,U[r+12>>2]=i.mode,U[r+16>>2]=i.nlink,U[r+20>>2]=i.uid,U[r+24>>2]=i.gid,U[r+28>>2]=i.rdev,U[r+32>>2]=0,O=[i.size>>>0,(N=i.size,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+40>>2]=O[0],U[r+44>>2]=O[1],U[r+48>>2]=4096,U[r+52>>2]=i.blocks,O=[Math.floor(i.atime.getTime()/1e3)>>>0,(N=Math.floor(i.atime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+56>>2]=O[0],U[r+60>>2]=O[1],U[r+64>>2]=0,O=[Math.floor(i.mtime.getTime()/1e3)>>>0,(N=Math.floor(i.mtime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+72>>2]=O[0],U[r+76>>2]=O[1],U[r+80>>2]=0,O=[Math.floor(i.ctime.getTime()/1e3)>>>0,(N=Math.floor(i.ctime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+88>>2]=O[0],U[r+92>>2]=O[1],U[r+96>>2]=0,O=[i.ino>>>0,(N=i.ino,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+104>>2]=O[0],U[r+108>>2]=O[1],0},doMsync:function(e,t,r,i,n){var s=A.slice(e,e+r);oe.msync(t,s,n,r,i)},varargs:void 0,get:function(){return de.varargs+=4,U[de.varargs-4>>2]},getStr:function(e){return P(e)},getStreamFromFD:function(e){var t=oe.getStream(e);if(!t)throw new oe.ErrnoError(8);return t}};function le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ce=void 0;function ue(e){for(var t="",r=e;A[r];)t+=ce[A[r++]];return t}var he={},fe={},pe={};function _e(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function me(e,t){return e=_e(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function ge(e,t){var r=me(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ye=void 0;function ve(e){throw new ye(e)}var be=void 0;function we(e){throw new be(e)}function Se(e,t,r){function i(t){var i=r(t);i.length!==e.length&&we("Mismatched type converter count");for(var n=0;n{fe.hasOwnProperty(e)?n[t]=fe[e]:(s.push(e),he.hasOwnProperty(e)||(he[e]=[]),he[e].push((()=>{n[t]=fe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)}function Ee(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||ve('type "'+i+'" must have a positive integer typeid pointer'),fe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ve("Cannot register type '"+i+"' twice")}if(fe[e]=t,delete pe[e],he.hasOwnProperty(e)){var n=he[e];delete he[e],n.forEach((e=>e()))}}function Ae(e){if(!(this instanceof je))return!1;if(!(e instanceof je))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var xe=!1;function Ue(e){}function Te(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function ke(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=ke(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ce={};function De(){return Object.keys(Re).length}function Ie(){var e=[];for(var t in Re)Re.hasOwnProperty(t)&&e.push(Re[t]);return e}var Fe=[];function Pe(){for(;Fe.length;){var e=Fe.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function Me(e){Le=e,Fe.length&&Le&&Le(Pe)}var Re={};function ze(e,t){return t=function(e,t){for(void 0===t&&ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Re[t]}function Ne(e,t){return t.ptrType&&t.ptr||we("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&we("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ge(Object.create(e,{$$:{value:t}}))}function Oe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ze(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Ne(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ne(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ce[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=ke(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}function Ge(e){return"undefined"==typeof FinalizationRegistry?(Ge=e=>e,e):(xe=new FinalizationRegistry((e=>{Te(e.$$)})),Ge=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};xe.register(e,r,e)}return e},Ue=e=>xe.unregister(e),Ge(e))}function He(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Ge(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function $e(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ue(this),Te(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function We(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Fe.push(this),1===Fe.length&&Le&&Le(Pe),this.$$.deleteScheduled=!0,this}function je(){}function qe(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Ye(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Ke(e,t,r){for(;t!==r;)t.upcast||ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Xe(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:ve("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(U[e>>2])}function et(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function tt(e){this.rawDestructor&&this.rawDestructor(e)}function rt(e){null!==e&&e.delete()}function it(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var nt=[];function st(e){var t=nt[e];return t||(e>=nt.length&&(nt.length=e+1),nt[e]=t=D.get(e)),t}function at(t,r,i){return t.includes("j")?function(t,r,i){var n=e["dynCall_"+t];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(t,r,i):st(r).apply(null,i)}function ot(e,t){var r,i,n,s=(e=ue(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),at(r,i,n)}):st(t);return"function"!=typeof s&&ve("unknown function pointer with signature "+e+": "+t),s}var dt=void 0;function lt(e){var t=Ht(e),r=ue(t);return Ot(t),r}function ct(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||fe[t]||(pe[t]?pe[t].forEach(e):(r.push(t),i[t]=!0))})),new dt(e+": "+r.map(lt).join([", "]))}function ut(e,t){for(var r=[],i=0;i>2]);return r}function ht(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ft(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=me(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function pt(e,t,r,i,n){var s=t.length;s<2&&ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,d=1;d0?", ":"")+u),h+=(l?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",o)h+="runDestructors(destructors);\n";else for(d=a?1:2;d4&&0==--mt[e].refcount&&(mt[e]=void 0,_t.push(e))}function yt(){for(var e=0,t=5;t(e||ve("Cannot use deleted val. handle = "+e),mt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=_t.length?_t.pop():mt.length;return mt[t]={refcount:1,value:e},t}}};function wt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function St(e,t){switch(t){case 2:return function(e){return this.fromWireType(k[e>>2])};case 3:return function(e){return this.fromWireType(C[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Et(e,t,r){switch(t){case 0:return r?function(e){return E[e]}:function(e){return A[e]};case 1:return r?function(e){return B[e>>1]}:function(e){return x[e>>1]};case 2:return r?function(e){return U[e>>2]}:function(e){return T[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&At)return At.decode(A.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=B[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function xt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return B[t>>1]=0,t-i}function Ut(e){return 2*e.length}function Tt(e,t){for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function kt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),U[t>>2]=a,(t+=4)+4>n)break}return U[t>>2]=0,t-i}function Ct(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Dt={},It=[],Ft=[],Pt={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"};for(var t in Pt)void 0===Pt[t]?delete e[t]:e[t]=Pt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}var Mt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=oe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Rt=365,zt=146;Object.defineProperties(Mt.prototype,{read:{get:function(){return(this.mode&Rt)===Rt},set:function(e){e?this.mode|=Rt:this.mode&=-366}},write:{get:function(){return(this.mode&zt)===zt},set:function(e){e?this.mode|=zt:this.mode&=-147}},isFolder:{get:function(){return oe.isDir(this.mode)}},isDevice:{get:function(){return oe.isChrdev(this.mode)}}}),oe.FSNode=Mt,oe.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ce=e}(),ye=e.BindingError=ge(Error,"BindingError"),be=e.InternalError=ge(Error,"InternalError"),je.prototype.isAliasOf=Ae,je.prototype.clone=He,je.prototype.delete=$e,je.prototype.isDeleted=Ve,je.prototype.deleteLater=We,e.getInheritedInstanceCount=De,e.getLiveInheritedInstances=Ie,e.flushPendingDeletes=Pe,e.setDelayFunction=Me,it.prototype.getPointee=et,it.prototype.destructor=tt,it.prototype.argPackAdvance=8,it.prototype.readValueFromPointer=Qe,it.prototype.deleteObject=rt,it.prototype.fromWireType=Oe,dt=e.UnboundTypeError=ge(Error,"UnboundTypeError"),e.count_emval_handles=yt,e.get_first_emval=vt;var Nt={q:function(e){return Vt(e+24)+24},p:function(e,t,r){throw new ee(e).init(t,r),e},C:function(e,t,r){de.varargs=r;try{var i=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:oe.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=de.get();return i.flags|=n,0;case 5:return n=de.get(),B[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,U[Gt()>>2]=s,-1}}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){de.varargs=i;try{t=de.getStr(t),t=de.calculateAt(e,t);var n=i?de.get():0;return oe.open(t,r,n).fd}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=E;else if(2===r)i=B;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=U}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(t,r,i,n,s,a,o,d,l,c,u,h,f){u=ue(u),a=ot(s,a),d&&(d=ot(o,d)),c&&(c=ot(l,c)),f=ot(h,f);var p=_e(u);!function(t,r,i){e.hasOwnProperty(t)?((void 0===i||void 0!==e[t].overloadTable&&void 0!==e[t].overloadTable[i])&&ve("Cannot register public name '"+t+"' twice"),qe(e,t,t),e.hasOwnProperty(i)&&ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),e[t].overloadTable[i]=r):(e[t]=r,void 0!==i&&(e[t].numArguments=i))}(p,(function(){ct("Cannot construct "+u+" due to unbound types",[n])})),Se([t,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:je.prototype;var o=me(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+u);if(void 0===h.constructor_body)throw new ye(u+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new ye("Tried to invoke ctor of "+u+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(h.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:o}});o.prototype=l;var h=new Ye(u,o,l,f,i,a,d,c),_=new it(u,h,!0,!1,!1),m=new it(u+"*",h,!1,!1,!1),g=new it(u+" const*",h,!1,!0,!1);return Ce[t]={pointerType:m,constPointerType:g},function(t,r,i){e.hasOwnProperty(t)||we("Replacing nonexistant public symbol"),void 0!==e[t].overloadTable&&void 0!==i?e[t].overloadTable[i]=r:(e[t]=r,e[t].argCount=i)}(p,o),[_,m,g]}))},r:function(e,t,r,i,n,s){w(t>0);var a=ut(t,r);n=ot(i,n),Se([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ye("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{ct("Cannot construct "+e.name+" due to unbound types",a)},Se([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=pt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,a,o){var d=ut(r,i);t=ue(t),s=ot(n,s),Se([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){ct("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,c=l[t];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(qe(l,t,i),l[t].overloadTable[r-2]=n),Se([],d,(function(n){var o=pt(i,n,e,s,a);return void 0===l[t].overloadTable?(o.argCount=r-2,l[t]=o):l[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Ee(e,{name:t=ue(t),fromWireType:function(e){var t=bt.toValue(e);return gt(e),t},toWireType:function(e,t){return bt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},n:function(e,t,r){var i=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:St(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=ue(t);var s=le(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var d=t.includes("unsigned");Ee(e,{name:t,fromWireType:a,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Et(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=T,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}Ee(e,{name:r=ue(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=ue(t));Ee(e,{name:t,fromWireType:function(e){var t,i=T[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==A[o]){var d=P(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)L(t,A,a,i+1);else if(n)for(var o=0;o255&&(Ot(a),ve("String has UTF-16 code units that do not fit in 8 bits")),A[a+o]=d}else for(o=0;ox,o=1):4===t&&(i=Tt,n=kt,a=Ct,s=()=>T,o=2),Ee(e,{name:r,fromWireType:function(e){for(var r,n=T[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Ot(e),r},toWireType:function(e,i){"string"!=typeof i&&ve("Cannot pass non-string to C++ string type "+r);var s=a(i),d=Vt(4+s+t);return T[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(Ot,d),d},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Ot(e)}})},o:function(e,t){Ee(e,{isVoid:!0,name:t=ue(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=It[e])(t=bt.toValue(t),r=void 0===(s=Dt[n=r])?ue(n):s,null,i)},j:gt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),a=0;a>2],i="parameter "+a,n=void 0,void 0===(n=fe[r])&&ve(i+" has unknown type "+lt(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Ft[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;l>2]=s,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(E[t>>0]=0)}(i,s),r+=i.length+1})),0},z:function(e,t){var r=Lt();T[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),T[t>>2]=i,0},l:function(e){try{var t=de.getStreamFromFD(e);return oe.close(t),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=de.getStreamFromFD(e),i=r.tty?2:oe.isDir(r.mode)?3:oe.isLink(r.mode)?7:4;return E[t>>0]=i,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.read(e,E,a,o,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(d=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*d:NaN;if(isNaN(s))return 61;var a=de.getStreamFromFD(e);return oe.llseek(a,s,i),O=[a.position>>>0,(N=a.position,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[n>>2]=O[0],U[n+4>>2]=O[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}var o,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.write(e,E,a,o,i);if(d<0)return-1;n+=d}return n}(de.getStreamFromFD(e),t,r);return T[i>>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var t={a:Nt};function r(t,r){var i,n,s=t.exports;e.asm=s,g=e.asm.F,i=g.buffer,S=i,e.HEAP8=E=new Int8Array(i),e.HEAP16=B=new Int16Array(i),e.HEAP32=U=new Int32Array(i),e.HEAPU8=A=new Uint8Array(i),e.HEAPU16=x=new Uint16Array(i),e.HEAPU32=T=new Uint32Array(i),e.HEAPF32=k=new Float32Array(i),e.HEAPF64=C=new Float64Array(i),D=e.asm.I,n=e.asm.G,H.unshift(n),q()}function n(e){r(e.instance)}function a(e){return function(){if(!m&&(h||f)){if("function"==typeof fetch&&!X(R))return fetch(R,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+R+"'";return e.arrayBuffer()})).catch((function(){return Z(R)}));if(s)return new Promise((function(e,t){s(R,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Z(R)}))}().then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(e,(function(e){v("failed to asynchronously prepare wasm: "+e),Y(e)}))}if(j(),e.instantiateWasm)try{return e.instantiateWasm(t,r)}catch(e){return v("Module.instantiateWasm callback failed with error: "+e),!1}(m||"function"!=typeof WebAssembly.instantiateStreaming||K(R)||X(R)||p||"function"!=typeof fetch?a(n):fetch(R,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(n,(function(e){return v("wasm streaming compile failed: "+e),v("falling back to ArrayBuffer instantiation"),a(n)}))}))).catch(i)}(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.G).apply(null,arguments)};var Ot=e._free=function(){return(Ot=e._free=e.asm.H).apply(null,arguments)},Gt=e.___errno_location=function(){return(Gt=e.___errno_location=e.asm.J).apply(null,arguments)},Ht=e.___getTypeName=function(){return(Ht=e.___getTypeName=e.asm.K).apply(null,arguments)};e.___embind_register_native_and_builtin_types=function(){return(e.___embind_register_native_and_builtin_types=e.asm.L).apply(null,arguments)};var $t,Vt=e._malloc=function(){return(Vt=e._malloc=e.asm.M).apply(null,arguments)},Wt=e._emscripten_builtin_memalign=function(){return(Wt=e._emscripten_builtin_memalign=e.asm.N).apply(null,arguments)},jt=e.___cxa_is_pointer_type=function(){return(jt=e.___cxa_is_pointer_type=e.asm.O).apply(null,arguments)};function qt(r){function i(){$t||($t=!0,e.calledRun=!0,b||(e.noFSInit||oe.init.initialized||oe.init(),oe.ignorePermissions=!1,Q(H),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)t=e.postRun.shift(),$.unshift(t);var t;Q($)}()))}V>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)t=e.preRun.shift(),G.unshift(t);var t;Q(G)}(),V>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),i()}),1)):i()))}if(e.dynCall_viiijj=function(){return(e.dynCall_viiijj=e.asm.P).apply(null,arguments)},e.dynCall_jij=function(){return(e.dynCall_jij=e.asm.Q).apply(null,arguments)},e.dynCall_jii=function(){return(e.dynCall_jii=e.asm.R).apply(null,arguments)},e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.S).apply(null,arguments)},W=function e(){$t||qt(),$t||(W=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return qt(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function l(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var c,u=function(e,t,r,i,n,s,a){var o=1/(t-r),d=1/(i-n),l=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*d,e[14]=(a+s)*l,e[15]=1,e};function h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=_(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=_(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),o=p(),c=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function _(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function m(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=d();u(s,-1,1,-1,1,.1,100);const p=d();l(p);const _=d();!function(e,t,r,i){var n,s,o,d,c,u,h,f,p,_,m=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(m-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,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)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,$t=Gt;function Vt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Wt(e){return jt(e)&&e[1]===Bt}function jt(e){return e[0]>>4===Re}const qt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Yt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=qt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=qt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Kt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Ht[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Ot(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Ht[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Jt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function Qt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function er(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function tr(){return(new Date).getTime()}function rr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function ir(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function nr(e){let t=0,r=ir();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=ir(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}function sr(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function ar(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ut)||self.MediaSource.isTypeSupported(ht)||self.MediaSource.isTypeSupported(ft)||self.MediaSource.isTypeSupported(pt)||self.MediaSource.isTypeSupported(_t))&&(e=!0),e}function or(e){return null==e}function dr(e){return!or(e)}function lr(e){return"function"==typeof e}function cr(e){let t=null,r=31&e[0];return r!==Ge&&r!==He||(t=Le),t||(r=(126&e[0])>>1,r!==Qe&&r!==tt&&r!==it||(t=Me)),t}function ur(){return"undefined"!=typeof WritableStream}function hr(e){e.close()}function fr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function pr(e){return e.ok&&e.status>=200&&e.status<=299}function _r(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(x)}function mr(e){return e[0]>>4===xt&&e[1]===Bt}function gr(e){return!0===e||"true"===e}function yr(e){return!0!==e&&"true"!==e}function vr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var br=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const wr=Symbol(32),Sr=Symbol(16),Er=Symbol(8);class Ar{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return br(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(wr)}readU16(){return this.read(Sr)}readU8(){return this.read(Er)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===wr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Sr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Er){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Ar.U32=wr,Ar.U16=Sr,Ar.U8=Er;class Br{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==w){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=xr._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=xr.getProfileString(i),a=xr.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,B=2*e,S=A/B}}let x=1;1===b&&1===w||(x=b/w);let U=0,T=0;if(0===o)U=1,T=2-_;else{U=3===o?1:2,T=(1===o?2:1)*(2-_)}let k=16*(f+1),C=16*(p+1)*(2-_);k-=(m+g)*U,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:xr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=xr._ebsp2rbsp(e),n=new Ot(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=xr.getProfileString(s),d=xr.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);x=n.readBool(),U=t,T=2*e,B=U/T}}let k=1;1===E&&1===A||(k=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let I=16*(m+1),F=16*(g+1)*(2-y);I-=(v+b)*C,F-=(w+S)*D;let P=Math.ceil(I*k);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:_,chroma_format:c,chroma_format_string:xr.getChromaFormatString(c),frame_rate:{fixed:x,fps:B,fps_den:T,fps_num:U},sar_ratio:{width:E,height:A},codec_size:{width:I,height:F},present_size:{width:P,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function kr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Cr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=xr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e){return 31&e[0]}function Pr(e){return e===je}function Lr(e){return!function(e){return e===Ge||e===He}(e)&&!Pr(e)}function Mr(e){return e===$e}function Rr(e){if(0===e.length)return!1;const t=Fr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Ke||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Nr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Or=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Gr=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Hr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Hr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Hr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),_=r.readByte(),m=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=Or(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=Or(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),_=r.readByte(),m=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Or(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|Qe,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|tt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|it,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e){return(126&e[0])>>1}function Xr(e){return e===st}function Zr(e){return!function(e){return e>=32&&e<=40}(e)}function Jr(e){return e>=16&&e<=21}function Qr(e){if(0===e.length)return!1;const t=Kr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ti{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ri(e){return parseInt(e)===e}function ii(e){if(!ri(e.length))return!1;for(var t=0;t255)return!1;return!0}function ni(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ii(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ri(e.length)&&ii(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ai(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var oi,di={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},li=(oi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+oi[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},ui=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],fi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],pi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],_i=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],mi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],gi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],yi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],vi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],bi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],wi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Si=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ei=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ai=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Bi=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function xi(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,d=n;d>16&255]<<24^hi[a>>8&255]<<16^hi[255&a]<<8^hi[a>>24&255]^ui[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^hi[a>>16&255]<<16^hi[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ei[a>>16&255]^Ai[a>>8&255]^Bi[255&a]},Ui.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^_i[i[(n+1)%4]>>16&255]^mi[i[(n+2)%4]>>8&255]^gi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(hi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(hi[255&i[(n+3)%4]]^a);return o},Ui.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^vi[i[(n+3)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(fi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(fi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(fi[255&i[(n+1)%4]]^a);return o};var Ti=function(e){if(!(this instanceof Ti))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ui(e)};Ti.prototype.encrypt=function(e){if((e=ni(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Ii.prototype.setBytes=function(e){if(16!=(e=ni(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ii.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fi=function(e,t){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ii||(t=new Ii(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ui(e)};Fi.prototype.encrypt=function(e){for(var t=ni(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],_=e[t+4],m=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],x=e[t+15],U=s[0],T=s[1],k=s[2],C=s[3];U=l(U,T,k,C,a,7,o[0]),C=l(C,U,T,k,d,12,o[1]),k=l(k,C,U,T,f,17,o[2]),T=l(T,k,C,U,p,22,o[3]),U=l(U,T,k,C,_,7,o[4]),C=l(C,U,T,k,m,12,o[5]),k=l(k,C,U,T,g,17,o[6]),T=l(T,k,C,U,y,22,o[7]),U=l(U,T,k,C,v,7,o[8]),C=l(C,U,T,k,b,12,o[9]),k=l(k,C,U,T,w,17,o[10]),T=l(T,k,C,U,S,22,o[11]),U=l(U,T,k,C,E,7,o[12]),C=l(C,U,T,k,A,12,o[13]),k=l(k,C,U,T,B,17,o[14]),U=c(U,T=l(T,k,C,U,x,22,o[15]),k,C,d,5,o[16]),C=c(C,U,T,k,g,9,o[17]),k=c(k,C,U,T,S,14,o[18]),T=c(T,k,C,U,a,20,o[19]),U=c(U,T,k,C,m,5,o[20]),C=c(C,U,T,k,w,9,o[21]),k=c(k,C,U,T,x,14,o[22]),T=c(T,k,C,U,_,20,o[23]),U=c(U,T,k,C,b,5,o[24]),C=c(C,U,T,k,B,9,o[25]),k=c(k,C,U,T,p,14,o[26]),T=c(T,k,C,U,v,20,o[27]),U=c(U,T,k,C,A,5,o[28]),C=c(C,U,T,k,f,9,o[29]),k=c(k,C,U,T,y,14,o[30]),U=u(U,T=c(T,k,C,U,E,20,o[31]),k,C,m,4,o[32]),C=u(C,U,T,k,v,11,o[33]),k=u(k,C,U,T,S,16,o[34]),T=u(T,k,C,U,B,23,o[35]),U=u(U,T,k,C,d,4,o[36]),C=u(C,U,T,k,_,11,o[37]),k=u(k,C,U,T,y,16,o[38]),T=u(T,k,C,U,w,23,o[39]),U=u(U,T,k,C,A,4,o[40]),C=u(C,U,T,k,a,11,o[41]),k=u(k,C,U,T,p,16,o[42]),T=u(T,k,C,U,g,23,o[43]),U=u(U,T,k,C,b,4,o[44]),C=u(C,U,T,k,E,11,o[45]),k=u(k,C,U,T,x,16,o[46]),U=h(U,T=u(T,k,C,U,f,23,o[47]),k,C,a,6,o[48]),C=h(C,U,T,k,y,10,o[49]),k=h(k,C,U,T,B,15,o[50]),T=h(T,k,C,U,m,21,o[51]),U=h(U,T,k,C,E,6,o[52]),C=h(C,U,T,k,p,10,o[53]),k=h(k,C,U,T,w,15,o[54]),T=h(T,k,C,U,d,21,o[55]),U=h(U,T,k,C,v,6,o[56]),C=h(C,U,T,k,x,10,o[57]),k=h(k,C,U,T,g,15,o[58]),T=h(T,k,C,U,A,21,o[59]),U=h(U,T,k,C,_,6,o[60]),C=h(C,U,T,k,S,10,o[61]),k=h(k,C,U,T,f,15,o[62]),T=h(T,k,C,U,b,21,o[63]),s[0]=s[0]+U|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Nt((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,m=l[f-2],g=(m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10;l[f]=_+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Nt((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=Li).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,_=n.high,m=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,x=u.low,U=h.high,T=h.low,k=f,C=p,D=_,I=m,F=g,P=y,L=v,M=b,R=w,z=S,N=E,O=A,G=B,H=x,$=U,V=T,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],ae=se.high,oe=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&H,pe=k&D^k&F^D&F,_e=C&I^C&P^I&P,me=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=$+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+_e;$=G,V=H,G=N,H=O,N=R,O=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=F,M=P,F=D,P=I,D=k,I=C,k=Ee+(me+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),m=n.low=m+I,n.high=_+D+(m>>>0>>0?1:0),y=s.low=y+P,s.high=g+F+(y>>>0

>>0?1:0),b=a.low=b+M,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),x=u.low=x+H,u.high=B+G+(x>>>0>>0?1:0),T=h.low=T+V,h.high=U+$+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Nt((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,_=0;_<5;_++)f^=(T=r[h+5*_]).high,p^=T.low;var m=u[h];m.high=f,m.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),_=0;_<5;_++)(T=r[h+5*_]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var x=u[0],U=r[0];for(x.high=U.high,x.low=U.low,h=0;h<5;h++)for(_=0;_<5;_++){var T=r[w=h+5*_],k=u[w],C=u[(h+1)%5+5*_],D=u[(h+2)%5+5*_];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var I=c[o];T.high^=I.high,T.low^=I.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,B,x,U,T=this._hash.words,k=u.words,C=h.words,D=o.words,I=d.words,F=l.words,P=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],B=b=T[3],x=w=T[4],r=0;r<80;r+=1)U=s+e[t+D[r]]|0,U+=r<16?p(a,f,b)+k[0]:r<32?_(a,f,b)+k[1]:r<48?m(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],U=(U=v(U|=0,F[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=U,U=S+e[t+I[r]]|0,U+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?m(E,A,B)+C[2]:r<64?_(E,A,B)+C[3]:p(E,A,B)+C[4],U=(U=v(U|=0,P[r]))+x|0,S=x,x=B,B=v(A,10),A=E,E=U;U=T[1]+f+B|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=U},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function _(e,t,r){return e&t|~e&r}function m(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Nt((function(e,t){var r,i,n;e.exports=(i=(r=Li).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var _=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),m=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),_.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:m}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return _.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,_.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Nt((function(e,t){var r;e.exports=((r=Li).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var _=e[r],m=e[_],g=e[m],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*m^257*_^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=_^e[e[e[g^_]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],m=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=_,c=m,u=g,h=y}_=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],m=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=_,e[t+1]=m,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(_)}(),r.AES)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(s+4+2,s+4+a);let n=new Pi.ModeOfOperation.ctr(t,new Pi.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function zi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Pi.ModeOfOperation.ctr(t,new Pi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Nt((function(e,t){e.exports=Li}));var Ni=Nt((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[a].grouping_type+"/0",(o=new l(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,m.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+m.sample_composition_time_offset[r]),_=a,m.flags&h.TRUN_FLAGS_FLAGS?_=m.sample_flags[r]:0===r&&m.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=m.first_sample_flags),p.is_sync=!(_>>16&1),p.is_leading=_>>26&3,p.depends_on=_>>24&3,p.is_depended_on=_>>22&3,p.has_redundancy=_>>20&3,p.degradation_priority=65535&_;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(m.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+m.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Oi(e){return e.reduce(((e,t)=>256*e+t))}function Gi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Ni.Log,Ni.MP4BoxStream,Ni.DataStream,Ni.MultiBufferStream,Ni.MPEG4DescriptorParser,Ni.BoxParser,Ni.XMLSubtitlein4Parser,Ni.Textin4Parser,Ni.ISOFile,Ni.createFile;class Hi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Gi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const $i=16,Vi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Wi=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function ji(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Yi(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Ki(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Xi(e,t){const r=31&t;return e<>>32-r}function Zi(e){return(255&Vi[e>>>24&255])<<24|(255&Vi[e>>>16&255])<<16|(255&Vi[e>>>8&255])<<8|255&Vi[255&e]}function Ji(e){return e^Xi(e,2)^Xi(e,10)^Xi(e,18)^Xi(e,24)}function Qi(e){return e^Xi(e,13)^Xi(e,23)}function en(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Ji(Zi(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Ji(Zi(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Ji(Zi(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Ji(Zi(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Wi[r+0],t[r+0]=i[0]^=Qi(Zi(e)),e=i[2]^i[3]^i[0]^Wi[r+1],t[r+1]=i[1]^=Qi(Zi(e)),e=i[3]^i[0]^i[1]^Wi[r+2],t[r+2]=i[2]^=Qi(Zi(e)),e=i[0]^i[1]^i[2]^Wi[r+3],t[r+3]=i[3]^=Qi(Zi(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function rn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=ji(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=ji(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Yi(e):ji(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=$i-e.length%$i;for(let r=0;r=$i;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e<$i;e++)0!==r&&(t[e]^=l[e]);en(t,i,o);for(let e=0;e<$i;e++)"cbc"===n&&0===r&&(i[e]^=l[e]),d[u+e]=i[e];"cbc"===n&&(l=0!==r?i:t),c-=$i,u+=$i}if(("pkcs#5"===i||"pkcs#7"===i)&&0===r){const e=d.length,t=d[e-1];for(let r=1;r<=t;r++)if(d[e-r]!==t)throw new Error("padding is invalid");d.splice(e-t,t)}return"array"!==a?0!==r?qi(d):Ki(d):d}function nn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}function sn(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=e.byteLength;let n=5;for(;ni)break;let a=e[n+4],o=!1;if(r?(a=a>>>1&63,o=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,o=1===a||5===a),o){const r=rn(e.slice(n+4+2,n+4+s),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+s}return e}class an{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=on.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=on.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=on.findFirstStartCode}}}}function ln(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=ln(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class fn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{lr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class pn{static init(){pn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in pn.types)pn.types.hasOwnProperty(e)&&(pn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=pn.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,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.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 pn.box(pn.types.trak,pn.tkhd(e),pn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return pn.box(pn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,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(e){return pn.box(pn.types.mdia,pn.mdhd(e),pn.hdlr(e),pn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return pn.box(pn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?pn.constants.HDLR_AUDIO:pn.constants.HDLR_VIDEO,pn.box(pn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?pn.box(pn.types.smhd,pn.constants.SMHD):pn.box(pn.types.vmhd,pn.constants.VMHD),pn.box(pn.types.minf,t,pn.dinf(),pn.stbl(e))}static dinf(){return pn.box(pn.types.dinf,pn.box(pn.types.dref,pn.constants.DREF))}static stbl(e){return pn.box(pn.types.stbl,pn.stsd(e),pn.box(pn.types.stts,pn.constants.STTS),pn.box(pn.types.stsc,pn.constants.STSC),pn.box(pn.types.stsz,pn.constants.STSZ),pn.box(pn.types.stco,pn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp3(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp4a(e)):"avc"===e.videoType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.avc1(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return pn.box(pn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return pn.box(pn.types.mp4a,i,pn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return pn.box(pn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.avc1,n,pn.box(pn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.hvc1,n,pn.box(pn.types.hvcC,t))}static mvex(e){return pn.box(pn.types.mvex,pn.trex(e))}static trex(e){let t=e.id,r=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 pn.box(pn.types.trex,r)}static moof(e,t){return pn.box(pn.types.moof,pn.mfhd(e.sequenceNumber),pn.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 pn.box(pn.types.mfhd,t)}static traf(e,t){let r=e.id,i=pn.box(pn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=pn.box(pn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=pn.sdtp(e),a=pn.trun(e,s.byteLength+16+16+8+16+8+8);return pn.box(pn.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,pn.box(pn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),pn.box(pn.types.trun,r)}static mdat(e){return pn.box(pn.types.mdat,e)}}pn.init();var _n,mn=Nt((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_n=mn)&&_n.__esModule&&Object.prototype.hasOwnProperty.call(_n,"default")&&_n.default;const gn=[44100,48e3,32e3,0],yn=[22050,24e3,16e3,0],vn=[11025,12e3,8e3,0],bn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],wn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Sn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function En(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=vn[a];break;case 2:d=yn[a];break;case 3:d=gn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=zn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}Date.now||(Date.now=function(){return(new Date).getTime()}),s({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s={},a=new AbortController,o=null,d=null,l=null,c=null,u=!1,h=null,w=null,S=!1,x=!1,ve=!!gr(r),be=!1,$e=null,Ke=null,st=null,ht=[],ft=null,pt=null,_t=0,St=0,Et=null,xt=null,zt=0,Nt=0,Ot=!1,Gt=!1,Ht=!1,qt=null,Zt=null,ir=null,br=!1,wr=!0,Sr=()=>{const e=_r();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(ii.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),lr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:k,buffer:r,delay:ii.delay,ts:0},[r]),hr(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:k,buffer:t,delay:ii.delay,ts:0},[t]),hr(e)}},error:function(e){ii.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?dt:lt});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:L,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const a=e.slice(5);t===Ie?(n=Tr(a),i={codec:n.codec,description:a}):t===Fe&&(n=Vr(a),i={codec:n.codec,description:a}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth);try{s.decoder.configure(i),s.hasInit=!0}catch(e){ii.debug.log("worker","VideoDecoder configure error",e.code,e)}}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let Er=function(){if(br=!0,ii.fetchStatus!==kt||yr(ii._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){ii.debug.log("worker","abort catch",e)}}else a=null,ii.debug.log("worker",`abort() and not abortController.abort() _status is ${ii.fetchStatus} and _isChrome is ${ii._opt.isChrome}`)},Ur={init(){Ur.lastBuf=null,Ur.vps=null,Ur.sps=null,Ur.pps=null,Ur.streamType=null,Ur.localDts=0,Ur.isSendSeqHeader=!1},destroy(){Ur.lastBuf=null,Ur.vps=null,Ur.sps=null,Ur.pps=null,Ur.streamType=null,Ur.localDts=0,Ur.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Ur.extractNALu$2(t)},getNaluDts(){let e=Ur.localDts;return Ur.localDts=Ur.localDts+40,e},getNaluAudioDts(){const e=ii._opt.sampleRate,t=ii._opt.audioBufferSize;return Ur.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e{const t=Fr(e);t===He||t===Ge?Ur.handleVideoH264Nalu(e):Lr(t)&&i.push(e)})),1===i.length)Ur.handleVideoH264Nalu(i[0]);else if(Rr(i)){const e=Fr(i[0]),t=Mr(e);Ur.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Ur.handleVideoH264Nalu(e)}))}else if(Ur.streamType===Me)if(ii._opt.nakedFlowH265DemuxUseNew){const t=Ur.handleAddNaluStartCode(e),r=Ur.extractNALu(t);if(0===r.length)return void ii.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Kr(e);t===it||t===tt||t===Qe?Ur.handleVideoH265Nalu(e):Zr(t)&&i.push(e)})),1===i.length)Ur.handleVideoH265Nalu(i[0]);else if(Qr(i)){const e=Kr(i[0]),t=Jr(e);Ur.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Ur.handleVideoH265Nalu(e)}))}else Kr(e)===it?Ur.extractH265PPS(e):Ur.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Pr(Fr(e))?Ur.extractH264SEI(e):Ur.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Xr(Kr(e))?Ur.extractH265SEI(e):Ur.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Ur.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Ur.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Fr(e);switch(t){case Ge:Ur.sps=e;break;case He:Ur.pps=e}if(Ur.isSendSeqHeader){if(Ur.sps&&Ur.pps){const e=kr({sps:Ur.sps,pps:Ur.pps}),t=Ur.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ur.sps=null,Ur.pps=null}if(Lr(t)){const r=Mr(t),i=Ur.getNaluDts(),n=Dr(e,r);Ur.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Ur.sps&&Ur.pps){Ur.isSendSeqHeader=!0;const e=kr({sps:Ur.sps,pps:Ur.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ur.sps=null,Ur.pps=null}},handleVideoH264NaluList(e,t,r){if(Ur.isSendSeqHeader){const i=Ur.getNaluDts(),n=Ir(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ur.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Kr(e);switch(t){case Qe:Ur.vps=e;break;case tt:Ur.sps=e;break;case it:Ur.pps=e}if(Ur.isSendSeqHeader){if(Ur.vps&&Ur.sps&&Ur.pps){const e=jr({vps:Ur.vps,sps:Ur.sps,pps:Ur.pps}),t=Ur.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ur.vps=null,Ur.sps=null,Ur.pps=null}if(Zr(t)){const r=Jr(t),i=Ur.getNaluDts(),n=qr(e,r);Ur.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Ur.vps&&Ur.sps&&Ur.pps){Ur.isSendSeqHeader=!0;const e=jr({vps:Ur.vps,sps:Ur.sps,pps:Ur.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ur.vps=null,Ur.sps=null,Ur.pps=null}},handleVideoH265NaluList(e,t,r){if(Ur.isSendSeqHeader){const i=Ur.getNaluDts(),n=Yr(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ur.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){ii.calcNetworkDelay(t.ts),t.isIFrame&&ii.calcIframeIntervalTimestamp(t.ts),ii.decode(e,t)}},Or={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Or.mp4Box=Ni.createFile(),Or.mp4Box.onReady=Or.onReady,Or.mp4Box.onError=Or.onError,Or.mp4Box.onSamples=Or.onSamples},initTransportDescarmber(){Or.transportDescarmber=new Hi},_getSeqHeader(e){const t=Or.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Ni.DataStream(void 0,0,Ni.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Or.isHevc=!0,qt=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ii.debug.log(Or.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Or.videoTrackId=t.id;const e=Or._getSeqHeader(t);e&&(ii.debug.log(Or.LOG_NAME,"seqHeader"),ii.decodeVideo(e,0,!0,0)),Or.mp4Box.setExtractionOptions(t.id)}if(r&&ii._opt.hasAudio){Or.audioTrackId=r.id;const e=r.audio||{},t=$t.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Or.mp4Box.setExtractionOptions(r.id);const n=Vt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ii.debug.log(Or.LOG_NAME,"aacADTSHeader"),ii.decodeAudio(n,0)}Or.mp4Box.start()},onError(e){ii.debug.error(Or.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Or.videoTrackId)for(const t of r){const r=t.data,i=t.is_sync,n=1e3*t.cts/t.timescale;t.duration,t.timescale,i&&ii.calcIframeIntervalTimestamp(n);let s=null;s=Or.isHevc?Yr(r,i):Ir(r,i),ii.decode(s,{type:se,ts:n,isIFrame:i,cts:0}),Or.mp4Box.releaseUsedSamples(e,t.number)}else if(e===Or.audioTrackId){if(ii._opt.hasAudio)for(const t of r){const r=t.data,i=1e3*t.cts/t.timescale;t.duration,t.timescale;const n=new Uint8Array(r.byteLength+2);n.set([175,1],0),n.set(r,2),ii.decode(n,{type:ne,ts:i,isIFrame:!1,cts:0}),Or.mp4Box.releaseUsedSamples(e,t.number)}}else ii.debug.warn(Or.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Or.transportDescarmber&&(t=Or.transportDescarmber.transport(t)),t.buffer.fileStart=Or.offset,Or.offset+=t.byteLength,Or.mp4Box.appendBuffer(t.buffer)},destroy(){Or.mp4Box&&(Or.mp4Box.stop(),Or.mp4Box.flush(),Or.mp4Box.destroy(),Or.mp4Box=null),Or.transportDescarmber&&(Or.transportDescarmber.destroy(),Or.transportDescarmber=null),Or.offset=0,Or.videoTrackId=null,Or.audioTrackId=null,Or.isHevc=!1}},Gr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Gr.extractNALu(t)},destroy(){Gr.lastBuffer=new Uint8Array(0),Gr.parsedOffset=0,Gr.firstStartCodeOffset=0,Gr.secondStartCodeOffset=0,Gr.state="init",Gr.hasInitVideoCodec=!1,Gr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ii.debug.warn(Gr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Gr.lastBuffer.length+e.length);for(t.set(Gr.lastBuffer,0),t.set(new Uint8Array(e),Gr.lastBuffer.length),Gr.lastBuffer=t;;){if("init"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findFirstStartCode",Gr.firstStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findSecondStartCode",Gr.secondStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Gr.state){if(!(Gr.lastBuffer.length-Gr.parsedOffset>0))break;{let e,t,r=192&Gr.lastBuffer[Gr.parsedOffset];e=0==r?Gr.secondStartCodeOffset-14:Gr.secondStartCodeOffset;let i=0==(192&Gr.lastBuffer[Gr.firstStartCodeOffset+4]);if(i){if(Gr.firstStartCodeOffset-14<0)return void ii.debug.warn(Gr.LOG_NAME,"firstStartCodeOffset -14 is",Gr.firstStartCodeOffset-14);Gr.hasInitVideoCodec||(Gr.hasInitVideoCodec=!0,ii.debug.log(Gr.LOG_NAME,"setCodec"),si.setCodec(Pe,"")),t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset-14,e)}else t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset,e);let n=Gr.getNaluDts();Gr.hasInitVideoCodec?(postMessage({cmd:O,type:Ae,value:t.byteLength}),postMessage({cmd:O,type:Be,value:n}),si.decode(t,i?1:0,n)):ii.debug.warn(Gr.LOG_NAME,"has not init video codec"),Gr.lastBuffer=Gr.lastBuffer.subarray(e),Gr.firstStartCodeOffset=0==r?14:0,Gr.parsedOffset=Gr.firstStartCodeOffset+4,Gr.state="findFirstStartCode"}}}},getNaluDts(){let e=Gr.localDts;return Gr.localDts=Gr.localDts+40,e}},Wr={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Nn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){Wr.media_info_=null,Wr.pes_slice_queues_=null,Wr.section_slice_queues_=null,Wr.video_metadata_=null,Wr.audio_metadata_=null,Wr.aac_last_incomplete_data_=null,Wr.video_track_=null,Wr.audio_track_=null,Wr._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){Wr._remainingPacketData&&(e=hn(Wr._remainingPacketData,e),Wr._remainingPacketData=null);let t=e.buffer;const r=Wr.parseChunks(t);r?Wr._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!Wr.pmt_||Wr.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);Wr.last_pcr_=e}if(2==a||5+e===188){t+=188,204===Wr.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===Wr.current_pmt_pid_||null!=Wr.pmt_&&Wr.pmt_.pid_stream_type[s]===In){let r=188-c;Wr.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=Wr.pmt_&&null!=Wr.pmt_.pid_stream_type[s]){let r=188-c,i=Wr.pmt_.pid_stream_type[s];s!==Wr.pmt_.common_pids.h264&&s!==Wr.pmt_.common_pids.h265&&s!==Wr.pmt_.common_pids.adts_aac&&s!==Wr.pmt_.common_pids.loas_aac&&s!==Wr.pmt_.common_pids.ac3&&s!==Wr.pmt_.common_pids.eac3&&s!==Wr.pmt_.common_pids.opus&&s!==Wr.pmt_.common_pids.mp3&&!0!==Wr.pmt_.pes_private_data_pids[s]&&!0!==Wr.pmt_.timed_id3_pids[s]&&!0!==Wr.pmt_.synchronous_klv_pids[s]&&!0!==Wr.pmt_.asynchronous_klv_pids[s]||Wr.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===Wr.tsPacketSize&&(t+=16)}return Wr.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=Wr.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Wr.emitSectionSlices(s,i):Wr.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&Wr.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Wr.emitSectionSlices(s,i):s.total_length>=s.expected_length&&Wr.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ii.debug.warn(Wr.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=Wr.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?Wr.emitPESSlices(e,i):Wr.clearSlices(e,i)),Wr.pes_slice_queues_[i.pid]=new Ln,Wr.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==Wr.pes_slice_queues_[i.pid])return;let o=Wr.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?Wr.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ii.debug.warn(Wr.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case An:case Bn:Wr.parseMP3Payload(c,r);break;case xn:Wr.pmt_.common_pids.opus===e.pid||Wr.pmt_.common_pids.ac3===e.pid||Wr.pmt_.common_pids.eac3===e.pid||(Wr.pmt_.asynchronous_klv_pids[e.pid]?Wr.parseAsynchronousKLVMetadataPayload(c,e.pid,i):Wr.pmt_.smpte2038_pids[e.pid]?Wr.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):Wr.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Un:Wr.parseADTSAACPayload(c,r);break;case Tn:Wr.parseLOASAACPayload(c,r);break;case kn:case Cn:break;case Dn:Wr.pmt_.timed_id3_pids[e.pid]?Wr.parseTimedID3MetadataPayload(c,r,s,e.pid,i):Wr.pmt_.synchronous_klv_pids[e.pid]&&Wr.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Fn:Wr.parseH264Payload(c,r,s,e.random_access_indicator);break;case Pn:Wr.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===xn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);Wr.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ii.debug.error(Wr.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(Wr.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=Wr.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==Wr.pat_&&ii.debug.log(Wr.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),Wr.pat_=a,Wr.current_program_=d,Wr.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ii.debug.error(Wr.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=Wr._initPmt(),r.program_number=n,r.version_number=s,Wr.program_pmt_map_[n]=r;else if(r=Wr.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iWr.has_video_&&Wr.has_audio_?Wr.video_init_segment_dispatched_&&Wr.audio_init_segment_dispatched_:Wr.has_video_&&!Wr.has_audio_?Wr.video_init_segment_dispatched_:!(Wr.has_video_||!Wr.has_audio_)&&Wr.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=Wr.video_metadata_.details,t={type:"video"};t.id=Wr.video_track_.id,t.timescale=1e3,t.duration=Wr.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,Wr.video_metadata_.vps){let e=Wr.video_metadata_.vps.data.subarray(4),r=Wr.video_metadata_.sps.data.subarray(4),i=Wr.video_metadata_.pps.data.subarray(4);t.hvcc=jr({vps:e,sps:r,pps:i}),0==Wr.video_init_segment_dispatched_&&ii.debug.log(Wr.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ii.decodeVideo(t.hvcc,0,!0,0)}else{let e=Wr.video_metadata_.sps.data.subarray(4),r=Wr.video_metadata_.pps.data.subarray(4);t.avcc=Cr({sps:e,pps:r}),0==Wr.video_init_segment_dispatched_&&ii.debug.log(Wr.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ii.decodeVideo(t.avcc,0,!0,0)}Wr.video_init_segment_dispatched_=!0,Wr.video_metadata_changed_=!1;let n=Wr.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){Wr.isInitSegmentDispatched()&&Wr.video_track_.length&&Wr._preDoDecode()},dispatchAudioMediaSegment(){Wr.isInitSegmentDispatched()&&Wr.audio_track_.length&&Wr._preDoDecode()},dispatchAudioVideoMediaSegment(){Wr.isInitSegmentDispatched()&&(Wr.audio_track_.length||Wr.video_track_.length)&&Wr._preDoDecode()},parseADTSAACPayload(e,t){if(Wr.has_video_&&!Wr.video_init_segment_dispatched_)return;if(Wr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Wr.aac_last_incomplete_data_.byteLength);t.set(Wr.aac_last_incomplete_data_,0),t.set(e,Wr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Wr.timescale_),"aac"===Wr.audio_metadata_.codec){if(null==t&&null!=Wr.audio_last_sample_pts_)r=1024/Wr.audio_metadata_.sampling_frequency*1e3,i=Wr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Wr.TAG_NAME,"AAC: Unknown pts");if(Wr.aac_last_incomplete_data_&&Wr.audio_last_sample_pts_){r=1024/Wr.audio_metadata_.sampling_frequency*1e3;let e=Wr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Wr.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Kt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Wr.audio_init_segment_dispatched_?(Wr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Wr.dispatchAudioInitSegment(e)):Wr.detectAudioMetadataChange(e)&&(Wr.dispatchAudioMediaSegment(),Wr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};Wr.audio_track_.samples.push(s),Wr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Wr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Wr.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(Wr.has_video_&&!Wr.video_init_segment_dispatched_)return;if(Wr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Wr.aac_last_incomplete_data_.byteLength);t.set(Wr.aac_last_incomplete_data_,0),t.set(e,Wr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Wr.timescale_),"aac"===Wr.audio_metadata_.codec){if(null==t&&null!=Wr.audio_last_sample_pts_)r=1024/Wr.audio_metadata_.sampling_frequency*1e3,i=Wr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Wr.TAG_NAME,"AAC: Unknown pts");if(Wr.aac_last_incomplete_data_&&Wr.audio_last_sample_pts_){r=1024/Wr.audio_metadata_.sampling_frequency*1e3;let e=Wr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Wr.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(or(this.loas_previous_frame)?void 0:this.loas_previous_frame));){Wr.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Wr.audio_init_segment_dispatched_?(Wr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Wr.dispatchAudioInitSegment(e)):Wr.detectAudioMetadataChange(e)&&(Wr.dispatchAudioMediaSegment(),Wr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};Wr.audio_track_.samples.push(s),Wr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Wr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Wr.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(Wr.has_video_&&!Wr.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==Wr.audio_init_segment_dispatched_?(Wr.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},Wr.dispatchAudioInitSegment(h)):Wr.detectAudioMetadataChange(h)&&(Wr.dispatchAudioMediaSegment(),Wr.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/Wr.timescale_,dts:t/Wr.timescale_,type:ne};Wr.audio_track_.samples.push(f),Wr.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==Wr.audio_metadata_.codec)return ii.debug.log(Wr.TAG_NAME,`Audio: Audio Codecs changed from ${Wr.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===Wr.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==Wr.audio_metadata_.audio_object_type)return ii.debug.log(Wr.TAG_NAME,`AAC: AudioObjectType changed from ${Wr.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==Wr.audio_metadata_.sampling_freq_index)return ii.debug.log(Wr.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${Wr.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==Wr.audio_metadata_.channel_config)return ii.debug.log(Wr.TAG_NAME,`AAC: Channel configuration changed from ${Wr.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===Wr.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==Wr.audio_metadata_.sampling_frequency)return ii.debug.log(Wr.TAG_NAME,`AC3: Sampling Frequency changed from ${Wr.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==Wr.audio_metadata_.bit_stream_identification)return ii.debug.log(Wr.TAG_NAME,`AC3: Bit Stream Identification changed from ${Wr.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==Wr.audio_metadata_.bit_stream_mode)return ii.debug.log(Wr.TAG_NAME,`AC3: BitStream Mode changed from ${Wr.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==Wr.audio_metadata_.channel_mode)return ii.debug.log(Wr.TAG_NAME,`AC3: Channel Mode changed from ${Wr.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==Wr.audio_metadata_.low_frequency_effects_channel_on)return ii.debug.log(Wr.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${Wr.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===Wr.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==Wr.audio_metadata_.sample_rate)return ii.debug.log(Wr.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${Wr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Wr.audio_metadata_.channel_count)return ii.debug.log(Wr.TAG_NAME,`Opus: Channel count changed from ${Wr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===Wr.audio_metadata_.codec){const t=e.data;if(t.object_type!==Wr.audio_metadata_.object_type)return ii.debug.log(Wr.TAG_NAME,`MP3: AudioObjectType changed from ${Wr.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==Wr.audio_metadata_.sample_rate)return ii.debug.log(Wr.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${Wr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Wr.audio_metadata_.channel_count)return ii.debug.log(Wr.TAG_NAME,`MP3: Channel count changed from ${Wr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=Wr.audio_track_.id,t.timescale=1e3,t.duration=Wr.duration_,"aac"===Wr.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new On(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Vt({profile:ii._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ii.decodeAudio(n,0)}else"ac-3"===Wr.audio_metadata_.codec||"ec-3"===Wr.audio_metadata_.codec||"opus"===Wr.audio_metadata_.codec||"mp3"===Wr.audio_metadata_.codec&&(t.audioSampleRate=Wr.audio_metadata_.sample_rate,t.channelCount=Wr.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==Wr.audio_init_segment_dispatched_&&ii.debug.log(Wr.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),Wr.audio_init_segment_dispatched_=!0,Wr.video_metadata_changed_=!1;let r=Wr.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Rn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/Wr.timescale_);s.pts=e}else s.nearest_pts=Wr.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/Wr.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ii.debug.log(Wr.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ii.debug.log(Wr.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ii.debug.log(Wr.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ii.debug.log(Wr.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=Wr.audio_last_sample_pts_?Math.floor(Wr.audio_last_sample_pts_):null!=Wr.last_pcr_?Math.floor(Wr.last_pcr_/300/Wr.timescale_):void 0,_preDoDecode(){const e=Wr.video_track_,t=Wr.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===se?Wr._doDecodeVideo({...e,payload:t}):e.type===ne&&Wr._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Yr(t,e.isIFrame):Ir(t,e.isIFrame),e.isIFrame&&ii.calcIframeIntervalTimestamp(e.dts);let i=ii.cryptoPayload(r,e.isIFrame);ii.decode(i,{type:se,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;gr(ii._opt.m7sCryptoAudio)&&(r=ii.cryptoPayloadAudio(t)),ii.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},ri=null;vr()&&(ri={TAG_NAME:"worker MediaSource",_resetInIt(){ri.isAvc=null,ri.isAAC=null,ri.videoInfo={},ri.videoMeta={},ri.audioMeta={},ri.sourceBuffer=null,ri.audioSourceBuffer=null,ri.hasInit=!1,ri.hasAudioInit=!1,ri.isAudioInitInfo=!1,ri.videoMimeType="",ri.audioMimeType="",ri.cacheTrack={},ri.cacheAudioTrack={},ri.timeInit=!1,ri.sequenceNumber=0,ri.audioSequenceNumber=0,ri.firstRenderTime=null,ri.firstAudioTime=null,ri.mediaSourceAppendBufferFull=!1,ri.mediaSourceAppendBufferError=!1,ri.mediaSourceAddSourceBufferError=!1,ri.mediaSourceBufferError=!1,ri.mediaSourceError=!1,ri.prevTimestamp=null,ri.decodeDiffTimestamp=null,ri.prevDts=null,ri.prevAudioDts=null,ri.prevPayloadBufferSize=0,ri.isWidthOrHeightChanged=!1,ri.prevTs=null,ri.prevAudioTs=null,ri.eventListenList=[],ri.pendingRemoveRanges=[],ri.pendingSegments=[],ri.pendingAudioRemoveRanges=[],ri.pendingAudioSegments=[],ri.supportVideoFrameCallbackHandle=null,ri.audioSourceBufferCheckTimeout=null,ri.audioSourceNoDataCheckTimeout=null,ri.hasPendingEos=!1,ri.$video={currentTime:0,readyState:0}},init(){ri.events=new fn,ri._resetInIt(),ri.mediaSource=new self.MediaSource,ri.isDecodeFirstIIframe=!!yr(ii._opt.checkFirstIFrame),ri._bindMediaSourceEvents()},destroy(){ri.stop(),ri._clearAudioSourceBufferCheckTimeout(),ri.eventListenList&&ri.eventListenList.length&&(ri.eventListenList.forEach((e=>e())),ri.eventListenList=[]),ri._resetInIt(),ri.mediaSource=null},getState:()=>ri.mediaSource&&ri.mediaSource.readyState,isStateOpen:()=>ri.getState()===gt,isStateClosed:()=>ri.getState()===yt,isStateEnded:()=>ri.getState()===mt,_bindMediaSourceEvents(){const{proxy:e}=ri.events,t=e(ri.mediaSource,bt,(()=>{ii.debug.log(ri.TAG_NAME,"sourceOpen"),ri._onMediaSourceSourceOpen()})),r=e(ri.mediaSource,vt,(()=>{ii.debug.log(ri.TAG_NAME,"sourceClose")})),i=e(ri.mediaSource,wt,(()=>{ii.debug.log(ri.TAG_NAME,"sourceended")}));ri.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ri.sourceBuffer||(ii.debug.log(ri.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ri._initSourceBuffer()),ri.audioSourceBuffer||(ii.debug.log(ri.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ri._initAudioSourceBuffer()),ri._hasPendingSegments()&&ri._doAppendSegments()},decodeVideo(e,t,r,i){if(ii.isDestroyed)ii.debug.warn(ri.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(yr(ri.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Fe&&yr(ar()))return void ri.emitError(Ce.mediaSourceH265NotSupport);ri.videoInfo.codec=i,postMessage({cmd:L,code:i});const n=new Uint8Array(e);postMessage({cmd:M,buffer:n,codecId:i},[n.buffer]),ri.hasInit=ri._decodeConfigurationRecord(e,t,r,i)}else ii.debug.warn(ri.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]}`);else if(!ri.isDecodeFirstIIframe&&r&&(ri.isDecodeFirstIIframe=!0),ri.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Ie?r=Tr(e.slice(5)):t===Fe&&(r=$r(e));const i=ri.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ii.debug.warn(ri.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecWidth},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ri.isWidthOrHeightChanged=!0,ri.emitError(Ce.mseWidthOrHeightChange))}if(ri.isWidthOrHeightChanged)return void ii.debug.warn(ri.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mr(e))return void ii.debug.warn(ri.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength300&&(ri.firstAudioTime-=e,ii.debug.warn(ri.TAG_NAME,`video\n firstAudioTime is ${ri.firstRenderTime} and current time is ${ri.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${ri.firstAudioTime}`))}r=t-ri.firstAudioTime,r<0&&(ii.debug.warn(ri.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${ri.prevAudioTs},\n firstAudioTime is ${ri.firstAudioTime}`),r=null===ri.prevAudioDts?0:ri.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration),null!==ri.prevAudioTs&&r<=ri.prevAudioDts&&(ii.debug.warn(ri.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${ri.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${ri.prevAudioTs} ,\n and diff is ${t-ri.prevAudioTs}`),r=ri.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration)}ii.isPlayer?ri._decodeAudio(e,r,t):ii.isPlayback,ri.prevAudioTs=t,ri.prevAudioDts=r}else ii.debug.log(ri.TAG_NAME,"decodeAudio first frame is not iFrame")}},_checkTsIsMaxDiff:e=>ri.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Ie?s=Tr(n):i===Fe&&(s=Vr(n)),ri.videoInfo.width=s.codecWidth,ri.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ii.debug.warn(ri.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),ri.emitError(Ce.mediaSourceDecoderConfigurationError),!1;const a={id:Dt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=pn.generateInitSegment(a);ri.isAvc=i===Ie;let d=s.codec;return ri.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:ri.isAvc?ct:ut,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),ri._initSourceBuffer(),ri.appendBuffer(o.buffer),ri.sequenceNumber=0,ri.cacheTrack={},ri.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Oe,s=r===Re;if(yr(s||n))return ii.debug.warn(ri.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ri.emitError(Ce.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Wt(e)){if(o=Yt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=En(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&yr(sr())?(d="mpeg",l="",c=new Uint8Array):c=pn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),yr(ri.isAudioInitInfo)&&(ir=r===Re?i?16:8:0===i?8:16,postMessage({cmd:I,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:ir}),ri.isAudioInitInfo=!0),ri.audioMimeType=u,ri.isAAC=s,ri._initAudioSourceBuffer(),ri.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ri.events;if(null===ri.sourceBuffer&&null!==ri.mediaSource&&ri.isStateOpen()&&ri.videoMimeType){try{ri.sourceBuffer=ri.mediaSource.addSourceBuffer(ri.videoMimeType),ii.debug.log(ri.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ri.videoMimeType)}catch(e){return ii.debug.error(ri.TAG_NAME,"appendBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),ri.emitError(Ce.mseAddSourceBufferError,e.code),void(ri.mediaSourceAddSourceBufferError=!0)}if(ri.sourceBuffer){const t=e(ri.sourceBuffer,"error",(e=>{ri.mediaSourceBufferError=!0,ii.debug.error(ri.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ri.emitError(Ce.mseSourceBufferError,e.code)})),r=e(ri.sourceBuffer,"updateend",(()=>{ri._hasPendingRemoveRanges()?ri._doRemoveRanges():ri._hasPendingSegments()?ri._doAppendSegments():ri.hasPendingEos&&(ii.debug.log(ri.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ri.endOfStream())}));ri.eventListenList.push(t,r)}}else ii.debug.log(ri.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ri.isStateOpen()} and mseDecoder.isAvc === null is ${null===ri.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ri.events;if(null===ri.audioSourceBuffer&&null!==ri.mediaSource&&ri.isStateOpen()&&ri.audioMimeType){try{ri.audioSourceBuffer=ri.mediaSource.addSourceBuffer(ri.audioMimeType),ri._clearAudioSourceBufferCheckTimeout(),ii.debug.log(ri.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ri.audioMimeType)}catch(e){return ii.debug.error(ri.TAG_NAME,"appendAudioBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),ri.emitError(Ce.mseAddSourceBufferError,e.code),void(ri.mediaSourceAddSourceBufferError=!0)}if(ri.audioSourceBuffer){const t=e(ri.audioSourceBuffer,"error",(e=>{ri.mediaSourceBufferError=!0,ii.debug.error(ri.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ri.emitError(Ce.mseSourceBufferError,e.code)})),r=e(ri.audioSourceBuffer,"updateend",(()=>{ri._hasPendingRemoveRanges()?ri._doRemoveRanges():ri._hasPendingSegments()?ri._doAppendSegments():ri.hasPendingEos&&(ii.debug.log(ri.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ri.endOfStream())}));ri.eventListenList.push(t,r),null===ri.audioSourceNoDataCheckTimeout&&(ri.audioSourceNoDataCheckTimeout=setTimeout((()=>{ri._clearAudioNoDataCheckTimeout(),ri.emitError(Ce.mediaSourceAudioNoDataTimeout)}),1e3))}}else ii.debug.log(ri.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ri.isStateOpen()} and mseDecoder.audioMimeType is ${ri.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ii.debug.warn(ri.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;ri.prevTimestamp||(ri.prevTimestamp=o,d=!0);const l=o-ri.prevTimestamp;if(ri.decodeDiffTimestamp=l,l>500&&!d&&ii.isPlayer&&ii.debug.warn(ri.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${ri.prevTimestamp}, diff time is ${l} ms`),ri.cacheTrack.id&&t>=ri.cacheTrack.dts){let e=8+ri.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ri.cacheTrack.data,8),ri.cacheTrack.duration=t-ri.cacheTrack.dts;let i=pn.moof(ri.cacheTrack,ri.cacheTrack.dts);ri.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ri.appendBuffer(n.buffer)}else ii.debug.log(ri.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${ri.cacheTrack&&ri.cacheTrack.dts}`),ri.timeInit=!1,ri.cacheTrack={};ri.cacheTrack||(ri.cacheTrack={}),ri.cacheTrack.id=Dt,ri.cacheTrack.sequenceNumber=++ri.sequenceNumber,ri.cacheTrack.size=a,ri.cacheTrack.dts=t,ri.cacheTrack.cts=i,ri.cacheTrack.isKeyframe=r,ri.cacheTrack.data=s,ri.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ri.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ri.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(ri.cacheAudioTrack.id&&t>=ri.cacheAudioTrack.dts){let e=8+ri.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ri.cacheAudioTrack.data,8),ri.cacheAudioTrack.duration=t-ri.cacheAudioTrack.dts;let i=pn.moof(ri.cacheAudioTrack,ri.cacheAudioTrack.dts);ri.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ri.appendAudioBuffer(n.buffer)}else ri.cacheAudioTrack={};ri.cacheAudioTrack||(ri.cacheAudioTrack={}),ri.cacheAudioTrack.id=It,ri.cacheAudioTrack.sequenceNumber=++ri.audioSequenceNumber,ri.cacheAudioTrack.size=n,ri.cacheAudioTrack.dts=t,ri.cacheAudioTrack.cts=0,ri.cacheAudioTrack.data=i,ri.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ii.isDestroyed?ii.debug.warn(ri.TAG_NAME,"appendBuffer() player is destroyed"):ri.mediaSourceAddSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ri.mediaSourceAppendBufferFull?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ri.mediaSourceAppendBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ri.mediaSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ri.pendingSegments.push(e),ri.sourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&ri._needCleanupSourceBuffer()&&ri._doCleanUpSourceBuffer(),yr(ri.getSourceBufferUpdating())&&ri.isStateOpen()&&yr(ri._hasPendingRemoveRanges()))?ri._doAppendSegments():ri.isStateClosed()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ri.isStateEnded()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is end")):ri._hasPendingRemoveRanges()&&ii.debug.log(ri.TAG_NAME,`video has pending remove ranges and video length is ${ri.pendingRemoveRanges.length}, audio length is ${ri.pendingAudioRemoveRanges.length}`))},appendAudioBuffer(e){ii.isDestroyed?ii.debug.warn(ri.TAG_NAME,"appendAudioBuffer() player is destroyed"):ri.mediaSourceAddSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ri.mediaSourceAppendBufferFull?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ri.mediaSourceAppendBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ri.mediaSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ri.pendingAudioSegments.push(e),ri.audioSourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&ri._needCleanupSourceBuffer()&&ri._doCleanUpSourceBuffer(),yr(ri.getAudioSourceBufferUpdating())&&ri.isStateOpen()&&yr(ri._hasPendingRemoveRanges()))?ri._doAppendSegments():ri.isStateClosed()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ri.isStateEnded()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is end")):ri._hasPendingRemoveRanges()&&ii.debug.log(ri.TAG_NAME,`audio has pending remove ranges and video length is ${ri.pendingRemoveRanges.length}, audio length is ${ri.pendingAudioRemoveRanges.length}`))},getSourceBufferUpdating:()=>ri.sourceBuffer&&ri.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ri.audioSourceBuffer&&ri.audioSourceBuffer.updating,stop(){ri.abortSourceBuffer(),ri.removeSourceBuffer(),ri.endOfStream()},clearUpAllSourceBuffer(){if(ri.sourceBuffer){const e=ri.sourceBuffer.buffered;for(let t=0;tri.pendingSegments.length>0||ri.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ri.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ri.isStateClosed()||ri.isStateEnded())ii.debug.log(ri.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ri.sourceBuffer){if(ri.needInitAudio()&&null===ri.audioSourceBuffer)return ii.debug.log(ri.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ri.audioSourceBufferCheckTimeout&&(ri.audioSourceBufferCheckTimeout=setTimeout((()=>{ri._clearAudioSourceBufferCheckTimeout(),ri.emitError(Ce.mediaSourceAudioInitTimeout)}),1e3)));if(yr(ri.getSourceBufferUpdating())&&ri.pendingSegments.length>0){const e=ri.pendingSegments.shift();try{ri.sourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(ri.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ri.stop(),ri.mediaSourceAppendBufferFull=!0,ri.emitError(Ce.mediaSourceFull)):11===e.code?(ri.stop(),ri.mediaSourceAppendBufferError=!0,ri.emitError(Ce.mediaSourceAppendBufferError)):(ri.stop(),ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,e.code))}}if(yr(ri.getAudioSourceBufferUpdating())&&ri.pendingAudioSegments.length>0){const e=ri.pendingAudioSegments.shift();try{ri.audioSourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(ri.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ri.stop(),ri.mediaSourceAppendBufferFull=!0,ri.emitError(Ce.mediaSourceFull)):11===e.code?(ri.stop(),ri.mediaSourceAppendBufferError=!0,ri.emitError(Ce.mediaSourceAppendBufferError)):(ri.stop(),ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,e.code))}}}else ii.debug.log(ri.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ri.$video.currentTime;if(ri.sourceBuffer){const t=ri.sourceBuffer.buffered;let r=!1;for(let i=0;i=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;ri.pendingRemoveRanges.push({start:n,end:t})}}else s=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;ri.pendingAudioRemoveRanges.push({start:n,end:t})}}else sri.pendingRemoveRanges.length>0||ri.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ii._opt.hasAudio&&ii._opt.mseDecodeAudio,_doRemoveRanges(){if(ri.sourceBuffer&&yr(ri.getSourceBufferUpdating())){let e=ri.pendingRemoveRanges;for(;e.length&&yr(ri.getSourceBufferUpdating());){let t=e.shift();try{ri.sourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(ri.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ri.audioSourceBuffer&&yr(ri.getAudioSourceBufferUpdating())){let e=ri.pendingAudioRemoveRanges;for(;e.length&&yr(ri.getAudioSourceBufferUpdating());){let t=e.shift();try{ri.audioSourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(ri.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(yr(ii._opt.mseAutoCleanupSourceBuffer))return!1;const e=ri.$video.currentTime;if(ri.sourceBuffer){let t=ri.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ri.audioSourceBuffer){let t=ri.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ri.audioSourceBufferCheckTimeout&&(clearTimeout(ri.audioSourceBufferCheckTimeout),ri.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ri.audioSourceNoDataCheckTimeout&&(clearTimeout(ri.audioSourceNoDataCheckTimeout),ri.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ri.mediaSource.handle,emitError(e){postMessage({cmd:ie,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ii={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:Sr(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ii.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ii.getVideoBufferLength(),audioDemuxBufferDelay:ii.getAudioBufferLength(),streamBufferByteLength:ii.getStreamBufferLength(),netBuf:ii.networkDelay||0,pushLatestDelay:ii.pushLatestDelay||0,latestDelay:ii.delay,isStreamTsMoreThanLocal:be});postMessage({cmd:O,type:Ue,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ii._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ii._opt.hasVideo&&!ve)return-1;if(t===ne)return ii.delay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp>e)return ii.preDelayTimestamp-e>1e3&&ii.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return ${ii.delay}`),ii.preDelayTimestamp=e,ii.delay;if(ii.firstTimestamp){if(e){const t=Date.now()-ii.startTimestamp,r=e-ii.firstTimestamp;t>=r?(be=!1,ii.delay=t-r):(be=!0,ii.delay=r-t)}}else ii.firstTimestamp=e,ii.startTimestamp=Date.now(),ii.delay=-1;return ii.preDelayTimestamp=e,ii.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ii._opt.hasVideo&&!ve)return-1;if(t===ne)return ii.pushLatestDelay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp-e>1e3)return ii.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return -1`),-1;if(ii.firstTimestamp){let t=-1;if(e){const r=Date.now()-ii.startTimestamp,i=e-ii.firstTimestamp;r>=i?(be=!1,t=r-i):(be=!0,t=i-r)}return t}return-1},resetDelay:function(){ii.firstTimestamp=null,ii.startTimestamp=null,ii.delay=-1,ii.dropping=!1},resetAllDelay:function(){ii.resetDelay(),ii.preDelayTimestamp=null},doDecode:function(e){ii._opt.isEmitSEI&&e.type===se&&ii.isWorkerFetch&&ii.findSei(e.payload,e.ts),ii.isPlayUseMSEAndDecoderInWorker()?e.type===ne?ii._opt.mseDecodeAudio?ri.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===se&&ri.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ii._opt.useWCS&&ii.useOffscreen()&&e.type===se&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===se&&mr(e.payload);if(yr(r))s&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n));else{const r=n.ts-t,a=n.type===ne&&e.type===se;(r<=20||a||s)&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n))}},init:function(){ii.debug.log("worker","init and opt is",JSON.stringify(ii._opt));const e=ii._opt.playType===y,t=ii._opt.playType===v;if(Ur.init(),ii.isPlayer=e,ii.isPlayback=t,ii.isPlayUseMSEAndDecoderInWorker()&&ri&&ri.init(),ii.isPlaybackCacheBeforeDecodeForFpsRender())ii.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ii.debug.log("worker","setInterval()");const t=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(ii.isPushDropping)return void ii.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ii.dropping){for(r=i.shift(),ii.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ii.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ii.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ii.getNotDroppingDelayTs()&&(ii.debug.log("worker","loop() is dropping = false, is iFrame"),ii.dropping=!1,ii.doDecode(r),ii.decodeNext(r))}else if(ii.isPlayback||ii.isPlayUseMSE()||0===ii._opt.videoBuffer)for(;i.length;)r=i.shift(),ii.doDecode(r);else if(r=i[0],-1===ii.getDelay(r.ts,r.type))ii.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ii.doDecode(r),ii.decodeNext(r);else if(ii.delay>t&&e)ii.hasIframeInBufferList()?(ii.debug.log("worker",`delay is ${ii.delay} > maxDelay ${t}, set dropping is true`),ii.resetAllDelay(),ii.dropping=!0,postMessage({cmd:H})):(i.shift(),ii.doDecode(r),ii.decodeNext(r));else for(;i.length;){if(r=i[0],!(ii.getDelay(r.ts,r.type)>ii._opt.videoBuffer)){ii.delay<0&&ii.debug.warn("worker",`loop() do not decode and delay is ${ii.delay}, bufferList is ${i.length}`);break}i.shift(),ii.doDecode(r)}}else-1!==ii.delay&&ii.debug.log("worker","loop() bufferList is empty and reset delay"),ii.resetAllDelay()};ii.stopId=setInterval((()=>{let e=(new Date).getTime();$e||($e=e);const t=e-$e;t>100&&ii.debug.warn("worker",`loop demux diff time is ${t}`),r(),$e=(new Date).getTime()}),20)}if(yr(ii._opt.checkFirstIFrame)&&(ve=!0),ii.isPlayUseMSEAndDecoderInWorker()&&ri){const e=ri.getHandle();e&&postMessage({cmd:te,mseHandle:e},[e])}},playbackCacheLoop:function(){ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ii.doDecode(e))};e();const t=Math.ceil(1e3/(ii.streamFps*ii._opt.playbackRate));ii.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ii.streamFps}, streamAudioFps is ${ii.streamAudioFps} ,streamVideoFps is ${ii.streamVideoFps} playbackRate is ${ii._opt.playbackRate}`),ii.stopId=setInterval(e,t)},close:function(){if(ii.debug.log("worker","close"),ii.isDestroyed=!0,Er(),!o||1!==o.readyState&&2!==o.readyState?o&&ii.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(br=!0,o.close(1e3,"Client disconnecting")),o=null,ii.stopStreamRateAndStatsInterval(),ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null),ii.mp3Demuxer&&(ii.mp3Demuxer.destroy(),ii.mp3Demuxer=null),ii.writableStream&&yr(ii.writableStream.locked)&&ii.writableStream.close().catch((e=>{ii.debug.log("worker","close() and writableStream.close() error",e)})),ii.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){ii.debug.warn("worker","close() and audioDecoder.clear error",e)}if(si)try{si.clear&&si.clear(),si=null}catch(e){ii.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,$e=null,be=!1,s&&(s.reset&&s.reset(),s=null),ri&&(ri.destroy(),ri=null),ii.firstTimestamp=null,ii.startTimestamp=null,ii.networkDelay=0,ii.streamFps=null,ii.streamAudioFps=null,ii.streamVideoFps=null,ii.delay=-1,ii.pushLatestDelay=-1,ii.preDelayTimestamp=null,ii.dropping=!1,ii.isPushDropping=!1,ii.isPlayer=!0,ii.isPlayback=!1,ii.isWorkerFetch=!1,ii._opt=Sr(),ii.webglObj&&(ii.webglObj.destroy(),ii.offscreenCanvas.removeEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost),ii.offscreenCanvas.removeEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored),ii.offscreenCanvas=null,ii.offscreenCanvasGL=null,ii.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,w=null,S=!1,x=!1,ve=!1,Ot=!1,Gt=!1,Ht=!1,qt=null,Zt=null,ht=[],_t=0,St=0,Ke=null,st=null,Et=null,xt=null,ir=null,zt=0,Nt=0,ft=null,pt=null,ii.fetchStatus=Tt,wr=!0,Ur.destroy(),Or.destroy(),Gr.destroy(),Wr.destroy(),postMessage({cmd:q})},pushBuffer:function(e,t){if(t.type===ne&&Wt(e)){if(ii.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Z,buffer:t},[t.buffer])}ii.decodeAudio(e,t.ts)}else if(t.type===se&&t.isIFrame&&mr(e)){if(ii.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ii.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ii._opt.isRecording)if(ii._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:Q,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ii._opt.recordType===b)if(t.type===se){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&ii._opt.isWasmMp4){const r=new Uint8Array(e),i=jt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ii.isPlayer&&zt>0&&xt>0&&t.type===se){const e=t.ts-xt,r=zt+zt/2;e>r&&ii.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${xt},\n diff is ${e} and preTimestampDuration is ${zt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(ii.isPlayer&&xt>0&&t.type===se&&t.tsE&&(ii.debug.warn("worker",`pushBuffer,\n preTimestamp is ${xt}, options.ts is ${t.ts},\n diff is ${xt-t.ts} more than 3600000,\n and resetAllDelay`),ii.resetAllDelay(),xt=null,zt=0),ii.isPlayer&&xt>0&&t.ts<=xt&&t.type===se&&(ii.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${xt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),ii._opt.isDropSameTimestampGop&&yr(t.isIFrame)&&ve)){const e=ii.hasIframeInBufferList(),t=yr(ii.isPushDropping);return ii.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ii.dropBuffer$2():(ii.clearBuffer(!0),gr(ii._opt.checkFirstIFrame)&&gr(r)&&(ii.isPlayUseMSEAndDecoderInWorker()?ri.isDecodeFirstIIframe=!1:postMessage({cmd:ee}))))}if(ii.isPlayer&&ve){const e=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=ii.getDelayNotUpdateDelay(t.ts,t.type);ii.pushLatestDelay=r,r>e&&ii.delay0&&ii.hasIframeInBufferList()&&!1===ii.isPushDropping&&(ii.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${ii.delay} and has iIframe and next decoder.dropBuffer$2()`),ii.dropBuffer$2())}if(ii.isPlayer&&t.type===se&&(xt>0&&(zt=t.ts-xt),Nt=e.byteLength,xt=t.ts),t.type===ne?i.push({ts:t.ts,payload:e,decoder:{decode:ii.decodeAudio},type:ne,isIFrame:!1}):t.type===se&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:ii.decodeVideo},type:se,isIFrame:t.isIFrame}),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&(or(ii.streamVideoFps)||or(ii.streamAudioFps))){let e=ii.streamVideoFps,t=ii.streamAudioFps;if(or(ii.streamVideoFps)&&(e=fr(i,se),e&&(ii.streamVideoFps=e,postMessage({cmd:$,value:ii.streamVideoFps}),ii.streamFps=t?e+t:e,yr(ii._opt.hasAudio)&&(ii.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),ii.streamAudioFps=0),ii.playbackCacheLoop())),or(ii.streamAudioFps)&&(t=fr(i,ne),t&&(ii.streamAudioFps=t,ii.streamFps=e?e+t:t,ii.playbackCacheLoop())),or(ii.streamVideoFps)&&or(ii.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));ii.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ii.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ii.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ii.streamVideoFps=25,postMessage({cmd:$,value:ii.streamVideoFps}),r?(ii.streamAudioFps=25,ii.streamFps=ii.streamVideoFps+ii.streamAudioFps):ii.streamFps=ii.streamVideoFps,ii.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===se&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===se&&e.isIFrame)),isAllIframeInBufferList(){const e=ii.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===se&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ii._opt.videoBuffer+ii._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ii._opt.isNakedFlow?Ur.lastBuf&&(e=Ur.lastBuf.byteLength):ii._opt.isTs?Wr._remainingPacketData&&(e=Wr._remainingPacketData.byteLength):ii._opt.isFmp4&&Or.mp4Box&&(e=Or.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){ii.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ii.isWorkerFetch=!0,t.isFlv?ii._opt.isFlv=!0:t.isFmp4?ii._opt.isFmp4=!0:t.isMpeg4?ii._opt.isMpeg4=!0:t.isNakedFlow?ii._opt.isNakedFlow=!0:t.isTs&&(ii._opt.isTs=!0),d=nr((e=>{postMessage({cmd:O,type:Se,value:e})})),ii.startStreamRateAndStatsInterval(),t.isFmp4&&(Or.listenMp4Box(),ii._opt.isFmp4Private&&Or.initTransportDescarmber()),t.protocol===_?(c=new Ar(ii.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(gr(br))return ii.debug.log("worker","request abort and run res.body.cancel()"),ii.fetchStatus=Tt,void e.body.cancel();if(!pr(e))return ii.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Er(),void postMessage({cmd:O,type:Ce.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:xe}),ur())ii.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct)):gr(br)?(ii.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ii.fetchStatus=Ct)):void("string"!=typeof e?(ii.fetchStatus=kt,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ii.demuxFmp4(e):t.isMpeg4?ii.demuxMpeg4(e):t.isTs&&ii.demuxTs(e)):ii.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ii.debug.log("worker","writableStream close()"),ii.fetchStatus=Ct,c=null,Er(),postMessage({cmd:O,type:we,value:m,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct);c=null,e.name!==At?(ii.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Er(),postMessage({cmd:O,type:Ce.fetchError,value:e.toString()})):ii.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ii.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ii.debug.log("worker","fetchNext().then() and done is true"),ii.fetchStatus=Ct,c=null,Er(),void postMessage({cmd:O,type:we,value:m,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct)):gr(br)?(ii.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ii.fetchStatus=Ct)):void("string"!=typeof n?(ii.fetchStatus=kt,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ii.demuxFmp4(n):t.isMpeg4&&ii.demuxMpeg4(n),i()):ii.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct);c=null,e.name!==At?(ii.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:O,type:Ce.fetchError,value:e.toString()})):ii.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ii.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==At?(ii.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:O,type:Ce.fetchError,value:e.toString()}),c=null):ii.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))):t.protocol===p&&(t.isFlv&&(c=new Ar(ii.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{ii.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:xe}),postMessage({cmd:O,type:ke})},o.onclose=e=>{u?ii.debug.log("worker","fetchStream, WebsocketStream socket close and isSocketError is true , so return"):(ii.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ii.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),gr(br)?ii.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:we,value:g,msg:e.code})))},o.onerror=e=>{ii.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,postMessage({cmd:O,type:Ce.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ii.demuxFmp4(e.data):t.isMpeg4?ii.demuxMpeg4(e.data):ii._opt.isNakedFlow?ii.demuxNakedFlow(e.data):ii.demuxM7s(e.data)):ii.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case ae:if(a.byteLength>0){let e=a;gr(ii._opt.m7sCryptoAudio)&&(e=ii.cryptoPayloadAudio(a)),ii.decode(e,{type:ne,ts:s})}else ii.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case oe:if(a.byteLength>=6){const e=a[0];if(ii._isEnhancedH265Header(e))ii._decodeEnhancedH265Video(a,s);else{a[0];let e=a[0]>>4===Ut;if(e&&mr(a)&&null===qt){const e=15&a[0];qt=e===Fe,Zt=er(a,qt),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${qt} and nalUnitSize is ${Zt}`)}e&&ii.calcIframeIntervalTimestamp(s),ii.isPlayer&&ii.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=ii.cryptoPayload(a,e);ii.decode(i,{type:se,ts:s,isIFrame:e,cts:t})}}else ii.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case de:postMessage({cmd:X,buffer:a},[a.buffer]);break;default:ii.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?ii._opt.hasAudio&&(postMessage({cmd:O,type:Ee,value:e.byteLength}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()||(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===se&&ii._opt.hasVideo&&(postMessage({cmd:O,type:Ae,value:e.byteLength}),postMessage({cmd:O,type:Be,value:t.ts}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ii._opt.isM7sCrypto?ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=Ri(e,ii._opt.cryptoKey,ii._opt.cryptoIV,qt):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`):ii._opt.isSm4Crypto?ii._opt.sm4CryptoKey&&t?r=sn(e,ii._opt.sm4CryptoKey):ii._opt.sm4CryptoKey||ii.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ii._opt.isXorCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=un(e,ii._opt.cryptoKey,ii._opt.cryptoIV,qt):ii.debug.error("worker",`isXorCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ii._opt.isM7sCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?e[0]>>4===Re&&(t=zi(e,ii._opt.cryptoKey,ii._opt.cryptoIV)):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(ir=r===Re?i?16:8:0===i?8:16,ni&&ni.setCodec)if(Wt(e)||r===ze||r===Ne||r===Oe){ii.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===Re?e.slice(2):new Uint8Array(0);ni.setCodec(r,ii._opt.sampleRate,i),r===Re&&postMessage({cmd:P,buffer:i},[i.buffer]),x=!0,r!==Re&&(r===Oe?(ii.mp3Demuxer||(ii.mp3Demuxer=new dn(ii),ii.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),ii.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t))}else ii.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ii.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ii.isDestroyed)ii.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ri.decodeAudio(e,t);else if(gr(r)&&gr(ii._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(x){if(Wt(e))return void ii.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Oe?ii.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===Re?e.slice(2):e.slice(1),t)}else ii.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(si&&si.setCodec)if(mr(e))if(t===Ie||t===Fe){ii.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===Ie&&ii._opt.useSIMD){const e=Tr(r);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:j}),void ii.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,si.setCodec(t,r),postMessage({cmd:L,code:t}),postMessage({cmd:M,buffer:i,codecId:t},[i.buffer])}else ii.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else ii.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else ii.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ii.isDestroyed)ii.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorker())ri.decodeVideo(e,t,i,n);else if(gr(r))postMessage({cmd:z,payload:e,isIFrame:i,ts:t,cts:n,delay:ii.delay},[e.buffer]);else if(S)if(!ve&&i&&(ve=!0),ve){if(i&&mr(e)){const t=15&e[0];let r={};t===Ie?r=Tr(e.slice(5)):t===Fe&&(r=$r(e)),r.codecWidth&&r.codecHeight&&h&&w&&(r.codecWidth!==h||r.codecHeight!==w)&&(ii.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${w},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Gt=!0,postMessage({cmd:V}))}if(Gt)return void ii.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Ht)return void ii.debug.warn("worker","decodeVideo: simd decode error, and return");if(mr(e))return void ii.debug.warn("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ii.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ii.isPlayer&&(ii.resetAllDelay(),gr(ii._opt.checkFirstIFrame)&&(ii.dropping=!0,postMessage({cmd:H}))),gr(ii._opt.checkFirstIFrame)&&yr(r)&&(ve=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>gr(e.isIFrame)&&e.type===se));if(ii.isAllIframeInBufferList())for(let t=0;t=ii.getNotDroppingDelayTs()){ii.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ii.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ii.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ii.resetAllDelay(),ii.getDelay(r.ts,r.type),ii.doDecode(r),ii.isPushDropping=!1,ii.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ii.delay} `)}else ii.isPushDropping=!1}0===i.length&&(ii.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case ne:ii.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case se:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ii._isEnhancedH265Header(n))ii._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ii.calcIframeIntervalTimestamp(r),mr(i)&&null===qt)){const e=15&i[0];qt=e===Fe}ii.isPlayer&&ii.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ii.cryptoPayload(i,e);ii.decode(a,{type:se,ts:r,isIFrame:e,cts:n})}}else ii.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Ur.dispatch(e)},demuxFmp4:function(e){Or.dispatch(e)},demuxMpeg4:function(e){Gr.dispatch(e)},demuxTs:function(e){Wr.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(s[0]);if(qt=yr(d),n===Pt){if(i===Rt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Zt=er(e,qt),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${qt} and nalUnitSize is ${Zt}`),ii.decode(i,{type:se,ts:t,isIFrame:!0,cts:0})}}}else if(n===Lt){let r=e,n=0;const s=i===Rt;s&&ii.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Yr(e.slice(8),s),r=ii.cryptoPayload(r,s),ii.decode(r,{type:se,ts:t,isIFrame:s,cts:n}))}else if(n===Mt){const r=i===Rt;r&&ii.calcIframeIntervalTimestamp(t);let n=Yr(e.slice(5),r);n=ii.cryptoPayload(n,r),ii.decode(n,{type:se,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ft)===Ft},findSei:function(e,t){let r=4;dr(Zt)&&(r=Zt),Jt(e.slice(5),r).forEach((e=>{const r=qt?e[0]>>>1&63:31&e[0];(qt&&(r===ot||r===at)||yr(qt)&&r===je)&&postMessage({cmd:K,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(ve&&e>0))return;null===Ke?(Ke=e,st=tr()):et?r-t:0;ii.networkDelay=i,i>ii._opt.networkDelay&&ii._opt.playType===y&&(ii.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Ke} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Te,value:i}))},calcIframeIntervalTimestamp:function(e){null===Et?Et=e:Et=ii._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return ii.isPlayer&&ii._opt.useMSE&&gr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ii.isPlayUseMSE()&&ii._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ii.isPlayUseMSEAndDecoderInWorker()&&ii._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ii.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ii.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,ii.webglObj.destroy(),ii.webglObj=null,ii.offscreenCanvasGL=null,setTimeout((()=>{ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.offscreenCanvasGL&&ii.offscreenCanvasGL.getContextAttributes().stencil?(ii.webglObj=f(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),Ot=!1):ii.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ii.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:T,w:t,h:r}),h=t,w=r,ii.useOffscreen()&&(ii.offscreenCanvas=new OffscreenCanvas(t,r),ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.webglObj=f(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),ii.offscreenCanvas.addEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost,!1),ii.offscreenCanvas.addEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:I,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:ir}),St=r},yuvData:function(t,r){if(ii.isDestroyed)return void ii.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*w*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ft=null,ii.useOffscreen())try{if(Ot)return;ii.webglObj.renderYUV(h,w,s);let e=ii.offscreenCanvas.transferToImageBitmap();postMessage({cmd:k,buffer:e,delay:ii.delay,ts:r},[e])}catch(e){ii.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:k,output:s,delay:ii.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ii.isDestroyed)return void ii.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ii._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(_t){if(!(s>=(r=d-_t)))return _t+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==St&&(n[1]=Float32Array.of(...n[1],...a[1])));ht[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==St&&(ht[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,s-=r}for(_t=s;_t>=d;_t-=d)ht[0]=a[0].slice(o,o+=d),2==St&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:ht,ts:i},ht.map((e=>e.buffer)));_t&&(n[0]=a[0].slice(o),2==St&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===ft&&(ft=tr());const t=tr(),r=rr(pt>0?2*pt:5e3,1e3,5e3),i=t-ft;i>r&&(ii.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${pt} and diff is ${i} and maxDiff is ${r}\n and replay`),Ht=!0,postMessage({cmd:W}))},sendWebsocketMessage:function(e){o?o.readyState===De?o.send(e):ii.debug.error("worker","socket is not open"):ii.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:Y,type:t,buffer:e},[e.buffer])}};ii.debug=new Br(ii);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(ii));let si=null;e.VideoDecoder&&(si=new e.VideoDecoder(ii)),postMessage({cmd:U}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case le:try{ii._opt=Object.assign(ii._opt,JSON.parse(t.opt))}catch(e){}ii.init();break;case ce:ii.pushBuffer(t.buffer,t.options);break;case ue:ii.decodeAudio(t.buffer,t.ts);break;case he:ii.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ii.clearBuffer(t.needClear);break;case me:ii.fetchStream(t.url,JSON.parse(t.opt));break;case fe:ii.debug.log("worker","close",JSON.stringify(t.options)),t.options&&yr(t.options.isVideoInited)&&(wr=t.options.isVideoInited),ii.close();break;case pe:ii.debug.log("worker","updateConfig",t.key,t.value),ii._opt[t.key]=t.value,"playbackRate"===t.key&&(ii.playbackUpdatePlaybackRate(),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&ii.playbackCacheLoop());break;case ge:ii.sendWebsocketMessage(t.message);break;case ye:ri.$video.currentTime=Number(t.message)}}}(e,e)}))})); diff --git a/public/js/jessibuca-pro/decoder-pro-audio.wasm b/public/js/jessibuca-pro/decoder-pro-audio.wasm new file mode 100644 index 0000000..362b51d Binary files /dev/null and b/public/js/jessibuca-pro/decoder-pro-audio.wasm differ diff --git a/public/js/jessibuca-pro/decoder-pro-hard-not-wasm.js b/public/js/jessibuca-pro/decoder-pro-hard-not-wasm.js new file mode 100644 index 0000000..5363d83 --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-hard-not-wasm.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=t(e),s=1e-6,a="undefined"!=typeof Float32Array?Float32Array:Array;function n(){var e=new a(16);return a!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function o(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var d,l=function(e,t,i,r,s,a,n){var o=1/(t-i),d=1/(r-s),l=1/(a-n);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+i)*o,e[13]=(s+r)*d,e[14]=(n+a)*l,e[15]=1,e};function c(e,t,i){var r=new a(3);return r[0]=e,r[1]=t,r[2]=i,r}d=new a(3),a!=Float32Array&&(d[0]=0,d[1]=0,d[2]=0);var u=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const i=function(){const t=_(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),i=_(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),r=e.createProgram();if(e.attachShader(r,t),e.attachShader(r,i),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(r)),null;return r}();let r={program:i,attribLocations:{vertexPosition:e.getAttribLocation(i,"aVertexPosition"),texturePosition:e.getAttribLocation(i,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(i,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(i,"uModelMatrix"),viewMatrix:e.getUniformLocation(i,"uViewMatrix"),rgbatexture:e.getUniformLocation(i,"rgbaTexture"),ytexture:e.getUniformLocation(i,"yTexture"),utexture:e.getUniformLocation(i,"uTexture"),vtexture:e.getUniformLocation(i,"vTexture"),isyuv:e.getUniformLocation(i,"isyuv")}},a=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var i=[];i=i.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),e.STATIC_DRAW);const s=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,s);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:r,indices:s}}(),d=p(),u=p(),h=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function _(t,i){const r=e.createShader(t);return e.shaderSource(r,i),e.compileShader(r),e.getShaderParameter(r,e.COMPILE_STATUS)?r:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(r)),e.deleteShader(r),null)}function m(t,i){e.viewport(0,0,t,i),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const d=n();l(d,-1,1,-1,1,.1,100);const p=n();o(p);const _=n();!function(e,t,i,r){var a,n,d,l,c,u,h,f,p,_,m=t[0],g=t[1],y=t[2],b=r[0],v=r[1],S=r[2],w=i[0],A=i[1],B=i[2];Math.abs(m-w)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 r=Math.min(i,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,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)}}const Nt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Gt=Nt,Ot=Nt;function Ht(e){let{profile:t,sampleRate:i,channel:r}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|r<<3])}function Vt(e){return $t(e)&&e[1]===At}function $t(e){return e[0]>>4===Pe}const Wt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Yt(e){let t=new Uint8Array(e),i=null,r=0,s=0,a=0,n=null;if(r=s=t[0]>>>3,a=(7&t[0])<<1|t[1]>>>7,a<0||a>=Wt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Wt[a],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===r&&(n=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?a>=6?(r=5,i=new Array(4),n=a-3):(r=2,i=new Array(2),n=a):-1!==l.indexOf("android")?(r=2,i=new Array(2),n=a):(r=5,n=a,i=new Array(4),a>=6?n=a-3:1===d&&(r=2,i=new Array(2),n=a)),i[0]=r<<3,i[0]|=(15&a)>>>1,i[1]=(15&a)<<7,i[1]|=(15&d)<<3,5===r&&(i[1]|=(15&n)>>>1,i[2]=(1&n)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:o,channelCount:d,objectType:r,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+s}}class qt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+7>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,r=(8&e[i+1])>>>3,s=(6&e[i+1])>>>1,a=1&e[i+1],n=(192&e[i+2])>>>6,o=(60&e[i+2])>>>2,d=(1&e[i+2])<<2|(192&e[i+3])>>>6,l=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===a?7:9,u=l-c;i+=c;let h=this.findNextSyncwordOffset(i+u);if(this.current_syncword_offset_=h,0!==r&&1!==r||0!==s)continue;let f=e.subarray(i,i+u);t={},t.audio_object_type=n+1,t.sampling_freq_index=o,t.sampling_frequency=Gt[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class jt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let r=0;r<=t;r++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let r=this.current_syncword_offset_,s=(31&t[r+1])<<8|t[r+2];if(r+3+s>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let a=new Rt(t.subarray(r+3,r+3+s)),n=null;if(a.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(r+3+s),a.destroy();continue}n=e}else{let e=a.readBool();if(e&&a.readBool()){console.error("audioMuxVersionA is Not Supported"),a.destroy();break}if(e&&this.getLATMValue(a),!a.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),a.destroy();break}if(0!==a.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),a.destroy();break}if(0!==a.readBits(4)){console.error("more than 2 numProgram Not Supported"),a.destroy();break}if(0!==a.readBits(3)){console.error("more than 2 numLayer Not Supported"),a.destroy();break}let t=e?this.getLATMValue(a):0,i=a.readBits(5);t-=5;let r=a.readBits(4);t-=4;let s=a.readBits(4);t-=4,a.readBits(3),t-=3,t>0&&a.readBits(t);let o=a.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),a.destroy();break}a.readByte();let d=a.readBool();if(d)if(e)this.getLATMValue(a);else{let e=0;for(;;){e<<=8;let t=a.readBool();if(e+=a.readByte(),!t)break}console.log(e)}a.readBool()&&a.readByte(),n={},n.audio_object_type=i,n.sampling_freq_index=r,n.sampling_frequency=Gt[n.sampling_freq_index],n.channel_config=s,n.other_data_present=d}let o=0;for(;;){let e=a.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Xt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const i=e.length,r=[];let s,a=0;for(;a+t>>=8),a+=t,s){if(a+s>i)break;r.push(e.subarray(a,a+s)),a+=s}return r}function Zt(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const r=new Uint8Array(t+4);return r.set(i,0),r.set(e,4),r}function Jt(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}function Qt(){return(new Date).getTime()}function ei(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function ti(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ii(e){let t=0,i=ti();return r=>{if(s=r,"[object Number]"!==Object.prototype.toString.call(s))return;var s;t+=r;const a=ti(),n=a-i;n>=1e3&&(e(t/n*1e3),i=a,t=0)}}function ri(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function si(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(lt)||self.MediaSource.isTypeSupported(ct)||self.MediaSource.isTypeSupported(ut)||self.MediaSource.isTypeSupported(ht)||self.MediaSource.isTypeSupported(ft))&&(e=!0),e}function ai(e){return null==e}function ni(e){return!ai(e)}function oi(e){return"function"==typeof e}function di(e){let t=null,i=31&e[0];return i!==Ne&&i!==Ge||(t=Le),t||(i=(126&e[0])>>1,i!==Ze&&i!==Qe&&i!==tt||(t=Fe)),t}function li(){return"undefined"!=typeof WritableStream}function ci(e){e.close()}function ui(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],r=null,s=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,s=2)}if(i)for(let a=s;a=1e3){e[a-1].ts-i.ts<1e3&&(r=a+1)}}}return r}function hi(e){return e.ok&&e.status>=200&&e.status<=299}function fi(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(i){t=e}else t=e;return t}(B)}function pi(e){return e[0]>>4===Bt&&e[1]===At}function _i(e){return!0===e||"true"===e}function mi(e){return!0!==e&&"true"!==e}function gi(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var yi=function(e,t,i,r){return new(i||(i=Promise))((function(s,a){function n(e){try{d(r.next(e))}catch(e){a(e)}}function o(e){try{d(r.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(n,o)}d((r=r.apply(e,t||[])).next())}))};const bi=Symbol(32),vi=Symbol(16),Si=Symbol(8);class wi{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return yi(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var r;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(r=this.pull)||void 0===r||r.call(this,e)}))}))}readU32(){return this.read(bi)}readU16(){return this.read(vi)}readU8(){return this.read(Si)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const r=e=>t.length<(i=e);if("number"==typeof this.need){if(r(this.need))return;e=t.subarray(0,i)}else if(this.need===bi){if(r(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===vi){if(r(2))return;e=t[0]<<8|t[1]}else if(this.need===Si){if(r(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}wi.U32=bi,wi.U16=vi,wi.U8=Si;class Ai{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==b){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,r=new Array(i>1?i-1:0),s=1;s1?i-1:0),s=1;s1?r-1:0),a=1;a=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseSPS(e){let t=Bi._ebsp2rbsp(e),i=new Rt(t);i.readByte();let r=i.readByte();i.readByte();let s=i.readByte();i.readUEG();let a=Bi.getProfileString(r),n=Bi.getLevelString(s),o=1,d=420,l=[0,420,422,444],c=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(o=i.readUEG(),3===o&&i.readBits(1),o<=3&&(d=l[o]),c=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(v=t[e-1],S=r[e-1]):255===e&&(v=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);A=i.readBool(),B=t,x=2*e,w=B/x}}let U=1;1===v&&1===S||(U=v/S);let E=0,T=0;if(0===o)E=1,T=2-_;else{E=3===o?1:2,T=(1===o?2:1)*(2-_)}let k=16*(f+1),C=16*(p+1)*(2-_);k-=(m+g)*E,C-=(y+b)*T;let D=Math.ceil(k*U);return i.destroy(),i=null,{profile_string:a,level_string:n,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Bi.getChromaFormatString(d),frame_rate:{fixed:A,fps:w,fps_den:x,fps_num:B},sar_ratio:{width:v,height:S},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let r=t[e].toString(16);r.length<2&&(r="0"+r),i+=r}let r=Bi._ebsp2rbsp(e),s=new Rt(r);s.readByte();let a=s.readByte();s.readByte();let n=s.readByte();s.readUEG();let o=Bi.getProfileString(a),d=Bi.getLevelString(n),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(l=s.readUEG(),3===l&&s.readBits(1),l<=3&&(c=u[l]),h=s.readUEG()+8,f=s.readUEG()+8,s.readBits(1),s.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(A=t[e-1],B=i[e-1]):255===e&&(A=s.readByte()<<8|s.readByte(),B=s.readByte()<<8|s.readByte())}if(s.readBool()&&s.readBool(),s.readBool()&&(s.readBits(4),s.readBool()&&s.readBits(24)),s.readBool()&&(s.readUEG(),s.readUEG()),s.readBool()){let e=s.readBits(32),t=s.readBits(32);U=s.readBool(),E=t,T=2*e,x=E/T}}let k=1;1===A&&1===B||(k=A/B);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let I=16*(m+1),L=16*(g+1)*(2-y);I-=(b+v)*C,L-=(S+w)*D;let F=Math.ceil(I*k);return s.destroy(),s=null,{codec_mimetype:i,profile_idc:a,level_idc:n,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:_,chroma_format:c,chroma_format_string:Bi.getChromaFormatString(c),frame_rate:{fixed:U,fps:x,fps_den:T,fps_num:E},sar_ratio:{width:A,height:B},codec_size:{width:I,height:L},present_size:{width:F,height:L}}}static _skipScalingList(e,t){let i=8,r=8,s=0;for(let a=0;a=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,r=this.read(e);return this.bufpos=t,this.bufoff=i,r}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.sps,4),t.sps=r}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),r=new Uint8Array(e+4);r.set(i,0),r.set(t.pps,4),t.pps=r}return t}function Ei(e){let{sps:t,pps:i}=e;const r=[23,0,0,0,0,1,66,0,30,255];r[0]=23,r[6]=t[1],r[7]=t[2],r[8]=t[3],r[10]=225,r[11]=t.byteLength>>8&255,r[12]=255&t.byteLength,r.push(...t,1,i.byteLength>>8&255,255&i.byteLength,...i);return new Uint8Array(r)}function Ti(e){let{sps:t,pps:i}=e,r=8+t.byteLength+1+2+i.byteLength,s=!1;const a=Bi.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(s=!0,r+=4);let n=new Uint8Array(r);n[0]=1,n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=255,n[5]=225;let o=t.byteLength;n[6]=o>>>8,n[7]=255&o;let d=8;n.set(t,8),d+=o,n[d]=1;let l=i.byteLength;n[d+1]=l>>>8,n[d+2]=255&l,n.set(i,d+3),d+=3+l,s&&(n[d]=252|a.chroma_format_idc,n[d+1]=248|a.bit_depth_luma-8,n[d+2]=248|a.bit_depth_chroma-8,n[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+n.byteLength);return u.set(c,0),u.set(n,c.length),u}function ki(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Ci(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Di(e){return 31&e[0]}function Ii(e){return e===$e}function Li(e){return!function(e){return e===Ne||e===Ge}(e)&&!Ii(e)}function Fi(e){return e===Oe}function Pi(e){if(0===e.length)return!1;const t=Di(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=31&e[i],s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,r>=qe||0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class zi{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Ri=e=>{let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)},Ni=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Gi{static _ebsp2rbsp(e){let t=e,i=t.byteLength,r=new Uint8Array(i),s=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(r[s]=t[e],s++);return new Uint8Array(r.buffer,0,s)}static parseVPS(e){let t=Gi._ebsp2rbsp(e),i=new Rt(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}}static parseSPS(e){let t=Gi._ebsp2rbsp(e),i=new Rt(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(F=t[e-1],P=r[e-1]):255===e&&(F=i.readBits(16),P=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(z=i.readBits(32),R=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();M=s;let a=!0,n=1;s||(a=i.readBool());let o=!1;if(a?i.readUEG():o=i.readBool(),o||(n=i.readUEG()+1),e){for(let e=0;e>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let r=e[22],s=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);r.sub_layer_profile_space=[],r.sub_layer_tier_flag=[],r.sub_layer_profile_idc=[],r.sub_layer_profile_compatibility_flag=[],r.sub_layer_progressive_source_flag=[],r.sub_layer_interlaced_source_flag=[],r.sub_layer_non_packed_constraint_flag=[],r.sub_layer_frame_only_constraint_flag=[],r.sub_layer_level_idc=[];for(let t=0;t{let t=Ri(e),i=new Rt(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(t),n=(e=>{let t=Ri(e),i=new Rt(t);i.readByte(),i.readByte();let r=0,s=0,a=0,n=0;i.readBits(4);let o=i.readBits(3);i.readBool();let d=i.readBits(2),l=i.readBool(),c=i.readBits(5),u=i.readByte(),h=i.readByte(),f=i.readByte(),p=i.readByte(),_=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),b=i.readByte(),v=i.readByte(),S=i.readByte(),w=[],A=[];for(let e=0;e0)for(let e=o;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(F=t[e-1],P=r[e-1]):255===e&&(F=i.readBits(16),P=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),I=i.readBool(),I&&(r+=i.readUEG(),s+=i.readUEG(),a+=i.readUEG(),n+=i.readUEG()),i.readBool()&&(z=i.readBits(32),R=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,r=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(r=i.readBool(),r&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),r&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let s=0;s<=o;s++){let s=i.readBool();M=s;let a=!1,n=1;s||(a=i.readBool());let o=!1;if(a?i.readSEG():o=i.readBool(),o||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=Ri(e),i=new Rt(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let r=i.readBool(),s=i.readBool(),a=1;return s&&r?a=0:s?a=3:r&&(a=2),{parallelismType:a}})(i);s=Object.assign(s,a,n,o);let d=23+(5+t.byteLength)+(5+r.byteLength)+(5+i.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&s.general_profile_space)<<6|(s.general_tier_flag?1:0)<<5|31&s.general_profile_idc,l[2]=s.general_profile_compatibility_flags_1||0,l[3]=s.general_profile_compatibility_flags_2||0,l[4]=s.general_profile_compatibility_flags_3||0,l[5]=s.general_profile_compatibility_flags_4||0,l[6]=s.general_constraint_indicator_flags_1||0,l[7]=s.general_constraint_indicator_flags_2||0,l[8]=s.general_constraint_indicator_flags_3||0,l[9]=s.general_constraint_indicator_flags_4||0,l[10]=s.general_constraint_indicator_flags_5||0,l[11]=s.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&s.min_spatial_segmentation_idc)>>8,l[14]=255&s.min_spatial_segmentation_idc,l[15]=252|3&s.parallelismType,l[16]=252|3&s.chroma_format_idc,l[17]=248|7&s.bit_depth_luma_minus8,l[18]=248|7&s.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&s.constant_frame_rate)<<6|(7&s.num_temporal_layers)<<3|(s.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|Ze,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|Qe,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+r.byteLength)+0]=128|tt,l[23+(5+t.byteLength+5+r.byteLength)+1]=0,l[23+(5+t.byteLength+5+r.byteLength)+2]=1,l[23+(5+t.byteLength+5+r.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength+5+r.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength+5+r.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Wi(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function Yi(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const r=new Uint8Array(i.length+e.byteLength);return r.set(i,0),r.set(e,i.length),r}function qi(e){return(126&e[0])>>1}function ji(e){return e===rt}function Ki(e){return!function(e){return e>=32&&e<=40}(e)}function Xi(e){return e>=16&&e<=21}function Zi(e){if(0===e.length)return!1;const t=qi(e[0]);for(let i=1;i=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===r)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let r=e[i]>>1&63,s=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,0===s&&(t={type:r,data:e.subarray(i,a)})}return t}}class Qi{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function er(e){return parseInt(e)===e}function tr(e){if(!er(e.length))return!1;for(var t=0;t255)return!1;return!0}function ir(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!tr(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(er(e.length)&&tr(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function rr(e){return new Uint8Array(e)}function sr(e,t,i,r,s){null==r&&null==s||(e=e.slice?e.slice(r,s):Array.prototype.slice.call(e,r,s)),t.set(e,i)}var ar,nr={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&r<224?(t.push(String.fromCharCode((31&r)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&r)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},or=(ar="0123456789abcdef",{toBytes:function(e){for(var t=[],i=0;i>4]+ar[15&r])}return t.join("")}}),dr={16:10,24:12,32:14},lr=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],cr=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],ur=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],hr=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],fr=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],pr=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],_r=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],mr=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],gr=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],yr=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],br=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],vr=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Sr=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],wr=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Ar=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Br(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=a[t],this._Kd[e-i][t%4]=a[t];for(var n,o=0,d=s;d>16&255]<<24^cr[n>>8&255]<<16^cr[255&n]<<8^cr[n>>24&255]^lr[o]<<24,o+=1,8!=s)for(t=1;t>8&255]<<8^cr[n>>16&255]<<16^cr[n>>24&255]<<24;for(t=s/2+1;t>2,c=d%4,this._Ke[l][c]=a[t],this._Kd[e-l][c]=a[t++],d++}for(var l=1;l>24&255]^Sr[n>>16&255]^wr[n>>8&255]^Ar[255&n]},xr.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],r=Br(e),s=0;s<4;s++)r[s]^=this._Ke[0][s];for(var a=1;a>24&255]^fr[r[(s+1)%4]>>16&255]^pr[r[(s+2)%4]>>8&255]^_r[255&r[(s+3)%4]]^this._Ke[a][s];r=i.slice()}var n,o=rr(16);for(s=0;s<4;s++)n=this._Ke[t][s],o[4*s]=255&(cr[r[s]>>24&255]^n>>24),o[4*s+1]=255&(cr[r[(s+1)%4]>>16&255]^n>>16),o[4*s+2]=255&(cr[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(cr[255&r[(s+3)%4]]^n);return o},xr.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],r=Br(e),s=0;s<4;s++)r[s]^=this._Kd[0][s];for(var a=1;a>24&255]^gr[r[(s+3)%4]>>16&255]^yr[r[(s+2)%4]>>8&255]^br[255&r[(s+1)%4]]^this._Kd[a][s];r=i.slice()}var n,o=rr(16);for(s=0;s<4;s++)n=this._Kd[t][s],o[4*s]=255&(ur[r[s]>>24&255]^n>>24),o[4*s+1]=255&(ur[r[(s+3)%4]>>16&255]^n>>16),o[4*s+2]=255&(ur[r[(s+2)%4]>>8&255]^n>>8),o[4*s+3]=255&(ur[255&r[(s+1)%4]]^n);return o};var Ur=function(e){if(!(this instanceof Ur))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new xr(e)};Ur.prototype.encrypt=function(e){if((e=ir(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=rr(e.length),i=rr(16),r=0;rNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Cr.prototype.setBytes=function(e){if(16!=(e=ir(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Cr.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Dr=function(e,t){if(!(this instanceof Dr))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Cr||(t=new Cr(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new xr(e)};Dr.prototype.encrypt=function(e){for(var t=ir(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,r=0;r>>2]>>>24-a%4*8&255;t[r+a>>>2]|=n<<24-(r+a)%4*8}else for(var o=0;o>>2]=i[o>>>2];return this.sigBytes+=s,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-s%4*8&255;r.push((a>>>4).toString(16)),r.push((15&a).toString(16))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>3]|=parseInt(e.substr(r,2),16)<<24-r%8*4;return new l.init(i,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>24-s%4*8&255;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var t=e.length,i=[],r=0;r>>2]|=(255&e.charCodeAt(r))<<24-r%4*8;return new l.init(i,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,r=this._data,s=r.words,a=r.sigBytes,n=this.blockSize,o=a/(4*n),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*n,c=e.min(4*d,a);if(d){for(var u=0;u>>2]|=e[s]<<24-s%4*8;t.call(this,r,i)}else t.apply(this,arguments)};r.prototype=e}}(),i.lib.WordArray)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.WordArray,r=e.enc;function s(e){return e<<8&4278255360|e>>>8&16711935}r.Utf16=r.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],s=0;s>>2]>>>16-s%4*8&65535;r.push(String.fromCharCode(a))}return r.join("")},parse:function(e){for(var i=e.length,r=[],s=0;s>>1]|=e.charCodeAt(s)<<16-s%2*16;return t.create(r,2*i)}},r.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,r=[],a=0;a>>2]>>>16-a%4*8&65535);r.push(String.fromCharCode(n))}return r.join("")},parse:function(e){for(var i=e.length,r=[],a=0;a>>1]|=s(e.charCodeAt(a)<<16-a%2*16);return t.create(r,2*i)}}}(),i.enc.Utf16)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.WordArray;function r(e,i,r){for(var s=[],a=0,n=0;n>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,r=this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,o=0;o<4&&a+.75*o>>6*(3-o)&63));var d=r.charAt(64);if(d)for(;s.length%4;)s.push(d);return s.join("")},parse:function(e){var t=e.length,i=this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>6-n%4*2;s[a>>>2]|=o<<24-a%4*8,a++}return t.create(s,a)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,r=e.sigBytes,s=t?this._safe_map:this._map;e.clamp();for(var a=[],n=0;n>>2]>>>24-n%4*8&255)<<16|(i[n+1>>>2]>>>24-(n+1)%4*8&255)<<8|i[n+2>>>2]>>>24-(n+2)%4*8&255,d=0;d<4&&n+.75*d>>6*(3-d)&63));var l=s.charAt(64);if(l)for(;a.length%4;)a.push(l);return a.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,s=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var n=0;n>>24)|4278255360&(s<<24|s>>>8)}var a=this._hash.words,n=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],_=e[t+4],m=e[t+5],g=e[t+6],y=e[t+7],b=e[t+8],v=e[t+9],S=e[t+10],w=e[t+11],A=e[t+12],B=e[t+13],x=e[t+14],U=e[t+15],E=a[0],T=a[1],k=a[2],C=a[3];E=l(E,T,k,C,n,7,o[0]),C=l(C,E,T,k,d,12,o[1]),k=l(k,C,E,T,f,17,o[2]),T=l(T,k,C,E,p,22,o[3]),E=l(E,T,k,C,_,7,o[4]),C=l(C,E,T,k,m,12,o[5]),k=l(k,C,E,T,g,17,o[6]),T=l(T,k,C,E,y,22,o[7]),E=l(E,T,k,C,b,7,o[8]),C=l(C,E,T,k,v,12,o[9]),k=l(k,C,E,T,S,17,o[10]),T=l(T,k,C,E,w,22,o[11]),E=l(E,T,k,C,A,7,o[12]),C=l(C,E,T,k,B,12,o[13]),k=l(k,C,E,T,x,17,o[14]),E=c(E,T=l(T,k,C,E,U,22,o[15]),k,C,d,5,o[16]),C=c(C,E,T,k,g,9,o[17]),k=c(k,C,E,T,w,14,o[18]),T=c(T,k,C,E,n,20,o[19]),E=c(E,T,k,C,m,5,o[20]),C=c(C,E,T,k,S,9,o[21]),k=c(k,C,E,T,U,14,o[22]),T=c(T,k,C,E,_,20,o[23]),E=c(E,T,k,C,v,5,o[24]),C=c(C,E,T,k,x,9,o[25]),k=c(k,C,E,T,p,14,o[26]),T=c(T,k,C,E,b,20,o[27]),E=c(E,T,k,C,B,5,o[28]),C=c(C,E,T,k,f,9,o[29]),k=c(k,C,E,T,y,14,o[30]),E=u(E,T=c(T,k,C,E,A,20,o[31]),k,C,m,4,o[32]),C=u(C,E,T,k,b,11,o[33]),k=u(k,C,E,T,w,16,o[34]),T=u(T,k,C,E,x,23,o[35]),E=u(E,T,k,C,d,4,o[36]),C=u(C,E,T,k,_,11,o[37]),k=u(k,C,E,T,y,16,o[38]),T=u(T,k,C,E,S,23,o[39]),E=u(E,T,k,C,B,4,o[40]),C=u(C,E,T,k,n,11,o[41]),k=u(k,C,E,T,p,16,o[42]),T=u(T,k,C,E,g,23,o[43]),E=u(E,T,k,C,v,4,o[44]),C=u(C,E,T,k,A,11,o[45]),k=u(k,C,E,T,U,16,o[46]),E=h(E,T=u(T,k,C,E,f,23,o[47]),k,C,n,6,o[48]),C=h(C,E,T,k,y,10,o[49]),k=h(k,C,E,T,x,15,o[50]),T=h(T,k,C,E,m,21,o[51]),E=h(E,T,k,C,A,6,o[52]),C=h(C,E,T,k,p,10,o[53]),k=h(k,C,E,T,S,15,o[54]),T=h(T,k,C,E,d,21,o[55]),E=h(E,T,k,C,b,6,o[56]),C=h(C,E,T,k,U,10,o[57]),k=h(k,C,E,T,g,15,o[58]),T=h(T,k,C,E,B,21,o[59]),E=h(E,T,k,C,_,6,o[60]),C=h(C,E,T,k,w,10,o[61]),k=h(k,C,E,T,f,15,o[62]),T=h(T,k,C,E,v,21,o[63]),a[0]=a[0]+E|0,a[1]=a[1]+T|0,a[2]=a[2]+k|0,a[3]=a[3]+C|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;i[s>>>5]|=128<<24-s%32;var a=e.floor(r/4294967296),n=r;i[15+(s+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),i[14+(s+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),t.sigBytes=4*(i.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,i,r,s,a,n){var o=e+(t&i|~t&r)+s+n;return(o<>>32-a)+t}function c(e,t,i,r,s,a,n){var o=e+(t&r|i&~r)+s+n;return(o<>>32-a)+t}function u(e,t,i,r,s,a,n){var o=e+(t^i^r)+s+n;return(o<>>32-a)+t}function h(e,t,i,r,s,a,n){var o=e+(i^(t|~r))+s+n;return(o<>>32-a)+t}t.MD5=a._createHelper(d),t.HmacMD5=a._createHmacHelper(d)}(Math),i.MD5)})),zt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Lr).lib,s=r.WordArray,a=r.Hasher,n=i.algo,o=[],d=n.SHA1=a.extend({_doReset:function(){this._hash=new s.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],d=i[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(r<<5|r>>>27)+d+o[l];u+=l<20?1518500249+(s&a|~s&n):l<40?1859775393+(s^a^n):l<60?(s&a|s&n|a&n)-1894007588:(s^a^n)-899497514,d=n,n=a,a=s<<30|s>>>2,s=r,r=u}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(r+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=a._createHelper(d),i.HmacSHA1=a._createHmacHelper(d),l.SHA1)})),zt((function(e,t){var i;e.exports=(i=Lr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=[],d=[];!function(){function t(t){for(var i=e.sqrt(t),r=2;r<=i;r++)if(!(t%r))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var r=2,s=0;s<64;)t(r)&&(s<8&&(o[s]=i(e.pow(r,.5))),d[s]=i(e.pow(r,1/3)),s++),r++}();var l=[],c=n.SHA256=a.extend({_doReset:function(){this._hash=new s.init(o.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,m=l[f-2],g=(m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10;l[f]=_+l[f-7]+g+l[f-16]}var y=r&s^r&a^s&a,b=(r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22),v=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=n+v|0,n=a,a=s,s=r,r=v+(b+y)|0}i[0]=i[0]+r|0,i[1]=i[1]+s|0,i[2]=i[2]+a|0,i[3]=i[3]+n|0,i[4]=i[4]+o|0,i[5]=i[5]+c|0,i[6]=i[6]+u|0,i[7]=i[7]+h|0},_doFinalize:function(){var t=this._data,i=t.words,r=8*this._nDataBytes,s=8*t.sigBytes;return i[s>>>5]|=128<<24-s%32,i[14+(s+64>>>9<<4)]=e.floor(r/4294967296),i[15+(s+64>>>9<<4)]=r,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(c),t.HmacSHA256=a._createHmacHelper(c)}(Math),i.SHA256)})),zt((function(e,t){var i,r,s,a,n,o;e.exports=(r=(i=o=Lr).lib.WordArray,s=i.algo,a=s.SHA256,n=s.SHA224=a.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=a._createHelper(n),i.HmacSHA224=a._createHmacHelper(n),o.SHA224)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.Hasher,r=e.x64,s=r.Word,a=r.WordArray,n=e.algo;function o(){return s.create.apply(s,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=n.SHA512=t.extend({_doReset:function(){this._hash=new a.init([new s.init(1779033703,4089235720),new s.init(3144134277,2227873595),new s.init(1013904242,4271175723),new s.init(2773480762,1595750129),new s.init(1359893119,2917565137),new s.init(2600822924,725511199),new s.init(528734635,4215389547),new s.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,r=i[0],s=i[1],a=i[2],n=i[3],o=i[4],c=i[5],u=i[6],h=i[7],f=r.high,p=r.low,_=s.high,m=s.low,g=a.high,y=a.low,b=n.high,v=n.low,S=o.high,w=o.low,A=c.high,B=c.low,x=u.high,U=u.low,E=h.high,T=h.low,k=f,C=p,D=_,I=m,L=g,F=y,P=b,M=v,z=S,R=w,N=A,G=B,O=x,H=U,V=E,$=T,W=0;W<80;W++){var Y,q,j=l[W];if(W<16)q=j.high=0|e[t+2*W],Y=j.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,ie=ee.low,re=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,se=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),ae=l[W-7],ne=ae.high,oe=ae.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ne+((Y=Q+oe)>>>0>>0?1:0))+re+((Y+=se)>>>0>>0?1:0))+le+((Y+=ce)>>>0>>0?1:0),j.high=q,j.low=Y}var ue,he=z&N^~z&O,fe=R&G^~R&H,pe=k&D^k&L^D&L,_e=C&I^C&F^I&F,me=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=d[W],Se=ve.high,we=ve.low,Ae=V+ye+((ue=$+be)>>>0<$>>>0?1:0),Be=ge+_e;V=O,$=H,O=N,H=G,N=z,G=R,z=P+(Ae=(Ae=(Ae=Ae+he+((ue+=fe)>>>0>>0?1:0))+Se+((ue+=we)>>>0>>0?1:0))+q+((ue+=Y)>>>0>>0?1:0))+((R=M+ue|0)>>>0>>0?1:0)|0,P=L,M=F,L=D,F=I,D=k,I=C,k=Ae+(me+pe+(Be>>>0>>0?1:0))+((C=ue+Be|0)>>>0>>0?1:0)|0}p=r.low=p+C,r.high=f+k+(p>>>0>>0?1:0),m=s.low=m+I,s.high=_+D+(m>>>0>>0?1:0),y=a.low=y+F,a.high=g+L+(y>>>0>>0?1:0),v=n.low=v+M,n.high=b+P+(v>>>0>>0?1:0),w=o.low=w+R,o.high=S+z+(w>>>0>>0?1:0),B=c.low=B+G,c.high=A+N+(B>>>0>>0?1:0),U=u.low=U+H,u.high=x+O+(U>>>0>>0?1:0),T=h.low=T+$,h.high=E+V+(T>>>0<$>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[30+(r+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(r+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),i.SHA512)})),zt((function(e,t){var i,r,s,a,n,o,d,l;e.exports=(r=(i=l=Lr).x64,s=r.Word,a=r.WordArray,n=i.algo,o=n.SHA512,d=n.SHA384=o.extend({_doReset:function(){this._hash=new a.init([new s.init(3418070365,3238371032),new s.init(1654270250,914150663),new s.init(2438529370,812702999),new s.init(355462360,4144912697),new s.init(1731405415,4290775857),new s.init(2394180231,1750603025),new s.init(3675008525,1694076839),new s.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=o._createHelper(d),i.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),zt((function(e,t){var i;e.exports=(i=Lr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,i=0;i<24;i++){d[e+5*t]=(i+1)*(i+2)/2%64;var r=(2*e+3*t)%5;e=t%5,t=r}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var s=1,a=0;a<24;a++){for(var o=0,u=0,h=0;h<7;h++){if(1&s){var f=(1<>>24)|4278255360&(a<<24|a>>>8),n=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),(T=i[s]).high^=n,T.low^=a}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,_=0;_<5;_++)f^=(T=i[h+5*_]).high,p^=T.low;var m=u[h];m.high=f,m.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],b=y.high,v=y.low;for(f=g.high^(b<<1|v>>>31),p=g.low^(v<<1|b>>>31),_=0;_<5;_++)(T=i[h+5*_]).high^=f,T.low^=p}for(var S=1;S<25;S++){var w=(T=i[S]).high,A=T.low,B=d[S];B<32?(f=w<>>32-B,p=A<>>32-B):(f=A<>>64-B,p=w<>>64-B);var x=u[l[S]];x.high=f,x.low=p}var U=u[0],E=i[0];for(U.high=E.high,U.low=E.low,h=0;h<5;h++)for(_=0;_<5;_++){var T=i[S=h+5*_],k=u[S],C=u[(h+1)%5+5*_],D=u[(h+2)%5+5*_];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=i[0];var I=c[o];T.high^=I.high,T.low^=I.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var r=8*t.sigBytes,a=32*this.blockSize;i[r>>>5]|=1<<24-r%32,i[(e.ceil((r+1)/a)*a>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var n=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new s.init(l,o)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=a._createHelper(h),t.HmacSHA3=a._createHmacHelper(h)}(Math),i.SHA3)})),zt((function(e,t){var i;e.exports=(i=Lr,function(e){var t=i,r=t.lib,s=r.WordArray,a=r.Hasher,n=t.algo,o=s.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=s.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=s.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=s.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=s.create([0,1518500249,1859775393,2400959708,2840853838]),h=s.create([1352829926,1548603684,1836072691,2053994217,0]),f=n.RIPEMD160=a.extend({_doReset:function(){this._hash=s.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var r=t+i,s=e[r];e[r]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}var a,n,f,v,S,w,A,B,x,U,E,T=this._hash.words,k=u.words,C=h.words,D=o.words,I=d.words,L=l.words,F=c.words;for(w=a=T[0],A=n=T[1],B=f=T[2],x=v=T[3],U=S=T[4],i=0;i<80;i+=1)E=a+e[t+D[i]]|0,E+=i<16?p(n,f,v)+k[0]:i<32?_(n,f,v)+k[1]:i<48?m(n,f,v)+k[2]:i<64?g(n,f,v)+k[3]:y(n,f,v)+k[4],E=(E=b(E|=0,L[i]))+S|0,a=S,S=v,v=b(f,10),f=n,n=E,E=w+e[t+I[i]]|0,E+=i<16?y(A,B,x)+C[0]:i<32?g(A,B,x)+C[1]:i<48?m(A,B,x)+C[2]:i<64?_(A,B,x)+C[3]:p(A,B,x)+C[4],E=(E=b(E|=0,F[i]))+U|0,w=U,U=x,x=b(B,10),B=A,A=E;E=T[1]+f+x|0,T[1]=T[2]+v+U|0,T[2]=T[3]+S+w|0,T[3]=T[4]+a+A|0,T[4]=T[0]+n+B|0,T[0]=E},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32,t[14+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var s=this._hash,a=s.words,n=0;n<5;n++){var o=a[n];a[n]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return s},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,i){return e^t^i}function _(e,t,i){return e&t|~e&i}function m(e,t,i){return(e|~t)^i}function g(e,t,i){return e&i|t&~i}function y(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=a._createHelper(f),t.HmacRIPEMD160=a._createHmacHelper(f)}(),i.RIPEMD160)})),zt((function(e,t){var i,r,s;e.exports=(r=(i=Lr).lib.Base,s=i.enc.Utf8,void(i.algo.HMAC=r.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));var i=e.blockSize,r=4*i;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),n=this._iKey=t.clone(),o=a.words,d=n.words,l=0;l>>2];e.sigBytes-=t}};r.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,i=t.iv,r=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=r.createEncryptor:(e=r.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(r,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var _=r.CipherParams=s.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),m=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?a.create([1398893684,1701076831]).concat(i).concat(t):t).toString(d)},parse:function(e){var t,i=d.parse(e),r=i.words;return 1398893684==r[0]&&1701076831==r[1]&&(t=a.create(r.slice(2,4)),r.splice(0,4),i.sigBytes-=16),_.create({ciphertext:i,salt:t})}},g=r.SerializableCipher=s.extend({cfg:s.extend({format:m}),encrypt:function(e,t,i,r){r=this.cfg.extend(r);var s=e.createEncryptor(i,r),a=s.finalize(t),n=s.cfg;return _.create({ciphertext:a,key:i,iv:n.iv,algorithm:e,mode:n.mode,padding:n.padding,blockSize:e.blockSize,formatter:r.format})},decrypt:function(e,t,i,r){return r=this.cfg.extend(r),t=this._parse(t,r.format),e.createDecryptor(i,r).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,i,r,s){if(r||(r=a.random(8)),s)n=l.create({keySize:t+i,hasher:s}).compute(e,r);else var n=l.create({keySize:t+i}).compute(e,r);var o=a.create(n.words.slice(t),4*i);return n.sigBytes=4*t,_.create({key:n,iv:o,salt:r})}},b=r.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,i,r){var s=(r=this.cfg.extend(r)).kdf.execute(i,e.keySize,e.ivSize,r.salt,r.hasher);r.iv=s.iv;var a=g.encrypt.call(this,e,t,s.key,r);return a.mixIn(s),a},decrypt:function(e,t,i,r){r=this.cfg.extend(r),t=this._parse(t,r.format);var s=r.kdf.execute(i,e.keySize,e.ivSize,t.salt,r.hasher);return r.iv=s.iv,g.decrypt.call(this,e,t,s.key,r)}})}())})),zt((function(e,t){var i;e.exports=((i=Lr).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,r){var s,a=this._iv;a?(s=a.slice(0),this._iv=void 0):s=this._prevBlock,r.encryptBlock(s,0);for(var n=0;n>24&255)){var t=e>>16&255,i=e>>8&255,r=255&e;255===t?(t=0,255===i?(i=0,255===r?r=0:++r):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=r}else e+=1<<24;return e}function r(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var s=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,s=i.blockSize,a=this._iv,n=this._counter;a&&(n=this._counter=a.slice(0),this._iv=void 0),r(n);var o=n.slice(0);i.encryptBlock(o,0);for(var d=0;d>>2]|=s<<24-a%4*8,e.sigBytes+=s},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),zt((function(e,t){var i;e.exports=((i=Lr).pad.Iso10126={pad:function(e,t){var r=4*t,s=r-e.sigBytes%r;e.concat(i.lib.WordArray.random(s-1)).concat(i.lib.WordArray.create([s<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),zt((function(e,t){var i;e.exports=((i=Lr).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),zt((function(e,t){var i;e.exports=((i=Lr).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),zt((function(e,t){var i;e.exports=((i=Lr).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),zt((function(e,t){var i;e.exports=(i=Lr,function(e){var t=i,r=t.lib.CipherParams,s=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(s)},parse:function(e){var t=s.parse(e);return r.create({ciphertext:t})}}}(),i.format.Hex)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.BlockCipher,r=e.algo,s=[],a=[],n=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,r=0;for(t=0;t<256;t++){var p=r^r<<1^r<<2^r<<3^r<<4;p=p>>>8^255&p^99,s[i]=p,a[p]=i;var _=e[i],m=e[_],g=e[m],y=257*e[p]^16843008*p;n[i]=y<<24|y>>>8,o[i]=y<<16|y>>>16,d[i]=y<<8|y>>>24,l[i]=y,y=16843009*g^65537*m^257*_^16843008*i,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,i?(i=_^e[e[e[g^_]]],r^=e[e[r]]):i=r=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=r.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,r=4*((this._nRounds=i+6)+1),a=this._keySchedule=[],n=0;n6&&n%i==4&&(l=s[l>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l]):(l=s[(l=l<<8|l>>>24)>>>24]<<24|s[l>>>16&255]<<16|s[l>>>8&255]<<8|s[255&l],l^=p[n/i|0]<<24),a[n]=a[n-i]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[s[l>>>16&255]]^h[s[l>>>8&255]]^f[s[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,n,o,d,l,s)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,a),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,r,s,a,n,o){for(var d=this._nRounds,l=e[t]^i[0],c=e[t+1]^i[1],u=e[t+2]^i[2],h=e[t+3]^i[3],f=4,p=1;p>>24]^s[c>>>16&255]^a[u>>>8&255]^n[255&h]^i[f++],m=r[c>>>24]^s[u>>>16&255]^a[h>>>8&255]^n[255&l]^i[f++],g=r[u>>>24]^s[h>>>16&255]^a[l>>>8&255]^n[255&c]^i[f++],y=r[h>>>24]^s[l>>>16&255]^a[c>>>8&255]^n[255&u]^i[f++];l=_,c=m,u=g,h=y}_=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^i[f++],m=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^i[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^i[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^i[f++],e[t]=_,e[t+1]=m,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(_)}(),i.AES)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib,r=t.WordArray,s=t.BlockCipher,a=e.algo,n=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=a.DES=s.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var r=n[i]-1;t[i]=e[r>>>5]>>>31-r%32&1}for(var s=this._subKeys=[],a=0;a<16;a++){var l=s[a]=[],c=d[a];for(i=0;i<24;i++)l[i/6|0]|=t[(o[i]-1+c)%28]<<31-i%6,l[4+(i/6|0)]|=t[28+(o[i+24]-1+c)%28]<<31-i%6;for(l[0]=l[0]<<1|l[0]>>>31,i=1;i<7;i++)l[i]=l[i]>>>4*(i-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(i=0;i<16;i++)u[i]=s[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var r=0;r<16;r++){for(var s=i[r],a=this._lBlock,n=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((n^s[d])&c[d])>>>0];this._lBlock=n,this._rBlock=a^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),s=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(r.create(t)),this._des2=u.createEncryptor(r.create(i)),this._des3=u.createEncryptor(r.create(s))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=s._createHelper(p)}(),i.TripleDES)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=r.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,r=this._S=[],s=0;s<256;s++)r[s]=s;s=0;for(var a=0;s<256;s++){var n=s%i,o=t[n>>>2]>>>24-n%4*8&255;a=(a+r[s]+o)%256;var d=r[s];r[s]=r[a],r[a]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:8,ivSize:0});function a(){for(var e=this._S,t=this._i,i=this._j,r=0,s=0;s<4;s++){i=(i+e[t=(t+1)%256])%256;var a=e[t];e[t]=e[i],e[i]=a,r|=e[(e[t]+e[i])%256]<<24-8*s}return this._i=t,this._j=i,r}e.RC4=t._createHelper(s);var n=r.RC4Drop=s.extend({cfg:s.cfg.extend({drop:192}),_doReset:function(){s._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});e.RC4Drop=t._createHelper(n)}(),i.RC4)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)d.call(this);for(i=0;i<8;i++)s[i]^=r[i+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(s[0]^=l,s[1]^=u,s[2]^=c,s[3]^=h,s[4]^=l,s[5]^=u,s[6]^=c,s[7]^=h,i=0;i<4;i++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.Rabbit=t._createHelper(o)}(),i.Rabbit)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.StreamCipher,r=e.algo,s=[],a=[],n=[],o=r.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var s=0;s<4;s++)d.call(this);for(s=0;s<8;s++)r[s]^=i[s+4&7];if(t){var a=t.words,n=a[0],o=a[1],l=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(r[0]^=l,r[1]^=u,r[2]^=c,r[3]^=h,r[4]^=l,r[5]^=u,r[6]^=c,r[7]^=h,s=0;s<4;s++)d.call(this)}},_doProcessBlock:function(e,t){var i=this._X;d.call(this),s[0]=i[0]^i[5]>>>16^i[3]<<16,s[1]=i[2]^i[7]>>>16^i[5]<<16,s[2]=i[4]^i[1]>>>16^i[7]<<16,s[3]=i[6]^i[3]>>>16^i[1]<<16;for(var r=0;r<4;r++)s[r]=16711935&(s[r]<<8|s[r]>>>24)|4278255360&(s[r]<<24|s[r]>>>8),e[t+r]^=s[r]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var r=e[i]+t[i],s=65535&r,o=r>>>16,d=((s*s>>>17)+s*o>>>15)+o*o,l=((4294901760&r)*r|0)+((65535&r)*r|0);n[i]=d^l}e[0]=n[0]+(n[7]<<16|n[7]>>>16)+(n[6]<<16|n[6]>>>16)|0,e[1]=n[1]+(n[0]<<8|n[0]>>>24)+n[7]|0,e[2]=n[2]+(n[1]<<16|n[1]>>>16)+(n[0]<<16|n[0]>>>16)|0,e[3]=n[3]+(n[2]<<8|n[2]>>>24)+n[1]|0,e[4]=n[4]+(n[3]<<16|n[3]>>>16)+(n[2]<<16|n[2]>>>16)|0,e[5]=n[5]+(n[4]<<8|n[4]>>>24)+n[3]|0,e[6]=n[6]+(n[5]<<16|n[5]>>>16)+(n[4]<<16|n[4]>>>16)|0,e[7]=n[7]+(n[6]<<8|n[6]>>>24)+n[5]|0}e.RabbitLegacy=t._createHelper(o)}(),i.RabbitLegacy)})),zt((function(e,t){var i;e.exports=(i=Lr,function(){var e=i,t=e.lib.BlockCipher,r=e.algo;const s=16,a=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],n=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let i=t>>24&255,r=t>>16&255,s=t>>8&255,a=255&t,n=e.sbox[0][i]+e.sbox[1][r];return n^=e.sbox[2][s],n+=e.sbox[3][a],n}function l(e,t,i){let r,a=t,n=i;for(let t=0;t1;--t)a^=e.pbox[t],n=d(e,a)^n,r=a,a=n,n=r;return r=a,a=n,n=r,n^=e.pbox[1],a^=e.pbox[0],{left:a,right:n}}function u(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=n[t][i]}let r=0;for(let n=0;n=i&&(r=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const s=e.byteLength;let a=5;for(;as)break;let o=e[a+4],d=!1;if(r?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const r=e.slice(a+4+2,a+4+n);let s=new Ir.ModeOfOperation.ctr(t,new Ir.Counter(i));const o=s.decrypt(r);s=null,e.set(o,a+4+2)}a=a+4+n}return e}function Mr(e,t,i){if(e.byteLength<=30)return e;const r=e.slice(32);let s=new Ir.ModeOfOperation.ctr(t,new Ir.Counter(i));const a=s.decrypt(r);return s=null,e.set(a,32),e}zt((function(e,t){e.exports=Lr}));var zr=zt((function(e,t){var r,s,a,n=(r=new Date,s=4,a={setLogLevel:function(e){s=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=s&&console.debug("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=s&&console.info("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=s&&console.warn("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=s&&console.error("["+n.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},a);n.getDurationString=function(e,t){var i;function r(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",r=0;r0&&(i+=","),i+="["+n.getDurationString(e.start(r))+","+n.getDurationString(e.end(r))+"]";return i}return"(empty)"},t.Log=n;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var r=new ArrayBuffer(i),s=new Uint8Array(this._buffer);new Uint8Array(r,0,s.length).set(s),this.buffer=r,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return d.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),d.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,i,r,s){var a=new Uint8Array(e,t,s),n=new Uint8Array(i,r,s);a.set(n)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;is;r--,s++){var a=t[s];t[s]=t[r],t[r]=a}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,n.debug("MultiBufferStream","Stream ready for parsing"),!0):(n.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(n.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){n.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},c.prototype.reduceBuffer=function(e,t,i){var r;return(r=new Uint8Array(i)).set(new Uint8Array(e,t,i)),r.buffer.fileStart=e.fileStart+t,r.buffer.usedBytes=0,r.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,i=0;ir.byteLength){this.buffers.splice(i,1),i--;continue}n.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=r.fileStart||(e=this.reduceBuffer(e,0,r.fileStart-e.fileStart)),n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,s,a)}}t&&(n.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,i,r,s,a,o=[],d="";for(r=0,s=0,t=0;t0&&(d+=a.end-1+"]");var l=e?n.info:n.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+r+"/"+s+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,i){var r,s=null,a=-1;for(r=!0===e?0:this.bufferIndex;r=t?(n.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},c.prototype.findEndContiguousBuf=function(e){var t,i,r,s=void 0!==e?e:this.bufferIndex;if(i=this.buffers[s],this.buffers.length>s+1)for(t=s+1;t>3;return 31===r&&i.data.length>=2&&(r=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),r}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){h.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){h.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,r){h.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=r},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(n.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+i),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),n.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?r=new h[c+"Box"](l):"uuid"!==c?(n.warn("BoxParser","Unknown box type: '"+c+"'"),(r=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[a]?r=new h.UUIDBoxes[a](l):(n.warn("BoxParser","Unknown uuid type: '"+a+"'"),(r=new h.Box(c,l)).uuid=a,r.has_unparsed_data=!0),r.hdr_size=d,r.start=o,r.write===h.Box.prototype.write&&"mdat"!==r.type&&(n.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),r.parseDataAndRewind(e)),r.parse(e),(s=e.getPosition()-(r.start+r.size))<0?(n.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-s+" bytes), seeking forward"),e.seek(r.start+r.size)):s>0&&(n.error("BoxParser","Parsing of box '"+u+"' read "+s+" more bytes than the indicated box data size, seeking backwards"),0!==r.size&&e.seek(r.start+r.size)),{code:h.OK,box:r,size:r.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)n.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void n.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else n.error("av1C reserved_1 parsing problem");else n.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|r>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,r.bsid=s>>1&31,r.bsmod=(1&s)<<4|a>>4&15,r.acmod=a>>1&7,r.lfeon=1&a,r.num_dep_sub=n>>1&15,r.num_dep_sub>0&&(r.chan_loc=(1&n)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var r=e.readUint8(),s=Math.min(127&r,i.length-1);if(s?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[s]),128&r)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,i,r,s;this.configurationVersion=e.readUint8(),s=e.readUint8(),this.general_profile_space=s>>6,this.general_tier_flag=(32&s)>>5,this.general_profile_idc=31&s,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),s=e.readUint8(),this.constantFrameRate=s>>6,this.numTemporalLayers=(13&s)>>3,this.temporalIdNested=(4&s)>>2,this.lengthSizeMinusOne=3&s,this.nalu_arrays=[];var a=e.readUint8();for(t=0;t>7,n.nalu_type=63&s;var o=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var r=0;r>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),n.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?n.property_index=(127&a)<<8|e.readUint8():n.property_index=127&a}}})),h.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,r.assignment_type=127&s,r.assignment_type){case 0:r.grouping_type=e.readString(4);break;case 1:r.grouping_type=e.readString(4),r.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:r.sub_track_id=e.readUint32();break;default:n.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(n.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(r))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),r=0;r>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)n.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){n.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[r]=t>>4&3,this.sample_is_depended_on[r]=t>>2&3,this.sample_has_redundancy[r]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),n.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,r.referenced_size=2147483647&s,r.subsegment_duration=e.readUint32(),s=e.readUint32(),r.starts_with_SAP=s>>31&1,r.SAP_type=s>>28&7,r.SAP_delta_time=268435455&s}})),h.SingleItemTypeReferenceBox=function(e,t,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&r}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),r=0;r>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,i,r){h.Box.call(this,e,t),this.hdr_size=i,this.start=r},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,i,r={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(r.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var n=r.extract_bits(1);this.ptl_sublayer_present_mask|=n<1;++i)r.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(r,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var s=!1,a="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||s)&&(a="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,s=!0);t+=a}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var r,s=[],a=0;for(a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,s.push(a),a&&(r=e),a=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===r)i=".CA";else{i=".C";var n="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=r;++e)for(o=o<<8|s[e],d+=8;d>=5;){i+=n[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(i+=n[31&(o<<=5-d)])}}t+=i}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(i?"."+i:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),n.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof h.Box||t[i]instanceof h.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,i){var r=this.getTrackById(e);if(r){var s={};this.extractedTracks.push(s),s.id=e,s.user=t,s.trak=r,r.nextSample=0,s.nb_samples=1e3,s.samples=[],i&&i.nbSamples&&(s.nb_samples=i.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&n.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(n.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(n.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(n.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(n.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},g.prototype.getInfo=function(){var e,t,i,r,s,a,n={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(n.hasMoov=!0,n.duration=this.moov.mvhd.duration,n.timescale=this.moov.mvhd.timescale,n.isFragmented=null!=this.moov.mvex,n.isFragmented&&this.moov.mvex.mehd&&(n.fragment_duration=this.moov.mvex.mehd.fragment_duration),n.isProgressive=this.isProgressive,n.hasIOD=null!=this.moov.iods,n.brands=[],n.brands.push(this.ftyp.major_brand),n.brands=n.brands.concat(this.ftyp.compatible_brands),n.created=new Date(o+1e3*this.moov.mvhd.creation_time),n.modified=new Date(o+1e3*this.moov.mvhd.modification_time),n.tracks=[],n.audioTracks=[],n.videoTracks=[],n.subtitleTracks=[],n.metadataTracks=[],n.hintTracks=[],n.otherTracks=[],e=0;e0?n.mime+='video/mp4; codecs="':n.audioTracks&&n.audioTracks.length>0?n.mime+='audio/mp4; codecs="':n.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(n.info("ISOFile","Sending fragmented data on track #"+r.id+" for samples ["+Math.max(0,i.nextSample-r.nb_samples)+","+(i.nextSample-1)+"]"),n.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(r.id,r.user,r.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),r.segmentStream=null,r!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(n.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var i=[];return g._sweep.call(this,e,i,t),i},g._sweep=function(e,t,i){for(var r in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;g._sweep.call(this.boxes[r],e,t,i)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},g.prototype.releaseUsedSamples=function(e,t){var i=0,r=this.getTrackById(e);r.lastValidSample||(r.lastValidSample=0);for(var s=r.lastValidSample;se*s.timescale){l=r-1;break}t&&s.is_sync&&(d=r)}for(t&&(l=d),e=i.samples[l].cts,i.nextSample=l;i.samples[l].alreadyRead===i.samples[l].size&&i.samples[l+1];)l++;return a=i.samples[l].offset+i.samples[l].alreadyRead,n.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+n.getDurationString(e,o)+" and offset: "+a),{offset:a,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var i,r,s,a=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(s=0;sthis.getTrackDuration(i)||((r=this.seekTrack(e,t,i)).offset-1){n=d;break}switch(n){case"Visual":if(s.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),a.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),a.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),a.addBox(f)}break;case"Audio":s.add("smhd").set("balance",t.balance||0),a.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":s.add("hmhd");break;case"Subtitle":if(s.add("sthd"),"stpp"===t.type)a.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:s.add("nmhd")}t.description&&a.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){a.addBox(e)})),s.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=s.add("stbl");return p.add("stsd").addEntry(a),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,i){var r=i||{},s={},a=this.getTrackById(e);if(null!==a){s.number=a.samples.length,s.track_id=a.tkhd.track_id,s.timescale=a.mdia.mdhd.timescale,s.description_index=r.sample_description_index?r.sample_description_index-1:0,s.description=a.mdia.minf.stbl.stsd.entries[s.description_index],s.data=t,s.size=t.byteLength,s.alreadyRead=s.size,s.duration=r.duration||1,s.cts=r.cts||0,s.dts=r.dts||0,s.is_sync=r.is_sync||!1,s.is_leading=r.is_leading||0,s.depends_on=r.depends_on||0,s.is_depended_on=r.is_depended_on||0,s.has_redundancy=r.has_redundancy||0,s.degradation_priority=r.degradation_priority||0,s.offset=0,s.subsamples=r.subsamples,a.samples.push(s),a.samples_size+=s.size,a.samples_duration+=s.duration,void 0===a.first_dts&&(a.first_dts=r.dts),this.processSamples();var n=this.createSingleSampleMoof(s);return this.addBox(n),n.computeSize(),n.trafs[0].truns[0].data_offset=n.size+8,this.add("mdat").data=new Uint8Array(t),s}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new h.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var r=i.add("traf"),s=this.getTrackById(e.track_id);return r.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),r.add("tfdt").set("baseMediaDecodeTime",e.dts-(s.first_dts||0)),r.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,i,r,s,a;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=s[n].grouping_type+"/0",(o=new l(s[n].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(n=0;n=2&&(d=r[n].grouping_type+"/0",o=new l(r[n].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,i,r){var s,a;for(s in t.sample_groups=[],r){var n;if(t.sample_groups[s]={},t.sample_groups[s].grouping_type=r[s].grouping_type,t.sample_groups[s].grouping_type_parameter=r[s].grouping_type_parameter,i>=r[s].last_sample_in_run&&(r[s].last_sample_in_run<0&&(r[s].last_sample_in_run=0),r[s].entry_index++,r[s].entry_index<=r[s].sbgp.entries.length-1&&(r[s].last_sample_in_run+=r[s].sbgp.entries[r[s].entry_index].sample_count)),r[s].entry_index<=r[s].sbgp.entries.length-1?t.sample_groups[s].group_description_index=r[s].sbgp.entries[r[s].entry_index].group_description_index:t.sample_groups[s].group_description_index=-1,0!==t.sample_groups[s].group_description_index)n=r[s].fragment_description?r[s].fragment_description:r[s].description,t.sample_groups[s].group_description_index>0?(a=t.sample_groups[s].group_description_index>65535?(t.sample_groups[s].group_description_index>>16)-1:t.sample_groups[s].group_description_index-1,n&&a>=0&&(t.sample_groups[s].description=n.entries[a])):n&&n.version>=2&&n.default_group_description_index>0&&(t.sample_groups[s].description=n.entries[n.default_group_description_index-1])}},g.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=a.sample_counts[v]),t>0?(e.samples[t-1].duration=a.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,U.dts=e.samples[t-1].dts+e.samples[t-1].duration):U.dts=0,n?(t>=S&&(w++,S<0&&(S=0),S+=n.sample_counts[w]),U.cts=e.samples[t].dts+n.sample_offsets[w]):U.cts=U.dts,o?(t==o.sample_numbers[A]-1?(U.is_sync=!0,A++):(U.is_sync=!1,U.degradation_priority=0),l&&l.entries[B].sample_delta+x==t+1&&(U.subsamples=l.entries[B].subsamples,x+=l.entries[B].sample_delta,B++)):U.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,U,U.number),U.degradation_priority=h?h.priority[t]:0,l&&l.entries[B].sample_delta+x==t&&(U.subsamples=l.entries[B].subsamples,x+=l.entries[B].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,U,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,i,r,s,a,n,o,d,l,c,u,f,p,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,m.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+m.sample_composition_time_offset[i]),_=n,m.flags&h.TRUN_FLAGS_FLAGS?_=m.sample_flags[i]:0===i&&m.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=m.first_sample_flags),p.is_sync=!(_>>16&1),p.is_leading=_>>26&3,p.depends_on=_>>24&3,p.is_depended_on=_>>22&3,p.has_redundancy=_>>20&3,p.degradation_priority=65535&_;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(m.flags&h.TRUN_FLAGS_DATA_OFFSET),S=0;S=y?c.tfhd.base_data_offset:b||0===t?l.start:o,p.offset=0===t&&0===i?v?S+m.data_offset:S:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var w=c.first_sample_index;for(t=0;t-1))return null;var a=(i=this.stream.buffers[s]).byteLength-(r.offset+r.alreadyRead-i.fileStart);if(r.size-r.alreadyRead<=a)return n.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+(r.size-r.alreadyRead)+" full size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,r.size-r.alreadyRead),i.usedBytes+=r.size-r.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead=r.size,r;if(0===a)return null;n.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-i.fileStart)+" read size: "+a+" full size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,i,r.offset+r.alreadyRead-i.fileStart,a),r.alreadyRead+=a,i.usedBytes+=a,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.alreadyRead=0,i.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=a.ipro.protections[a.iinf.item_infos[e].protection_index-1]),a.iinf.item_infos[e].item_type?i.type=a.iinf.item_infos[e].item_type:i.type="mime",i.content_type=a.iinf.item_infos[e].content_type,i.content_encoding=a.iinf.item_infos[e].content_encoding;if(a.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[a]).byteLength-(s.offset+s.alreadyRead-t.fileStart);if(!(s.length-s.alreadyRead<=o))return n.debug("ISOFile","Getting item #"+e+" extent #"+r+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+s.length+" full item size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,o),s.alreadyRead+=o,i.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;n.debug("ISOFile","Getting item #"+e+" extent #"+r+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-t.fileStart)+" read size: "+(s.length-s.alreadyRead)+" full extent size: "+s.length+" full item size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,t,s.offset+s.alreadyRead-t.fileStart,s.length-s.alreadyRead),t.usedBytes+=s.length-s.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=s.length-s.alreadyRead,s.alreadyRead=s.length}}return i.alreadyRead===i.size?i:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(r)}return t},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var i=void 0===e||e,r=new g(t);return r.discardMdatData=!i,r}};t.createFile=y.createFile}));function Rr(e){return e.reduce(((e,t)=>256*e+t))}function Nr(e){const t=[101,103,119,99],i=e.length-28,r=e.slice(i,i+t.length);return t.every(((e,t)=>e===r[t]))}zr.Log,zr.MP4BoxStream,zr.DataStream,zr.MultiBufferStream,zr.MPEG4DescriptorParser,zr.BoxParser,zr.XMLSubtitlein4Parser,zr.Textin4Parser,zr.ISOFile,zr.createFile;class Gr{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const r=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(r instanceof Error)return console.error(r.message),this.d=!0,e;this.A=!0,this.u=i[1],Nr(t)&&this.c++,WebAssembly.instantiate(i[2],r).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Or=16,Hr=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Vr=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function $r(e){const t=[];for(let i=0,r=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Yr(e){const t=[];for(let i=0,r=e.length;i>>6),t.push(128|63&r);else if(r<=55295||r>=57344&&r<=65535)t.push(224|r>>>12),t.push(128|r>>>6&63),t.push(128|63&r);else{if(!(r>=65536&&r<=1114111))throw t.push(r),new Error("input is not supported");i++,t.push(240|r>>>18&28),t.push(128|r>>>12&63),t.push(128|r>>>6&63),t.push(128|63&r)}}return t}function qr(e){const t=[];for(let i=0,r=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}function jr(e,t){const i=31&t;return e<>>32-i}function Kr(e){return(255&Hr[e>>>24&255])<<24|(255&Hr[e>>>16&255])<<16|(255&Hr[e>>>8&255])<<8|255&Hr[255&e]}function Xr(e){return e^jr(e,2)^jr(e,10)^jr(e,18)^jr(e,24)}function Zr(e){return e^jr(e,13)^jr(e,23)}function Jr(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[4*t],s[1]=255&e[4*t+1],s[2]=255&e[4*t+2],s[3]=255&e[4*t+3],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];for(let e,t=0;t<32;t+=4)e=r[1]^r[2]^r[3]^i[t+0],r[0]^=Xr(Kr(e)),e=r[2]^r[3]^r[0]^i[t+1],r[1]^=Xr(Kr(e)),e=r[3]^r[0]^r[1]^i[t+2],r[2]^=Xr(Kr(e)),e=r[0]^r[1]^r[2]^i[t+3],r[3]^=Xr(Kr(e));for(let e=0;e<16;e+=4)t[e]=r[3-e/4]>>>24&255,t[e+1]=r[3-e/4]>>>16&255,t[e+2]=r[3-e/4]>>>8&255,t[e+3]=255&r[3-e/4]}function Qr(e,t,i){const r=new Array(4),s=new Array(4);for(let t=0;t<4;t++)s[0]=255&e[0+4*t],s[1]=255&e[1+4*t],s[2]=255&e[2+4*t],s[3]=255&e[3+4*t],r[t]=s[0]<<24|s[1]<<16|s[2]<<8|s[3];r[0]^=2746333894,r[1]^=1453994832,r[2]^=1736282519,r[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=r[1]^r[2]^r[3]^Vr[i+0],t[i+0]=r[0]^=Zr(Kr(e)),e=r[2]^r[3]^r[0]^Vr[i+1],t[i+1]=r[1]^=Zr(Kr(e)),e=r[3]^r[0]^r[1]^Vr[i+2],t[i+2]=r[2]^=Zr(Kr(e)),e=r[0]^r[1]^r[2]^Vr[i+3],t[i+3]=r[3]^=Zr(Kr(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function es(e,t,i){let{padding:r="pkcs#7",mode:s,iv:a=[],output:n="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===s&&("string"==typeof a&&(a=$r(a)),16!==a.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=$r(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Yr(e):$r(e):[...e],("pkcs#5"===r||"pkcs#7"===r)&&0!==i){const t=Or-e.length%Or;for(let i=0;i=Or;){const t=e.slice(u,u+16),r=new Array(16);if("cbc"===s)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2];const r=e.byteLength;let s=5;for(;sr)break;let n=e[s+4],o=!1;if(i?(n=n>>>1&63,o=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,o=1===n||5===n),o){const i=es(e.slice(s+4+2,s+4+a),t,0,{padding:"none",output:"array"});e.set(i,s+4+2)}s=s+4+a}return e}class rs{on(e,t,i){const r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const r=this;function s(){r.off(e,s);for(var a=arguments.length,n=new Array(a),o=0;o1?i-1:0),s=1;s{delete i[e]})),void delete this.e;const r=i[e],s=[];if(r&&t)for(let e=0,i=r.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=ss.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ss.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=ss.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==ss.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=ss.findFirstStartCode}}}}function ns(e,t,i){for(let r=2;r3&&void 0!==arguments[3]&&arguments[3];const s=e.byteLength;let a=5;for(;as)break;let o=e[a+4],d=!1;if(r?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const r=ns(e.slice(a+4,a+4+n),t,i);e.set(r,a+4)}a=a+4+n}return e}function ls(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let s=0;return t.forEach((e=>{r.set(e,s),s+=e.byteLength})),r}class cs{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,r)));e.addEventListener(t,i,r);const s=()=>{oi(e.removeEventListener)&&e.removeEventListener(t,i,r)};return this.destroys.push(s),s}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class us{static init(){us.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in us.types)us.types.hasOwnProperty(e)&&(us.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=us.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,r=Array.prototype.slice.call(arguments,1),s=r.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 a=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 us.box(us.types.trak,us.tkhd(e),us.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,r=e.presentWidth,s=e.presentHeight;return us.box(us.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,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}static mdia(e){return us.box(us.types.mdia,us.mdhd(e),us.hdlr(e),us.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return us.box(us.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?us.constants.HDLR_AUDIO:us.constants.HDLR_VIDEO,us.box(us.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?us.box(us.types.smhd,us.constants.SMHD):us.box(us.types.vmhd,us.constants.VMHD),us.box(us.types.minf,t,us.dinf(),us.stbl(e))}static dinf(){return us.box(us.types.dinf,us.box(us.types.dref,us.constants.DREF))}static stbl(e){return us.box(us.types.stbl,us.stsd(e),us.box(us.types.stts,us.constants.STTS),us.box(us.types.stsc,us.constants.STSC),us.box(us.types.stsz,us.constants.STSZ),us.box(us.types.stco,us.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?us.box(us.types.stsd,us.constants.STSD_PREFIX,us.mp3(e)):us.box(us.types.stsd,us.constants.STSD_PREFIX,us.mp4a(e)):"avc"===e.videoType?us.box(us.types.stsd,us.constants.STSD_PREFIX,us.avc1(e)):us.box(us.types.stsd,us.constants.STSD_PREFIX,us.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,r=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 us.box(us.types[".mp3"],r)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,r=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 us.box(us.types.mp4a,r,us.esds(e))}static esds(e){let t=e.config||[],i=t.length,r=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 us.box(us.types.esds,r)}static avc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=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,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return us.box(us.types.avc1,s,us.box(us.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,r=e.codecHeight;let s=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,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return us.box(us.types.hvc1,s,us.box(us.types.hvcC,t))}static mvex(e){return us.box(us.types.mvex,us.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 us.box(us.types.trex,i)}static moof(e,t){return us.box(us.types.moof,us.mfhd(e.sequenceNumber),us.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 us.box(us.types.mfhd,t)}static traf(e,t){let i=e.id,r=us.box(us.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=us.box(us.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=us.sdtp(e),n=us.trun(e,a.byteLength+16+16+8+16+8+8);return us.box(us.types.traf,r,s,n,a)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,us.box(us.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let r=e.duration,s=e.size,a=e.flags,n=e.cts;return i.set([r>>>24&255,r>>>16&255,r>>>8&255,255&r,s>>>24&255,s>>>16&255,s>>>8&255,255&s,a.isLeading<<2|a.dependsOn,a.isDependedOn<<6|a.hasRedundancy<<4|a.isNonSync,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n],12),us.box(us.types.trun,i)}static mdat(e){return us.box(us.types.mdat,e)}}us.init();var hs,fs=zt((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(hs=fs)&&hs.__esModule&&Object.prototype.hasOwnProperty.call(hs,"default")&&hs.default;const ps=[44100,48e3,32e3,0],_s=[22050,24e3,16e3,0],ms=[11025,12e3,8e3,0],gs=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],ys=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],bs=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function vs(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),i=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let r=t[1]>>>3&3,s=(6&t[1])>>1,a=(240&t[2])>>>4,n=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(r){case 0:d=ms[n];break;case 2:d=_s[n];break;case 3:d=ps[n]}switch(s){case 1:a=e[s]&&t=6?(r=5,t=new Array(4),n=s-3):(r=2,t=new Array(2),n=s):-1!==o.indexOf("android")?(r=2,t=new Array(2),n=s):(r=5,n=s,t=new Array(4),s>=6?n=s-3:1===a&&(r=2,t=new Array(2),n=s)),t[0]=r<<3,t[0]|=(15&s)>>>1,t[1]=(15&s)<<7,t[1]|=(15&a)<<3,5===r&&(t[1]|=(15&n)>>>1,t[2]=(1&n)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Ps[s],this.sampling_index=s,this.channel_count=a,this.object_type=r,this.original_object_type=i,this.codec_mimetype="mp4a.40."+r,this.original_codec_mimetype="mp4a.40."+i}}Date.now||(Date.now=function(){return(new Date).getTime()}),function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=[],s=[],a={},n=new AbortController,o=null,d=null,l=null,c=null,b=!1,v=null,B=null,ge=!1,ye=!1,Oe=!!_i(i),qe=!1,rt=null,ct=null,ut=null,ht=[],ft=null,vt=null,St=0,Bt=0,Mt=null,zt=null,Rt=0,Nt=0,Gt=!1,Wt=!1,Kt=!1,ti=null,yi=null,bi=null,vi=!1,Si=!0,xi=()=>{const e=fi();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration}};"VideoEncoder"in self&&(a={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(a.isEmitInfo||(rr.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:U,w:e.codedWidth,h:e.codedHeight}),a.isEmitInfo=!0,a.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),a.offscreenCanvasCtx=a.offscreenCanvas.getContext("2d")),oi(e.createImageBitmap))e.createImageBitmap().then((t=>{a.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let i=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:i,delay:rr.delay,ts:0},[i]),ci(e)}));else{a.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=a.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:t,delay:rr.delay,ts:0},[t]),ci(e)}},error:function(e){rr.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,i){const r=e[0]>>4==1;if(a.hasInit){const i=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:r?nt:ot});a.decoder.decode(i)}else if(r&&0===e[1]){const t=15&e[0];postMessage({cmd:L,code:t});const i=new Uint8Array(e);postMessage({cmd:F,buffer:i,codecId:t},[i.buffer]);let r=null,s=null;const n=e.slice(5);t===Ce?(s=Ui(n),r={codec:s.codec,description:n}):t===De&&(s=Hi(n),r={codec:s.codec,description:n}),s&&s.codecWidth&&s.codecHeight&&(r.codedHeight=s.codecHeight,r.codedWidth=s.codecWidth);try{a.decoder.configure(r),a.hasInit=!0}catch(e){rr.debug.log("worker","VideoDecoder configure error",e.code,e)}}},reset(){a.hasInit=!1,a.isEmitInfo=!1,a.offscreenCanvas=null,a.offscreenCanvasCtx=null}});let Ri=function(){if(vi=!0,rr.fetchStatus!==Et||mi(rr._opt.isChrome)){if(n)try{n.abort(),n=null}catch(e){rr.debug.log("worker","abort catch",e)}}else n=null,rr.debug.log("worker",`abort() and not abortController.abort() _status is ${rr.fetchStatus} and _isChrome is ${rr._opt.isChrome}`)},Ni={init(){Ni.lastBuf=null,Ni.vps=null,Ni.sps=null,Ni.pps=null,Ni.streamType=null,Ni.localDts=0,Ni.isSendSeqHeader=!1},destroy(){Ni.lastBuf=null,Ni.vps=null,Ni.sps=null,Ni.pps=null,Ni.streamType=null,Ni.localDts=0,Ni.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Ni.extractNALu$2(t)},getNaluDts(){let e=Ni.localDts;return Ni.localDts=Ni.localDts+40,e},getNaluAudioDts(){const e=rr._opt.sampleRate,t=rr._opt.audioBufferSize;return Ni.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,i,r=0,s=e.byteLength,a=0,n=[];for(;r1)for(let e=0;e{const t=Di(e);t===Ge||t===Ne?Ni.handleVideoH264Nalu(e):Li(t)&&r.push(e)})),1===r.length)Ni.handleVideoH264Nalu(r[0]);else{if(Pi(r)){const e=Di(r[0]),t=Fi(e);Ni.handleVideoH264NaluList(r,t,e)}else r.forEach((e=>{Ni.handleVideoH264Nalu(e)}))}}else if(Ni.streamType===Fe)if(rr._opt.nakedFlowH265DemuxUseNew){const t=Ni.handleAddNaluStartCode(e),i=Ni.extractNALu(t);if(0===i.length)return void rr.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const r=[];if(i.forEach((e=>{const t=qi(e);t===tt||t===Qe||t===Ze?Ni.handleVideoH265Nalu(e):Ki(t)&&r.push(e)})),1===r.length)Ni.handleVideoH265Nalu(r[0]);else{if(Zi(r)){const e=qi(r[0]),t=Xi(e);Ni.handleVideoH265NaluList(r,t,e)}else r.forEach((e=>{Ni.handleVideoH265Nalu(e)}))}}else{qi(e)===tt?Ni.extractH265PPS(e):Ni.handleVideoH265Nalu(e)}},extractH264PPS(e){const t=Ni.handleAddNaluStartCode(e);Ni.extractNALu(t).forEach((e=>{Ii(Di(e))?Ni.extractH264SEI(e):Ni.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Ni.handleAddNaluStartCode(e);Ni.extractNALu(t).forEach((e=>{ji(qi(e))?Ni.extractH265SEI(e):Ni.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Ni.handleAddNaluStartCode(e);Ni.extractNALu(t).forEach((e=>{Ni.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Ni.handleAddNaluStartCode(e);Ni.extractNALu(t).forEach((e=>{Ni.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i},handleVideoH264Nalu(e){const t=Di(e);switch(t){case Ne:Ni.sps=e;break;case Ge:Ni.pps=e}if(Ni.isSendSeqHeader){if(Ni.sps&&Ni.pps){const e=Ei({sps:Ni.sps,pps:Ni.pps}),t=Ni.getNaluDts();rr.decode(e,{type:re,ts:t,isIFrame:!0,cts:0}),Ni.sps=null,Ni.pps=null}if(Li(t)){const i=Fi(t),r=Ni.getNaluDts(),s=ki(e,i);Ni.doDecode(s,{type:re,ts:r,isIFrame:i,cts:0})}else rr.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Ni.sps&&Ni.pps){Ni.isSendSeqHeader=!0;const e=Ei({sps:Ni.sps,pps:Ni.pps});rr.decode(e,{type:re,ts:0,isIFrame:!0,cts:0}),Ni.sps=null,Ni.pps=null}},handleVideoH264NaluList(e,t,i){if(Ni.isSendSeqHeader){const r=Ni.getNaluDts(),s=Ci(e.reduce(((e,t)=>{const i=Zt(e),r=Zt(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);Ni.doDecode(s,{type:re,ts:r,isIFrame:t,cts:0}),rr.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}else rr.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=qi(e);switch(t){case Ze:Ni.vps=e;break;case Qe:Ni.sps=e;break;case tt:Ni.pps=e}if(Ni.isSendSeqHeader){if(Ni.vps&&Ni.sps&&Ni.pps){const e=$i({vps:Ni.vps,sps:Ni.sps,pps:Ni.pps}),t=Ni.getNaluDts();rr.decode(e,{type:re,ts:t,isIFrame:!0,cts:0}),Ni.vps=null,Ni.sps=null,Ni.pps=null}if(Ki(t)){const i=Xi(t),r=Ni.getNaluDts(),s=Wi(e,i);Ni.doDecode(s,{type:re,ts:r,isIFrame:i,cts:0})}else rr.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Ni.vps&&Ni.sps&&Ni.pps){Ni.isSendSeqHeader=!0;const e=$i({vps:Ni.vps,sps:Ni.sps,pps:Ni.pps});rr.decode(e,{type:re,ts:0,isIFrame:!0,cts:0}),Ni.vps=null,Ni.sps=null,Ni.pps=null}},handleVideoH265NaluList(e,t,i){if(Ni.isSendSeqHeader){const r=Ni.getNaluDts(),s=Yi(e.reduce(((e,t)=>{const i=Zt(e),r=Zt(t),s=new Uint8Array(i.byteLength+r.byteLength);return s.set(i,0),s.set(r,i.byteLength),s})),t);Ni.doDecode(s,{type:re,ts:r,isIFrame:t,cts:0}),rr.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${s.byteLength} isIFrame is ${t},nalu type is ${i}, dts is ${r}`)}else rr.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){rr.calcNetworkDelay(t.ts),t.isIFrame&&rr.calcIframeIntervalTimestamp(t.ts),rr.decode(e,t)}},Vi={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Vi.mp4Box=zr.createFile(),Vi.mp4Box.onReady=Vi.onReady,Vi.mp4Box.onError=Vi.onError,Vi.mp4Box.onSamples=Vi.onSamples},initTransportDescarmber(){Vi.transportDescarmber=new Gr},_getSeqHeader(e){const t=Vi.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new zr.DataStream(void 0,0,zr.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(Vi.isHevc=!0,ti=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const r=new Uint8Array(t.buffer,8),s=new Uint8Array(i.length+r.length);return s.set(i,0),s.set(r,i.length),s}return null},onReady(e){rr.debug.log(Vi.LOG_NAME,"onReady()");const t=e.videoTracks[0],i=e.audioTracks[0];if(t){Vi.videoTrackId=t.id;const e=Vi._getSeqHeader(t);e&&(rr.debug.log(Vi.LOG_NAME,"seqHeader"),rr.decodeVideo(e,0,!0,0)),Vi.mp4Box.setExtractionOptions(t.id)}if(i&&rr._opt.hasAudio){Vi.audioTrackId=i.id;const e=i.audio||{},t=Ot.indexOf(e.sample_rate),r=i.codec.replace("mp4a.40.","");Vi.mp4Box.setExtractionOptions(i.id);const s=Ht({profile:parseInt(r,10),sampleRate:t,channel:e.channel_count});rr.debug.log(Vi.LOG_NAME,"aacADTSHeader"),rr.decodeAudio(s,0)}Vi.mp4Box.start()},onError(e){rr.debug.error(Vi.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,i){if(e===Vi.videoTrackId)for(const t of i){const i=t.data,r=t.is_sync,s=1e3*t.cts/t.timescale;t.duration,t.timescale,r&&rr.calcIframeIntervalTimestamp(s);let a=null;a=Vi.isHevc?Yi(i,r):Ci(i,r),rr.decode(a,{type:re,ts:s,isIFrame:r,cts:0}),Vi.mp4Box.releaseUsedSamples(e,t.number)}else if(e===Vi.audioTrackId){if(rr._opt.hasAudio)for(const t of i){const i=t.data,r=1e3*t.cts/t.timescale;t.duration,t.timescale;const s=new Uint8Array(i.byteLength+2);s.set([175,1],0),s.set(i,2),rr.decode(s,{type:ie,ts:r,isIFrame:!1,cts:0}),Vi.mp4Box.releaseUsedSamples(e,t.number)}}else rr.debug.warn(Vi.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Vi.transportDescarmber&&(t=Vi.transportDescarmber.transport(t)),t.buffer.fileStart=Vi.offset,Vi.offset+=t.byteLength,Vi.mp4Box.appendBuffer(t.buffer)},destroy(){Vi.mp4Box&&(Vi.mp4Box.stop(),Vi.mp4Box.flush(),Vi.mp4Box.destroy(),Vi.mp4Box=null),Vi.transportDescarmber&&(Vi.transportDescarmber.destroy(),Vi.transportDescarmber=null),Vi.offset=0,Vi.videoTrackId=null,Vi.audioTrackId=null,Vi.isHevc=!1}},er={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);er.extractNALu(t)},destroy(){er.lastBuffer=new Uint8Array(0),er.parsedOffset=0,er.firstStartCodeOffset=0,er.secondStartCodeOffset=0,er.state="init",er.hasInitVideoCodec=!1,er.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void rr.debug.warn(er.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(er.lastBuffer.length+e.length);for(t.set(er.lastBuffer,0),t.set(new Uint8Array(e),er.lastBuffer.length),er.lastBuffer=t;;){if("init"===er.state){let e=!1;for(;er.lastBuffer.length-er.parsedOffset>=4;)if(0===er.lastBuffer[er.parsedOffset])if(0===er.lastBuffer[er.parsedOffset+1])if(1===er.lastBuffer[er.parsedOffset+2]){if(182===er.lastBuffer[er.parsedOffset+3]){er.state="findFirstStartCode",er.firstStartCodeOffset=er.parsedOffset,er.parsedOffset+=4,e=!0;break}er.parsedOffset++}else er.parsedOffset++;else er.parsedOffset++;else er.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===er.state){let e=!1;for(;er.lastBuffer.length-er.parsedOffset>=4;)if(0===er.lastBuffer[er.parsedOffset])if(0===er.lastBuffer[er.parsedOffset+1])if(1===er.lastBuffer[er.parsedOffset+2]){if(182===er.lastBuffer[er.parsedOffset+3]){er.state="findSecondStartCode",er.secondStartCodeOffset=er.parsedOffset,er.parsedOffset+=4,e=!0;break}er.parsedOffset++}else er.parsedOffset++;else er.parsedOffset++;else er.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===er.state){if(!(er.lastBuffer.length-er.parsedOffset>0))break;{let e,t,i=192&er.lastBuffer[er.parsedOffset];e=0==i?er.secondStartCodeOffset-14:er.secondStartCodeOffset;let r=0==(192&er.lastBuffer[er.firstStartCodeOffset+4]);if(r){if(er.firstStartCodeOffset-14<0)return void rr.debug.warn(er.LOG_NAME,"firstStartCodeOffset -14 is",er.firstStartCodeOffset-14);er.hasInitVideoCodec||(er.hasInitVideoCodec=!0,rr.debug.log(er.LOG_NAME,"setCodec"),ar.setCodec(Ie,"")),t=er.lastBuffer.subarray(er.firstStartCodeOffset-14,e)}else t=er.lastBuffer.subarray(er.firstStartCodeOffset,e);let s=er.getNaluDts();er.hasInitVideoCodec?(postMessage({cmd:R,type:we,value:t.byteLength}),postMessage({cmd:R,type:Ae,value:s}),ar.decode(t,r?1:0,s)):rr.debug.warn(er.LOG_NAME,"has not init video codec"),er.lastBuffer=er.lastBuffer.subarray(e),er.firstStartCodeOffset=0==i?14:0,er.parsedOffset=er.firstStartCodeOffset+4,er.state="findFirstStartCode"}}}},getNaluDts(){let e=er.localDts;return er.localDts=er.localDts+40,e}},tr={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Ms,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){tr.media_info_=null,tr.pes_slice_queues_=null,tr.section_slice_queues_=null,tr.video_metadata_=null,tr.audio_metadata_=null,tr.aac_last_incomplete_data_=null,tr.video_track_=null,tr.audio_track_=null,tr._remainingPacketData=null},probe(e){let t=new Uint8Array(e),i=-1,r=188;if(t.byteLength<=3*r)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*r);for(let s=0;s=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:r,sync_offset:i})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){tr._remainingPacketData&&(e=ls(tr._remainingPacketData,e),tr._remainingPacketData=null);let t=e.buffer;const i=tr.parseChunks(t);i?tr._remainingPacketData=e.subarray(i):e.length>>6;i[1];let a=(31&i[1])<<8|i[2],n=(48&i[3])>>>4,o=15&i[3],d=!(!tr.pmt_||tr.pmt_.pcr_pid!==a),l={},c=4;if(2==n||3==n){let e=i[4];if(e>0&&(d||3==n)){if(l.discontinuity_indicator=(128&i[5])>>>7,l.random_access_indicator=(64&i[5])>>>6,l.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*(i[6]<<25|i[7]<<17|i[8]<<9|i[9]<<1|i[10]>>>7)+((1&i[10])<<8|i[11]);tr.last_pcr_=e}}if(2==n||5+e===188){t+=188,204===tr.tsPacketSize&&(t+=16);continue}c=5+e}if(1==n||3==n)if(0===a||a===tr.current_pmt_pid_||null!=tr.pmt_&&tr.pmt_.pid_stream_type[a]===ks){let i=188-c;tr.handleSectionSlice(e,t+c,i,{pid:a,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=tr.pmt_&&null!=tr.pmt_.pid_stream_type[a]){let i=188-c,r=tr.pmt_.pid_stream_type[a];a!==tr.pmt_.common_pids.h264&&a!==tr.pmt_.common_pids.h265&&a!==tr.pmt_.common_pids.adts_aac&&a!==tr.pmt_.common_pids.loas_aac&&a!==tr.pmt_.common_pids.ac3&&a!==tr.pmt_.common_pids.eac3&&a!==tr.pmt_.common_pids.opus&&a!==tr.pmt_.common_pids.mp3&&!0!==tr.pmt_.pes_private_data_pids[a]&&!0!==tr.pmt_.timed_id3_pids[a]&&!0!==tr.pmt_.synchronous_klv_pids[a]&&!0!==tr.pmt_.asynchronous_klv_pids[a]||tr.handlePESSlice(e,t+c,i,{pid:a,stream_type:r,payload_unit_start_indicator:s,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===tr.tsPacketSize&&(t+=16)}return tr.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=tr.section_slice_queues_[r.pid];if(r.payload_unit_start_indicator){let n=s[0];if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t+1,Math.min(i,n));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?tr.emitSectionSlices(a,r):tr.clearSlices(a,r)}for(let o=1+n;o=a.expected_length&&tr.clearSlices(a,r),o+=d.byteLength}}else if(null!=a&&0!==a.total_length){let s=new Uint8Array(e,t,Math.min(i,a.expected_length-a.total_length));a.slices.push(s),a.total_length+=s.byteLength,a.total_length===a.expected_length?tr.emitSectionSlices(a,r):a.total_length>=a.expected_length&&tr.clearSlices(a,r)}},handlePESSlice(e,t,i,r){let s=new Uint8Array(e,t,i),a=s[0]<<16|s[1]<<8|s[2];s[3];let n=s[4]<<8|s[5];if(r.payload_unit_start_indicator){if(1!==a)return void rr.debug.warn(tr.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${a}`);let e=tr.pes_slice_queues_[r.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?tr.emitPESSlices(e,r):tr.clearSlices(e,r)),tr.pes_slice_queues_[r.pid]=new Is,tr.pes_slice_queues_[r.pid].random_access_indicator=r.random_access_indicator}if(null==tr.pes_slice_queues_[r.pid])return;let o=tr.pes_slice_queues_[r.pid];o.slices.push(s),r.payload_unit_start_indicator&&(o.expected_length=0===n?0:n+6),o.total_length+=s.byteLength,o.expected_length>0&&o.expected_length===o.total_length?tr.emitPESSlices(o,r):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==n&&3!==n||(i=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,a=3===n?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:i);let d,l=9+o;if(0!==s){if(s<3+o)return void rr.debug.warn(tr.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=s-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Ss:case ws:tr.parseMP3Payload(c,i);break;case As:tr.pmt_.common_pids.opus===e.pid||tr.pmt_.common_pids.ac3===e.pid||tr.pmt_.common_pids.eac3===e.pid||(tr.pmt_.asynchronous_klv_pids[e.pid]?tr.parseAsynchronousKLVMetadataPayload(c,e.pid,r):tr.pmt_.smpte2038_pids[e.pid]?tr.parseSMPTE2038MetadataPayload(c,i,a,e.pid,r):tr.parsePESPrivateDataPayload(c,i,a,e.pid,r));break;case Bs:tr.parseADTSAACPayload(c,i);break;case xs:tr.parseLOASAACPayload(c,i);break;case Us:case Es:break;case Ts:tr.pmt_.timed_id3_pids[e.pid]?tr.parseTimedID3MetadataPayload(c,i,a,e.pid,r):tr.pmt_.synchronous_klv_pids[e.pid]&&tr.parseSynchronousKLVMetadataPayload(c,i,a,e.pid,r);break;case Cs:tr.parseH264Payload(c,i,a,e.random_access_indicator);break;case Ds:tr.parseH265Payload(c,i,a,e.random_access_indicator)}}else if((188===r||191===r||240===r||241===r||255===r||242===r||248===r)&&e.stream_type===As){let i,a=6;i=0!==s?s:t.byteLength-a;let n=t.subarray(a,a+i);tr.parsePESPrivateDataPayload(n,void 0,void 0,e.pid,r)}}else rr.debug.error(tr.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(tr.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let r=(62&e[5])>>>1,s=1&e[5],a=e[6];e[7];let n=null;if(1===s&&0===a)n={version_number:0,network_pid:0,program_pmt_pid:{}},n.version_number=r;else if(n=tr.pat_,null==n)return;let o=i-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let i=e[t]<<8|e[t+1],r=(31&e[t+2])<<8|e[t+3];0===i?n.network_pid=r:(n.program_pmt_pid[i]=r,-1===d&&(d=i),-1===l&&(l=r))}1===s&&0===a&&(null==tr.pat_&&rr.debug.log(tr.TAG_NAME,`Parsed first PAT: ${JSON.stringify(n)}`),tr.pat_=n,tr.current_program_=d,tr.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void rr.debug.error(tr.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,r=(15&e[1])<<8|e[2],s=e[3]<<8|e[4],a=(62&e[5])>>>1,n=1&e[5],o=e[6];if(e[7],1===n&&0===o)i=tr._initPmt(),i.program_number=s,i.version_number=a,tr.program_pmt_map_[s]=i;else if(i=tr.program_pmt_map_[s],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=r-9-d-4;for(let t=l;t0){for(let r=t+5;r0)for(let r=t+5;rtr.has_video_&&tr.has_audio_?tr.video_init_segment_dispatched_&&tr.audio_init_segment_dispatched_:tr.has_video_&&!tr.has_audio_?tr.video_init_segment_dispatched_:!(tr.has_video_||!tr.has_audio_)&&tr.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=tr.video_metadata_.details,t={type:"video"};t.id=tr.video_track_.id,t.timescale=1e3,t.duration=tr.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let i=t.frameRate.fps_den,r=t.frameRate.fps_num;if(t.refSampleDuration=i/r*1e3,t.codec=e.codec_mimetype,tr.video_metadata_.vps){let e=tr.video_metadata_.vps.data.subarray(4),i=tr.video_metadata_.sps.data.subarray(4),r=tr.video_metadata_.pps.data.subarray(4);t.hvcc=$i({vps:e,sps:i,pps:r}),0==tr.video_init_segment_dispatched_&&rr.debug.log(tr.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&rr.decodeVideo(t.hvcc,0,!0,0)}else{let e=tr.video_metadata_.sps.data.subarray(4),i=tr.video_metadata_.pps.data.subarray(4);t.avcc=Ti({sps:e,pps:i}),0==tr.video_init_segment_dispatched_&&rr.debug.log(tr.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&rr.decodeVideo(t.avcc,0,!0,0)}tr.video_init_segment_dispatched_=!0,tr.video_metadata_changed_=!1;let s=tr.media_info_;s.hasVideo=!0,s.width=t.codecWidth,s.height=t.codecHeight,s.fps=t.frameRate.fps,s.profile=t.profile,s.level=t.level,s.refFrames=e.ref_frames,s.chromaFormat=e.chroma_format_string,s.sarNum=t.sarRatio.width,s.sarDen=t.sarRatio.height,s.videoCodec=t.codec,s.hasAudio&&s.audioCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.videoCodec}"`},dispatchVideoMediaSegment(){tr.isInitSegmentDispatched()&&tr.video_track_.length&&tr._preDoDecode()},dispatchAudioMediaSegment(){tr.isInitSegmentDispatched()&&tr.audio_track_.length&&tr._preDoDecode()},dispatchAudioVideoMediaSegment(){tr.isInitSegmentDispatched()&&(tr.audio_track_.length||tr.video_track_.length)&&tr._preDoDecode()},parseADTSAACPayload(e,t){if(tr.has_video_&&!tr.video_init_segment_dispatched_)return;if(tr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+tr.aac_last_incomplete_data_.byteLength);t.set(tr.aac_last_incomplete_data_,0),t.set(e,tr.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/tr.timescale_),"aac"===tr.audio_metadata_.codec){if(null==t&&null!=tr.audio_last_sample_pts_)i=1024/tr.audio_metadata_.sampling_frequency*1e3,r=tr.audio_last_sample_pts_+i;else if(null==t)return void rr.debug.warn(tr.TAG_NAME,"AAC: Unknown pts");if(tr.aac_last_incomplete_data_&&tr.audio_last_sample_pts_){i=1024/tr.audio_metadata_.sampling_frequency*1e3;let e=tr.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(rr.debug.warn(tr.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new qt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame());){i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==tr.audio_init_segment_dispatched_?(tr.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},tr.dispatchAudioInitSegment(e)):tr.detectAudioMetadataChange(e)&&(tr.dispatchAudioMediaSegment(),tr.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:ie};tr.audio_track_.samples.push(a),tr.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(tr.aac_last_incomplete_data_=a.getIncompleteData()),s&&(tr.audio_last_sample_pts_=s)},parseLOASAACPayload(e,t){if(tr.has_video_&&!tr.video_init_segment_dispatched_)return;if(tr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+tr.aac_last_incomplete_data_.byteLength);t.set(tr.aac_last_incomplete_data_,0),t.set(e,tr.aac_last_incomplete_data_.byteLength),e=t}let i,r;if(null!=t&&(r=t/tr.timescale_),"aac"===tr.audio_metadata_.codec){if(null==t&&null!=tr.audio_last_sample_pts_)i=1024/tr.audio_metadata_.sampling_frequency*1e3,r=tr.audio_last_sample_pts_+i;else if(null==t)return void rr.debug.warn(tr.TAG_NAME,"AAC: Unknown pts");if(tr.aac_last_incomplete_data_&&tr.audio_last_sample_pts_){i=1024/tr.audio_metadata_.sampling_frequency*1e3;let e=tr.audio_last_sample_pts_+i;Math.abs(e-r)>1&&(rr.debug.warn(tr.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${r}ms`),r=e)}}let s,a=new jt(e),n=null,o=r;for(;null!=(n=a.readNextAACFrame(ai(this.loas_previous_frame)?void 0:this.loas_previous_frame));){tr.loas_previous_frame=n,i=1024/n.sampling_frequency*1e3;const e={codec:"aac",data:n};0==tr.audio_init_segment_dispatched_?(tr.audio_metadata_={codec:"aac",audio_object_type:n.audio_object_type,sampling_freq_index:n.sampling_freq_index,sampling_frequency:n.sampling_frequency,channel_config:n.channel_config},tr.dispatchAudioInitSegment(e)):tr.detectAudioMetadataChange(e)&&(tr.dispatchAudioMediaSegment(),tr.dispatchAudioInitSegment(e)),s=o;let t=Math.floor(o);const r=new Uint8Array(n.data.length+2);r.set([175,1],0),r.set(n.data,2);let a={payload:r,length:r.byteLength,pts:t,dts:t,type:ie};tr.audio_track_.samples.push(a),tr.audio_track_.length+=r.byteLength,o+=i}a.hasIncompleteData()&&(tr.aac_last_incomplete_data_=a.getIncompleteData()),s&&(tr.audio_last_sample_pts_=s)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(tr.has_video_&&!tr.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],r=[22050,24e3,16e3,0],s=[11025,12e3,8e3,0],a=e[1]>>>3&3,n=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!==(e[3]>>>6&3)?2:1,l=0,c=34;switch(a){case 0:l=s[o];break;case 2:l=r[o];break;case 3:l=i[o]}switch(n){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==tr.audio_init_segment_dispatched_?(tr.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},tr.dispatchAudioInitSegment(h)):tr.detectAudioMetadataChange(h)&&(tr.dispatchAudioMediaSegment(),tr.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/tr.timescale_,dts:t/tr.timescale_,type:ie};tr.audio_track_.samples.push(f),tr.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==tr.audio_metadata_.codec)return rr.debug.log(tr.TAG_NAME,`Audio: Audio Codecs changed from ${tr.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===tr.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==tr.audio_metadata_.audio_object_type)return rr.debug.log(tr.TAG_NAME,`AAC: AudioObjectType changed from ${tr.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==tr.audio_metadata_.sampling_freq_index)return rr.debug.log(tr.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${tr.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==tr.audio_metadata_.channel_config)return rr.debug.log(tr.TAG_NAME,`AAC: Channel configuration changed from ${tr.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===tr.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==tr.audio_metadata_.sampling_frequency)return rr.debug.log(tr.TAG_NAME,`AC3: Sampling Frequency changed from ${tr.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==tr.audio_metadata_.bit_stream_identification)return rr.debug.log(tr.TAG_NAME,`AC3: Bit Stream Identification changed from ${tr.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==tr.audio_metadata_.bit_stream_mode)return rr.debug.log(tr.TAG_NAME,`AC3: BitStream Mode changed from ${tr.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==tr.audio_metadata_.channel_mode)return rr.debug.log(tr.TAG_NAME,`AC3: Channel Mode changed from ${tr.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==tr.audio_metadata_.low_frequency_effects_channel_on)return rr.debug.log(tr.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${tr.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===tr.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==tr.audio_metadata_.sample_rate)return rr.debug.log(tr.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${tr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==tr.audio_metadata_.channel_count)return rr.debug.log(tr.TAG_NAME,`Opus: Channel count changed from ${tr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===tr.audio_metadata_.codec){const t=e.data;if(t.object_type!==tr.audio_metadata_.object_type)return rr.debug.log(tr.TAG_NAME,`MP3: AudioObjectType changed from ${tr.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==tr.audio_metadata_.sample_rate)return rr.debug.log(tr.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${tr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==tr.audio_metadata_.channel_count)return rr.debug.log(tr.TAG_NAME,`MP3: Channel count changed from ${tr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=tr.audio_track_.id,t.timescale=1e3,t.duration=tr.duration_,"aac"===tr.audio_metadata_.codec){let i="aac"===e.codec?e.data:null,r=new zs(i);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const s=Ht({profile:rr._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});rr.decodeAudio(s,0)}else"ac-3"===tr.audio_metadata_.codec||"ec-3"===tr.audio_metadata_.codec||"opus"===tr.audio_metadata_.codec||"mp3"===tr.audio_metadata_.codec&&(t.audioSampleRate=tr.audio_metadata_.sample_rate,t.channelCount=tr.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==tr.audio_init_segment_dispatched_&&rr.debug.log(tr.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),tr.audio_init_segment_dispatched_=!0,tr.video_metadata_changed_=!1;let i=tr.media_info_;i.hasAudio=!0,i.audioCodec=t.originalCodec,i.audioSampleRate=t.audioSampleRate,i.audioChannelCount=t.channelCount,i.hasVideo&&i.videoCodec?i.mimeType=`video/mp2t; codecs="${i.videoCodec},${i.audioCodec}"`:i.mimeType=`video/mp2t; codecs="${i.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,i){},parsePESPrivateDataPayload(e,t,i,r,s){let a=new Fs;if(a.pid=r,a.stream_id=s,a.len=e.byteLength,a.data=e,null!=t){let e=Math.floor(t/tr.timescale_);a.pts=e}else a.nearest_pts=tr.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/tr.timescale_);a.dts=e}},parseTimedID3MetadataPayload(e,t,i,r,s){rr.debug.log(tr.TAG_NAME,`Timed ID3 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseSynchronousKLVMetadataPayload(e,t,i,r,s){rr.debug.log(tr.TAG_NAME,`Synchronous KLV Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},parseAsynchronousKLVMetadataPayload(e,t,i){rr.debug.log(tr.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)},parseSMPTE2038MetadataPayload(e,t,i,r,s){rr.debug.log(tr.TAG_NAME,`SMPTE 2038 Metadata: pid=${r}, pts=${t}, dts=${i}, stream_id=${s}`)},getNearestTimestampMilliseconds(){if(null!=tr.audio_last_sample_pts_)return Math.floor(tr.audio_last_sample_pts_);if(null!=tr.last_pcr_){return Math.floor(tr.last_pcr_/300/tr.timescale_)}},_preDoDecode(){const e=tr.video_track_,t=tr.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===re?tr._doDecodeVideo({...e,payload:t}):e.type===ie&&tr._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?Yi(t,e.isIFrame):Ci(t,e.isIFrame),e.isIFrame&&rr.calcIframeIntervalTimestamp(e.dts);let r=rr.cryptoPayload(i,e.isIFrame);rr.decode(r,{type:re,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let i=t;_i(rr._opt.m7sCryptoAudio)&&(i=rr.cryptoPayloadAudio(t)),rr.decode(i,{type:ie,ts:e.dts,isIFrame:!1,cts:0})}},ir=null;gi()&&(ir={TAG_NAME:"worker MediaSource",_resetInIt(){ir.isAvc=null,ir.isAAC=null,ir.videoInfo={},ir.videoMeta={},ir.audioMeta={},ir.sourceBuffer=null,ir.audioSourceBuffer=null,ir.hasInit=!1,ir.hasAudioInit=!1,ir.isAudioInitInfo=!1,ir.videoMimeType="",ir.audioMimeType="",ir.cacheTrack={},ir.cacheAudioTrack={},ir.timeInit=!1,ir.sequenceNumber=0,ir.audioSequenceNumber=0,ir.firstRenderTime=null,ir.firstAudioTime=null,ir.mediaSourceAppendBufferFull=!1,ir.mediaSourceAppendBufferError=!1,ir.mediaSourceAddSourceBufferError=!1,ir.mediaSourceBufferError=!1,ir.mediaSourceError=!1,ir.prevTimestamp=null,ir.decodeDiffTimestamp=null,ir.prevDts=null,ir.prevAudioDts=null,ir.prevPayloadBufferSize=0,ir.isWidthOrHeightChanged=!1,ir.prevTs=null,ir.prevAudioTs=null,ir.eventListenList=[],ir.pendingRemoveRanges=[],ir.pendingSegments=[],ir.pendingAudioRemoveRanges=[],ir.pendingAudioSegments=[],ir.supportVideoFrameCallbackHandle=null,ir.audioSourceBufferCheckTimeout=null,ir.audioSourceNoDataCheckTimeout=null,ir.hasPendingEos=!1,ir.$video={currentTime:0,readyState:0}},init(){ir.events=new cs,ir._resetInIt(),ir.mediaSource=new self.MediaSource,ir.isDecodeFirstIIframe=!!mi(rr._opt.checkFirstIFrame),ir._bindMediaSourceEvents()},destroy(){ir.stop(),ir._clearAudioSourceBufferCheckTimeout(),ir.eventListenList&&ir.eventListenList.length&&(ir.eventListenList.forEach((e=>e())),ir.eventListenList=[]),ir._resetInIt(),ir.mediaSource=null},getState:()=>ir.mediaSource&&ir.mediaSource.readyState,isStateOpen:()=>ir.getState()===_t,isStateClosed:()=>ir.getState()===mt,isStateEnded:()=>ir.getState()===pt,_bindMediaSourceEvents(){const{proxy:e}=ir.events,t=e(ir.mediaSource,yt,(()=>{rr.debug.log(ir.TAG_NAME,"sourceOpen"),ir._onMediaSourceSourceOpen()})),i=e(ir.mediaSource,gt,(()=>{rr.debug.log(ir.TAG_NAME,"sourceClose")})),r=e(ir.mediaSource,bt,(()=>{rr.debug.log(ir.TAG_NAME,"sourceended")}));ir.eventListenList.push(t,i,r)},_onMediaSourceSourceOpen(){ir.sourceBuffer||(rr.debug.log(ir.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ir._initSourceBuffer()),ir.audioSourceBuffer||(rr.debug.log(ir.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ir._initAudioSourceBuffer()),ir._hasPendingSegments()&&ir._doAppendSegments()},decodeVideo(e,t,i,r){if(rr.isDestroyed)rr.debug.warn(ir.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(mi(ir.hasInit))if(i&&e[1]===At){const r=15&e[0];if(r===De&&mi(si()))return void ir.emitError(Te.mediaSourceH265NotSupport);ir.videoInfo.codec=r,postMessage({cmd:L,code:r});const s=new Uint8Array(e);postMessage({cmd:F,buffer:s,codecId:r},[s.buffer]),ir.hasInit=ir._decodeConfigurationRecord(e,t,i,r)}else rr.debug.warn(ir.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]}`);else if(!ir.isDecodeFirstIIframe&&i&&(ir.isDecodeFirstIIframe=!0),ir.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===Ce){i=Ui(e.slice(5))}else t===De&&(i=Oi(e));const r=ir.videoInfo;r&&r.codecWidth&&r.codecWidth&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==r.codecWidth||i.codecHeight!==r.codecWidth)&&(rr.debug.warn(ir.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${r.codecWidth}, old height is ${r.codecWidth},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),ir.isWidthOrHeightChanged=!0,ir.emitError(Te.mseWidthOrHeightChange))}if(ir.isWidthOrHeightChanged)return void rr.debug.warn(ir.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(pi(e))return void rr.debug.warn(ir.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength300&&(ir.firstAudioTime-=e,rr.debug.warn(ir.TAG_NAME,`video\n firstAudioTime is ${ir.firstRenderTime} and current time is ${ir.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${ir.firstAudioTime}`))}i=t-ir.firstAudioTime,i<0&&(rr.debug.warn(ir.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${ir.prevAudioTs},\n firstAudioTime is ${ir.firstAudioTime}`),i=null===ir.prevAudioDts?0:ir.prevAudioDts+rr._opt.mseCorrectAudioTimeDuration),null!==ir.prevAudioTs&&i<=ir.prevAudioDts&&(rr.debug.warn(ir.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${i} and prev dts is ${ir.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${ir.prevAudioTs} ,\n and diff is ${t-ir.prevAudioTs}`),i=ir.prevAudioDts+rr._opt.mseCorrectAudioTimeDuration)}rr.isPlayer?ir._decodeAudio(e,i,t):rr.isPlayback,ir.prevAudioTs=t,ir.prevAudioDts=i}else rr.debug.log(ir.TAG_NAME,"decodeAudio first frame is not iFrame")}},_checkTsIsMaxDiff:e=>ir.prevTs>0&&eS,_decodeConfigurationRecord(e,t,i,r){let s=e.slice(5),a={};if(r===Ce?a=Ui(s):r===De&&(a=Hi(s)),ir.videoInfo.width=a.codecWidth,ir.videoInfo.height=a.codecHeight,0===a.codecWidth&&0===a.codecHeight)return rr.debug.warn(ir.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(a)),ir.emitError(Te.mediaSourceDecoderConfigurationError),!1;const n={id:kt,type:"video",timescale:1e3,duration:0,avcc:s,codecWidth:a.codecWidth,codecHeight:a.codecHeight,videoType:a.videoType},o=us.generateInitSegment(n);ir.isAvc=r===Ce;let d=a.codec;return ir.videoMimeType=d?`video/mp4; codecs="${a.codec}"`:ir.isAvc?dt:lt,postMessage({cmd:U,w:a.codecWidth,h:a.codecHeight}),ir._initSourceBuffer(),ir.appendBuffer(o.buffer),ir.sequenceNumber=0,ir.cacheTrack={},ir.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,r=e[0]>>1&1,s=i===Re,a=i===Pe;if(mi(a||s))return rr.debug.warn(ir.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),ir.emitError(Te.mediaSourceAudioG711NotSupport),!1;const n={id:Ct,type:"audio",timescale:1e3};let o={};if(Vt(e)){if(o=Yt(e.slice(2)),!o)return!1;n.audioSampleRate=o.sampleRate,n.channelCount=o.channelCount,n.config=o.config,n.refSampleDuration=1024/n.audioSampleRate*n.timescale}else{if(!s)return!1;if(o=vs(e),!o)return!1;n.audioSampleRate=o.samplingRate,n.channelCount=o.channelCount,n.refSampleDuration=1152/n.audioSampleRate*n.timescale}n.codec=o.codec,n.duration=0;let d="mp4",l=o.codec,c=null;s&&mi(ri())?(d="mpeg",l="",c=new Uint8Array):c=us.generateInitSegment(n);let u=`${n.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),mi(ir.isAudioInitInfo)&&(bi=i===Pe?r?16:8:0===r?8:16,postMessage({cmd:C,code:i}),postMessage({cmd:k,sampleRate:n.audioSampleRate,channels:n.channelCount,depth:bi}),ir.isAudioInitInfo=!0),ir.audioMimeType=u,ir.isAAC=a,ir._initAudioSourceBuffer(),ir.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ir.events;if(null===ir.sourceBuffer&&null!==ir.mediaSource&&ir.isStateOpen()&&ir.videoMimeType){try{ir.sourceBuffer=ir.mediaSource.addSourceBuffer(ir.videoMimeType),rr.debug.log(ir.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ir.videoMimeType)}catch(e){return rr.debug.error(ir.TAG_NAME,"appendBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),ir.emitError(Te.mseAddSourceBufferError,e.code),void(ir.mediaSourceAddSourceBufferError=!0)}if(ir.sourceBuffer){const t=e(ir.sourceBuffer,"error",(e=>{ir.mediaSourceBufferError=!0,rr.debug.error(ir.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ir.emitError(Te.mseSourceBufferError,e.code)})),i=e(ir.sourceBuffer,"updateend",(()=>{ir._hasPendingRemoveRanges()?ir._doRemoveRanges():ir._hasPendingSegments()?ir._doAppendSegments():ir.hasPendingEos&&(rr.debug.log(ir.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ir.endOfStream())}));ir.eventListenList.push(t,i)}}else rr.debug.log(ir.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ir.isStateOpen()} and mseDecoder.isAvc === null is ${null===ir.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ir.events;if(null===ir.audioSourceBuffer&&null!==ir.mediaSource&&ir.isStateOpen()&&ir.audioMimeType){try{ir.audioSourceBuffer=ir.mediaSource.addSourceBuffer(ir.audioMimeType),ir._clearAudioSourceBufferCheckTimeout(),rr.debug.log(ir.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ir.audioMimeType)}catch(e){return rr.debug.error(ir.TAG_NAME,"appendAudioBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),ir.emitError(Te.mseAddSourceBufferError,e.code),void(ir.mediaSourceAddSourceBufferError=!0)}if(ir.audioSourceBuffer){const t=e(ir.audioSourceBuffer,"error",(e=>{ir.mediaSourceBufferError=!0,rr.debug.error(ir.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ir.emitError(Te.mseSourceBufferError,e.code)})),i=e(ir.audioSourceBuffer,"updateend",(()=>{ir._hasPendingRemoveRanges()?ir._doRemoveRanges():ir._hasPendingSegments()?ir._doAppendSegments():ir.hasPendingEos&&(rr.debug.log(ir.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ir.endOfStream())}));ir.eventListenList.push(t,i),null===ir.audioSourceNoDataCheckTimeout&&(ir.audioSourceNoDataCheckTimeout=setTimeout((()=>{ir._clearAudioNoDataCheckTimeout(),ir.emitError(Te.mediaSourceAudioNoDataTimeout)}),1e3))}}else rr.debug.log(ir.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ir.isStateOpen()} and mseDecoder.audioMimeType is ${ir.audioMimeType}`)},_decodeVideo(e,t,i,r,s){let a=e.slice(5),n=a.byteLength;if(0===n)return void rr.debug.warn(ir.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;ir.prevTimestamp||(ir.prevTimestamp=o,d=!0);const l=o-ir.prevTimestamp;if(ir.decodeDiffTimestamp=l,l>500&&!d&&rr.isPlayer&&rr.debug.warn(ir.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${ir.prevTimestamp}, diff time is ${l} ms`),ir.cacheTrack.id&&t>=ir.cacheTrack.dts){let e=8+ir.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(us.types.mdat,4),i.set(ir.cacheTrack.data,8),ir.cacheTrack.duration=t-ir.cacheTrack.dts;let r=us.moof(ir.cacheTrack,ir.cacheTrack.dts);ir.cacheTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),ir.appendBuffer(s.buffer)}else rr.debug.log(ir.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${s} cacheTrack dts is ${ir.cacheTrack&&ir.cacheTrack.dts}`),ir.timeInit=!1,ir.cacheTrack={};ir.cacheTrack||(ir.cacheTrack={}),ir.cacheTrack.id=kt,ir.cacheTrack.sequenceNumber=++ir.sequenceNumber,ir.cacheTrack.size=n,ir.cacheTrack.dts=t,ir.cacheTrack.cts=r,ir.cacheTrack.isKeyframe=i,ir.cacheTrack.data=a,ir.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},ir.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,i){let r=ir.isAAC?e.slice(2):e.slice(1),s=r.byteLength;if(ir.cacheAudioTrack.id&&t>=ir.cacheAudioTrack.dts){let e=8+ir.cacheAudioTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(us.types.mdat,4),i.set(ir.cacheAudioTrack.data,8),ir.cacheAudioTrack.duration=t-ir.cacheAudioTrack.dts;let r=us.moof(ir.cacheAudioTrack,ir.cacheAudioTrack.dts);ir.cacheAudioTrack={};let s=new Uint8Array(r.byteLength+i.byteLength);s.set(r,0),s.set(i,r.byteLength),ir.appendAudioBuffer(s.buffer)}else ir.cacheAudioTrack={};ir.cacheAudioTrack||(ir.cacheAudioTrack={}),ir.cacheAudioTrack.id=Ct,ir.cacheAudioTrack.sequenceNumber=++ir.audioSequenceNumber,ir.cacheAudioTrack.size=s,ir.cacheAudioTrack.dts=t,ir.cacheAudioTrack.cts=0,ir.cacheAudioTrack.data=r,ir.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){rr.isDestroyed?rr.debug.warn(ir.TAG_NAME,"appendBuffer() player is destroyed"):ir.mediaSourceAddSourceBufferError?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ir.mediaSourceAppendBufferFull?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ir.mediaSourceAppendBufferError?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ir.mediaSourceBufferError?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ir.pendingSegments.push(e),ir.sourceBuffer&&(rr._opt.mseAutoCleanupSourceBuffer&&ir._needCleanupSourceBuffer()&&ir._doCleanUpSourceBuffer(),mi(ir.getSourceBufferUpdating())&&ir.isStateOpen()&&mi(ir._hasPendingRemoveRanges()))?ir._doAppendSegments():ir.isStateClosed()?(ir.mediaSourceBufferError=!0,ir.emitError(Te.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ir.isStateEnded()?(ir.mediaSourceBufferError=!0,ir.emitError(Te.mseSourceBufferError,"mediaSource is end")):ir._hasPendingRemoveRanges()&&rr.debug.log(ir.TAG_NAME,`video has pending remove ranges and video length is ${ir.pendingRemoveRanges.length}, audio length is ${ir.pendingAudioRemoveRanges.length}`))},appendAudioBuffer(e){rr.isDestroyed?rr.debug.warn(ir.TAG_NAME,"appendAudioBuffer() player is destroyed"):ir.mediaSourceAddSourceBufferError?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ir.mediaSourceAppendBufferFull?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ir.mediaSourceAppendBufferError?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ir.mediaSourceBufferError?rr.debug.warn(ir.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ir.pendingAudioSegments.push(e),ir.audioSourceBuffer&&(rr._opt.mseAutoCleanupSourceBuffer&&ir._needCleanupSourceBuffer()&&ir._doCleanUpSourceBuffer(),mi(ir.getAudioSourceBufferUpdating())&&ir.isStateOpen()&&mi(ir._hasPendingRemoveRanges()))?ir._doAppendSegments():ir.isStateClosed()?(ir.mediaSourceBufferError=!0,ir.emitError(Te.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ir.isStateEnded()?(ir.mediaSourceBufferError=!0,ir.emitError(Te.mseSourceBufferError,"mediaSource is end")):ir._hasPendingRemoveRanges()&&rr.debug.log(ir.TAG_NAME,`audio has pending remove ranges and video length is ${ir.pendingRemoveRanges.length}, audio length is ${ir.pendingAudioRemoveRanges.length}`))},getSourceBufferUpdating:()=>ir.sourceBuffer&&ir.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ir.audioSourceBuffer&&ir.audioSourceBuffer.updating,stop(){ir.abortSourceBuffer(),ir.removeSourceBuffer(),ir.endOfStream()},clearUpAllSourceBuffer(){if(ir.sourceBuffer){const e=ir.sourceBuffer.buffered;for(let t=0;tir.pendingSegments.length>0||ir.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ir.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ir.isStateClosed()||ir.isStateEnded())rr.debug.log(ir.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ir.sourceBuffer){if(ir.needInitAudio()&&null===ir.audioSourceBuffer)return rr.debug.log(ir.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ir.audioSourceBufferCheckTimeout&&(ir.audioSourceBufferCheckTimeout=setTimeout((()=>{ir._clearAudioSourceBufferCheckTimeout(),ir.emitError(Te.mediaSourceAudioInitTimeout)}),1e3)));if(mi(ir.getSourceBufferUpdating())&&ir.pendingSegments.length>0){const e=ir.pendingSegments.shift();try{ir.sourceBuffer.appendBuffer(e)}catch(e){rr.debug.error(ir.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ir.stop(),ir.mediaSourceAppendBufferFull=!0,ir.emitError(Te.mediaSourceFull)):11===e.code?(ir.stop(),ir.mediaSourceAppendBufferError=!0,ir.emitError(Te.mediaSourceAppendBufferError)):(ir.stop(),ir.mediaSourceBufferError=!0,ir.emitError(Te.mseSourceBufferError,e.code))}}if(mi(ir.getAudioSourceBufferUpdating())&&ir.pendingAudioSegments.length>0){const e=ir.pendingAudioSegments.shift();try{ir.audioSourceBuffer.appendBuffer(e)}catch(e){rr.debug.error(ir.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ir.stop(),ir.mediaSourceAppendBufferFull=!0,ir.emitError(Te.mediaSourceFull)):11===e.code?(ir.stop(),ir.mediaSourceAppendBufferError=!0,ir.emitError(Te.mediaSourceAppendBufferError)):(ir.stop(),ir.mediaSourceBufferError=!0,ir.emitError(Te.mseSourceBufferError,e.code))}}}else rr.debug.log(ir.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ir.$video.currentTime;if(ir.sourceBuffer){const t=ir.sourceBuffer.buffered;let i=!1;for(let r=0;r=rr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-rr._opt.mseAutoCleanupMinBackwardDuration;ir.pendingRemoveRanges.push({start:s,end:t})}}else a=rr._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-rr._opt.mseAutoCleanupMinBackwardDuration;ir.pendingAudioRemoveRanges.push({start:s,end:t})}}else air.pendingRemoveRanges.length>0||ir.pendingAudioRemoveRanges.length>0,needInitAudio:()=>rr._opt.hasAudio&&rr._opt.mseDecodeAudio,_doRemoveRanges(){if(ir.sourceBuffer&&mi(ir.getSourceBufferUpdating())){let e=ir.pendingRemoveRanges;for(;e.length&&mi(ir.getSourceBufferUpdating());){let t=e.shift();try{ir.sourceBuffer.remove(t.start,t.end)}catch(e){rr.debug.warn(ir.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ir.audioSourceBuffer&&mi(ir.getAudioSourceBufferUpdating())){let e=ir.pendingAudioRemoveRanges;for(;e.length&&mi(ir.getAudioSourceBufferUpdating());){let t=e.shift();try{ir.audioSourceBuffer.remove(t.start,t.end)}catch(e){rr.debug.warn(ir.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(mi(rr._opt.mseAutoCleanupSourceBuffer))return!1;const e=ir.$video.currentTime;if(ir.sourceBuffer){let t=ir.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=rr._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ir.audioSourceBuffer){let t=ir.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=rr._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ir.audioSourceBufferCheckTimeout&&(clearTimeout(ir.audioSourceBufferCheckTimeout),ir.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ir.audioSourceNoDataCheckTimeout&&(clearTimeout(ir.audioSourceNoDataCheckTimeout),ir.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ir.mediaSource.handle,emitError(e){postMessage({cmd:te,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let rr={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Ut,_opt:xi(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){rr.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:rr.getVideoBufferLength(),audioDemuxBufferDelay:rr.getAudioBufferLength(),streamBufferByteLength:rr.getStreamBufferLength(),netBuf:rr.networkDelay||0,pushLatestDelay:rr.pushLatestDelay||0,latestDelay:rr.delay,isStreamTsMoreThanLocal:qe});postMessage({cmd:R,type:xe,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return rr._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||rr._opt.hasVideo&&!Oe)return-1;if(t===ie)return rr.delay;if(rr.preDelayTimestamp&&rr.preDelayTimestamp>e)return rr.preDelayTimestamp-e>1e3&&rr.debug.warn("worker",`getDelay() and preDelayTimestamp is ${rr.preDelayTimestamp} > timestamp is ${e} more than ${rr.preDelayTimestamp-e}ms and return ${rr.delay}`),rr.preDelayTimestamp=e,rr.delay;if(rr.firstTimestamp){if(e){const t=Date.now()-rr.startTimestamp,i=e-rr.firstTimestamp;t>=i?(qe=!1,rr.delay=t-i):(qe=!0,rr.delay=i-t)}}else rr.firstTimestamp=e,rr.startTimestamp=Date.now(),rr.delay=-1;return rr.preDelayTimestamp=e,rr.delay},getDelayNotUpdateDelay:function(e,t){if(!e||rr._opt.hasVideo&&!Oe)return-1;if(t===ie)return rr.pushLatestDelay;if(rr.preDelayTimestamp&&rr.preDelayTimestamp-e>1e3)return rr.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${rr.preDelayTimestamp} > timestamp is ${e} more than ${rr.preDelayTimestamp-e}ms and return -1`),-1;if(rr.firstTimestamp){let t=-1;if(e){const i=Date.now()-rr.startTimestamp,r=e-rr.firstTimestamp;i>=r?(qe=!1,t=i-r):(qe=!0,t=r-i)}return t}return-1},resetDelay:function(){rr.firstTimestamp=null,rr.startTimestamp=null,rr.delay=-1,rr.dropping=!1},resetAllDelay:function(){rr.resetDelay(),rr.preDelayTimestamp=null},doDecode:function(e){rr._opt.isEmitSEI&&e.type===re&&rr.isWorkerFetch&&rr.findSei(e.payload,e.ts),rr.isPlayUseMSEAndDecoderInWorker()?e.type===ie?rr._opt.mseDecodeAudio?ir.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===re&&ir.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):rr._opt.useWCS&&rr.useOffscreen()&&e.type===re&&a.decode?a.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===r.length)return;const t=e.ts,s=r[0],a=e.type===re&&pi(e.payload);if(mi(i))a&&(rr.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n isVideoSqeHeader is ${a}`),r.shift(),rr.doDecode(s));else{const i=s.ts-t,n=s.type===ie&&e.type===re;(i<=20||n||a)&&(rr.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${s.type} ts is ${s.ts}\n diff is ${i} and isVideoAndNextAudio is ${n} and isVideoSqeHeader is ${a}`),r.shift(),rr.doDecode(s))}},init:function(){rr.debug.log("worker","init and opt is",JSON.stringify(rr._opt));const e=rr._opt.playType===m,t=rr._opt.playType===g;if(Ni.init(),rr.isPlayer=e,rr.isPlayback=t,rr.isPlayUseMSEAndDecoderInWorker()&&ir&&ir.init(),rr.isPlaybackCacheBeforeDecodeForFpsRender())rr.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{rr.debug.log("worker","setInterval()");const t=rr._opt.videoBuffer+rr._opt.videoBufferDelay,i=()=>{let i=null;if(r.length){if(rr.isPushDropping)return void rr.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${r.length}`);if(rr.dropping){for(i=r.shift(),rr.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${i.isIFrame} and delay is ${rr.delay} and bufferlist is ${r.length}`);!i.isIFrame&&r.length;)i=r.shift();const e=rr.getDelayNotUpdateDelay(i.ts,i.type);i.isIFrame&&e<=rr.getNotDroppingDelayTs()&&(rr.debug.log("worker","loop() is dropping = false, is iFrame"),rr.dropping=!1,rr.doDecode(i),rr.decodeNext(i))}else if(rr.isPlayback||rr.isPlayUseMSE()||0===rr._opt.videoBuffer)for(;r.length;)i=r.shift(),rr.doDecode(i);else if(i=r[0],-1===rr.getDelay(i.ts,i.type))rr.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",i.ts),r.shift(),rr.doDecode(i),rr.decodeNext(i);else if(rr.delay>t&&e)rr.hasIframeInBufferList()?(rr.debug.log("worker",`delay is ${rr.delay} > maxDelay ${t}, set dropping is true`),rr.resetAllDelay(),rr.dropping=!0,postMessage({cmd:G})):(r.shift(),rr.doDecode(i),rr.decodeNext(i));else for(;r.length;){if(i=r[0],!(rr.getDelay(i.ts,i.type)>rr._opt.videoBuffer)){rr.delay<0&&rr.debug.warn("worker",`loop() do not decode and delay is ${rr.delay}, bufferList is ${r.length}`);break}r.shift(),rr.doDecode(i)}}else-1!==rr.delay&&rr.debug.log("worker","loop() bufferList is empty and reset delay"),rr.resetAllDelay()};rr.stopId=setInterval((()=>{let e=(new Date).getTime();rt||(rt=e);const t=e-rt;t>100&&rr.debug.warn("worker",`loop demux diff time is ${t}`),i(),rt=(new Date).getTime()}),20)}if(mi(rr._opt.checkFirstIFrame)&&(Oe=!0),rr.isPlayUseMSEAndDecoderInWorker()&&ir){const e=ir.getHandle();e&&postMessage({cmd:Q,mseHandle:e},[e])}},playbackCacheLoop:function(){rr.stopId&&(clearInterval(rr.stopId),rr.stopId=null);const e=()=>{let e=null;r.length&&(e=r.shift(),rr.doDecode(e))};e();const t=Math.ceil(1e3/(rr.streamFps*rr._opt.playbackRate));rr.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${rr.streamFps}, streamAudioFps is ${rr.streamAudioFps} ,streamVideoFps is ${rr.streamVideoFps} playbackRate is ${rr._opt.playbackRate}`),rr.stopId=setInterval(e,t)},close:function(){if(rr.debug.log("worker","close"),rr.isDestroyed=!0,Ri(),!o||1!==o.readyState&&2!==o.readyState?o&&rr.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(vi=!0,o.close(1e3,"Client disconnecting")),o=null,rr.stopStreamRateAndStatsInterval(),rr.stopId&&(clearInterval(rr.stopId),rr.stopId=null),rr.mp3Demuxer&&(rr.mp3Demuxer.destroy(),rr.mp3Demuxer=null),rr.writableStream&&mi(rr.writableStream.locked)&&rr.writableStream.close().catch((e=>{rr.debug.log("worker","close() and writableStream.close() error",e)})),rr.writableStream=null,sr)try{sr.clear&&sr.clear(),sr=null}catch(e){rr.debug.warn("worker","close() and audioDecoder.clear error",e)}if(ar)try{ar.clear&&ar.clear(),ar=null}catch(e){rr.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,rt=null,qe=!1,a&&(a.reset&&a.reset(),a=null),ir&&(ir.destroy(),ir=null),rr.firstTimestamp=null,rr.startTimestamp=null,rr.networkDelay=0,rr.streamFps=null,rr.streamAudioFps=null,rr.streamVideoFps=null,rr.delay=-1,rr.pushLatestDelay=-1,rr.preDelayTimestamp=null,rr.dropping=!1,rr.isPushDropping=!1,rr.isPlayer=!0,rr.isPlayback=!1,rr.isWorkerFetch=!1,rr._opt=xi(),rr.webglObj&&(rr.webglObj.destroy(),rr.offscreenCanvas.removeEventListener("webglcontextlost",rr.onOffscreenCanvasWebglContextLost),rr.offscreenCanvas.removeEventListener("webglcontextrestored",rr.onOffscreenCanvasWebglContextRestored),rr.offscreenCanvas=null,rr.offscreenCanvasGL=null,rr.offscreenCanvasCtx=null),r=[],s=[],c&&(c.buffer=null,c=null),v=null,B=null,ge=!1,ye=!1,Oe=!1,Gt=!1,Wt=!1,Kt=!1,ti=null,yi=null,ht=[],St=0,Bt=0,ct=null,ut=null,Mt=null,zt=null,bi=null,Rt=0,Nt=0,ft=null,vt=null,rr.fetchStatus=Ut,Si=!0,Ni.destroy(),Vi.destroy(),er.destroy(),tr.destroy(),postMessage({cmd:W})},pushBuffer:function(e,t){if(t.type===ie&&Vt(e)){if(rr.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),rr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:K,buffer:t},[t.buffer])}rr.decodeAudio(e,t.ts)}else if(t.type===re&&t.isIFrame&&pi(e)){if(rr.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),rr._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:X,buffer:t},[t.buffer])}rr.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(rr._opt.isRecording)if(rr._opt.isRecordTypeFlv){const i=new Uint8Array(e);postMessage({cmd:Z,type:t.type,buffer:i,ts:t.ts},[i.buffer])}else if(rr._opt.recordType===y)if(t.type===re){const i=new Uint8Array(e).slice(5);postMessage({cmd:P,buffer:i,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[i.buffer])}else if(t.type===ie&&rr._opt.isWasmMp4){const i=new Uint8Array(e),r=$t(i)?i.slice(2):i.slice(1);postMessage({cmd:D,buffer:r,ts:t.ts},[r.buffer])}if(rr.isPlayer&&Rt>0&&zt>0&&t.type===re){const e=t.ts-zt,i=Rt+Rt/2;e>i&&rr.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${zt},\n diff is ${e} and preTimestampDuration is ${Rt} and maxDiff is ${i}\n maybe trigger black screen or flower screen\n `)}if(rr.isPlayer&&zt>0&&t.type===re&&t.tsS&&(rr.debug.warn("worker",`pushBuffer,\n preTimestamp is ${zt}, options.ts is ${t.ts},\n diff is ${zt-t.ts} more than 3600000,\n and resetAllDelay`),rr.resetAllDelay(),zt=null,Rt=0),rr.isPlayer&&zt>0&&t.ts<=zt&&t.type===re&&(rr.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${zt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),rr._opt.isDropSameTimestampGop&&mi(t.isIFrame)&&Oe)){const e=rr.hasIframeInBufferList(),t=mi(rr.isPushDropping);return rr.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?rr.dropBuffer$2():(rr.clearBuffer(!0),_i(rr._opt.checkFirstIFrame)&&_i(i)&&(rr.isPlayUseMSEAndDecoderInWorker()?ir.isDecodeFirstIIframe=!1:postMessage({cmd:J}))))}if(rr.isPlayer&&Oe){const e=rr._opt.videoBuffer+rr._opt.videoBufferDelay,i=rr.getDelayNotUpdateDelay(t.ts,t.type);rr.pushLatestDelay=i,i>e&&rr.delay0&&rr.hasIframeInBufferList()&&!1===rr.isPushDropping&&(rr.debug.log("worker",`pushBuffer(), pushLatestDelay is ${i} more than ${e} and decoder.delay is ${rr.delay} and has iIframe and next decoder.dropBuffer$2()`),rr.dropBuffer$2())}if(rr.isPlayer&&t.type===re&&(zt>0&&(Rt=t.ts-zt),Nt=e.byteLength,zt=t.ts),t.type===ie?r.push({ts:t.ts,payload:e,decoder:{decode:rr.decodeAudio},type:ie,isIFrame:!1}):t.type===re&&r.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:rr.decodeVideo},type:re,isIFrame:t.isIFrame}),rr.isPlaybackCacheBeforeDecodeForFpsRender()&&(ai(rr.streamVideoFps)||ai(rr.streamAudioFps))){let e=rr.streamVideoFps,t=rr.streamAudioFps;if(ai(rr.streamVideoFps)&&(e=ui(r,re),e&&(rr.streamVideoFps=e,postMessage({cmd:O,value:rr.streamVideoFps}),rr.streamFps=t?e+t:e,mi(rr._opt.hasAudio)&&(rr.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),rr.streamAudioFps=0),rr.playbackCacheLoop())),ai(rr.streamAudioFps)&&(t=ui(r,ie),t&&(rr.streamAudioFps=t,rr.streamFps=e?e+t:t,rr.playbackCacheLoop())),ai(rr.streamVideoFps)&&ai(rr.streamAudioFps)){const i=r.map((e=>({type:e.type,ts:e.ts})));rr.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${r.length}, and ts list is ${JSON.stringify(i)}`)}const i=rr.getAudioBufferLength()>0,s=i?60:40;r.length>=s&&(rr.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${r.length} more than ${s}, and hasAudio is ${i} an set streamFps is 25`),rr.streamVideoFps=25,postMessage({cmd:O,value:rr.streamVideoFps}),i?(rr.streamAudioFps=25,rr.streamFps=rr.streamVideoFps+rr.streamAudioFps):rr.streamFps=rr.streamVideoFps,rr.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return r.forEach((t=>{t.type===re&&(e+=1)})),e},hasIframeInBufferList:()=>r.some((e=>e.type===re&&e.isIFrame)),isAllIframeInBufferList(){const e=rr.getVideoBufferLength();let t=0;return r.forEach((e=>{e.type===re&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>rr._opt.videoBuffer+rr._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return r.forEach((t=>{t.type===ie&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),rr._opt.isNakedFlow?Ni.lastBuf&&(e=Ni.lastBuf.byteLength):rr._opt.isTs?tr._remainingPacketData&&(e=tr._remainingPacketData.byteLength):rr._opt.isFmp4&&Vi.mp4Box&&(e=Vi.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){rr.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),rr.isWorkerFetch=!0,t.isFlv?rr._opt.isFlv=!0:t.isFmp4?rr._opt.isFmp4=!0:t.isMpeg4?rr._opt.isMpeg4=!0:t.isNakedFlow?rr._opt.isNakedFlow=!0:t.isTs&&(rr._opt.isTs=!0),d=ii((e=>{postMessage({cmd:R,type:ve,value:e})})),rr.startStreamRateAndStatsInterval(),t.isFmp4&&(Vi.listenMp4Box(),rr._opt.isFmp4Private&&Vi.initTransportDescarmber()),t.protocol===f?(c=new wi(rr.demuxFlv()),fetch(e,{signal:n.signal}).then((e=>{if(_i(vi))return rr.debug.log("worker","request abort and run res.body.cancel()"),rr.fetchStatus=Ut,void e.body.cancel();if(!hi(e))return rr.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Ri(),void postMessage({cmd:R,type:Te.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:R,type:Be}),li())rr.writableStream=new WritableStream({write:e=>n&&n.signal&&n.signal.aborted?(rr.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(rr.fetchStatus=Tt)):_i(vi)?(rr.debug.log("worker","writableStream write() and requestAbort is true so return"),void(rr.fetchStatus=Tt)):void("string"!=typeof e?(rr.fetchStatus=Et,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?rr.demuxFmp4(e):t.isMpeg4?rr.demuxMpeg4(e):t.isTs&&rr.demuxTs(e)):rr.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{rr.debug.log("worker","writableStream close()"),rr.fetchStatus=Tt,c=null,Ri(),postMessage({cmd:R,type:be,value:p,msg:"fetch done"})},abort:e=>{if(n&&n.signal&&n.signal.aborted)return rr.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(rr.fetchStatus=Tt);c=null,e.name!==wt?(rr.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Ri(),postMessage({cmd:R,type:Te.fetchError,value:e.toString()})):rr.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(rr.writableStream);else{const i=e.body.getReader(),r=()=>{i.read().then((e=>{let{done:i,value:s}=e;return i?(rr.debug.log("worker","fetchNext().then() and done is true"),rr.fetchStatus=Tt,c=null,Ri(),void postMessage({cmd:R,type:be,value:p,msg:"fetch done"})):n&&n.signal&&n.signal.aborted?(rr.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(rr.fetchStatus=Tt)):_i(vi)?(rr.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(rr.fetchStatus=Tt)):void("string"!=typeof s?(rr.fetchStatus=Et,d(s.byteLength),t.isFlv?c.write(s):t.isFmp4?rr.demuxFmp4(s):t.isMpeg4&&rr.demuxMpeg4(s),r()):rr.debug.warn("worker",`fetchNext().then() and value "${s}" is string so return`))})).catch((e=>{if(n&&n.signal&&n.signal.aborted)return rr.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(rr.fetchStatus=Tt);c=null,e.name!==wt?(rr.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Ri(),postMessage({cmd:R,type:Te.fetchError,value:e.toString()})):rr.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};r()}})).catch((e=>{n&&n.signal&&n.signal.aborted?rr.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==wt?(rr.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Ri(),postMessage({cmd:R,type:Te.fetchError,value:e.toString()}),c=null):rr.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))):t.protocol===h&&(t.isFlv&&(c=new wi(rr.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{rr.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:R,type:Be}),postMessage({cmd:R,type:Ee})},o.onclose=e=>{b?rr.debug.log("worker","fetchStream, WebsocketStream socket close and isSocketError is true , so return"):(rr.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&rr.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),_i(vi)?rr.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:R,type:be,value:_,msg:e.code})))},o.onerror=e=>{rr.debug.error("worker","fetchStream, WebsocketStream socket error",e),b=!0,c=null,postMessage({cmd:R,type:Te.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?rr.demuxFmp4(e.data):t.isMpeg4?rr.demuxMpeg4(e.data):rr._opt.isNakedFlow?rr.demuxNakedFlow(e.data):rr.demuxM7s(e.data)):rr.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const s=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let a=i[0];const n=(yield s).slice();switch(r){case se:if(n.byteLength>0){let e=n;_i(rr._opt.m7sCryptoAudio)&&(e=rr.cryptoPayloadAudio(n)),rr.decode(e,{type:ie,ts:a})}else rr.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${n.byteLength} and return`);break;case ae:if(n.byteLength>=6){const e=n[0];if(rr._isEnhancedH265Header(e))rr._decodeEnhancedH265Video(n,a);else{n[0];let e=n[0]>>4===xt;if(e&&pi(n)&&null===ti){const e=15&n[0];ti=e===De,yi=Jt(n,ti),rr.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${ti} and nalUnitSize is ${yi}`)}e&&rr.calcIframeIntervalTimestamp(a),rr.isPlayer&&rr.calcNetworkDelay(a),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let t=i[0],r=rr.cryptoPayload(n,e);rr.decode(r,{type:re,ts:a,isIFrame:e,cts:t})}}else rr.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${n.byteLength} and return`);break;case ne:postMessage({cmd:j,buffer:n},[n.buffer]);break;default:rr.debug.log("worker",`demuxFlv() type is ${r}`)}}},decode:function(e,t){t.type===ie?rr._opt.hasAudio&&(postMessage({cmd:R,type:Se,value:e.byteLength}),rr.isPlayer?rr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):rr.isPlayback&&(rr.isPlaybackOnlyDecodeIFrame()||(rr.isPlaybackCacheBeforeDecodeForFpsRender(),rr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===re&&rr._opt.hasVideo&&(postMessage({cmd:R,type:we,value:e.byteLength}),postMessage({cmd:R,type:Ae,value:t.ts}),rr.isPlayer?rr.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):rr.isPlayback&&(rr.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&rr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(rr.isPlaybackCacheBeforeDecodeForFpsRender(),rr.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let i=e;return rr._opt.isM7sCrypto?rr._opt.cryptoIV&&rr._opt.cryptoIV.byteLength>0&&rr._opt.cryptoKey&&rr._opt.cryptoKey.byteLength>0?i=Pr(e,rr._opt.cryptoKey,rr._opt.cryptoIV,ti):rr.debug.error("worker",`isM7sCrypto cryptoKey.length is ${rr._opt.cryptoKey&&rr._opt.cryptoKey.byteLength} or cryptoIV.length is ${rr._opt.cryptoIV&&rr._opt.cryptoIV.byteLength} null`):rr._opt.isSm4Crypto?rr._opt.sm4CryptoKey&&t?i=is(e,rr._opt.sm4CryptoKey):rr._opt.sm4CryptoKey||rr.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):rr._opt.isXorCrypto&&(rr._opt.cryptoIV&&rr._opt.cryptoIV.byteLength>0&&rr._opt.cryptoKey&&rr._opt.cryptoKey.byteLength>0?i=ds(e,rr._opt.cryptoKey,rr._opt.cryptoIV,ti):rr.debug.error("worker",`isXorCrypto cryptoKey.length is ${rr._opt.cryptoKey&&rr._opt.cryptoKey.byteLength} or cryptoIV.length is ${rr._opt.cryptoIV&&rr._opt.cryptoIV.byteLength} null`)),i},cryptoPayloadAudio:function(e){let t=e;if(rr._opt.isM7sCrypto)if(rr._opt.cryptoIV&&rr._opt.cryptoIV.byteLength>0&&rr._opt.cryptoKey&&rr._opt.cryptoKey.byteLength>0){e[0]>>4===Pe&&(t=Mr(e,rr._opt.cryptoKey,rr._opt.cryptoIV))}else rr.debug.error("worker",`isM7sCrypto cryptoKey.length is ${rr._opt.cryptoKey&&rr._opt.cryptoKey.byteLength} or cryptoIV.length is ${rr._opt.cryptoIV&&rr._opt.cryptoIV.byteLength} null`);return t},setCodecAudio:function(e,t){const i=e[0]>>4,r=e[0]>>1&1;if(bi=i===Pe?r?16:8:0===r?8:16,sr&&sr.setCodec)if(Vt(e)||i===Me||i===ze||i===Re){rr.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${i}`);const r=i===Pe?e.slice(2):new Uint8Array(0);sr.setCodec(i,rr._opt.sampleRate,r),i===Pe&&postMessage({cmd:I,buffer:r},[r.buffer]),ye=!0,i!==Pe&&(i===Re?(rr.mp3Demuxer||(rr.mp3Demuxer=new as(rr),rr.mp3Demuxer.on("data",((e,t)=>{sr.decode(e,t)}))),rr.mp3Demuxer.dispatch(e.slice(1),t)):sr.decode(e.slice(1),t))}else rr.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",i);else rr.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(rr.isDestroyed)rr.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(rr.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ir.decodeAudio(e,t);else if(_i(i)&&_i(rr._opt.mseDecodeAudio))postMessage({cmd:z,payload:e,ts:t,cts:t},[e.buffer]);else{const i=e[0]>>4;if(ye){if(Vt(e))return void rr.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");i===Re?rr.mp3Demuxer.dispatch(e.slice(1),t):sr.decode(i===Pe?e.slice(2):e.slice(1),t)}else rr.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(ar&&ar.setCodec)if(pi(e))if(t===Ce||t===De){rr.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const i=e.slice(5);if(t===Ce&&rr._opt.useSIMD){const e=Ui(i);if(e.codecWidth>w||e.codecHeight>w)return postMessage({cmd:$}),void rr.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const r=new Uint8Array(e);ge=!0,ar.setCodec(t,i),postMessage({cmd:L,code:t}),postMessage({cmd:F,buffer:r,codecId:t},[r.buffer])}else rr.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else rr.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else rr.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,r){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(rr.isDestroyed)rr.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(rr.isPlayUseMSEAndDecoderInWorker())ir.decodeVideo(e,t,r,s);else if(_i(i))postMessage({cmd:M,payload:e,isIFrame:r,ts:t,cts:s,delay:rr.delay},[e.buffer]);else if(ge)if(!Oe&&r&&(Oe=!0),Oe){if(r&&pi(e)){const t=15&e[0];let i={};if(t===Ce){i=Ui(e.slice(5))}else t===De&&(i=Oi(e));i.codecWidth&&i.codecHeight&&v&&B&&(i.codecWidth!==v||i.codecHeight!==B)&&(rr.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${v}, old height is ${B},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),Wt=!0,postMessage({cmd:H}))}if(Wt)return void rr.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Kt)return void rr.debug.warn("worker","decodeVideo: simd decode error, and return");if(pi(e))return void rr.debug.warn("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];rr.debug.log("worker",`clearBuffer,bufferList length is ${r.length}, need clear is ${e}`),e&&(r=[]),rr.isPlayer&&(rr.resetAllDelay(),_i(rr._opt.checkFirstIFrame)&&(rr.dropping=!0,postMessage({cmd:G}))),_i(rr._opt.checkFirstIFrame)&&mi(i)&&(Oe=!1)},dropBuffer$2:function(){if(r.length>0){let e=r.findIndex((e=>_i(e.isIFrame)&&e.type===re));if(rr.isAllIframeInBufferList())for(let t=0;t=rr.getNotDroppingDelayTs()){rr.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${rr.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){rr.isPushDropping=!0,postMessage({cmd:G});const t=r.length;r=r.slice(e);const i=r.shift();rr.resetAllDelay(),rr.getDelay(i.ts,i.type),rr.doDecode(i),rr.isPushDropping=!1,rr.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${r.length} and new delay is ${rr.delay} `)}else rr.isPushDropping=!1}0===r.length&&(rr.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),i=t.getUint32(1,!1),r=t.getUint8(0),s=new ArrayBuffer(4),a=new Uint32Array(s);switch(r){case ie:rr.decode(new Uint8Array(e,5),{type:ie,ts:i});break;case re:if(t.byteLength>=11){const r=new Uint8Array(e,5),s=r[0];if(rr._isEnhancedH265Header(s))rr._decodeEnhancedH265Video(r,i);else{const e=t.getUint8(5)>>4==1;if(e&&(rr.calcIframeIntervalTimestamp(i),pi(r)&&null===ti)){const e=15&r[0];ti=e===De}rr.isPlayer&&rr.calcNetworkDelay(i),a[0]=r[4],a[1]=r[3],a[2]=r[2],a[3]=0;let s=a[0],n=rr.cryptoPayload(r,e);rr.decode(n,{type:re,ts:i,isIFrame:e,cts:s})}}else rr.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Ni.dispatch(e)},demuxFmp4:function(e){Vi.dispatch(e)},demuxMpeg4:function(e){er.dispatch(e)},demuxTs:function(e){tr.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const i=e[0],r=48&i,s=15&i,a=e.slice(1,5),n=new ArrayBuffer(4),o=new Uint32Array(n),d="a"==String.fromCharCode(a[0]);if(ti=mi(d),s===It){if(r===Pt){const i=e.slice(5);if(d);else{const r=new Uint8Array(5+i.length);r.set([28,0,0,0,0],0),r.set(i,5),yi=Jt(e,ti),rr.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${ti} and nalUnitSize is ${yi}`),rr.decode(r,{type:re,ts:t,isIFrame:!0,cts:0})}}}else if(s===Lt){let i=e,s=0;const a=r===Pt;if(a&&rr.calcIframeIntervalTimestamp(t),d);else{o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,s=o[0];i=Yi(e.slice(8),a),i=rr.cryptoPayload(i,a),rr.decode(i,{type:re,ts:t,isIFrame:a,cts:s})}}else if(s===Ft){const i=r===Pt;i&&rr.calcIframeIntervalTimestamp(t);let s=Yi(e.slice(5),i);s=rr.cryptoPayload(s,i),rr.decode(s,{type:re,ts:t,isIFrame:i,cts:0})}},_isEnhancedH265Header:function(e){return(e&Dt)===Dt},findSei:function(e,t){let i=4;ni(yi)&&(i=yi);Xt(e.slice(5),i).forEach((e=>{const i=ti?e[0]>>>1&63:31&e[0];(ti&&(i===at||i===st)||mi(ti)&&i===$e)&&postMessage({cmd:q,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(Oe&&e>0))return;null===ct?(ct=e,ut=Qt()):et?i-t:0;rr.networkDelay=r,r>rr._opt.networkDelay&&rr._opt.playType===m&&(rr.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${ct} vs start is ${t},local diff is ${i} ,delay is ${r}`),postMessage({cmd:R,type:Ue,value:r}))},calcIframeIntervalTimestamp:function(e){null===Mt?Mt=e:Mt=rr._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return rr.isPlayer&&rr._opt.useMSE&&_i(i)},isPlayUseMSEAndDecoderInWorker:function(){return rr.isPlayUseMSE()&&rr._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return rr.isPlayUseMSEAndDecoderInWorker()&&rr._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){rr.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){rr.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Gt=!0,rr.webglObj.destroy(),rr.webglObj=null,rr.offscreenCanvasGL=null,setTimeout((()=>{rr.offscreenCanvasGL=rr.offscreenCanvas.getContext("webgl"),rr.offscreenCanvasGL&&rr.offscreenCanvasGL.getContextAttributes().stencil?(rr.webglObj=u(rr.offscreenCanvasGL,rr._opt.openWebglAlignment),Gt=!1):rr.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){rr.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,i){postMessage({cmd:L,code:e}),postMessage({cmd:U,w:t,h:i}),v=t,B=i,rr.useOffscreen()&&(rr.offscreenCanvas=new OffscreenCanvas(t,i),rr.offscreenCanvasGL=rr.offscreenCanvas.getContext("webgl"),rr.webglObj=u(rr.offscreenCanvasGL,rr._opt.openWebglAlignment),rr.offscreenCanvas.addEventListener("webglcontextlost",rr.onOffscreenCanvasWebglContextLost,!1),rr.offscreenCanvas.addEventListener("webglcontextrestored",rr.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,i){postMessage({cmd:C,code:e}),postMessage({cmd:k,sampleRate:t,channels:i,depth:bi}),Bt=i},yuvData:function(t,i){if(rr.isDestroyed)return void rr.debug.log("worker","yuvData, decoder is destroyed and return");const r=v*B*3/2;let s=e.HEAPU8.subarray(t,t+r),a=new Uint8Array(s);if(ft=null,rr.useOffscreen())try{if(Gt)return;rr.webglObj.renderYUV(v,B,a);let e=rr.offscreenCanvas.transferToImageBitmap();postMessage({cmd:E,buffer:e,delay:rr.delay,ts:i},[e])}catch(e){rr.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:E,output:a,delay:rr.delay,ts:i},[a.buffer])},pcmData:function(e,i,r){if(rr.isDestroyed)return void rr.debug.log("worker","pcmData, decoder is destroyed and return");let a=i,n=[],o=0,d=rr._opt.audioBufferSize;for(let i=0;i<2;i++){let r=t.HEAPU32[(e>>2)+i]>>2;n[i]=t.HEAPF32.subarray(r,r+a)}if(St){if(!(a>=(i=d-St)))return St+=a,s[0]=Float32Array.of(...s[0],...n[0]),void(2==Bt&&(s[1]=Float32Array.of(...s[1],...n[1])));ht[0]=Float32Array.of(...s[0],...n[0].subarray(0,i)),2==Bt&&(ht[1]=Float32Array.of(...s[1],...n[1].subarray(0,i))),postMessage({cmd:T,buffer:ht,ts:r},ht.map((e=>e.buffer))),o=i,a-=i}for(St=a;St>=d;St-=d)ht[0]=n[0].slice(o,o+=d),2==Bt&&(ht[1]=n[1].slice(o-d,o)),postMessage({cmd:T,buffer:ht,ts:r},ht.map((e=>e.buffer)));St&&(s[0]=n[0].slice(o),2==Bt&&(s[1]=n[1].slice(o))),n=[]},errorInfo:function(e){null===ft&&(ft=Qt());const t=Qt(),i=ei(vt>0?2*vt:5e3,1e3,5e3),r=t-ft;r>i&&(rr.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${vt} and diff is ${r} and maxDiff is ${i}\n and replay`),Kt=!0,postMessage({cmd:V}))},sendWebsocketMessage:function(e){o?o.readyState===ke?o.send(e):rr.debug.error("worker","socket is not open"):rr.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:Y,type:t,buffer:e},[e.buffer])}};rr.debug=new Ai(rr);let sr=null;t.AudioDecoder&&(sr=new t.AudioDecoder(rr));let ar=null;e.VideoDecoder&&(ar=new e.VideoDecoder(rr)),postMessage({cmd:x}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case oe:try{rr._opt=Object.assign(rr._opt,JSON.parse(t.opt))}catch(e){}rr.init();break;case de:rr.pushBuffer(t.buffer,t.options);break;case le:rr.decodeAudio(t.buffer,t.ts);break;case ce:rr.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case fe:rr.clearBuffer(t.needClear);break;case pe:rr.fetchStream(t.url,JSON.parse(t.opt));break;case ue:rr.debug.log("worker","close",JSON.stringify(t.options)),t.options&&mi(t.options.isVideoInited)&&(Si=t.options.isVideoInited),rr.close();break;case he:rr.debug.log("worker","updateConfig",t.key,t.value),rr._opt[t.key]=t.value,"playbackRate"===t.key&&(rr.playbackUpdatePlaybackRate(),rr.isPlaybackCacheBeforeDecodeForFpsRender()&&rr.playbackCacheLoop());break;case _e:rr.sendWebsocketMessage(t.message);break;case me:ir.$video.currentTime=Number(t.message)}}}({},{},!0)})); diff --git a/public/js/jessibuca-pro/decoder-pro-hard.js b/public/js/jessibuca-pro/decoder-pro-hard.js new file mode 100644 index 0000000..50ff56c --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-hard.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href,function(e){var t,i;(e=void 0!==(e=e||{})?e:{}).ready=new Promise((function(e,r){t=e,i=r})),(e=void 0!==e?e:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,s,a,o,d,l,c=Object.assign({},e),u="./this.program",h="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,_="";p?(_=f?require("path").dirname(_)+"/":__dirname+"/",l=()=>{d||(o=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{l(),e=d.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(u=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof J))throw e})),process.on("unhandledRejection",(function(e){throw e})),e.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?_=self.location.href:"undefined"!=typeof document&&document.currentScript&&(_=document.currentScript.src),r&&(_=r),_=0!==_.indexOf("blob:")?_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var m,g,y=e.print||console.log.bind(console),v=e.printErr||console.warn.bind(console);Object.assign(e,c),c=null,e.arguments&&e.arguments,e.thisProgram&&(u=e.thisProgram),e.quit&&e.quit,e.wasmBinary&&(m=e.wasmBinary),e.noExitRuntime,"object"!=typeof WebAssembly&&Y("no native wasm support detected");var b=!1;function w(e,t){e||Y(t)}var S,E,A,B,x,U,T,k,C,D,I="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&I)return I.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function P(e,t){return e?F(A,e,t):""}function L(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}e.INITIAL_MEMORY;var R,z,N,O,G=[],H=[],$=[],V=0,W=null;function j(t){V++,e.monitorRunDependencies&&e.monitorRunDependencies(V)}function q(t){if(V--,e.monitorRunDependencies&&e.monitorRunDependencies(V),0==V&&W){var r=W;W=null,r()}}function Y(t){e.onAbort&&e.onAbort(t),v(t="Aborted("+t+")"),b=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw i(r),r}function K(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){return e.startsWith("file://")}function Z(e){try{if(e==R&&m)return new Uint8Array(m);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){Y(e)}}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Q(t){for(;t.length>0;)t.shift()(e)}function ee(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){T[this.ptr+4>>2]=e},this.get_type=function(){return T[this.ptr+4>>2]},this.set_destructor=function(e){T[this.ptr+8>>2]=e},this.get_destructor=function(){return T[this.ptr+8>>2]},this.set_refcount=function(e){U[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,E[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=E[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,E[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=E[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=U[this.ptr>>2];U[this.ptr>>2]=e+1},this.release_ref=function(){var e=U[this.ptr>>2];return U[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){T[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return T[this.ptr+16>>2]},this.get_exception_ptr=function(){if(jt(this.get_type()))return T[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}e.locateFile?K(R="decoder-pro-audio.wasm")||(z=R,R=e.locateFile?e.locateFile(z,_):_+z):R=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-hard.js",document.baseURI).href).toString();var te={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=te.isAbs(e),r="/"===e.substr(-1);return(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=te.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return te.normalize(e.join("/"))},join2:(e,t)=>te.normalize(e+"/"+t)},re={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:oe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=te.isAbs(i)}return(t?"/":"")+(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=re.resolve(e).substr(1),t=re.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o0?r:M(e)+1,n=new Array(i),s=L(e,n,0,n.length);return t&&(n.length=s),n}var ne={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ne.ttys[e]={input:[],output:[],ops:t},oe.registerDevice(e,ne.stream_ops)},stream_ops:{open:function(e){var t=ne.ttys[e.node.rdev];if(!t)throw new oe.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new oe.ErrnoError(60);for(var s=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ie(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(y(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(F(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(v(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(v(F(e.output,0)),e.output=[])}}};function se(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Wt(65536,e);return t?(function(e,t){A.fill(0,e,e+t)}(t,e),t):0}var ae={ops_table:null,mount:function(e){return ae.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(oe.isBlkdev(r)||oe.isFIFO(r))throw new oe.ErrnoError(63);ae.ops_table||(ae.ops_table={dir:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,lookup:ae.node_ops.lookup,mknod:ae.node_ops.mknod,rename:ae.node_ops.rename,unlink:ae.node_ops.unlink,rmdir:ae.node_ops.rmdir,readdir:ae.node_ops.readdir,symlink:ae.node_ops.symlink},stream:{llseek:ae.stream_ops.llseek}},file:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:{llseek:ae.stream_ops.llseek,read:ae.stream_ops.read,write:ae.stream_ops.write,allocate:ae.stream_ops.allocate,mmap:ae.stream_ops.mmap,msync:ae.stream_ops.msync}},link:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,readlink:ae.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:oe.chrdev_stream_ops}});var n=oe.createNode(e,t,r,i);return oe.isDir(n.mode)?(n.node_ops=ae.ops_table.dir.node,n.stream_ops=ae.ops_table.dir.stream,n.contents={}):oe.isFile(n.mode)?(n.node_ops=ae.ops_table.file.node,n.stream_ops=ae.ops_table.file.stream,n.usedBytes=0,n.contents=null):oe.isLink(n.mode)?(n.node_ops=ae.ops_table.link.node,n.stream_ops=ae.ops_table.link.stream):oe.isChrdev(n.mode)&&(n.node_ops=ae.ops_table.chrdev.node,n.stream_ops=ae.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=oe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,oe.isDir(e.mode)?t.size=4096:oe.isFile(e.mode)?t.size=e.usedBytes:oe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&ae.resizeFileStorage(e,t.size)},lookup:function(e,t){throw oe.genericErrors[44]},mknod:function(e,t,r,i){return ae.createNode(e,t,r,i)},rename:function(e,t,r){if(oe.isDir(e.mode)){var i;try{i=oe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new oe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=oe.lookupNode(e,t);for(var i in r.contents)throw new oe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=ae.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!oe.isLink(e.mode))throw new oe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=re.resolve(oe.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new oe.ErrnoError(32);for(var i=te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=oe.root,s="/",a=0;a40)throw new oe.ErrnoError(32)}}return{path:s,node:n}},getPath:e=>{for(var t;;){if(oe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%oe.nameTable.length},hashAddNode:e=>{var t=oe.hashName(e.parent.id,e.name);e.name_next=oe.nameTable[t],oe.nameTable[t]=e},hashRemoveNode:e=>{var t=oe.hashName(e.parent.id,e.name);if(oe.nameTable[t]===e)oe.nameTable[t]=e.name_next;else for(var r=oe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=oe.mayLookup(e);if(r)throw new oe.ErrnoError(r,e);for(var i=oe.hashName(e.id,t),n=oe.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return oe.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new oe.FSNode(e,t,r,i);return oe.hashAddNode(n),n},destroyNode:e=>{oe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=oe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>oe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=oe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return oe.lookupNode(e,t),20}catch(e){}return oe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=oe.lookupNode(e,t)}catch(e){return e.errno}var n=oe.nodePermissions(e,"wx");if(n)return n;if(r){if(!oe.isDir(i.mode))return 54;if(oe.isRoot(i)||oe.getPath(i)===oe.cwd())return 10}else if(oe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?oe.isLink(e.mode)?32:oe.isDir(e.mode)&&("r"!==oe.flagsToPermissionString(t)||512&t)?31:oe.nodePermissions(e,oe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!oe.streams[r])return r;throw new oe.ErrnoError(33)},getStream:e=>oe.streams[e],createStream:(e,t,r)=>{oe.FSStream||(oe.FSStream=function(){this.shared={}},oe.FSStream.prototype={},Object.defineProperties(oe.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new oe.FSStream,e);var i=oe.nextfd(t,r);return e.fd=i,oe.streams[i]=e,e},closeStream:e=>{oe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=oe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new oe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{oe.devices[e]={stream_ops:t}},getDevice:e=>oe.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),oe.syncFSRequests++,oe.syncFSRequests>1&&v("warning: "+oe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=oe.getMounts(oe.root.mount),i=0;function n(e){return oe.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&oe.root)throw new oe.ErrnoError(10);if(!n&&!s){var a=oe.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,oe.isMountpoint(i))throw new oe.ErrnoError(10);if(!oe.isDir(i.mode))throw new oe.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?oe.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount:e=>{var t=oe.lookupPath(e,{follow_mount:!1});if(!oe.isMountpoint(t.node))throw new oe.ErrnoError(28);var r=t.node,i=r.mounted,n=oe.getMounts(i);Object.keys(oe.nameTable).forEach((e=>{for(var t=oe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&oe.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=oe.lookupPath(e,{parent:!0}).node,n=te.basename(e);if(!n||"."===n||".."===n)throw new oe.ErrnoError(28);var s=oe.mayCreate(i,n);if(s)throw new oe.ErrnoError(s);if(!i.node_ops.mknod)throw new oe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,oe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,oe.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,oe.mknod(e,t,r)),symlink:(e,t)=>{if(!re.resolve(e))throw new oe.ErrnoError(44);var r=oe.lookupPath(t,{parent:!0}).node;if(!r)throw new oe.ErrnoError(44);var i=te.basename(t),n=oe.mayCreate(r,i);if(n)throw new oe.ErrnoError(n);if(!r.node_ops.symlink)throw new oe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=te.dirname(e),s=te.dirname(t),a=te.basename(e),o=te.basename(t);if(r=oe.lookupPath(e,{parent:!0}).node,i=oe.lookupPath(t,{parent:!0}).node,!r||!i)throw new oe.ErrnoError(44);if(r.mount!==i.mount)throw new oe.ErrnoError(75);var d,l=oe.lookupNode(r,a),c=re.relative(e,s);if("."!==c.charAt(0))throw new oe.ErrnoError(28);if("."!==(c=re.relative(t,n)).charAt(0))throw new oe.ErrnoError(55);try{d=oe.lookupNode(i,o)}catch(e){}if(l!==d){var u=oe.isDir(l.mode),h=oe.mayDelete(r,a,u);if(h)throw new oe.ErrnoError(h);if(h=d?oe.mayDelete(i,o,u):oe.mayCreate(i,o))throw new oe.ErrnoError(h);if(!r.node_ops.rename)throw new oe.ErrnoError(63);if(oe.isMountpoint(l)||d&&oe.isMountpoint(d))throw new oe.ErrnoError(10);if(i!==r&&(h=oe.nodePermissions(r,"w")))throw new oe.ErrnoError(h);oe.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{oe.hashAddNode(l)}}},rmdir:e=>{var t=oe.lookupPath(e,{parent:!0}).node,r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!0);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.rmdir)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.rmdir(t,r),oe.destroyNode(i)},readdir:e=>{var t=oe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new oe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=oe.lookupPath(e,{parent:!0}).node;if(!t)throw new oe.ErrnoError(44);var r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!1);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.unlink)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.unlink(t,r),oe.destroyNode(i)},readlink:e=>{var t=oe.lookupPath(e).node;if(!t)throw new oe.ErrnoError(44);if(!t.node_ops.readlink)throw new oe.ErrnoError(28);return re.resolve(oe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=oe.lookupPath(e,{follow:!t}).node;if(!r)throw new oe.ErrnoError(44);if(!r.node_ops.getattr)throw new oe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>oe.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?oe.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new oe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{oe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);oe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?oe.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new oe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{oe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=oe.getStream(e);if(!i)throw new oe.ErrnoError(8);oe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new oe.ErrnoError(28);var r;if(!(r="string"==typeof e?oe.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new oe.ErrnoError(63);if(oe.isDir(r.mode))throw new oe.ErrnoError(31);if(!oe.isFile(r.mode))throw new oe.ErrnoError(28);var i=oe.nodePermissions(r,"w");if(i)throw new oe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);if(0==(2097155&r.flags))throw new oe.ErrnoError(28);oe.truncate(r.node,t)},utime:(e,t,r)=>{var i=oe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(t,r,i)=>{if(""===t)throw new oe.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?oe.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof t)n=t;else{t=te.normalize(t);try{n=oe.lookupPath(t,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new oe.ErrnoError(20)}else n=oe.mknod(t,i,0),s=!0;if(!n)throw new oe.ErrnoError(44);if(oe.isChrdev(n.mode)&&(r&=-513),65536&r&&!oe.isDir(n.mode))throw new oe.ErrnoError(54);if(!s){var a=oe.mayOpen(n,r);if(a)throw new oe.ErrnoError(a)}512&r&&!s&&oe.truncate(n,0),r&=-131713;var o=oe.createStream({node:n,path:oe.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!e.logReadFiles||1&r||(oe.readFiles||(oe.readFiles={}),t in oe.readFiles||(oe.readFiles[t]=1)),o},close:e=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{oe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new oe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new oe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(1==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.read)throw new oe.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.write)throw new oe.ErrnoError(28);e.seekable&&1024&e.flags&&oe.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(t<0||r<=0)throw new oe.ErrnoError(28);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(!oe.isFile(e.node.mode)&&!oe.isDir(e.node.mode))throw new oe.ErrnoError(43);if(!e.stream_ops.allocate)throw new oe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new oe.ErrnoError(2);if(1==(2097155&e.flags))throw new oe.ErrnoError(2);if(!e.stream_ops.mmap)throw new oe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new oe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=oe.open(e,t.flags),n=oe.stat(e),s=n.size,a=new Uint8Array(s);return oe.read(i,a,0,s,0),"utf8"===t.encoding?r=F(a,0):"binary"===t.encoding&&(r=a),oe.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=oe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),s=L(t,n,0,n.length);oe.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");oe.write(i,t,0,t.byteLength,void 0,r.canOwn)}oe.close(i)},cwd:()=>oe.currentPath,chdir:e=>{var t=oe.lookupPath(e,{follow:!0});if(null===t.node)throw new oe.ErrnoError(44);if(!oe.isDir(t.node.mode))throw new oe.ErrnoError(54);var r=oe.nodePermissions(t.node,"x");if(r)throw new oe.ErrnoError(r);oe.currentPath=t.path},createDefaultDirectories:()=>{oe.mkdir("/tmp"),oe.mkdir("/home"),oe.mkdir("/home/web_user")},createDefaultDevices:()=>{oe.mkdir("/dev"),oe.registerDevice(oe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),oe.mkdev("/dev/null",oe.makedev(1,3)),ne.register(oe.makedev(5,0),ne.default_tty_ops),ne.register(oe.makedev(6,0),ne.default_tty1_ops),oe.mkdev("/dev/tty",oe.makedev(5,0)),oe.mkdev("/dev/tty1",oe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>Y("randomDevice")}();oe.createDevice("/dev","random",e),oe.createDevice("/dev","urandom",e),oe.mkdir("/dev/shm"),oe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{oe.mkdir("/proc");var e=oe.mkdir("/proc/self");oe.mkdir("/proc/self/fd"),oe.mount({mount:()=>{var t=oe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=oe.getStream(r);if(!i)throw new oe.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?oe.createDevice("/dev","stdin",e.stdin):oe.symlink("/dev/tty","/dev/stdin"),e.stdout?oe.createDevice("/dev","stdout",null,e.stdout):oe.symlink("/dev/tty","/dev/stdout"),e.stderr?oe.createDevice("/dev","stderr",null,e.stderr):oe.symlink("/dev/tty1","/dev/stderr"),oe.open("/dev/stdin",0),oe.open("/dev/stdout",1),oe.open("/dev/stderr",1)},ensureErrnoError:()=>{oe.ErrnoError||(oe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},oe.ErrnoError.prototype=new Error,oe.ErrnoError.prototype.constructor=oe.ErrnoError,[44].forEach((e=>{oe.genericErrors[e]=new oe.ErrnoError(e),oe.genericErrors[e].stack=""})))},staticInit:()=>{oe.ensureErrnoError(),oe.nameTable=new Array(4096),oe.mount(ae,{},"/"),oe.createDefaultDirectories(),oe.createDefaultDevices(),oe.createSpecialDirectories(),oe.filesystems={MEMFS:ae}},init:(t,r,i)=>{oe.init.initialized=!0,oe.ensureErrnoError(),e.stdin=t||e.stdin,e.stdout=r||e.stdout,e.stderr=i||e.stderr,oe.createStandardStreams()},quit:()=>{oe.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=oe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=oe.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=oe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=te.basename(e),i=oe.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:oe.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var a=te.join2(e,s);try{oe.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,n)=>{var s=te.join2("string"==typeof e?e:oe.getPath(e),t),a=oe.getMode(i,n);return oe.create(s,a)},createDataFile:(e,t,r,i,n,s)=>{var a=t;e&&(e="string"==typeof e?e:oe.getPath(e),a=t?te.join2(e,t):e);var o=oe.getMode(i,n),d=oe.create(a,o);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;c{var n=te.join2("string"==typeof e?e:oe.getPath(e),t),s=oe.getMode(!!r,!!i);oe.createDevice.major||(oe.createDevice.major=64);var a=oe.makedev(oe.createDevice.major++,0);return oe.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ie(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new oe.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ie(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=oe.createFile(e,t,o,i,n);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return oe.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(oe.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{oe.forceLoadFile(d);var s=se(t);if(!s)throw new oe.ErrnoError(48);return c(e,E,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,a,o,d,l,c)=>{var u=t?re.resolve(te.join2(e,t)):e;function h(r){function s(r){c&&c(),d||oe.createDataFile(e,t,r,i,n,l),a&&a(),q()}Browser.handledByPreloadPlugin(r,u,s,(()=>{o&&o(),q()}))||s(r)}j(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{w(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&q()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&j()}(r,(e=>h(e)),o):h(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{y("creating db"),n.result.createObjectStore(oe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([oe.DB_STORE_NAME],"readwrite"),s=i.objectStore(oe.DB_STORE_NAME),a=0,o=0,d=e.length;function l(){0==o?t():r()}e.forEach((e=>{var t=s.put(oe.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==d&&l()},t.onerror=()=>{o++,a+o==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([oe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=s.objectStore(oe.DB_STORE_NAME),o=0,d=0,l=e.length;function c(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{oe.analyzePath(e).exists&&oe.unlink(e),oe.createDataFile(te.dirname(e),te.basename(e),t.result,!0,!0,!0),++o+d==l&&c()},t.onerror=()=>{d++,o+d==l&&c()}})),s.onerror=r},n.onerror=r}},de={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(te.isAbs(t))return t;var i;if(-100===e)i=oe.cwd();else{var n=oe.getStream(e);if(!n)throw new oe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new oe.ErrnoError(44);return i}return te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&te.normalize(t)!==te.normalize(oe.getPath(e.node)))return-54;throw e}return U[r>>2]=i.dev,U[r+4>>2]=0,U[r+8>>2]=i.ino,U[r+12>>2]=i.mode,U[r+16>>2]=i.nlink,U[r+20>>2]=i.uid,U[r+24>>2]=i.gid,U[r+28>>2]=i.rdev,U[r+32>>2]=0,O=[i.size>>>0,(N=i.size,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+40>>2]=O[0],U[r+44>>2]=O[1],U[r+48>>2]=4096,U[r+52>>2]=i.blocks,O=[Math.floor(i.atime.getTime()/1e3)>>>0,(N=Math.floor(i.atime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+56>>2]=O[0],U[r+60>>2]=O[1],U[r+64>>2]=0,O=[Math.floor(i.mtime.getTime()/1e3)>>>0,(N=Math.floor(i.mtime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+72>>2]=O[0],U[r+76>>2]=O[1],U[r+80>>2]=0,O=[Math.floor(i.ctime.getTime()/1e3)>>>0,(N=Math.floor(i.ctime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+88>>2]=O[0],U[r+92>>2]=O[1],U[r+96>>2]=0,O=[i.ino>>>0,(N=i.ino,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+104>>2]=O[0],U[r+108>>2]=O[1],0},doMsync:function(e,t,r,i,n){var s=A.slice(e,e+r);oe.msync(t,s,n,r,i)},varargs:void 0,get:function(){return de.varargs+=4,U[de.varargs-4>>2]},getStr:function(e){return P(e)},getStreamFromFD:function(e){var t=oe.getStream(e);if(!t)throw new oe.ErrnoError(8);return t}};function le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ce=void 0;function ue(e){for(var t="",r=e;A[r];)t+=ce[A[r++]];return t}var he={},fe={},pe={};function _e(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function me(e,t){return e=_e(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function ge(e,t){var r=me(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ye=void 0;function ve(e){throw new ye(e)}var be=void 0;function we(e){throw new be(e)}function Se(e,t,r){function i(t){var i=r(t);i.length!==e.length&&we("Mismatched type converter count");for(var n=0;n{fe.hasOwnProperty(e)?n[t]=fe[e]:(s.push(e),he.hasOwnProperty(e)||(he[e]=[]),he[e].push((()=>{n[t]=fe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)}function Ee(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||ve('type "'+i+'" must have a positive integer typeid pointer'),fe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ve("Cannot register type '"+i+"' twice")}if(fe[e]=t,delete pe[e],he.hasOwnProperty(e)){var n=he[e];delete he[e],n.forEach((e=>e()))}}function Ae(e){if(!(this instanceof je))return!1;if(!(e instanceof je))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var xe=!1;function Ue(e){}function Te(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function ke(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=ke(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ce={};function De(){return Object.keys(Re).length}function Ie(){var e=[];for(var t in Re)Re.hasOwnProperty(t)&&e.push(Re[t]);return e}var Fe=[];function Pe(){for(;Fe.length;){var e=Fe.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function Me(e){Le=e,Fe.length&&Le&&Le(Pe)}var Re={};function ze(e,t){return t=function(e,t){for(void 0===t&&ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Re[t]}function Ne(e,t){return t.ptrType&&t.ptr||we("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&we("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ge(Object.create(e,{$$:{value:t}}))}function Oe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ze(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Ne(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ne(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ce[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=ke(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}function Ge(e){return"undefined"==typeof FinalizationRegistry?(Ge=e=>e,e):(xe=new FinalizationRegistry((e=>{Te(e.$$)})),Ge=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};xe.register(e,r,e)}return e},Ue=e=>xe.unregister(e),Ge(e))}function He(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Ge(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function $e(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ue(this),Te(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function We(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Fe.push(this),1===Fe.length&&Le&&Le(Pe),this.$$.deleteScheduled=!0,this}function je(){}function qe(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Ye(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Ke(e,t,r){for(;t!==r;)t.upcast||ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Xe(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:ve("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(U[e>>2])}function et(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function tt(e){this.rawDestructor&&this.rawDestructor(e)}function rt(e){null!==e&&e.delete()}function it(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var nt=[];function st(e){var t=nt[e];return t||(e>=nt.length&&(nt.length=e+1),nt[e]=t=D.get(e)),t}function at(t,r,i){return t.includes("j")?function(t,r,i){var n=e["dynCall_"+t];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(t,r,i):st(r).apply(null,i)}function ot(e,t){var r,i,n,s=(e=ue(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),at(r,i,n)}):st(t);return"function"!=typeof s&&ve("unknown function pointer with signature "+e+": "+t),s}var dt=void 0;function lt(e){var t=Ht(e),r=ue(t);return Ot(t),r}function ct(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||fe[t]||(pe[t]?pe[t].forEach(e):(r.push(t),i[t]=!0))})),new dt(e+": "+r.map(lt).join([", "]))}function ut(e,t){for(var r=[],i=0;i>2]);return r}function ht(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ft(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=me(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function pt(e,t,r,i,n){var s=t.length;s<2&&ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,d=1;d0?", ":"")+u),h+=(l?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",o)h+="runDestructors(destructors);\n";else for(d=a?1:2;d4&&0==--mt[e].refcount&&(mt[e]=void 0,_t.push(e))}function yt(){for(var e=0,t=5;t(e||ve("Cannot use deleted val. handle = "+e),mt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=_t.length?_t.pop():mt.length;return mt[t]={refcount:1,value:e},t}}};function wt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function St(e,t){switch(t){case 2:return function(e){return this.fromWireType(k[e>>2])};case 3:return function(e){return this.fromWireType(C[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Et(e,t,r){switch(t){case 0:return r?function(e){return E[e]}:function(e){return A[e]};case 1:return r?function(e){return B[e>>1]}:function(e){return x[e>>1]};case 2:return r?function(e){return U[e>>2]}:function(e){return T[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&At)return At.decode(A.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=B[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function xt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return B[t>>1]=0,t-i}function Ut(e){return 2*e.length}function Tt(e,t){for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function kt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),U[t>>2]=a,(t+=4)+4>n)break}return U[t>>2]=0,t-i}function Ct(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Dt={},It=[],Ft=[],Pt={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"};for(var t in Pt)void 0===Pt[t]?delete e[t]:e[t]=Pt[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}var Mt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=oe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Rt=365,zt=146;Object.defineProperties(Mt.prototype,{read:{get:function(){return(this.mode&Rt)===Rt},set:function(e){e?this.mode|=Rt:this.mode&=-366}},write:{get:function(){return(this.mode&zt)===zt},set:function(e){e?this.mode|=zt:this.mode&=-147}},isFolder:{get:function(){return oe.isDir(this.mode)}},isDevice:{get:function(){return oe.isChrdev(this.mode)}}}),oe.FSNode=Mt,oe.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ce=e}(),ye=e.BindingError=ge(Error,"BindingError"),be=e.InternalError=ge(Error,"InternalError"),je.prototype.isAliasOf=Ae,je.prototype.clone=He,je.prototype.delete=$e,je.prototype.isDeleted=Ve,je.prototype.deleteLater=We,e.getInheritedInstanceCount=De,e.getLiveInheritedInstances=Ie,e.flushPendingDeletes=Pe,e.setDelayFunction=Me,it.prototype.getPointee=et,it.prototype.destructor=tt,it.prototype.argPackAdvance=8,it.prototype.readValueFromPointer=Qe,it.prototype.deleteObject=rt,it.prototype.fromWireType=Oe,dt=e.UnboundTypeError=ge(Error,"UnboundTypeError"),e.count_emval_handles=yt,e.get_first_emval=vt;var Nt={q:function(e){return Vt(e+24)+24},p:function(e,t,r){throw new ee(e).init(t,r),e},C:function(e,t,r){de.varargs=r;try{var i=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:oe.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=de.get();return i.flags|=n,0;case 5:return n=de.get(),B[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,U[Gt()>>2]=s,-1}}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){de.varargs=i;try{t=de.getStr(t),t=de.calculateAt(e,t);var n=i?de.get():0;return oe.open(t,r,n).fd}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=E;else if(2===r)i=B;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=U}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(t,r,i,n,s,a,o,d,l,c,u,h,f){u=ue(u),a=ot(s,a),d&&(d=ot(o,d)),c&&(c=ot(l,c)),f=ot(h,f);var p=_e(u);!function(t,r,i){e.hasOwnProperty(t)?((void 0===i||void 0!==e[t].overloadTable&&void 0!==e[t].overloadTable[i])&&ve("Cannot register public name '"+t+"' twice"),qe(e,t,t),e.hasOwnProperty(i)&&ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),e[t].overloadTable[i]=r):(e[t]=r,void 0!==i&&(e[t].numArguments=i))}(p,(function(){ct("Cannot construct "+u+" due to unbound types",[n])})),Se([t,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:je.prototype;var o=me(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+u);if(void 0===h.constructor_body)throw new ye(u+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new ye("Tried to invoke ctor of "+u+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(h.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:o}});o.prototype=l;var h=new Ye(u,o,l,f,i,a,d,c),_=new it(u,h,!0,!1,!1),m=new it(u+"*",h,!1,!1,!1),g=new it(u+" const*",h,!1,!0,!1);return Ce[t]={pointerType:m,constPointerType:g},function(t,r,i){e.hasOwnProperty(t)||we("Replacing nonexistant public symbol"),void 0!==e[t].overloadTable&&void 0!==i?e[t].overloadTable[i]=r:(e[t]=r,e[t].argCount=i)}(p,o),[_,m,g]}))},r:function(e,t,r,i,n,s){w(t>0);var a=ut(t,r);n=ot(i,n),Se([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ye("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{ct("Cannot construct "+e.name+" due to unbound types",a)},Se([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=pt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,a,o){var d=ut(r,i);t=ue(t),s=ot(n,s),Se([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){ct("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,c=l[t];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(qe(l,t,i),l[t].overloadTable[r-2]=n),Se([],d,(function(n){var o=pt(i,n,e,s,a);return void 0===l[t].overloadTable?(o.argCount=r-2,l[t]=o):l[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Ee(e,{name:t=ue(t),fromWireType:function(e){var t=bt.toValue(e);return gt(e),t},toWireType:function(e,t){return bt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},n:function(e,t,r){var i=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:St(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=ue(t);var s=le(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var d=t.includes("unsigned");Ee(e,{name:t,fromWireType:a,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Et(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=T,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}Ee(e,{name:r=ue(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=ue(t));Ee(e,{name:t,fromWireType:function(e){var t,i=T[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==A[o]){var d=P(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)L(t,A,a,i+1);else if(n)for(var o=0;o255&&(Ot(a),ve("String has UTF-16 code units that do not fit in 8 bits")),A[a+o]=d}else for(o=0;ox,o=1):4===t&&(i=Tt,n=kt,a=Ct,s=()=>T,o=2),Ee(e,{name:r,fromWireType:function(e){for(var r,n=T[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Ot(e),r},toWireType:function(e,i){"string"!=typeof i&&ve("Cannot pass non-string to C++ string type "+r);var s=a(i),d=Vt(4+s+t);return T[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(Ot,d),d},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Ot(e)}})},o:function(e,t){Ee(e,{isVoid:!0,name:t=ue(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=It[e])(t=bt.toValue(t),r=void 0===(s=Dt[n=r])?ue(n):s,null,i)},j:gt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),a=0;a>2],i="parameter "+a,n=void 0,void 0===(n=fe[r])&&ve(i+" has unknown type "+lt(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=Ft[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;l>2]=s,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(E[t>>0]=0)}(i,s),r+=i.length+1})),0},z:function(e,t){var r=Lt();T[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),T[t>>2]=i,0},l:function(e){try{var t=de.getStreamFromFD(e);return oe.close(t),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=de.getStreamFromFD(e),i=r.tty?2:oe.isDir(r.mode)?3:oe.isLink(r.mode)?7:4;return E[t>>0]=i,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.read(e,E,a,o,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(d=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*d:NaN;if(isNaN(s))return 61;var a=de.getStreamFromFD(e);return oe.llseek(a,s,i),O=[a.position>>>0,(N=a.position,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[n>>2]=O[0],U[n+4>>2]=O[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}var o,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.write(e,E,a,o,i);if(d<0)return-1;n+=d}return n}(de.getStreamFromFD(e),t,r);return T[i>>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var t={a:Nt};function r(t,r){var i,n,s=t.exports;e.asm=s,g=e.asm.F,i=g.buffer,S=i,e.HEAP8=E=new Int8Array(i),e.HEAP16=B=new Int16Array(i),e.HEAP32=U=new Int32Array(i),e.HEAPU8=A=new Uint8Array(i),e.HEAPU16=x=new Uint16Array(i),e.HEAPU32=T=new Uint32Array(i),e.HEAPF32=k=new Float32Array(i),e.HEAPF64=C=new Float64Array(i),D=e.asm.I,n=e.asm.G,H.unshift(n),q()}function n(e){r(e.instance)}function a(e){return function(){if(!m&&(h||f)){if("function"==typeof fetch&&!X(R))return fetch(R,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+R+"'";return e.arrayBuffer()})).catch((function(){return Z(R)}));if(s)return new Promise((function(e,t){s(R,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Z(R)}))}().then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(e,(function(e){v("failed to asynchronously prepare wasm: "+e),Y(e)}))}if(j(),e.instantiateWasm)try{return e.instantiateWasm(t,r)}catch(e){return v("Module.instantiateWasm callback failed with error: "+e),!1}(m||"function"!=typeof WebAssembly.instantiateStreaming||K(R)||X(R)||p||"function"!=typeof fetch?a(n):fetch(R,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(n,(function(e){return v("wasm streaming compile failed: "+e),v("falling back to ArrayBuffer instantiation"),a(n)}))}))).catch(i)}(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.G).apply(null,arguments)};var Ot=e._free=function(){return(Ot=e._free=e.asm.H).apply(null,arguments)},Gt=e.___errno_location=function(){return(Gt=e.___errno_location=e.asm.J).apply(null,arguments)},Ht=e.___getTypeName=function(){return(Ht=e.___getTypeName=e.asm.K).apply(null,arguments)};e.___embind_register_native_and_builtin_types=function(){return(e.___embind_register_native_and_builtin_types=e.asm.L).apply(null,arguments)};var $t,Vt=e._malloc=function(){return(Vt=e._malloc=e.asm.M).apply(null,arguments)},Wt=e._emscripten_builtin_memalign=function(){return(Wt=e._emscripten_builtin_memalign=e.asm.N).apply(null,arguments)},jt=e.___cxa_is_pointer_type=function(){return(jt=e.___cxa_is_pointer_type=e.asm.O).apply(null,arguments)};function qt(r){function i(){$t||($t=!0,e.calledRun=!0,b||(e.noFSInit||oe.init.initialized||oe.init(),oe.ignorePermissions=!1,Q(H),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)t=e.postRun.shift(),$.unshift(t);var t;Q($)}()))}V>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)t=e.preRun.shift(),G.unshift(t);var t;Q(G)}(),V>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),i()}),1)):i()))}if(e.dynCall_viiijj=function(){return(e.dynCall_viiijj=e.asm.P).apply(null,arguments)},e.dynCall_jij=function(){return(e.dynCall_jij=e.asm.Q).apply(null,arguments)},e.dynCall_jii=function(){return(e.dynCall_jii=e.asm.R).apply(null,arguments)},e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.S).apply(null,arguments)},W=function e(){$t||qt(),$t||(W=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return qt(),e.ready}),a=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array;function d(){var e=new o(16);return o!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function l(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var c,u=function(e,t,r,i,n,s,a){var o=1/(t-r),d=1/(i-n),l=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*d,e[14]=(a+s)*l,e[15]=1,e};function h(e,t,r){var i=new o(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new o(3),o!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var f=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=_(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=_(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),o=p(),c=p(),f=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function _(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function m(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=d();u(s,-1,1,-1,1,.1,100);const p=d();l(p);const _=d();!function(e,t,r,i){var n,s,o,d,c,u,h,f,p,_,m=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(m-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,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)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,$t=Gt;function Vt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function Wt(e){return jt(e)&&e[1]===Bt}function jt(e){return e[0]>>4===Re}const qt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Yt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=qt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=qt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Kt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Ht[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new Ot(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Ht[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Jt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function Qt(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function er(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function tr(){return(new Date).getTime()}function rr(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function ir(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function nr(e){let t=0,r=ir();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=ir(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}function sr(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function ar(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ut)||self.MediaSource.isTypeSupported(ht)||self.MediaSource.isTypeSupported(ft)||self.MediaSource.isTypeSupported(pt)||self.MediaSource.isTypeSupported(_t))&&(e=!0),e}function or(e){return null==e}function dr(e){return!or(e)}function lr(e){return"function"==typeof e}function cr(e){let t=null,r=31&e[0];return r!==Ge&&r!==He||(t=Le),t||(r=(126&e[0])>>1,r!==Qe&&r!==tt&&r!==it||(t=Me)),t}function ur(){return"undefined"!=typeof WritableStream}function hr(e){e.close()}function fr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function pr(e){return e.ok&&e.status>=200&&e.status<=299}function _r(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(x)}function mr(e){return e[0]>>4===xt&&e[1]===Bt}function gr(e){return!0===e||"true"===e}function yr(e){return!0!==e&&"true"!==e}function vr(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var br=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const wr=Symbol(32),Sr=Symbol(16),Er=Symbol(8);class Ar{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return br(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(wr)}readU16(){return this.read(Sr)}readU8(){return this.read(Er)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===wr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Sr){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Er){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Ar.U32=wr,Ar.U16=Sr,Ar.U8=Er;class Br{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==w){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=xr._ebsp2rbsp(e),r=new Ot(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=xr.getProfileString(i),a=xr.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,B=2*e,S=A/B}}let x=1;1===b&&1===w||(x=b/w);let U=0,T=0;if(0===o)U=1,T=2-_;else{U=3===o?1:2,T=(1===o?2:1)*(2-_)}let k=16*(f+1),C=16*(p+1)*(2-_);k-=(m+g)*U,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:xr.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=xr._ebsp2rbsp(e),n=new Ot(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=xr.getProfileString(s),d=xr.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);x=n.readBool(),U=t,T=2*e,B=U/T}}let k=1;1===E&&1===A||(k=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let I=16*(m+1),F=16*(g+1)*(2-y);I-=(v+b)*C,F-=(w+S)*D;let P=Math.ceil(I*k);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:_,chroma_format:c,chroma_format_string:xr.getChromaFormatString(c),frame_rate:{fixed:x,fps:B,fps_den:T,fps_num:U},sar_ratio:{width:E,height:A},codec_size:{width:I,height:F},present_size:{width:P,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function kr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Cr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=xr.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Dr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e){return 31&e[0]}function Pr(e){return e===je}function Lr(e){return!function(e){return e===Ge||e===He}(e)&&!Pr(e)}function Mr(e){return e===$e}function Rr(e){if(0===e.length)return!1;const t=Fr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Ke||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Nr{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Or=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Gr=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Hr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Hr._ebsp2rbsp(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Hr._ebsp2rbsp(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),_=r.readByte(),m=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=Or(e),r=new Ot(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=Or(e),r=new Ot(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),_=r.readByte(),m=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(P=t[e-1],L=i[e-1]):255===e&&(P=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),I=r.readBool(),I&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Or(e),r=new Ot(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|Qe,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|tt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|it,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function qr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e){return(126&e[0])>>1}function Xr(e){return e===st}function Zr(e){return!function(e){return e>=32&&e<=40}(e)}function Jr(e){return e>=16&&e<=21}function Qr(e){if(0===e.length)return!1;const t=Kr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ti{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ri(e){return parseInt(e)===e}function ii(e){if(!ri(e.length))return!1;for(var t=0;t255)return!1;return!0}function ni(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ii(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ri(e.length)&&ii(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ai(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var oi,di={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},li=(oi="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+oi[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},ui=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],fi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],pi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],_i=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],mi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],gi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],yi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],vi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],bi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],wi=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Si=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ei=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Ai=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Bi=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function xi(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,d=n;d>16&255]<<24^hi[a>>8&255]<<16^hi[255&a]<<8^hi[a>>24&255]^ui[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^hi[a>>16&255]<<16^hi[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ei[a>>16&255]^Ai[a>>8&255]^Bi[255&a]},Ui.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^_i[i[(n+1)%4]>>16&255]^mi[i[(n+2)%4]>>8&255]^gi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(hi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(hi[255&i[(n+3)%4]]^a);return o},Ui.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=xi(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^vi[i[(n+3)%4]>>16&255]^bi[i[(n+2)%4]>>8&255]^wi[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=si(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(fi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(fi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(fi[255&i[(n+1)%4]]^a);return o};var Ti=function(e){if(!(this instanceof Ti))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ui(e)};Ti.prototype.encrypt=function(e){if((e=ni(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Ii.prototype.setBytes=function(e){if(16!=(e=ni(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ii.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fi=function(e,t){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ii||(t=new Ii(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ui(e)};Fi.prototype.encrypt=function(e){for(var t=ni(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],_=e[t+4],m=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],x=e[t+15],U=s[0],T=s[1],k=s[2],C=s[3];U=l(U,T,k,C,a,7,o[0]),C=l(C,U,T,k,d,12,o[1]),k=l(k,C,U,T,f,17,o[2]),T=l(T,k,C,U,p,22,o[3]),U=l(U,T,k,C,_,7,o[4]),C=l(C,U,T,k,m,12,o[5]),k=l(k,C,U,T,g,17,o[6]),T=l(T,k,C,U,y,22,o[7]),U=l(U,T,k,C,v,7,o[8]),C=l(C,U,T,k,b,12,o[9]),k=l(k,C,U,T,w,17,o[10]),T=l(T,k,C,U,S,22,o[11]),U=l(U,T,k,C,E,7,o[12]),C=l(C,U,T,k,A,12,o[13]),k=l(k,C,U,T,B,17,o[14]),U=c(U,T=l(T,k,C,U,x,22,o[15]),k,C,d,5,o[16]),C=c(C,U,T,k,g,9,o[17]),k=c(k,C,U,T,S,14,o[18]),T=c(T,k,C,U,a,20,o[19]),U=c(U,T,k,C,m,5,o[20]),C=c(C,U,T,k,w,9,o[21]),k=c(k,C,U,T,x,14,o[22]),T=c(T,k,C,U,_,20,o[23]),U=c(U,T,k,C,b,5,o[24]),C=c(C,U,T,k,B,9,o[25]),k=c(k,C,U,T,p,14,o[26]),T=c(T,k,C,U,v,20,o[27]),U=c(U,T,k,C,A,5,o[28]),C=c(C,U,T,k,f,9,o[29]),k=c(k,C,U,T,y,14,o[30]),U=u(U,T=c(T,k,C,U,E,20,o[31]),k,C,m,4,o[32]),C=u(C,U,T,k,v,11,o[33]),k=u(k,C,U,T,S,16,o[34]),T=u(T,k,C,U,B,23,o[35]),U=u(U,T,k,C,d,4,o[36]),C=u(C,U,T,k,_,11,o[37]),k=u(k,C,U,T,y,16,o[38]),T=u(T,k,C,U,w,23,o[39]),U=u(U,T,k,C,A,4,o[40]),C=u(C,U,T,k,a,11,o[41]),k=u(k,C,U,T,p,16,o[42]),T=u(T,k,C,U,g,23,o[43]),U=u(U,T,k,C,b,4,o[44]),C=u(C,U,T,k,E,11,o[45]),k=u(k,C,U,T,x,16,o[46]),U=h(U,T=u(T,k,C,U,f,23,o[47]),k,C,a,6,o[48]),C=h(C,U,T,k,y,10,o[49]),k=h(k,C,U,T,B,15,o[50]),T=h(T,k,C,U,m,21,o[51]),U=h(U,T,k,C,E,6,o[52]),C=h(C,U,T,k,p,10,o[53]),k=h(k,C,U,T,w,15,o[54]),T=h(T,k,C,U,d,21,o[55]),U=h(U,T,k,C,v,6,o[56]),C=h(C,U,T,k,x,10,o[57]),k=h(k,C,U,T,g,15,o[58]),T=h(T,k,C,U,A,21,o[59]),U=h(U,T,k,C,_,6,o[60]),C=h(C,U,T,k,S,10,o[61]),k=h(k,C,U,T,f,15,o[62]),T=h(T,k,C,U,b,21,o[63]),s[0]=s[0]+U|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Nt((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],_=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,m=l[f-2],g=(m<<15|m>>>17)^(m<<13|m>>>19)^m>>>10;l[f]=_+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Nt((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=Li).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,_=n.high,m=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,x=u.low,U=h.high,T=h.low,k=f,C=p,D=_,I=m,F=g,P=y,L=v,M=b,R=w,z=S,N=E,O=A,G=B,H=x,$=U,V=T,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],ae=se.high,oe=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&G,fe=z&O^~z&H,pe=k&D^k&F^D&F,_e=C&I^C&P^I&P,me=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=$+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+_e;$=G,V=H,G=N,H=O,N=R,O=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=F,M=P,F=D,P=I,D=k,I=C,k=Ee+(me+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),m=n.low=m+I,n.high=_+D+(m>>>0>>0?1:0),y=s.low=y+P,s.high=g+F+(y>>>0

>>0?1:0),b=a.low=b+M,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),x=u.low=x+H,u.high=B+G+(x>>>0>>0?1:0),T=h.low=T+V,h.high=U+$+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Nt((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Li).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,_=0;_<5;_++)f^=(T=r[h+5*_]).high,p^=T.low;var m=u[h];m.high=f,m.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),_=0;_<5;_++)(T=r[h+5*_]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var x=u[0],U=r[0];for(x.high=U.high,x.low=U.low,h=0;h<5;h++)for(_=0;_<5;_++){var T=r[w=h+5*_],k=u[w],C=u[(h+1)%5+5*_],D=u[(h+2)%5+5*_];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var I=c[o];T.high^=I.high,T.low^=I.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,B,x,U,T=this._hash.words,k=u.words,C=h.words,D=o.words,I=d.words,F=l.words,P=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],B=b=T[3],x=w=T[4],r=0;r<80;r+=1)U=s+e[t+D[r]]|0,U+=r<16?p(a,f,b)+k[0]:r<32?_(a,f,b)+k[1]:r<48?m(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],U=(U=v(U|=0,F[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=U,U=S+e[t+I[r]]|0,U+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?m(E,A,B)+C[2]:r<64?_(E,A,B)+C[3]:p(E,A,B)+C[4],U=(U=v(U|=0,P[r]))+x|0,S=x,x=B,B=v(A,10),A=E,E=U;U=T[1]+f+B|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=U},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function _(e,t,r){return e&t|~e&r}function m(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Nt((function(e,t){var r,i,n;e.exports=(i=(r=Li).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var _=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),m=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),_.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:m}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return _.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,_.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Nt((function(e,t){var r;e.exports=((r=Li).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Nt((function(e,t){var r;e.exports=((r=Li).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Nt((function(e,t){var r;e.exports=(r=Li,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var _=e[r],m=e[_],g=e[m],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*m^257*_^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=_^e[e[e[g^_]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],_=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],m=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=_,c=m,u=g,h=y}_=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],m=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=_,e[t+1]=m,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(_)}(),r.AES)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Nt((function(e,t){var r;e.exports=(r=Li,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(s+4+2,s+4+a);let n=new Pi.ModeOfOperation.ctr(t,new Pi.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function zi(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Pi.ModeOfOperation.ctr(t,new Pi.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Nt((function(e,t){e.exports=Li}));var Ni=Nt((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[a].grouping_type+"/0",(o=new l(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,_;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,m.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+m.sample_composition_time_offset[r]),_=a,m.flags&h.TRUN_FLAGS_FLAGS?_=m.sample_flags[r]:0===r&&m.flags&h.TRUN_FLAGS_FIRST_FLAG&&(_=m.first_sample_flags),p.is_sync=!(_>>16&1),p.is_leading=_>>26&3,p.depends_on=_>>24&3,p.is_depended_on=_>>22&3,p.has_redundancy=_>>20&3,p.degradation_priority=65535&_;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(m.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+m.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Oi(e){return e.reduce(((e,t)=>256*e+t))}function Gi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Ni.Log,Ni.MP4BoxStream,Ni.DataStream,Ni.MultiBufferStream,Ni.MPEG4DescriptorParser,Ni.BoxParser,Ni.XMLSubtitlein4Parser,Ni.Textin4Parser,Ni.ISOFile,Ni.createFile;class Hi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Gi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const $i=16,Vi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],Wi=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function ji(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Yi(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Ki(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Xi(e,t){const r=31&t;return e<>>32-r}function Zi(e){return(255&Vi[e>>>24&255])<<24|(255&Vi[e>>>16&255])<<16|(255&Vi[e>>>8&255])<<8|255&Vi[255&e]}function Ji(e){return e^Xi(e,2)^Xi(e,10)^Xi(e,18)^Xi(e,24)}function Qi(e){return e^Xi(e,13)^Xi(e,23)}function en(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Ji(Zi(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Ji(Zi(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Ji(Zi(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Ji(Zi(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^Wi[r+0],t[r+0]=i[0]^=Qi(Zi(e)),e=i[2]^i[3]^i[0]^Wi[r+1],t[r+1]=i[1]^=Qi(Zi(e)),e=i[3]^i[0]^i[1]^Wi[r+2],t[r+2]=i[2]^=Qi(Zi(e)),e=i[0]^i[1]^i[2]^Wi[r+3],t[r+3]=i[3]^=Qi(Zi(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function rn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=ji(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=ji(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Yi(e):ji(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=$i-e.length%$i;for(let r=0;r=$i;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e<$i;e++)0!==r&&(t[e]^=l[e]);en(t,i,o);for(let e=0;e<$i;e++)"cbc"===n&&0===r&&(i[e]^=l[e]),d[u+e]=i[e];"cbc"===n&&(l=0!==r?i:t),c-=$i,u+=$i}if(("pkcs#5"===i||"pkcs#7"===i)&&0===r){const e=d.length,t=d[e-1];for(let r=1;r<=t;r++)if(d[e-r]!==t)throw new Error("padding is invalid");d.splice(e-t,t)}return"array"!==a?0!==r?qi(d):Ki(d):d}function nn(e){return e[3]|e[2]<<8|e[1]<<16|e[0]<<24}function sn(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const i=e.byteLength;let n=5;for(;ni)break;let a=e[n+4],o=!1;if(r?(a=a>>>1&63,o=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,o=1===a||5===a),o){const r=rn(e.slice(n+4+2,n+4+s),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+s}return e}class an{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=on.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=on.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==on.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=on.findFirstStartCode}}}}function ln(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=ln(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class fn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{lr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class pn{static init(){pn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in pn.types)pn.types.hasOwnProperty(e)&&(pn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=pn.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,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.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 pn.box(pn.types.trak,pn.tkhd(e),pn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return pn.box(pn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,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(e){return pn.box(pn.types.mdia,pn.mdhd(e),pn.hdlr(e),pn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return pn.box(pn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?pn.constants.HDLR_AUDIO:pn.constants.HDLR_VIDEO,pn.box(pn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?pn.box(pn.types.smhd,pn.constants.SMHD):pn.box(pn.types.vmhd,pn.constants.VMHD),pn.box(pn.types.minf,t,pn.dinf(),pn.stbl(e))}static dinf(){return pn.box(pn.types.dinf,pn.box(pn.types.dref,pn.constants.DREF))}static stbl(e){return pn.box(pn.types.stbl,pn.stsd(e),pn.box(pn.types.stts,pn.constants.STTS),pn.box(pn.types.stsc,pn.constants.STSC),pn.box(pn.types.stsz,pn.constants.STSZ),pn.box(pn.types.stco,pn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp3(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.mp4a(e)):"avc"===e.videoType?pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.avc1(e)):pn.box(pn.types.stsd,pn.constants.STSD_PREFIX,pn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return pn.box(pn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return pn.box(pn.types.mp4a,i,pn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return pn.box(pn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.avc1,n,pn.box(pn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return pn.box(pn.types.hvc1,n,pn.box(pn.types.hvcC,t))}static mvex(e){return pn.box(pn.types.mvex,pn.trex(e))}static trex(e){let t=e.id,r=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 pn.box(pn.types.trex,r)}static moof(e,t){return pn.box(pn.types.moof,pn.mfhd(e.sequenceNumber),pn.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 pn.box(pn.types.mfhd,t)}static traf(e,t){let r=e.id,i=pn.box(pn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=pn.box(pn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=pn.sdtp(e),a=pn.trun(e,s.byteLength+16+16+8+16+8+8);return pn.box(pn.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,pn.box(pn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),pn.box(pn.types.trun,r)}static mdat(e){return pn.box(pn.types.mdat,e)}}pn.init();var _n,mn=Nt((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_n=mn)&&_n.__esModule&&Object.prototype.hasOwnProperty.call(_n,"default")&&_n.default;const gn=[44100,48e3,32e3,0],yn=[22050,24e3,16e3,0],vn=[11025,12e3,8e3,0],bn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],wn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Sn=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function En(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=vn[a];break;case 2:d=yn[a];break;case 3:d=gn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=zn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}Date.now||(Date.now=function(){return(new Date).getTime()}),s({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}}).then((e=>{!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s={},a=new AbortController,o=null,d=null,l=null,c=null,u=!1,h=null,w=null,S=!1,x=!1,ve=!!gr(r),be=!1,$e=null,Ke=null,st=null,ht=[],ft=null,pt=null,_t=0,St=0,Et=null,xt=null,zt=0,Nt=0,Ot=!1,Gt=!1,Ht=!1,qt=null,Zt=null,ir=null,br=!1,wr=!0,Sr=()=>{const e=_r();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(ii.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),lr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:k,buffer:r,delay:ii.delay,ts:0},[r]),hr(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:k,buffer:t,delay:ii.delay,ts:0},[t]),hr(e)}},error:function(e){ii.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?dt:lt});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:L,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const a=e.slice(5);t===Ie?(n=Tr(a),i={codec:n.codec,description:a}):t===Fe&&(n=Vr(a),i={codec:n.codec,description:a}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth);try{s.decoder.configure(i),s.hasInit=!0}catch(e){ii.debug.log("worker","VideoDecoder configure error",e.code,e)}}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let Er=function(){if(br=!0,ii.fetchStatus!==kt||yr(ii._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){ii.debug.log("worker","abort catch",e)}}else a=null,ii.debug.log("worker",`abort() and not abortController.abort() _status is ${ii.fetchStatus} and _isChrome is ${ii._opt.isChrome}`)},Ur={init(){Ur.lastBuf=null,Ur.vps=null,Ur.sps=null,Ur.pps=null,Ur.streamType=null,Ur.localDts=0,Ur.isSendSeqHeader=!1},destroy(){Ur.lastBuf=null,Ur.vps=null,Ur.sps=null,Ur.pps=null,Ur.streamType=null,Ur.localDts=0,Ur.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Ur.extractNALu$2(t)},getNaluDts(){let e=Ur.localDts;return Ur.localDts=Ur.localDts+40,e},getNaluAudioDts(){const e=ii._opt.sampleRate,t=ii._opt.audioBufferSize;return Ur.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e{const t=Fr(e);t===He||t===Ge?Ur.handleVideoH264Nalu(e):Lr(t)&&i.push(e)})),1===i.length)Ur.handleVideoH264Nalu(i[0]);else if(Rr(i)){const e=Fr(i[0]),t=Mr(e);Ur.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Ur.handleVideoH264Nalu(e)}))}else if(Ur.streamType===Me)if(ii._opt.nakedFlowH265DemuxUseNew){const t=Ur.handleAddNaluStartCode(e),r=Ur.extractNALu(t);if(0===r.length)return void ii.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Kr(e);t===it||t===tt||t===Qe?Ur.handleVideoH265Nalu(e):Zr(t)&&i.push(e)})),1===i.length)Ur.handleVideoH265Nalu(i[0]);else if(Qr(i)){const e=Kr(i[0]),t=Jr(e);Ur.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Ur.handleVideoH265Nalu(e)}))}else Kr(e)===it?Ur.extractH265PPS(e):Ur.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Pr(Fr(e))?Ur.extractH264SEI(e):Ur.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Xr(Kr(e))?Ur.extractH265SEI(e):Ur.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Ur.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Ur.handleAddNaluStartCode(e);Ur.extractNALu(t).forEach((e=>{Ur.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Fr(e);switch(t){case Ge:Ur.sps=e;break;case He:Ur.pps=e}if(Ur.isSendSeqHeader){if(Ur.sps&&Ur.pps){const e=kr({sps:Ur.sps,pps:Ur.pps}),t=Ur.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ur.sps=null,Ur.pps=null}if(Lr(t)){const r=Mr(t),i=Ur.getNaluDts(),n=Dr(e,r);Ur.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Ur.sps&&Ur.pps){Ur.isSendSeqHeader=!0;const e=kr({sps:Ur.sps,pps:Ur.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ur.sps=null,Ur.pps=null}},handleVideoH264NaluList(e,t,r){if(Ur.isSendSeqHeader){const i=Ur.getNaluDts(),n=Ir(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ur.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Kr(e);switch(t){case Qe:Ur.vps=e;break;case tt:Ur.sps=e;break;case it:Ur.pps=e}if(Ur.isSendSeqHeader){if(Ur.vps&&Ur.sps&&Ur.pps){const e=jr({vps:Ur.vps,sps:Ur.sps,pps:Ur.pps}),t=Ur.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ur.vps=null,Ur.sps=null,Ur.pps=null}if(Zr(t)){const r=Jr(t),i=Ur.getNaluDts(),n=qr(e,r);Ur.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Ur.vps&&Ur.sps&&Ur.pps){Ur.isSendSeqHeader=!0;const e=jr({vps:Ur.vps,sps:Ur.sps,pps:Ur.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ur.vps=null,Ur.sps=null,Ur.pps=null}},handleVideoH265NaluList(e,t,r){if(Ur.isSendSeqHeader){const i=Ur.getNaluDts(),n=Yr(e.reduce(((e,t)=>{const r=Qt(e),i=Qt(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ur.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){ii.calcNetworkDelay(t.ts),t.isIFrame&&ii.calcIframeIntervalTimestamp(t.ts),ii.decode(e,t)}},Or={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Or.mp4Box=Ni.createFile(),Or.mp4Box.onReady=Or.onReady,Or.mp4Box.onError=Or.onError,Or.mp4Box.onSamples=Or.onSamples},initTransportDescarmber(){Or.transportDescarmber=new Hi},_getSeqHeader(e){const t=Or.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Ni.DataStream(void 0,0,Ni.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Or.isHevc=!0,qt=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ii.debug.log(Or.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Or.videoTrackId=t.id;const e=Or._getSeqHeader(t);e&&(ii.debug.log(Or.LOG_NAME,"seqHeader"),ii.decodeVideo(e,0,!0,0)),Or.mp4Box.setExtractionOptions(t.id)}if(r&&ii._opt.hasAudio){Or.audioTrackId=r.id;const e=r.audio||{},t=$t.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Or.mp4Box.setExtractionOptions(r.id);const n=Vt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ii.debug.log(Or.LOG_NAME,"aacADTSHeader"),ii.decodeAudio(n,0)}Or.mp4Box.start()},onError(e){ii.debug.error(Or.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Or.videoTrackId)for(const t of r){const r=t.data,i=t.is_sync,n=1e3*t.cts/t.timescale;t.duration,t.timescale,i&&ii.calcIframeIntervalTimestamp(n);let s=null;s=Or.isHevc?Yr(r,i):Ir(r,i),ii.decode(s,{type:se,ts:n,isIFrame:i,cts:0}),Or.mp4Box.releaseUsedSamples(e,t.number)}else if(e===Or.audioTrackId){if(ii._opt.hasAudio)for(const t of r){const r=t.data,i=1e3*t.cts/t.timescale;t.duration,t.timescale;const n=new Uint8Array(r.byteLength+2);n.set([175,1],0),n.set(r,2),ii.decode(n,{type:ne,ts:i,isIFrame:!1,cts:0}),Or.mp4Box.releaseUsedSamples(e,t.number)}}else ii.debug.warn(Or.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Or.transportDescarmber&&(t=Or.transportDescarmber.transport(t)),t.buffer.fileStart=Or.offset,Or.offset+=t.byteLength,Or.mp4Box.appendBuffer(t.buffer)},destroy(){Or.mp4Box&&(Or.mp4Box.stop(),Or.mp4Box.flush(),Or.mp4Box.destroy(),Or.mp4Box=null),Or.transportDescarmber&&(Or.transportDescarmber.destroy(),Or.transportDescarmber=null),Or.offset=0,Or.videoTrackId=null,Or.audioTrackId=null,Or.isHevc=!1}},Gr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Gr.extractNALu(t)},destroy(){Gr.lastBuffer=new Uint8Array(0),Gr.parsedOffset=0,Gr.firstStartCodeOffset=0,Gr.secondStartCodeOffset=0,Gr.state="init",Gr.hasInitVideoCodec=!1,Gr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ii.debug.warn(Gr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Gr.lastBuffer.length+e.length);for(t.set(Gr.lastBuffer,0),t.set(new Uint8Array(e),Gr.lastBuffer.length),Gr.lastBuffer=t;;){if("init"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findFirstStartCode",Gr.firstStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findSecondStartCode",Gr.secondStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Gr.state){if(!(Gr.lastBuffer.length-Gr.parsedOffset>0))break;{let e,t,r=192&Gr.lastBuffer[Gr.parsedOffset];e=0==r?Gr.secondStartCodeOffset-14:Gr.secondStartCodeOffset;let i=0==(192&Gr.lastBuffer[Gr.firstStartCodeOffset+4]);if(i){if(Gr.firstStartCodeOffset-14<0)return void ii.debug.warn(Gr.LOG_NAME,"firstStartCodeOffset -14 is",Gr.firstStartCodeOffset-14);Gr.hasInitVideoCodec||(Gr.hasInitVideoCodec=!0,ii.debug.log(Gr.LOG_NAME,"setCodec"),si.setCodec(Pe,"")),t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset-14,e)}else t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset,e);let n=Gr.getNaluDts();Gr.hasInitVideoCodec?(postMessage({cmd:O,type:Ae,value:t.byteLength}),postMessage({cmd:O,type:Be,value:n}),si.decode(t,i?1:0,n)):ii.debug.warn(Gr.LOG_NAME,"has not init video codec"),Gr.lastBuffer=Gr.lastBuffer.subarray(e),Gr.firstStartCodeOffset=0==r?14:0,Gr.parsedOffset=Gr.firstStartCodeOffset+4,Gr.state="findFirstStartCode"}}}},getNaluDts(){let e=Gr.localDts;return Gr.localDts=Gr.localDts+40,e}},Wr={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new Nn,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){Wr.media_info_=null,Wr.pes_slice_queues_=null,Wr.section_slice_queues_=null,Wr.video_metadata_=null,Wr.audio_metadata_=null,Wr.aac_last_incomplete_data_=null,Wr.video_track_=null,Wr.audio_track_=null,Wr._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){Wr._remainingPacketData&&(e=hn(Wr._remainingPacketData,e),Wr._remainingPacketData=null);let t=e.buffer;const r=Wr.parseChunks(t);r?Wr._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!Wr.pmt_||Wr.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);Wr.last_pcr_=e}if(2==a||5+e===188){t+=188,204===Wr.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===Wr.current_pmt_pid_||null!=Wr.pmt_&&Wr.pmt_.pid_stream_type[s]===In){let r=188-c;Wr.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=Wr.pmt_&&null!=Wr.pmt_.pid_stream_type[s]){let r=188-c,i=Wr.pmt_.pid_stream_type[s];s!==Wr.pmt_.common_pids.h264&&s!==Wr.pmt_.common_pids.h265&&s!==Wr.pmt_.common_pids.adts_aac&&s!==Wr.pmt_.common_pids.loas_aac&&s!==Wr.pmt_.common_pids.ac3&&s!==Wr.pmt_.common_pids.eac3&&s!==Wr.pmt_.common_pids.opus&&s!==Wr.pmt_.common_pids.mp3&&!0!==Wr.pmt_.pes_private_data_pids[s]&&!0!==Wr.pmt_.timed_id3_pids[s]&&!0!==Wr.pmt_.synchronous_klv_pids[s]&&!0!==Wr.pmt_.asynchronous_klv_pids[s]||Wr.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===Wr.tsPacketSize&&(t+=16)}return Wr.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=Wr.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Wr.emitSectionSlices(s,i):Wr.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&Wr.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Wr.emitSectionSlices(s,i):s.total_length>=s.expected_length&&Wr.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ii.debug.warn(Wr.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=Wr.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?Wr.emitPESSlices(e,i):Wr.clearSlices(e,i)),Wr.pes_slice_queues_[i.pid]=new Ln,Wr.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==Wr.pes_slice_queues_[i.pid])return;let o=Wr.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?Wr.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ii.debug.warn(Wr.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case An:case Bn:Wr.parseMP3Payload(c,r);break;case xn:Wr.pmt_.common_pids.opus===e.pid||Wr.pmt_.common_pids.ac3===e.pid||Wr.pmt_.common_pids.eac3===e.pid||(Wr.pmt_.asynchronous_klv_pids[e.pid]?Wr.parseAsynchronousKLVMetadataPayload(c,e.pid,i):Wr.pmt_.smpte2038_pids[e.pid]?Wr.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):Wr.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Un:Wr.parseADTSAACPayload(c,r);break;case Tn:Wr.parseLOASAACPayload(c,r);break;case kn:case Cn:break;case Dn:Wr.pmt_.timed_id3_pids[e.pid]?Wr.parseTimedID3MetadataPayload(c,r,s,e.pid,i):Wr.pmt_.synchronous_klv_pids[e.pid]&&Wr.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Fn:Wr.parseH264Payload(c,r,s,e.random_access_indicator);break;case Pn:Wr.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===xn){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);Wr.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ii.debug.error(Wr.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(Wr.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=Wr.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==Wr.pat_&&ii.debug.log(Wr.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),Wr.pat_=a,Wr.current_program_=d,Wr.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ii.debug.error(Wr.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=Wr._initPmt(),r.program_number=n,r.version_number=s,Wr.program_pmt_map_[n]=r;else if(r=Wr.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iWr.has_video_&&Wr.has_audio_?Wr.video_init_segment_dispatched_&&Wr.audio_init_segment_dispatched_:Wr.has_video_&&!Wr.has_audio_?Wr.video_init_segment_dispatched_:!(Wr.has_video_||!Wr.has_audio_)&&Wr.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=Wr.video_metadata_.details,t={type:"video"};t.id=Wr.video_track_.id,t.timescale=1e3,t.duration=Wr.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,Wr.video_metadata_.vps){let e=Wr.video_metadata_.vps.data.subarray(4),r=Wr.video_metadata_.sps.data.subarray(4),i=Wr.video_metadata_.pps.data.subarray(4);t.hvcc=jr({vps:e,sps:r,pps:i}),0==Wr.video_init_segment_dispatched_&&ii.debug.log(Wr.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ii.decodeVideo(t.hvcc,0,!0,0)}else{let e=Wr.video_metadata_.sps.data.subarray(4),r=Wr.video_metadata_.pps.data.subarray(4);t.avcc=Cr({sps:e,pps:r}),0==Wr.video_init_segment_dispatched_&&ii.debug.log(Wr.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ii.decodeVideo(t.avcc,0,!0,0)}Wr.video_init_segment_dispatched_=!0,Wr.video_metadata_changed_=!1;let n=Wr.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){Wr.isInitSegmentDispatched()&&Wr.video_track_.length&&Wr._preDoDecode()},dispatchAudioMediaSegment(){Wr.isInitSegmentDispatched()&&Wr.audio_track_.length&&Wr._preDoDecode()},dispatchAudioVideoMediaSegment(){Wr.isInitSegmentDispatched()&&(Wr.audio_track_.length||Wr.video_track_.length)&&Wr._preDoDecode()},parseADTSAACPayload(e,t){if(Wr.has_video_&&!Wr.video_init_segment_dispatched_)return;if(Wr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Wr.aac_last_incomplete_data_.byteLength);t.set(Wr.aac_last_incomplete_data_,0),t.set(e,Wr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Wr.timescale_),"aac"===Wr.audio_metadata_.codec){if(null==t&&null!=Wr.audio_last_sample_pts_)r=1024/Wr.audio_metadata_.sampling_frequency*1e3,i=Wr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Wr.TAG_NAME,"AAC: Unknown pts");if(Wr.aac_last_incomplete_data_&&Wr.audio_last_sample_pts_){r=1024/Wr.audio_metadata_.sampling_frequency*1e3;let e=Wr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Wr.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Kt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Wr.audio_init_segment_dispatched_?(Wr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Wr.dispatchAudioInitSegment(e)):Wr.detectAudioMetadataChange(e)&&(Wr.dispatchAudioMediaSegment(),Wr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};Wr.audio_track_.samples.push(s),Wr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Wr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Wr.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(Wr.has_video_&&!Wr.video_init_segment_dispatched_)return;if(Wr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Wr.aac_last_incomplete_data_.byteLength);t.set(Wr.aac_last_incomplete_data_,0),t.set(e,Wr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Wr.timescale_),"aac"===Wr.audio_metadata_.codec){if(null==t&&null!=Wr.audio_last_sample_pts_)r=1024/Wr.audio_metadata_.sampling_frequency*1e3,i=Wr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Wr.TAG_NAME,"AAC: Unknown pts");if(Wr.aac_last_incomplete_data_&&Wr.audio_last_sample_pts_){r=1024/Wr.audio_metadata_.sampling_frequency*1e3;let e=Wr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Wr.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(or(this.loas_previous_frame)?void 0:this.loas_previous_frame));){Wr.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Wr.audio_init_segment_dispatched_?(Wr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Wr.dispatchAudioInitSegment(e)):Wr.detectAudioMetadataChange(e)&&(Wr.dispatchAudioMediaSegment(),Wr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:ne};Wr.audio_track_.samples.push(s),Wr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Wr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Wr.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(Wr.has_video_&&!Wr.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==Wr.audio_init_segment_dispatched_?(Wr.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},Wr.dispatchAudioInitSegment(h)):Wr.detectAudioMetadataChange(h)&&(Wr.dispatchAudioMediaSegment(),Wr.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/Wr.timescale_,dts:t/Wr.timescale_,type:ne};Wr.audio_track_.samples.push(f),Wr.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==Wr.audio_metadata_.codec)return ii.debug.log(Wr.TAG_NAME,`Audio: Audio Codecs changed from ${Wr.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===Wr.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==Wr.audio_metadata_.audio_object_type)return ii.debug.log(Wr.TAG_NAME,`AAC: AudioObjectType changed from ${Wr.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==Wr.audio_metadata_.sampling_freq_index)return ii.debug.log(Wr.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${Wr.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==Wr.audio_metadata_.channel_config)return ii.debug.log(Wr.TAG_NAME,`AAC: Channel configuration changed from ${Wr.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===Wr.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==Wr.audio_metadata_.sampling_frequency)return ii.debug.log(Wr.TAG_NAME,`AC3: Sampling Frequency changed from ${Wr.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==Wr.audio_metadata_.bit_stream_identification)return ii.debug.log(Wr.TAG_NAME,`AC3: Bit Stream Identification changed from ${Wr.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==Wr.audio_metadata_.bit_stream_mode)return ii.debug.log(Wr.TAG_NAME,`AC3: BitStream Mode changed from ${Wr.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==Wr.audio_metadata_.channel_mode)return ii.debug.log(Wr.TAG_NAME,`AC3: Channel Mode changed from ${Wr.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==Wr.audio_metadata_.low_frequency_effects_channel_on)return ii.debug.log(Wr.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${Wr.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===Wr.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==Wr.audio_metadata_.sample_rate)return ii.debug.log(Wr.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${Wr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Wr.audio_metadata_.channel_count)return ii.debug.log(Wr.TAG_NAME,`Opus: Channel count changed from ${Wr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===Wr.audio_metadata_.codec){const t=e.data;if(t.object_type!==Wr.audio_metadata_.object_type)return ii.debug.log(Wr.TAG_NAME,`MP3: AudioObjectType changed from ${Wr.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==Wr.audio_metadata_.sample_rate)return ii.debug.log(Wr.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${Wr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Wr.audio_metadata_.channel_count)return ii.debug.log(Wr.TAG_NAME,`MP3: Channel count changed from ${Wr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=Wr.audio_track_.id,t.timescale=1e3,t.duration=Wr.duration_,"aac"===Wr.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new On(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Vt({profile:ii._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ii.decodeAudio(n,0)}else"ac-3"===Wr.audio_metadata_.codec||"ec-3"===Wr.audio_metadata_.codec||"opus"===Wr.audio_metadata_.codec||"mp3"===Wr.audio_metadata_.codec&&(t.audioSampleRate=Wr.audio_metadata_.sample_rate,t.channelCount=Wr.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==Wr.audio_init_segment_dispatched_&&ii.debug.log(Wr.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),Wr.audio_init_segment_dispatched_=!0,Wr.video_metadata_changed_=!1;let r=Wr.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new Rn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/Wr.timescale_);s.pts=e}else s.nearest_pts=Wr.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/Wr.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ii.debug.log(Wr.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ii.debug.log(Wr.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ii.debug.log(Wr.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ii.debug.log(Wr.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=Wr.audio_last_sample_pts_?Math.floor(Wr.audio_last_sample_pts_):null!=Wr.last_pcr_?Math.floor(Wr.last_pcr_/300/Wr.timescale_):void 0,_preDoDecode(){const e=Wr.video_track_,t=Wr.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===se?Wr._doDecodeVideo({...e,payload:t}):e.type===ne&&Wr._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Yr(t,e.isIFrame):Ir(t,e.isIFrame),e.isIFrame&&ii.calcIframeIntervalTimestamp(e.dts);let i=ii.cryptoPayload(r,e.isIFrame);ii.decode(i,{type:se,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;gr(ii._opt.m7sCryptoAudio)&&(r=ii.cryptoPayloadAudio(t)),ii.decode(r,{type:ne,ts:e.dts,isIFrame:!1,cts:0})}},ri=null;vr()&&(ri={TAG_NAME:"worker MediaSource",_resetInIt(){ri.isAvc=null,ri.isAAC=null,ri.videoInfo={},ri.videoMeta={},ri.audioMeta={},ri.sourceBuffer=null,ri.audioSourceBuffer=null,ri.hasInit=!1,ri.hasAudioInit=!1,ri.isAudioInitInfo=!1,ri.videoMimeType="",ri.audioMimeType="",ri.cacheTrack={},ri.cacheAudioTrack={},ri.timeInit=!1,ri.sequenceNumber=0,ri.audioSequenceNumber=0,ri.firstRenderTime=null,ri.firstAudioTime=null,ri.mediaSourceAppendBufferFull=!1,ri.mediaSourceAppendBufferError=!1,ri.mediaSourceAddSourceBufferError=!1,ri.mediaSourceBufferError=!1,ri.mediaSourceError=!1,ri.prevTimestamp=null,ri.decodeDiffTimestamp=null,ri.prevDts=null,ri.prevAudioDts=null,ri.prevPayloadBufferSize=0,ri.isWidthOrHeightChanged=!1,ri.prevTs=null,ri.prevAudioTs=null,ri.eventListenList=[],ri.pendingRemoveRanges=[],ri.pendingSegments=[],ri.pendingAudioRemoveRanges=[],ri.pendingAudioSegments=[],ri.supportVideoFrameCallbackHandle=null,ri.audioSourceBufferCheckTimeout=null,ri.audioSourceNoDataCheckTimeout=null,ri.hasPendingEos=!1,ri.$video={currentTime:0,readyState:0}},init(){ri.events=new fn,ri._resetInIt(),ri.mediaSource=new self.MediaSource,ri.isDecodeFirstIIframe=!!yr(ii._opt.checkFirstIFrame),ri._bindMediaSourceEvents()},destroy(){ri.stop(),ri._clearAudioSourceBufferCheckTimeout(),ri.eventListenList&&ri.eventListenList.length&&(ri.eventListenList.forEach((e=>e())),ri.eventListenList=[]),ri._resetInIt(),ri.mediaSource=null},getState:()=>ri.mediaSource&&ri.mediaSource.readyState,isStateOpen:()=>ri.getState()===gt,isStateClosed:()=>ri.getState()===yt,isStateEnded:()=>ri.getState()===mt,_bindMediaSourceEvents(){const{proxy:e}=ri.events,t=e(ri.mediaSource,bt,(()=>{ii.debug.log(ri.TAG_NAME,"sourceOpen"),ri._onMediaSourceSourceOpen()})),r=e(ri.mediaSource,vt,(()=>{ii.debug.log(ri.TAG_NAME,"sourceClose")})),i=e(ri.mediaSource,wt,(()=>{ii.debug.log(ri.TAG_NAME,"sourceended")}));ri.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){ri.sourceBuffer||(ii.debug.log(ri.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),ri._initSourceBuffer()),ri.audioSourceBuffer||(ii.debug.log(ri.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),ri._initAudioSourceBuffer()),ri._hasPendingSegments()&&ri._doAppendSegments()},decodeVideo(e,t,r,i){if(ii.isDestroyed)ii.debug.warn(ri.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(yr(ri.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Fe&&yr(ar()))return void ri.emitError(Ce.mediaSourceH265NotSupport);ri.videoInfo.codec=i,postMessage({cmd:L,code:i});const n=new Uint8Array(e);postMessage({cmd:M,buffer:n,codecId:i},[n.buffer]),ri.hasInit=ri._decodeConfigurationRecord(e,t,r,i)}else ii.debug.warn(ri.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]}`);else if(!ri.isDecodeFirstIIframe&&r&&(ri.isDecodeFirstIIframe=!0),ri.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Ie?r=Tr(e.slice(5)):t===Fe&&(r=$r(e));const i=ri.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ii.debug.warn(ri.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecWidth},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),ri.isWidthOrHeightChanged=!0,ri.emitError(Ce.mseWidthOrHeightChange))}if(ri.isWidthOrHeightChanged)return void ii.debug.warn(ri.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(mr(e))return void ii.debug.warn(ri.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength300&&(ri.firstAudioTime-=e,ii.debug.warn(ri.TAG_NAME,`video\n firstAudioTime is ${ri.firstRenderTime} and current time is ${ri.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${ri.firstAudioTime}`))}r=t-ri.firstAudioTime,r<0&&(ii.debug.warn(ri.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${ri.prevAudioTs},\n firstAudioTime is ${ri.firstAudioTime}`),r=null===ri.prevAudioDts?0:ri.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration),null!==ri.prevAudioTs&&r<=ri.prevAudioDts&&(ii.debug.warn(ri.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${ri.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${ri.prevAudioTs} ,\n and diff is ${t-ri.prevAudioTs}`),r=ri.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration)}ii.isPlayer?ri._decodeAudio(e,r,t):ii.isPlayback,ri.prevAudioTs=t,ri.prevAudioDts=r}else ii.debug.log(ri.TAG_NAME,"decodeAudio first frame is not iFrame")}},_checkTsIsMaxDiff:e=>ri.prevTs>0&&eE,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Ie?s=Tr(n):i===Fe&&(s=Vr(n)),ri.videoInfo.width=s.codecWidth,ri.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ii.debug.warn(ri.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),ri.emitError(Ce.mediaSourceDecoderConfigurationError),!1;const a={id:Dt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=pn.generateInitSegment(a);ri.isAvc=i===Ie;let d=s.codec;return ri.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:ri.isAvc?ct:ut,postMessage({cmd:T,w:s.codecWidth,h:s.codecHeight}),ri._initSourceBuffer(),ri.appendBuffer(o.buffer),ri.sequenceNumber=0,ri.cacheTrack={},ri.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Oe,s=r===Re;if(yr(s||n))return ii.debug.warn(ri.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),ri.emitError(Ce.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(Wt(e)){if(o=Yt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=En(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&yr(sr())?(d="mpeg",l="",c=new Uint8Array):c=pn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),yr(ri.isAudioInitInfo)&&(ir=r===Re?i?16:8:0===i?8:16,postMessage({cmd:I,code:r}),postMessage({cmd:D,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:ir}),ri.isAudioInitInfo=!0),ri.audioMimeType=u,ri.isAAC=s,ri._initAudioSourceBuffer(),ri.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=ri.events;if(null===ri.sourceBuffer&&null!==ri.mediaSource&&ri.isStateOpen()&&ri.videoMimeType){try{ri.sourceBuffer=ri.mediaSource.addSourceBuffer(ri.videoMimeType),ii.debug.log(ri.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ri.videoMimeType)}catch(e){return ii.debug.error(ri.TAG_NAME,"appendBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),ri.emitError(Ce.mseAddSourceBufferError,e.code),void(ri.mediaSourceAddSourceBufferError=!0)}if(ri.sourceBuffer){const t=e(ri.sourceBuffer,"error",(e=>{ri.mediaSourceBufferError=!0,ii.debug.error(ri.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),ri.emitError(Ce.mseSourceBufferError,e.code)})),r=e(ri.sourceBuffer,"updateend",(()=>{ri._hasPendingRemoveRanges()?ri._doRemoveRanges():ri._hasPendingSegments()?ri._doAppendSegments():ri.hasPendingEos&&(ii.debug.log(ri.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ri.endOfStream())}));ri.eventListenList.push(t,r)}}else ii.debug.log(ri.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${ri.isStateOpen()} and mseDecoder.isAvc === null is ${null===ri.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=ri.events;if(null===ri.audioSourceBuffer&&null!==ri.mediaSource&&ri.isStateOpen()&&ri.audioMimeType){try{ri.audioSourceBuffer=ri.mediaSource.addSourceBuffer(ri.audioMimeType),ri._clearAudioSourceBufferCheckTimeout(),ii.debug.log(ri.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",ri.audioMimeType)}catch(e){return ii.debug.error(ri.TAG_NAME,"appendAudioBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),ri.emitError(Ce.mseAddSourceBufferError,e.code),void(ri.mediaSourceAddSourceBufferError=!0)}if(ri.audioSourceBuffer){const t=e(ri.audioSourceBuffer,"error",(e=>{ri.mediaSourceBufferError=!0,ii.debug.error(ri.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),ri.emitError(Ce.mseSourceBufferError,e.code)})),r=e(ri.audioSourceBuffer,"updateend",(()=>{ri._hasPendingRemoveRanges()?ri._doRemoveRanges():ri._hasPendingSegments()?ri._doAppendSegments():ri.hasPendingEos&&(ii.debug.log(ri.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),ri.endOfStream())}));ri.eventListenList.push(t,r),null===ri.audioSourceNoDataCheckTimeout&&(ri.audioSourceNoDataCheckTimeout=setTimeout((()=>{ri._clearAudioNoDataCheckTimeout(),ri.emitError(Ce.mediaSourceAudioNoDataTimeout)}),1e3))}}else ii.debug.log(ri.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${ri.isStateOpen()} and mseDecoder.audioMimeType is ${ri.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ii.debug.warn(ri.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;ri.prevTimestamp||(ri.prevTimestamp=o,d=!0);const l=o-ri.prevTimestamp;if(ri.decodeDiffTimestamp=l,l>500&&!d&&ii.isPlayer&&ii.debug.warn(ri.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${ri.prevTimestamp}, diff time is ${l} ms`),ri.cacheTrack.id&&t>=ri.cacheTrack.dts){let e=8+ri.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ri.cacheTrack.data,8),ri.cacheTrack.duration=t-ri.cacheTrack.dts;let i=pn.moof(ri.cacheTrack,ri.cacheTrack.dts);ri.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ri.appendBuffer(n.buffer)}else ii.debug.log(ri.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${ri.cacheTrack&&ri.cacheTrack.dts}`),ri.timeInit=!1,ri.cacheTrack={};ri.cacheTrack||(ri.cacheTrack={}),ri.cacheTrack.id=Dt,ri.cacheTrack.sequenceNumber=++ri.sequenceNumber,ri.cacheTrack.size=a,ri.cacheTrack.dts=t,ri.cacheTrack.cts=i,ri.cacheTrack.isKeyframe=r,ri.cacheTrack.data=s,ri.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},ri.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=ri.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(ri.cacheAudioTrack.id&&t>=ri.cacheAudioTrack.dts){let e=8+ri.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(pn.types.mdat,4),r.set(ri.cacheAudioTrack.data,8),ri.cacheAudioTrack.duration=t-ri.cacheAudioTrack.dts;let i=pn.moof(ri.cacheAudioTrack,ri.cacheAudioTrack.dts);ri.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),ri.appendAudioBuffer(n.buffer)}else ri.cacheAudioTrack={};ri.cacheAudioTrack||(ri.cacheAudioTrack={}),ri.cacheAudioTrack.id=It,ri.cacheAudioTrack.sequenceNumber=++ri.audioSequenceNumber,ri.cacheAudioTrack.size=n,ri.cacheAudioTrack.dts=t,ri.cacheAudioTrack.cts=0,ri.cacheAudioTrack.data=i,ri.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ii.isDestroyed?ii.debug.warn(ri.TAG_NAME,"appendBuffer() player is destroyed"):ri.mediaSourceAddSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ri.mediaSourceAppendBufferFull?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ri.mediaSourceAppendBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ri.mediaSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ri.pendingSegments.push(e),ri.sourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&ri._needCleanupSourceBuffer()&&ri._doCleanUpSourceBuffer(),yr(ri.getSourceBufferUpdating())&&ri.isStateOpen()&&yr(ri._hasPendingRemoveRanges()))?ri._doAppendSegments():ri.isStateClosed()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ri.isStateEnded()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is end")):ri._hasPendingRemoveRanges()&&ii.debug.log(ri.TAG_NAME,`video has pending remove ranges and video length is ${ri.pendingRemoveRanges.length}, audio length is ${ri.pendingAudioRemoveRanges.length}`))},appendAudioBuffer(e){ii.isDestroyed?ii.debug.warn(ri.TAG_NAME,"appendAudioBuffer() player is destroyed"):ri.mediaSourceAddSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):ri.mediaSourceAppendBufferFull?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):ri.mediaSourceAppendBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):ri.mediaSourceBufferError?ii.debug.warn(ri.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(ri.pendingAudioSegments.push(e),ri.audioSourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&ri._needCleanupSourceBuffer()&&ri._doCleanUpSourceBuffer(),yr(ri.getAudioSourceBufferUpdating())&&ri.isStateOpen()&&yr(ri._hasPendingRemoveRanges()))?ri._doAppendSegments():ri.isStateClosed()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):ri.isStateEnded()?(ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,"mediaSource is end")):ri._hasPendingRemoveRanges()&&ii.debug.log(ri.TAG_NAME,`audio has pending remove ranges and video length is ${ri.pendingRemoveRanges.length}, audio length is ${ri.pendingAudioRemoveRanges.length}`))},getSourceBufferUpdating:()=>ri.sourceBuffer&&ri.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>ri.audioSourceBuffer&&ri.audioSourceBuffer.updating,stop(){ri.abortSourceBuffer(),ri.removeSourceBuffer(),ri.endOfStream()},clearUpAllSourceBuffer(){if(ri.sourceBuffer){const e=ri.sourceBuffer.buffered;for(let t=0;tri.pendingSegments.length>0||ri.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>ri.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(ri.isStateClosed()||ri.isStateEnded())ii.debug.log(ri.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==ri.sourceBuffer){if(ri.needInitAudio()&&null===ri.audioSourceBuffer)return ii.debug.log(ri.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===ri.audioSourceBufferCheckTimeout&&(ri.audioSourceBufferCheckTimeout=setTimeout((()=>{ri._clearAudioSourceBufferCheckTimeout(),ri.emitError(Ce.mediaSourceAudioInitTimeout)}),1e3)));if(yr(ri.getSourceBufferUpdating())&&ri.pendingSegments.length>0){const e=ri.pendingSegments.shift();try{ri.sourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(ri.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(ri.stop(),ri.mediaSourceAppendBufferFull=!0,ri.emitError(Ce.mediaSourceFull)):11===e.code?(ri.stop(),ri.mediaSourceAppendBufferError=!0,ri.emitError(Ce.mediaSourceAppendBufferError)):(ri.stop(),ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,e.code))}}if(yr(ri.getAudioSourceBufferUpdating())&&ri.pendingAudioSegments.length>0){const e=ri.pendingAudioSegments.shift();try{ri.audioSourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(ri.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(ri.stop(),ri.mediaSourceAppendBufferFull=!0,ri.emitError(Ce.mediaSourceFull)):11===e.code?(ri.stop(),ri.mediaSourceAppendBufferError=!0,ri.emitError(Ce.mediaSourceAppendBufferError)):(ri.stop(),ri.mediaSourceBufferError=!0,ri.emitError(Ce.mseSourceBufferError,e.code))}}}else ii.debug.log(ri.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=ri.$video.currentTime;if(ri.sourceBuffer){const t=ri.sourceBuffer.buffered;let r=!1;for(let i=0;i=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;ri.pendingRemoveRanges.push({start:n,end:t})}}else s=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;ri.pendingAudioRemoveRanges.push({start:n,end:t})}}else sri.pendingRemoveRanges.length>0||ri.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ii._opt.hasAudio&&ii._opt.mseDecodeAudio,_doRemoveRanges(){if(ri.sourceBuffer&&yr(ri.getSourceBufferUpdating())){let e=ri.pendingRemoveRanges;for(;e.length&&yr(ri.getSourceBufferUpdating());){let t=e.shift();try{ri.sourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(ri.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(ri.audioSourceBuffer&&yr(ri.getAudioSourceBufferUpdating())){let e=ri.pendingAudioRemoveRanges;for(;e.length&&yr(ri.getAudioSourceBufferUpdating());){let t=e.shift();try{ri.audioSourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(ri.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(yr(ii._opt.mseAutoCleanupSourceBuffer))return!1;const e=ri.$video.currentTime;if(ri.sourceBuffer){let t=ri.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(ri.audioSourceBuffer){let t=ri.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){ri.audioSourceBufferCheckTimeout&&(clearTimeout(ri.audioSourceBufferCheckTimeout),ri.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){ri.audioSourceNoDataCheckTimeout&&(clearTimeout(ri.audioSourceNoDataCheckTimeout),ri.audioSourceNoDataCheckTimeout=null)},getHandle:()=>ri.mediaSource.handle,emitError(e){postMessage({cmd:ie,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ii={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:Sr(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ii.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ii.getVideoBufferLength(),audioDemuxBufferDelay:ii.getAudioBufferLength(),streamBufferByteLength:ii.getStreamBufferLength(),netBuf:ii.networkDelay||0,pushLatestDelay:ii.pushLatestDelay||0,latestDelay:ii.delay,isStreamTsMoreThanLocal:be});postMessage({cmd:O,type:Ue,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ii._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ii._opt.hasVideo&&!ve)return-1;if(t===ne)return ii.delay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp>e)return ii.preDelayTimestamp-e>1e3&&ii.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return ${ii.delay}`),ii.preDelayTimestamp=e,ii.delay;if(ii.firstTimestamp){if(e){const t=Date.now()-ii.startTimestamp,r=e-ii.firstTimestamp;t>=r?(be=!1,ii.delay=t-r):(be=!0,ii.delay=r-t)}}else ii.firstTimestamp=e,ii.startTimestamp=Date.now(),ii.delay=-1;return ii.preDelayTimestamp=e,ii.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ii._opt.hasVideo&&!ve)return-1;if(t===ne)return ii.pushLatestDelay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp-e>1e3)return ii.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return -1`),-1;if(ii.firstTimestamp){let t=-1;if(e){const r=Date.now()-ii.startTimestamp,i=e-ii.firstTimestamp;r>=i?(be=!1,t=r-i):(be=!0,t=i-r)}return t}return-1},resetDelay:function(){ii.firstTimestamp=null,ii.startTimestamp=null,ii.delay=-1,ii.dropping=!1},resetAllDelay:function(){ii.resetDelay(),ii.preDelayTimestamp=null},doDecode:function(e){ii._opt.isEmitSEI&&e.type===se&&ii.isWorkerFetch&&ii.findSei(e.payload,e.ts),ii.isPlayUseMSEAndDecoderInWorker()?e.type===ne?ii._opt.mseDecodeAudio?ri.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===se&&ri.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ii._opt.useWCS&&ii.useOffscreen()&&e.type===se&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===se&&mr(e.payload);if(yr(r))s&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n));else{const r=n.ts-t,a=n.type===ne&&e.type===se;(r<=20||a||s)&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n))}},init:function(){ii.debug.log("worker","init and opt is",JSON.stringify(ii._opt));const e=ii._opt.playType===y,t=ii._opt.playType===v;if(Ur.init(),ii.isPlayer=e,ii.isPlayback=t,ii.isPlayUseMSEAndDecoderInWorker()&&ri&&ri.init(),ii.isPlaybackCacheBeforeDecodeForFpsRender())ii.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ii.debug.log("worker","setInterval()");const t=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(ii.isPushDropping)return void ii.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ii.dropping){for(r=i.shift(),ii.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ii.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ii.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ii.getNotDroppingDelayTs()&&(ii.debug.log("worker","loop() is dropping = false, is iFrame"),ii.dropping=!1,ii.doDecode(r),ii.decodeNext(r))}else if(ii.isPlayback||ii.isPlayUseMSE()||0===ii._opt.videoBuffer)for(;i.length;)r=i.shift(),ii.doDecode(r);else if(r=i[0],-1===ii.getDelay(r.ts,r.type))ii.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ii.doDecode(r),ii.decodeNext(r);else if(ii.delay>t&&e)ii.hasIframeInBufferList()?(ii.debug.log("worker",`delay is ${ii.delay} > maxDelay ${t}, set dropping is true`),ii.resetAllDelay(),ii.dropping=!0,postMessage({cmd:H})):(i.shift(),ii.doDecode(r),ii.decodeNext(r));else for(;i.length;){if(r=i[0],!(ii.getDelay(r.ts,r.type)>ii._opt.videoBuffer)){ii.delay<0&&ii.debug.warn("worker",`loop() do not decode and delay is ${ii.delay}, bufferList is ${i.length}`);break}i.shift(),ii.doDecode(r)}}else-1!==ii.delay&&ii.debug.log("worker","loop() bufferList is empty and reset delay"),ii.resetAllDelay()};ii.stopId=setInterval((()=>{let e=(new Date).getTime();$e||($e=e);const t=e-$e;t>100&&ii.debug.warn("worker",`loop demux diff time is ${t}`),r(),$e=(new Date).getTime()}),20)}if(yr(ii._opt.checkFirstIFrame)&&(ve=!0),ii.isPlayUseMSEAndDecoderInWorker()&&ri){const e=ri.getHandle();e&&postMessage({cmd:te,mseHandle:e},[e])}},playbackCacheLoop:function(){ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ii.doDecode(e))};e();const t=Math.ceil(1e3/(ii.streamFps*ii._opt.playbackRate));ii.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ii.streamFps}, streamAudioFps is ${ii.streamAudioFps} ,streamVideoFps is ${ii.streamVideoFps} playbackRate is ${ii._opt.playbackRate}`),ii.stopId=setInterval(e,t)},close:function(){if(ii.debug.log("worker","close"),ii.isDestroyed=!0,Er(),!o||1!==o.readyState&&2!==o.readyState?o&&ii.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(br=!0,o.close(1e3,"Client disconnecting")),o=null,ii.stopStreamRateAndStatsInterval(),ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null),ii.mp3Demuxer&&(ii.mp3Demuxer.destroy(),ii.mp3Demuxer=null),ii.writableStream&&yr(ii.writableStream.locked)&&ii.writableStream.close().catch((e=>{ii.debug.log("worker","close() and writableStream.close() error",e)})),ii.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){ii.debug.warn("worker","close() and audioDecoder.clear error",e)}if(si)try{si.clear&&si.clear(),si=null}catch(e){ii.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,$e=null,be=!1,s&&(s.reset&&s.reset(),s=null),ri&&(ri.destroy(),ri=null),ii.firstTimestamp=null,ii.startTimestamp=null,ii.networkDelay=0,ii.streamFps=null,ii.streamAudioFps=null,ii.streamVideoFps=null,ii.delay=-1,ii.pushLatestDelay=-1,ii.preDelayTimestamp=null,ii.dropping=!1,ii.isPushDropping=!1,ii.isPlayer=!0,ii.isPlayback=!1,ii.isWorkerFetch=!1,ii._opt=Sr(),ii.webglObj&&(ii.webglObj.destroy(),ii.offscreenCanvas.removeEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost),ii.offscreenCanvas.removeEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored),ii.offscreenCanvas=null,ii.offscreenCanvasGL=null,ii.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,w=null,S=!1,x=!1,ve=!1,Ot=!1,Gt=!1,Ht=!1,qt=null,Zt=null,ht=[],_t=0,St=0,Ke=null,st=null,Et=null,xt=null,ir=null,zt=0,Nt=0,ft=null,pt=null,ii.fetchStatus=Tt,wr=!0,Ur.destroy(),Or.destroy(),Gr.destroy(),Wr.destroy(),postMessage({cmd:q})},pushBuffer:function(e,t){if(t.type===ne&&Wt(e)){if(ii.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Z,buffer:t},[t.buffer])}ii.decodeAudio(e,t.ts)}else if(t.type===se&&t.isIFrame&&mr(e)){if(ii.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ii.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ii._opt.isRecording)if(ii._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:Q,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ii._opt.recordType===b)if(t.type===se){const r=new Uint8Array(e).slice(5);postMessage({cmd:R,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===ne&&ii._opt.isWasmMp4){const r=new Uint8Array(e),i=jt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ii.isPlayer&&zt>0&&xt>0&&t.type===se){const e=t.ts-xt,r=zt+zt/2;e>r&&ii.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${xt},\n diff is ${e} and preTimestampDuration is ${zt} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(ii.isPlayer&&xt>0&&t.type===se&&t.tsE&&(ii.debug.warn("worker",`pushBuffer,\n preTimestamp is ${xt}, options.ts is ${t.ts},\n diff is ${xt-t.ts} more than 3600000,\n and resetAllDelay`),ii.resetAllDelay(),xt=null,zt=0),ii.isPlayer&&xt>0&&t.ts<=xt&&t.type===se&&(ii.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${xt} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),ii._opt.isDropSameTimestampGop&&yr(t.isIFrame)&&ve)){const e=ii.hasIframeInBufferList(),t=yr(ii.isPushDropping);return ii.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ii.dropBuffer$2():(ii.clearBuffer(!0),gr(ii._opt.checkFirstIFrame)&&gr(r)&&(ii.isPlayUseMSEAndDecoderInWorker()?ri.isDecodeFirstIIframe=!1:postMessage({cmd:ee}))))}if(ii.isPlayer&&ve){const e=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=ii.getDelayNotUpdateDelay(t.ts,t.type);ii.pushLatestDelay=r,r>e&&ii.delay0&&ii.hasIframeInBufferList()&&!1===ii.isPushDropping&&(ii.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${ii.delay} and has iIframe and next decoder.dropBuffer$2()`),ii.dropBuffer$2())}if(ii.isPlayer&&t.type===se&&(xt>0&&(zt=t.ts-xt),Nt=e.byteLength,xt=t.ts),t.type===ne?i.push({ts:t.ts,payload:e,decoder:{decode:ii.decodeAudio},type:ne,isIFrame:!1}):t.type===se&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:ii.decodeVideo},type:se,isIFrame:t.isIFrame}),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&(or(ii.streamVideoFps)||or(ii.streamAudioFps))){let e=ii.streamVideoFps,t=ii.streamAudioFps;if(or(ii.streamVideoFps)&&(e=fr(i,se),e&&(ii.streamVideoFps=e,postMessage({cmd:$,value:ii.streamVideoFps}),ii.streamFps=t?e+t:e,yr(ii._opt.hasAudio)&&(ii.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),ii.streamAudioFps=0),ii.playbackCacheLoop())),or(ii.streamAudioFps)&&(t=fr(i,ne),t&&(ii.streamAudioFps=t,ii.streamFps=e?e+t:t,ii.playbackCacheLoop())),or(ii.streamVideoFps)&&or(ii.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));ii.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ii.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ii.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ii.streamVideoFps=25,postMessage({cmd:$,value:ii.streamVideoFps}),r?(ii.streamAudioFps=25,ii.streamFps=ii.streamVideoFps+ii.streamAudioFps):ii.streamFps=ii.streamVideoFps,ii.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===se&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===se&&e.isIFrame)),isAllIframeInBufferList(){const e=ii.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===se&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ii._opt.videoBuffer+ii._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===ne&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ii._opt.isNakedFlow?Ur.lastBuf&&(e=Ur.lastBuf.byteLength):ii._opt.isTs?Wr._remainingPacketData&&(e=Wr._remainingPacketData.byteLength):ii._opt.isFmp4&&Or.mp4Box&&(e=Or.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){ii.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ii.isWorkerFetch=!0,t.isFlv?ii._opt.isFlv=!0:t.isFmp4?ii._opt.isFmp4=!0:t.isMpeg4?ii._opt.isMpeg4=!0:t.isNakedFlow?ii._opt.isNakedFlow=!0:t.isTs&&(ii._opt.isTs=!0),d=nr((e=>{postMessage({cmd:O,type:Se,value:e})})),ii.startStreamRateAndStatsInterval(),t.isFmp4&&(Or.listenMp4Box(),ii._opt.isFmp4Private&&Or.initTransportDescarmber()),t.protocol===_?(c=new Ar(ii.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(gr(br))return ii.debug.log("worker","request abort and run res.body.cancel()"),ii.fetchStatus=Tt,void e.body.cancel();if(!pr(e))return ii.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Er(),void postMessage({cmd:O,type:Ce.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:O,type:xe}),ur())ii.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct)):gr(br)?(ii.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ii.fetchStatus=Ct)):void("string"!=typeof e?(ii.fetchStatus=kt,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ii.demuxFmp4(e):t.isMpeg4?ii.demuxMpeg4(e):t.isTs&&ii.demuxTs(e)):ii.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ii.debug.log("worker","writableStream close()"),ii.fetchStatus=Ct,c=null,Er(),postMessage({cmd:O,type:we,value:m,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct);c=null,e.name!==At?(ii.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Er(),postMessage({cmd:O,type:Ce.fetchError,value:e.toString()})):ii.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ii.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ii.debug.log("worker","fetchNext().then() and done is true"),ii.fetchStatus=Ct,c=null,Er(),void postMessage({cmd:O,type:we,value:m,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct)):gr(br)?(ii.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ii.fetchStatus=Ct)):void("string"!=typeof n?(ii.fetchStatus=kt,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ii.demuxFmp4(n):t.isMpeg4&&ii.demuxMpeg4(n),i()):ii.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Ct);c=null,e.name!==At?(ii.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:O,type:Ce.fetchError,value:e.toString()})):ii.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ii.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==At?(ii.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:O,type:Ce.fetchError,value:e.toString()}),c=null):ii.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))):t.protocol===p&&(t.isFlv&&(c=new Ar(ii.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{ii.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:O,type:xe}),postMessage({cmd:O,type:ke})},o.onclose=e=>{u?ii.debug.log("worker","fetchStream, WebsocketStream socket close and isSocketError is true , so return"):(ii.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ii.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),gr(br)?ii.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:O,type:we,value:g,msg:e.code})))},o.onerror=e=>{ii.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,postMessage({cmd:O,type:Ce.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ii.demuxFmp4(e.data):t.isMpeg4?ii.demuxMpeg4(e.data):ii._opt.isNakedFlow?ii.demuxNakedFlow(e.data):ii.demuxM7s(e.data)):ii.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case ae:if(a.byteLength>0){let e=a;gr(ii._opt.m7sCryptoAudio)&&(e=ii.cryptoPayloadAudio(a)),ii.decode(e,{type:ne,ts:s})}else ii.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case oe:if(a.byteLength>=6){const e=a[0];if(ii._isEnhancedH265Header(e))ii._decodeEnhancedH265Video(a,s);else{a[0];let e=a[0]>>4===Ut;if(e&&mr(a)&&null===qt){const e=15&a[0];qt=e===Fe,Zt=er(a,qt),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${qt} and nalUnitSize is ${Zt}`)}e&&ii.calcIframeIntervalTimestamp(s),ii.isPlayer&&ii.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=ii.cryptoPayload(a,e);ii.decode(i,{type:se,ts:s,isIFrame:e,cts:t})}}else ii.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case de:postMessage({cmd:X,buffer:a},[a.buffer]);break;default:ii.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===ne?ii._opt.hasAudio&&(postMessage({cmd:O,type:Ee,value:e.byteLength}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()||(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===se&&ii._opt.hasVideo&&(postMessage({cmd:O,type:Ae,value:e.byteLength}),postMessage({cmd:O,type:Be,value:t.ts}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ii._opt.isM7sCrypto?ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=Ri(e,ii._opt.cryptoKey,ii._opt.cryptoIV,qt):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`):ii._opt.isSm4Crypto?ii._opt.sm4CryptoKey&&t?r=sn(e,ii._opt.sm4CryptoKey):ii._opt.sm4CryptoKey||ii.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ii._opt.isXorCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=un(e,ii._opt.cryptoKey,ii._opt.cryptoIV,qt):ii.debug.error("worker",`isXorCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ii._opt.isM7sCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?e[0]>>4===Re&&(t=zi(e,ii._opt.cryptoKey,ii._opt.cryptoIV)):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(ir=r===Re?i?16:8:0===i?8:16,ni&&ni.setCodec)if(Wt(e)||r===ze||r===Ne||r===Oe){ii.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===Re?e.slice(2):new Uint8Array(0);ni.setCodec(r,ii._opt.sampleRate,i),r===Re&&postMessage({cmd:P,buffer:i},[i.buffer]),x=!0,r!==Re&&(r===Oe?(ii.mp3Demuxer||(ii.mp3Demuxer=new dn(ii),ii.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),ii.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t))}else ii.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ii.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ii.isDestroyed)ii.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())ri.decodeAudio(e,t);else if(gr(r)&&gr(ii._opt.mseDecodeAudio))postMessage({cmd:N,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(x){if(Wt(e))return void ii.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Oe?ii.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===Re?e.slice(2):e.slice(1),t)}else ii.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(si&&si.setCodec)if(mr(e))if(t===Ie||t===Fe){ii.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===Ie&&ii._opt.useSIMD){const e=Tr(r);if(e.codecWidth>A||e.codecHeight>A)return postMessage({cmd:j}),void ii.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,si.setCodec(t,r),postMessage({cmd:L,code:t}),postMessage({cmd:M,buffer:i,codecId:t},[i.buffer])}else ii.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else ii.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else ii.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ii.isDestroyed)ii.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorker())ri.decodeVideo(e,t,i,n);else if(gr(r))postMessage({cmd:z,payload:e,isIFrame:i,ts:t,cts:n,delay:ii.delay},[e.buffer]);else if(S)if(!ve&&i&&(ve=!0),ve){if(i&&mr(e)){const t=15&e[0];let r={};t===Ie?r=Tr(e.slice(5)):t===Fe&&(r=$r(e)),r.codecWidth&&r.codecHeight&&h&&w&&(r.codecWidth!==h||r.codecHeight!==w)&&(ii.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${w},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Gt=!0,postMessage({cmd:V}))}if(Gt)return void ii.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Ht)return void ii.debug.warn("worker","decodeVideo: simd decode error, and return");if(mr(e))return void ii.debug.warn("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ii.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ii.isPlayer&&(ii.resetAllDelay(),gr(ii._opt.checkFirstIFrame)&&(ii.dropping=!0,postMessage({cmd:H}))),gr(ii._opt.checkFirstIFrame)&&yr(r)&&(ve=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>gr(e.isIFrame)&&e.type===se));if(ii.isAllIframeInBufferList())for(let t=0;t=ii.getNotDroppingDelayTs()){ii.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ii.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ii.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ii.resetAllDelay(),ii.getDelay(r.ts,r.type),ii.doDecode(r),ii.isPushDropping=!1,ii.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ii.delay} `)}else ii.isPushDropping=!1}0===i.length&&(ii.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case ne:ii.decode(new Uint8Array(e,5),{type:ne,ts:r});break;case se:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ii._isEnhancedH265Header(n))ii._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ii.calcIframeIntervalTimestamp(r),mr(i)&&null===qt)){const e=15&i[0];qt=e===Fe}ii.isPlayer&&ii.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ii.cryptoPayload(i,e);ii.decode(a,{type:se,ts:r,isIFrame:e,cts:n})}}else ii.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Ur.dispatch(e)},demuxFmp4:function(e){Or.dispatch(e)},demuxMpeg4:function(e){Gr.dispatch(e)},demuxTs:function(e){Wr.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(s[0]);if(qt=yr(d),n===Pt){if(i===Rt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Zt=er(e,qt),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${qt} and nalUnitSize is ${Zt}`),ii.decode(i,{type:se,ts:t,isIFrame:!0,cts:0})}}}else if(n===Lt){let r=e,n=0;const s=i===Rt;s&&ii.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Yr(e.slice(8),s),r=ii.cryptoPayload(r,s),ii.decode(r,{type:se,ts:t,isIFrame:s,cts:n}))}else if(n===Mt){const r=i===Rt;r&&ii.calcIframeIntervalTimestamp(t);let n=Yr(e.slice(5),r);n=ii.cryptoPayload(n,r),ii.decode(n,{type:se,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ft)===Ft},findSei:function(e,t){let r=4;dr(Zt)&&(r=Zt),Jt(e.slice(5),r).forEach((e=>{const r=qt?e[0]>>>1&63:31&e[0];(qt&&(r===ot||r===at)||yr(qt)&&r===je)&&postMessage({cmd:K,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(ve&&e>0))return;null===Ke?(Ke=e,st=tr()):et?r-t:0;ii.networkDelay=i,i>ii._opt.networkDelay&&ii._opt.playType===y&&(ii.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Ke} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:O,type:Te,value:i}))},calcIframeIntervalTimestamp:function(e){null===Et?Et=e:Et=ii._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return ii.isPlayer&&ii._opt.useMSE&&gr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ii.isPlayUseMSE()&&ii._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ii.isPlayUseMSEAndDecoderInWorker()&&ii._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ii.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ii.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,ii.webglObj.destroy(),ii.webglObj=null,ii.offscreenCanvasGL=null,setTimeout((()=>{ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.offscreenCanvasGL&&ii.offscreenCanvasGL.getContextAttributes().stencil?(ii.webglObj=f(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),Ot=!1):ii.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ii.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:L,code:e}),postMessage({cmd:T,w:t,h:r}),h=t,w=r,ii.useOffscreen()&&(ii.offscreenCanvas=new OffscreenCanvas(t,r),ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.webglObj=f(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),ii.offscreenCanvas.addEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost,!1),ii.offscreenCanvas.addEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:I,code:e}),postMessage({cmd:D,sampleRate:t,channels:r,depth:ir}),St=r},yuvData:function(t,r){if(ii.isDestroyed)return void ii.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*w*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ft=null,ii.useOffscreen())try{if(Ot)return;ii.webglObj.renderYUV(h,w,s);let e=ii.offscreenCanvas.transferToImageBitmap();postMessage({cmd:k,buffer:e,delay:ii.delay,ts:r},[e])}catch(e){ii.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:k,output:s,delay:ii.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ii.isDestroyed)return void ii.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ii._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(_t){if(!(s>=(r=d-_t)))return _t+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==St&&(n[1]=Float32Array.of(...n[1],...a[1])));ht[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==St&&(ht[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:C,buffer:ht,ts:i},ht.map((e=>e.buffer))),o=r,s-=r}for(_t=s;_t>=d;_t-=d)ht[0]=a[0].slice(o,o+=d),2==St&&(ht[1]=a[1].slice(o-d,o)),postMessage({cmd:C,buffer:ht,ts:i},ht.map((e=>e.buffer)));_t&&(n[0]=a[0].slice(o),2==St&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===ft&&(ft=tr());const t=tr(),r=rr(pt>0?2*pt:5e3,1e3,5e3),i=t-ft;i>r&&(ii.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${pt} and diff is ${i} and maxDiff is ${r}\n and replay`),Ht=!0,postMessage({cmd:W}))},sendWebsocketMessage:function(e){o?o.readyState===De?o.send(e):ii.debug.error("worker","socket is not open"):ii.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:Y,type:t,buffer:e},[e.buffer])}};ii.debug=new Br(ii);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(ii));let si=null;e.VideoDecoder&&(si=new e.VideoDecoder(ii)),postMessage({cmd:U}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case le:try{ii._opt=Object.assign(ii._opt,JSON.parse(t.opt))}catch(e){}ii.init();break;case ce:ii.pushBuffer(t.buffer,t.options);break;case ue:ii.decodeAudio(t.buffer,t.ts);break;case he:ii.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ii.clearBuffer(t.needClear);break;case me:ii.fetchStream(t.url,JSON.parse(t.opt));break;case fe:ii.debug.log("worker","close",JSON.stringify(t.options)),t.options&&yr(t.options.isVideoInited)&&(wr=t.options.isVideoInited),ii.close();break;case pe:ii.debug.log("worker","updateConfig",t.key,t.value),ii._opt[t.key]=t.value,"playbackRate"===t.key&&(ii.playbackUpdatePlaybackRate(),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&ii.playbackCacheLoop());break;case ge:ii.sendWebsocketMessage(t.message);break;case ye:ri.$video.currentTime=Number(t.message)}}}(e,e,!0)}))})); diff --git a/public/js/jessibuca-pro/decoder-pro-mt-worker.js b/public/js/jessibuca-pro/decoder-pro-mt-worker.js new file mode 100644 index 0000000..4b80ecc --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-mt-worker.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +function(Module) { + Module = Module || {}; + +var Module=typeof Module!="undefined"?Module:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var Module=typeof Module!="undefined"?Module:{};Module["locateFile"]=function(url){if(url=="decoder-pro-mt-worker.wasm"&&typeof JESSIBUCA_PRO_MT_WORKER_WASM_URL!="undefined"&&JESSIBUCA_PRO_MT_WORKER_WASM_URL!="")return JESSIBUCA_PRO_MT_WORKER_WASM_URL;else return url;if(url=="decoder-pro-mt-worker.worker.js"&&typeof JESSIBUCA_PRO_MT_WORKER_JS_URL!="undefined"&&JESSIBUCA_PRO_MT_WORKER_JS_URL!=""){return JESSIBUCA_PRO_MT_WORKER_JS_URL}else{return url}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}var fs;var nodePath;var requireNodeFS;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}requireNodeFS=()=>{if(!nodePath){fs=require("fs");nodePath=require("path")}};read_=function shell_read(filename,binary){requireNodeFS();filename=nodePath["normalize"](filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{requireNodeFS();filename=nodePath["normalize"](filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",function(reason){throw reason});quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"};let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.warn.bind(console);if(ENVIRONMENT_IS_NODE){requireNodeFS();defaultPrint=str=>fs.writeSync(1,str+"\n");defaultPrintErr=str=>fs.writeSync(2,str+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var POINTER_SIZE=4;var tempRet0=0;var setTempRet0=value=>{tempRet0=value};var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;if(ENVIRONMENT_IS_PTHREAD){buffer=Module["buffer"]}function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||268435456;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"];buffer=Module["buffer"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)")}throw Error("bad memory")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(ENVIRONMENT_IS_PTHREAD){postMessage({"cmd":"onAbort","arg":what})}else{if(Module["onAbort"]){Module["onAbort"](what)}}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="decoder-pro-mt-worker.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("decoder-pro-mt-worker.wasm",import.meta.url).toString()}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["Y"]);wasmTable=Module["asm"]["W"];addOnInit(Module["asm"]["T"]);wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){removeRunDependency("wasm-instantiate")}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency("wasm-instantiate")}function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var tempDouble;var tempI64;var ASM_CONSTS={};function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function killThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];worker.terminate();__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0}function cancelThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)}function zeroMemory(address,size){HEAPU8.fill(0,address,address+size)}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};worker.runPthread=()=>{msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}return 0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){var randomBuffer=new Uint8Array(1);return()=>{crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return()=>crypto_module["randomBytes"](1)[0]}catch(e){}}return()=>abort("randomDevice")}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;zeroMemory(ptr,size);return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(FS.cwd(),path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(p=>!!p),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:str=>{var flags=FS.flagModes[str];if(typeof flags=="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:(fd_start=0,fd_end=FS.MAX_OPEN_FDS)=>{for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd_start,fd_end)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:(path,dontResolveLastLink)=>{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node},createPreloadedFile:(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(Browser.handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}},indexedDB:()=>{return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:()=>{return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=()=>{out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=()=>{var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=()=>{ok++;if(ok+fail==total)finish()};putRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:(paths,onload,onerror)=>{onload=onload||(()=>{});onerror=onerror||(()=>{});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=()=>{var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(path=>{var getRequest=files.get(path);getRequest.onsuccess=()=>{if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=()=>{fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;tempI64=[Math.floor(stat.atime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.atime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAP32[buf+64>>2]=0;tempI64=[Math.floor(stat.mtime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.mtime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAP32[buf+80>>2]=0;tempI64=[Math.floor(stat.ctime.getTime()/1e3)>>>0,(tempDouble=Math.floor(stat.ctime.getTime()/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];HEAP32[buf+96>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+104>>2]=tempI64[0],HEAP32[buf+108>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;if(!implicit){if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}else{}}_proc_exit(status)}var _exit=exitJS;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){},initWorker:function(){noExitRuntime=false},setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads:function(){for(var t in PThread.pthreads){var worker=PThread.pthreads[t];if(worker){PThread.returnWorkerToPool(worker)}}for(var i=0;i{var d=e["data"];var cmd=d["cmd"];if(worker.pthread_ptr)PThread.currentProxiedOperationCallerThread=worker.pthread_ptr;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="processProxyingQueue"){executeNotifiedProxyingQueue(d["queue"])}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="onAbort"){if(Module["onAbort"]){Module["onAbort"](d["arg"])}}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)});worker.on("detachedExit",function(){})}worker.postMessage({"cmd":"load","urlOrBlob":Module["mainScriptUrlOrBlob"],"wasmMemory":wasmMemory,"wasmModule":wasmModule})},allocateUnusedWorker:function(){if(!Module["locateFile"]){PThread.unusedWorkers.push(new Worker(new URL("decoder-pro-mt-worker.worker.js",import.meta.url)));return}var pthreadMainJs=locateFile("decoder-pro-mt-worker.worker.js");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackTop=HEAP32[pthread_ptr+44>>2];var stackSize=HEAP32[pthread_ptr+48>>2];var stackMax=stackTop-stackSize;_emscripten_stack_set_limits(stackTop,stackMax);stackRestore(stackTop)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,0,returnCode);try{_exit(returnCode)}catch(e){handleException(e)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function ___cxa_allocate_exception(size){return _malloc(size+24)+24}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){Atomics.add(HEAP32,this.ptr+0>>2,1)};this.release_ref=function(){var prev=Atomics.sub(HEAP32,this.ptr+0>>2,1);return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,start_routine,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,pthread_ptr,attr,start_routine,arg);return ___pthread_create_js(pthread_ptr,attr,start_routine,arg)}function ___pthread_create_js(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,start_routine,arg)}if(error)return error;var threadParams={startRoutine:start_routine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return-e.errno}}function __embind_register_bigint(primitiveType,name,size,minRange,maxRange){}function getShiftFromSize(size){switch(size){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+size)}}function embind_init_charCodes(){var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes}var embind_charCodes=undefined;function readLatin1String(ptr){var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var char_0=48;var char_9=57;function makeLegalFunctionName(name){if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return"_"+name}return name}function createNamedFunction(name,body){name=makeLegalFunctionName(name);return new Function("body","return function "+name+"() {\n"+' "use strict";'+" return body.apply(this, arguments);\n"+"};\n")(body)}function extendError(baseErrorType,errorName){var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return this.name+": "+this.message}};return errorClass}var BindingError=undefined;function throwBindingError(message){throw new BindingError(message)}var InternalError=undefined;function throwInternalError(message){throw new InternalError(message)}function whenDependentTypesAreResolved(myTypes,dependentTypes,getTypeConverters){myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}var name=registeredInstance.name;if(!rawType){throwBindingError('type "'+name+'" must have a positive integer typeid pointer')}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError("Cannot register type '"+name+"' twice")}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function __embind_register_bool(rawType,name,size,trueValue,falseValue){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":8,"readValueFromPointer":function(pointer){var heap;if(size===1){heap=HEAP8}else if(size===2){heap=HEAP16}else if(size===4){heap=HEAP32}else{throw new TypeError("Unknown boolean type size: "+name)}return this["fromWireType"](heap[pointer>>shift])},destructorFunction:null})}function ClassHandle_isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right}function shallowCopyInternalPointer(o){return{count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType}}function throwInstanceAlreadyDeleted(obj){function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")}var finalizationRegistry=false;function detachFinalizer(handle){}function runDestructor($$){if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}}function releaseClassHandle($$){$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}}function downcastPointer(ptr,ptrClass,desiredClass){if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)}var registeredPointers={};function getInheritedInstanceCount(){return Object.keys(registeredInstances).length}function getLiveInheritedInstances(){var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv}var deletionQueue=[];function flushPendingDeletes(){while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}}var delayFunction=undefined;function setDelayFunction(fn){delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}}function init_embind(){Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction}var registeredInstances={};function getBasestPointer(class_,ptr){if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr}function getInheritedInstance(class_,ptr){ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]}function makeClassHandle(prototype,record){if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))}function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}function attachFinalizer(handle){if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)}function ClassHandle_clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}}function ClassHandle_delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}}function ClassHandle_isDeleted(){return!this.$$.ptr}function ClassHandle_deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}function init_ClassHandle(){ClassHandle.prototype["isAliasOf"]=ClassHandle_isAliasOf;ClassHandle.prototype["clone"]=ClassHandle_clone;ClassHandle.prototype["delete"]=ClassHandle_delete;ClassHandle.prototype["isDeleted"]=ClassHandle_isDeleted;ClassHandle.prototype["deleteLater"]=ClassHandle_deleteLater}function ClassHandle(){}function ensureOverloadTable(proto,methodName,humanName){if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError("Function '"+humanName+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+proto[methodName].overloadTable+")!")}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}}function exposePublicSymbol(name,value,numArguments){if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError("Cannot register public name '"+name+"' twice")}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError("Cannot register multiple overloads of a function with the same number of arguments ("+numArguments+")!")}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}}function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}function upcastPointer(ptr,ptrClass,desiredClass){while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError("Expected null or instance of "+desiredClass.name+", got an instance of "+ptrClass.name)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr}function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError("Cannot convert argument of type "+(handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name)+" to parameter type "+this.name)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(function(){clonedHandle["delete"]()}));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError("null is not a valid "+this.name)}return 0}if(!handle.$$){throwBindingError('Cannot pass "'+embindRepr(handle)+'" as a '+this.name)}if(!handle.$$.ptr){throwBindingError("Cannot pass deleted object as a pointer of type "+this.name)}if(handle.$$.ptrType.isConst){throwBindingError("Cannot convert argument of type "+handle.$$.ptrType.name+" to parameter type "+this.name)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}function RegisteredPointer_getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr}function RegisteredPointer_destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}}function RegisteredPointer_deleteObject(handle){if(handle!==null){handle["delete"]()}}function init_RegisteredPointer(){RegisteredPointer.prototype.getPointee=RegisteredPointer_getPointee;RegisteredPointer.prototype.destructor=RegisteredPointer_destructor;RegisteredPointer.prototype["argPackAdvance"]=8;RegisteredPointer.prototype["readValueFromPointer"]=simpleReadValueFromPointer;RegisteredPointer.prototype["deleteObject"]=RegisteredPointer_deleteObject;RegisteredPointer.prototype["fromWireType"]=RegisteredPointer_fromWireType}function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}function replacePublicSymbol(name,value,numArguments){if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}}function dynCallLegacy(sig,ptr,args){var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)}function dynCall(sig,ptr,args){if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn}function getDynCaller(sig,ptr){var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}}function embind__requireFunction(signature,rawFunction){signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError("unknown function pointer with signature "+signature+": "+rawFunction)}return fp}var UnboundTypeError=undefined;function getTypeName(type){var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv}function throwUnboundTypeError(message,types){var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(message+": "+unboundTypes.map(getTypeName).join([", "]))}function __embind_register_class(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor){name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError("Cannot construct "+name+" due to unbound types",[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(legalFunctionName,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError("Tried to invoke ctor of "+name+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(registeredClass.constructor_body).toString()+") parameters instead!")}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})}function heap32VectorToArray(count,firstElement){var array=[];for(var i=0;i>2])}return array}function runDestructors(destructors){while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}}function new_(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError("new_ called with constructor type "+typeof constructor+" which is not a function")}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i0);var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName="constructor "+classType.name;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError("Cannot register multiple constructors with identical number of parameters ("+(argCount-1)+") for class '"+classType.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!")}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError("Cannot construct "+classType.name+" due to unbound types",rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})}function __embind_register_class_function(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual){var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=classType.name+"."+methodName;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError("Cannot call "+humanName+" due to unbound types",rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})}var emval_free_list=[];var emval_handle_array=[{},{value:undefined},{value:null},{value:true},{value:false}];function __emval_decref(handle){if(handle>4&&0===--emval_handle_array[handle].refcount){emval_handle_array[handle]=undefined;emval_free_list.push(handle)}}function count_emval_handles(){var count=0;for(var i=5;i{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handle_array[handle].value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{var handle=emval_free_list.length?emval_free_list.pop():emval_handle_array.length;emval_handle_array[handle]={refcount:1,value:value};return handle}}}};function __embind_register_emval(rawType,name){name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(handle){var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":function(destructors,value){return Emval.toHandle(value)},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})}function embindRepr(v){if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}}function floatReadValueFromPointer(name,shift){switch(shift){case 2:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 3:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError("Unknown float type: "+name)}}function __embind_register_float(rawType,name,size){var shift=getShiftFromSize(size);name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(value){return value},"toWireType":function(destructors,value){return value},"argPackAdvance":8,"readValueFromPointer":floatReadValueFromPointer(name,shift),destructorFunction:null})}function integerReadValueFromPointer(name,shift,signed){switch(shift){case 0:return signed?function readS8FromPointer(pointer){return HEAP8[pointer]}:function readU8FromPointer(pointer){return HEAPU8[pointer]};case 1:return signed?function readS16FromPointer(pointer){return HEAP16[pointer>>1]}:function readU16FromPointer(pointer){return HEAPU16[pointer>>1]};case 2:return signed?function readS32FromPointer(pointer){return HEAP32[pointer>>2]}:function readU32FromPointer(pointer){return HEAPU32[pointer>>2]};default:throw new TypeError("Unknown integer type: "+name)}}function __embind_register_integer(primitiveType,name,size,minRange,maxRange){name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var shift=getShiftFromSize(size);var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":8,"readValueFromPointer":integerReadValueFromPointer(name,shift,minRange!==0),destructorFunction:null})}function __embind_register_memory_view(rawType,dataTypeIndex,name){var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){handle=handle>>2;var heap=HEAPU32;var size=heap[handle];var data=heap[handle+1];return new TA(buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":8,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})}function __embind_register_std_string(rawType,name){name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder){return UTF16Decoder.decode(HEAPU8.slice(ptr,endPtr))}else{var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str}}function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function lengthBytesUTF16(str){return str.length*2}function UTF32ToString(ptr,maxBytesToRead){var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str}function stringToUTF32(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr}function lengthBytesUTF32(str){var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len}function __embind_register_std_wstring(rawType,charSize,name){name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":function(value){var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":function(destructors,value){if(!(typeof value=="string")){throwBindingError("Cannot pass non-string to C++ string type "+name)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":8,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:function(ptr){_free(ptr)}})}function __embind_register_void(rawType,name){name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":function(){return undefined},"toWireType":function(destructors,o){return undefined}})}function __emscripten_date_now(){return Date.now()}function __emscripten_default_pthread_stack_size(){return 2097152}function executeNotifiedProxyingQueue(queue){Atomics.store(HEAP32,queue>>2,1);if(_pthread_self()){__emscripten_proxy_execute_task_queue(queue)}Atomics.compareExchange(HEAP32,queue>>2,1,0)}Module["executeNotifiedProxyingQueue"]=executeNotifiedProxyingQueue;function __emscripten_notify_task_queue(targetThreadId,currThreadId,mainThreadId,queue){if(targetThreadId==currThreadId){setTimeout(()=>executeNotifiedProxyingQueue(queue))}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"processProxyingQueue","queue":queue})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"processProxyingQueue","queue":queue})}return 1}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}var emval_symbols={};function getStringOrSymbol(address){var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol}var emval_methodCallers=[];function __emval_call_void_method(caller,handle,methodName,args){caller=emval_methodCallers[caller];handle=Emval.toValue(handle);methodName=getStringOrSymbol(methodName);caller(handle,methodName,null,args)}function emval_addMethodCaller(caller){var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id}function requireRegisteredType(rawType,humanName){var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl}function emval_lookupTypes(argCount,argTypes){var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a}var emval_registeredMethods=[];function __emval_get_method_caller(argCount,argTypes){var types=emval_lookupTypes(argCount,argTypes);var retType=types[0];var signatureName=retType.name+"_$"+types.slice(1).map(function(t){return t.name}).join("_")+"$";var returnId=emval_registeredMethods[signatureName];if(returnId!==undefined){return returnId}var params=["retType"];var args=[retType];var argsList="";for(var i=0;i{var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(ENVIRONMENT_IS_PTHREAD){_emscripten_get_now=()=>performance.now()-Module["__performance_now_clock_drift"]}else _emscripten_get_now=()=>performance.now();function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(function(){var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(7,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(8,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(9,1,fd,pbuf);try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(11,1,fd,offset_low,offset_high,whence,newOffset);try{var offset=convertI32PairToI53Checked(offset_low,offset_high);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(12,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e instanceof FS.ErrnoError))throw e;return e.errno}}function _setTempRet0(val){setTempRet0(val)}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();embind_init_charCodes();BindingError=Module["BindingError"]=extendError(Error,"BindingError");InternalError=Module["InternalError"]=extendError(Error,"InternalError");init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var proxiedFunctionTable=[null,_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall_fcntl64,___syscall_openat,_environ_get,_environ_sizes_get,_fd_close,_fd_fdstat_get,_fd_read,_fd_seek,_fd_write];var asmLibraryArg={"t":___cxa_allocate_exception,"s":___cxa_throw,"G":___emscripten_init_main_thread_js,"j":___emscripten_thread_cleanup,"C":___pthread_create_js,"Q":___syscall_fcntl64,"F":___syscall_openat,"v":__embind_register_bigint,"S":__embind_register_bool,"H":__embind_register_class,"y":__embind_register_class_constructor,"f":__embind_register_class_function,"R":__embind_register_emval,"p":__embind_register_float,"d":__embind_register_integer,"c":__embind_register_memory_view,"o":__embind_register_std_string,"h":__embind_register_std_wstring,"r":__embind_register_void,"g":__emscripten_date_now,"D":__emscripten_default_pthread_stack_size,"E":__emscripten_notify_task_queue,"J":__emscripten_set_offscreencanvas_size,"m":__emval_call_void_method,"i":__emval_decref,"q":__emval_get_method_caller,"b":_abort,"k":_emscripten_check_blocking_allowed,"z":_emscripten_get_heap_max,"e":_emscripten_get_now,"N":_emscripten_memcpy_big,"A":_emscripten_num_logical_cores,"I":_emscripten_receive_on_main_thread_js,"x":_emscripten_resize_heap,"O":_emscripten_unwind_to_js_event_loop,"L":_environ_get,"M":_environ_sizes_get,"B":_exit,"n":_fd_close,"K":_fd_fdstat_get,"P":_fd_read,"u":_fd_seek,"l":_fd_write,"a":wasmMemory||Module["wasmMemory"],"w":_setTempRet0};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["T"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["U"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["V"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["X"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["Y"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["Z"]).apply(null,arguments)};var _emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=function(){return(_emscripten_builtin_memalign=Module["_emscripten_builtin_memalign"]=Module["asm"]["_"]).apply(null,arguments)};var ___getTypeName=Module["___getTypeName"]=function(){return(___getTypeName=Module["___getTypeName"]=Module["asm"]["$"]).apply(null,arguments)};var ___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=function(){return(___embind_register_native_and_builtin_types=Module["___embind_register_native_and_builtin_types"]=Module["asm"]["aa"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["ba"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["ca"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module["_emscripten_run_in_main_runtime_thread_js"]=Module["asm"]["da"]).apply(null,arguments)};var __emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=function(){return(__emscripten_proxy_execute_task_queue=Module["__emscripten_proxy_execute_task_queue"]=Module["asm"]["ea"]).apply(null,arguments)};var __emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=function(){return(__emscripten_thread_free_data=Module["__emscripten_thread_free_data"]=Module["asm"]["fa"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["ga"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=function(){return(_emscripten_stack_set_limits=Module["_emscripten_stack_set_limits"]=Module["asm"]["ha"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["ia"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["ja"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ka"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["la"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["ma"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=111557;Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["ExitStatus"]=ExitStatus;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();postMessage({"cmd":"loaded"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return Module.ready +} +); +})(); +export default Module; \ No newline at end of file diff --git a/public/js/jessibuca-pro/decoder-pro-mt-worker.wasm b/public/js/jessibuca-pro/decoder-pro-mt-worker.wasm new file mode 100644 index 0000000..48d926e Binary files /dev/null and b/public/js/jessibuca-pro/decoder-pro-mt-worker.wasm differ diff --git a/public/js/jessibuca-pro/decoder-pro-mt-worker.worker.js b/public/js/jessibuca-pro/decoder-pro-mt-worker.worker.js new file mode 100644 index 0000000..857c73b --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-mt-worker.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8"))},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;var pendingNotifiedProxyingQueues=[];function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var instance=new WebAssembly.Instance(Module["wasmModule"],info);receiveInstance(instance);Module["wasmModule"]=null;return instance.exports};self.onmessage=e=>{try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./decoder-pro-mt-worker.js")).then(function(exports){return exports.default(Module)}).then(function(instance){Module=instance})}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["___embind_register_native_and_builtin_types"]();pendingNotifiedProxyingQueues.forEach(queue=>{Module["executeNotifiedProxyingQueue"](queue)});pendingNotifiedProxyingQueues=[];initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["keepRuntimeAlive"]()){}else{Module["__emscripten_thread_exit"](ex.status)}}else{throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processProxyingQueue"){if(initializedJS){Module["executeNotifiedProxyingQueue"](e.data.queue)}else{pendingNotifiedProxyingQueues.push(e.data.queue)}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}; diff --git a/public/js/jessibuca-pro/decoder-pro-mt.js b/public/js/jessibuca-pro/decoder-pro-mt.js new file mode 100644 index 0000000..40212a6 --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-mt.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),o=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href,function(e){var t,i;(e=void 0!==(e=e||{})?e:{}).ready=new Promise((function(e,r){t=e,i=r})),(e=void 0!==e?e:{}).locateFile=function(e){return"decoder-pro-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_MT_WORKER_WASM_URL?JESSIBUCA_PRO_MT_WORKER_WASM_URL:e};var n,o,s,a,d,l,u=Object.assign({},e),c="./this.program",f=(e,t)=>{throw t},h="object"==typeof window,p="function"==typeof importScripts,m="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,_=e.ENVIRONMENT_IS_PTHREAD||!1,g="";function y(t){return e.locateFile?e.locateFile(t,g):g+t}if(m){let t;g=p?require("path").dirname(g)+"/":__dirname+"/",l=()=>{d||(a=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),a.readFileSync(e,t?void 0:"utf8")},s=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=(e,t,r)=>{l(),e=d.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof ue))throw e})),process.on("unhandledRejection",(function(e){throw e})),f=(e,t)=>{if(X())throw process.exitCode=e,t;var r;(r=t)instanceof ue||E("exiting due to exception: "+r),process.exit(e)},e.inspect=function(){return"[Emscripten Module object]"};try{t=require("worker_threads")}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}global.Worker=t.Worker}else(h||p)&&(p?g=self.location.href:"undefined"!=typeof document&&document.currentScript&&(g=document.currentScript.src),r&&(g=r),g=0!==g.indexOf("blob:")?g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):"",m||(n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},p&&(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)}));m&&"undefined"==typeof performance&&(global.performance=require("perf_hooks").performance);var v=console.log.bind(console),b=console.warn.bind(console);m&&(l(),v=e=>a.writeSync(1,e+"\n"),b=e=>a.writeSync(2,e+"\n"));var w,S=e.print||v,E=e.printErr||b;Object.assign(e,u),u=null,e.arguments&&e.arguments,e.thisProgram&&(c=e.thisProgram),e.quit&&(f=e.quit),e.wasmBinary&&(w=e.wasmBinary);var A,x,B=e.noExitRuntime||!0;"object"!=typeof WebAssembly&&oe("no native wasm support detected");var U,k=!1;function T(e,t){e||oe(t)}var C,D,P,F,I,L,M,R,z,N="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function O(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&N)return N.decode(e.buffer instanceof SharedArrayBuffer?e.slice(t,n):e.subarray(t,n));for(var o="";t>10,56320|1023&l)}}else o+=String.fromCharCode((31&s)<<6|a)}else o+=String.fromCharCode(s)}return o}function G(e,t){return e?O(P,e,t):""}function $(e,t,r,i){if(!(i>0))return 0;for(var n=r,o=r+i-1,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),a<=127){if(r>=o)break;t[r++]=a}else if(a<=2047){if(r+1>=o)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=o)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=o)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function H(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}_&&(C=e.buffer);var V,W,j=e.INITIAL_MEMORY||268435456;if(_)A=e.wasmMemory,C=e.buffer;else if(e.wasmMemory)A=e.wasmMemory;else if(!((A=new WebAssembly.Memory({initial:j/65536,maximum:j/65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw E("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),m&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");A&&(C=A.buffer),j=C.byteLength,C=V=C,e.HEAP8=D=new Int8Array(V),e.HEAP16=F=new Int16Array(V),e.HEAP32=L=new Int32Array(V),e.HEAPU8=P=new Uint8Array(V),e.HEAPU16=I=new Uint16Array(V),e.HEAPU32=M=new Uint32Array(V),e.HEAPF32=R=new Float32Array(V),e.HEAPF64=z=new Float64Array(V);var q=[],Y=[],K=[];function X(){return B}function Z(){_||(e.noFSInit||ve.init.initialized||ve.init(),ve.ignorePermissions=!1,Ae(Y))}var J,Q,ee,te=0,re=null;function ie(t){te++,e.monitorRunDependencies&&e.monitorRunDependencies(te)}function ne(t){if(te--,e.monitorRunDependencies&&e.monitorRunDependencies(te),0==te&&re){var r=re;re=null,r()}}function oe(t){_?postMessage({cmd:"onAbort",arg:t}):e.onAbort&&e.onAbort(t),E(t="Aborted("+t+")"),k=!0,U=1,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw i(r),r}function se(e){return e.startsWith("data:application/octet-stream;base64,")}function ae(e){return e.startsWith("file://")}function de(e){try{if(e==J&&w)return new Uint8Array(w);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){oe(e)}}e.locateFile?se(J="decoder-pro-mt-worker.wasm")||(J=y(J)):J=new URL("decoder-pro-mt-worker.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href).toString();var le={};function ue(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function ce(e){var t=Ee.pthreads[e];T(t),Ee.returnWorkerToPool(t)}function fe(e){var t=Ee.getNewWorker();if(!t)return 6;Ee.runningWorkers.push(t),Ee.pthreads[e.pthread_ptr]=t,t.pthread_ptr=e.pthread_ptr;var r={cmd:"run",start_routine:e.startRoutine,arg:e.arg,pthread_ptr:e.pthread_ptr};return t.runPthread=()=>{r.time=performance.now(),t.postMessage(r,e.transferList)},t.loaded&&(t.runPthread(),delete t.runPthread),0}var he={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=he.isAbs(e),r="/"===e.substr(-1);return(e=he.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=he.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=he.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return he.normalize(e.join("/"))},join2:(e,t)=>he.normalize(e+"/"+t)},pe={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ve.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=he.isAbs(i)}return(t?"/":"")+(e=he.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=pe.resolve(e).substr(1),t=pe.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),o=Math.min(i.length,n.length),s=o,a=0;a0?r:H(e)+1,n=new Array(i),o=$(e,n,0,n.length);return t&&(n.length=o),n}var _e={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){_e.ttys[e]={input:[],output:[],ops:t},ve.registerDevice(e,_e.stream_ops)},stream_ops:{open:function(e){var t=_e.ttys[e.node.rdev];if(!t)throw new ve.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ve.ErrnoError(60);for(var o=0,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=me(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(S(O(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(S(O(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(E(O(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(E(O(e.output,0)),e.output=[])}}};function ge(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Br(65536,e);return t?(function(e,t){P.fill(0,e,e+t)}(t,e),t):0}var ye={ops_table:null,mount:function(e){return ye.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ve.isBlkdev(r)||ve.isFIFO(r))throw new ve.ErrnoError(63);ye.ops_table||(ye.ops_table={dir:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr,lookup:ye.node_ops.lookup,mknod:ye.node_ops.mknod,rename:ye.node_ops.rename,unlink:ye.node_ops.unlink,rmdir:ye.node_ops.rmdir,readdir:ye.node_ops.readdir,symlink:ye.node_ops.symlink},stream:{llseek:ye.stream_ops.llseek}},file:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr},stream:{llseek:ye.stream_ops.llseek,read:ye.stream_ops.read,write:ye.stream_ops.write,allocate:ye.stream_ops.allocate,mmap:ye.stream_ops.mmap,msync:ye.stream_ops.msync}},link:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr,readlink:ye.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ye.node_ops.getattr,setattr:ye.node_ops.setattr},stream:ve.chrdev_stream_ops}});var n=ve.createNode(e,t,r,i);return ve.isDir(n.mode)?(n.node_ops=ye.ops_table.dir.node,n.stream_ops=ye.ops_table.dir.stream,n.contents={}):ve.isFile(n.mode)?(n.node_ops=ye.ops_table.file.node,n.stream_ops=ye.ops_table.file.stream,n.usedBytes=0,n.contents=null):ve.isLink(n.mode)?(n.node_ops=ye.ops_table.link.node,n.stream_ops=ye.ops_table.link.stream):ve.isChrdev(n.mode)&&(n.node_ops=ye.ops_table.chrdev.node,n.stream_ops=ye.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=ve.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ve.isDir(e.mode)?t.size=4096:ve.isFile(e.mode)?t.size=e.usedBytes:ve.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&ye.resizeFileStorage(e,t.size)},lookup:function(e,t){throw ve.genericErrors[44]},mknod:function(e,t,r,i){return ye.createNode(e,t,r,i)},rename:function(e,t,r){if(ve.isDir(e.mode)){var i;try{i=ve.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ve.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=ve.lookupNode(e,t);for(var i in r.contents)throw new ve.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=ye.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!ve.isLink(e.mode))throw new ve.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var o=e.node.contents;if(n>=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-n,i);if(s>8&&o.subarray)t.set(o.subarray(n,n+s),r);else for(var a=0;a0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=pe.resolve(ve.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new ve.ErrnoError(32);for(var i=he.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=ve.root,o="/",s=0;s40)throw new ve.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var t;;){if(ve.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%ve.nameTable.length},hashAddNode:e=>{var t=ve.hashName(e.parent.id,e.name);e.name_next=ve.nameTable[t],ve.nameTable[t]=e},hashRemoveNode:e=>{var t=ve.hashName(e.parent.id,e.name);if(ve.nameTable[t]===e)ve.nameTable[t]=e.name_next;else for(var r=ve.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=ve.mayLookup(e);if(r)throw new ve.ErrnoError(r,e);for(var i=ve.hashName(e.id,t),n=ve.nameTable[i];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===t)return n}return ve.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new ve.FSNode(e,t,r,i);return ve.hashAddNode(n),n},destroyNode:e=>{ve.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=ve.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ve.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=ve.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return ve.lookupNode(e,t),20}catch(e){}return ve.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=ve.lookupNode(e,t)}catch(e){return e.errno}var n=ve.nodePermissions(e,"wx");if(n)return n;if(r){if(!ve.isDir(i.mode))return 54;if(ve.isRoot(i)||ve.getPath(i)===ve.cwd())return 10}else if(ve.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ve.isLink(e.mode)?32:ve.isDir(e.mode)&&("r"!==ve.flagsToPermissionString(t)||512&t)?31:ve.nodePermissions(e,ve.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ve.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!ve.streams[r])return r;throw new ve.ErrnoError(33)},getStream:e=>ve.streams[e],createStream:(e,t,r)=>{ve.FSStream||(ve.FSStream=function(){this.shared={}},ve.FSStream.prototype={},Object.defineProperties(ve.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new ve.FSStream,e);var i=ve.nextfd(t,r);return e.fd=i,ve.streams[i]=e,e},closeStream:e=>{ve.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=ve.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new ve.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{ve.devices[e]={stream_ops:t}},getDevice:e=>ve.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),ve.syncFSRequests++,ve.syncFSRequests>1&&E("warning: "+ve.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ve.getMounts(ve.root.mount),i=0;function n(e){return ve.syncFSRequests--,t(e)}function o(e){if(e)return o.errored?void 0:(o.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return o(null);t.type.syncfs(t,e,o)}))},mount:(e,t,r)=>{var i,n="/"===r,o=!r;if(n&&ve.root)throw new ve.ErrnoError(10);if(!n&&!o){var s=ve.lookupPath(r,{follow_mount:!1});if(r=s.path,i=s.node,ve.isMountpoint(i))throw new ve.ErrnoError(10);if(!ve.isDir(i.mode))throw new ve.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?ve.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=ve.lookupPath(e,{follow_mount:!1});if(!ve.isMountpoint(t.node))throw new ve.ErrnoError(28);var r=t.node,i=r.mounted,n=ve.getMounts(i);Object.keys(ve.nameTable).forEach((e=>{for(var t=ve.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ve.destroyNode(t),t=r}})),r.mounted=null;var o=r.mount.mounts.indexOf(i);r.mount.mounts.splice(o,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=ve.lookupPath(e,{parent:!0}).node,n=he.basename(e);if(!n||"."===n||".."===n)throw new ve.ErrnoError(28);var o=ve.mayCreate(i,n);if(o)throw new ve.ErrnoError(o);if(!i.node_ops.mknod)throw new ve.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ve.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ve.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ve.mknod(e,t,r)),symlink:(e,t)=>{if(!pe.resolve(e))throw new ve.ErrnoError(44);var r=ve.lookupPath(t,{parent:!0}).node;if(!r)throw new ve.ErrnoError(44);var i=he.basename(t),n=ve.mayCreate(r,i);if(n)throw new ve.ErrnoError(n);if(!r.node_ops.symlink)throw new ve.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=he.dirname(e),o=he.dirname(t),s=he.basename(e),a=he.basename(t);if(r=ve.lookupPath(e,{parent:!0}).node,i=ve.lookupPath(t,{parent:!0}).node,!r||!i)throw new ve.ErrnoError(44);if(r.mount!==i.mount)throw new ve.ErrnoError(75);var d,l=ve.lookupNode(r,s),u=pe.relative(e,o);if("."!==u.charAt(0))throw new ve.ErrnoError(28);if("."!==(u=pe.relative(t,n)).charAt(0))throw new ve.ErrnoError(55);try{d=ve.lookupNode(i,a)}catch(e){}if(l!==d){var c=ve.isDir(l.mode),f=ve.mayDelete(r,s,c);if(f)throw new ve.ErrnoError(f);if(f=d?ve.mayDelete(i,a,c):ve.mayCreate(i,a))throw new ve.ErrnoError(f);if(!r.node_ops.rename)throw new ve.ErrnoError(63);if(ve.isMountpoint(l)||d&&ve.isMountpoint(d))throw new ve.ErrnoError(10);if(i!==r&&(f=ve.nodePermissions(r,"w")))throw new ve.ErrnoError(f);ve.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{ve.hashAddNode(l)}}},rmdir:e=>{var t=ve.lookupPath(e,{parent:!0}).node,r=he.basename(e),i=ve.lookupNode(t,r),n=ve.mayDelete(t,r,!0);if(n)throw new ve.ErrnoError(n);if(!t.node_ops.rmdir)throw new ve.ErrnoError(63);if(ve.isMountpoint(i))throw new ve.ErrnoError(10);t.node_ops.rmdir(t,r),ve.destroyNode(i)},readdir:e=>{var t=ve.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ve.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=ve.lookupPath(e,{parent:!0}).node;if(!t)throw new ve.ErrnoError(44);var r=he.basename(e),i=ve.lookupNode(t,r),n=ve.mayDelete(t,r,!1);if(n)throw new ve.ErrnoError(n);if(!t.node_ops.unlink)throw new ve.ErrnoError(63);if(ve.isMountpoint(i))throw new ve.ErrnoError(10);t.node_ops.unlink(t,r),ve.destroyNode(i)},readlink:e=>{var t=ve.lookupPath(e).node;if(!t)throw new ve.ErrnoError(44);if(!t.node_ops.readlink)throw new ve.ErrnoError(28);return pe.resolve(ve.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=ve.lookupPath(e,{follow:!t}).node;if(!r)throw new ve.ErrnoError(44);if(!r.node_ops.getattr)throw new ve.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ve.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?ve.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new ve.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{ve.chmod(e,t,!0)},fchmod:(e,t)=>{var r=ve.getStream(e);if(!r)throw new ve.ErrnoError(8);ve.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?ve.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new ve.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{ve.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=ve.getStream(e);if(!i)throw new ve.ErrnoError(8);ve.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new ve.ErrnoError(28);var r;if(!(r="string"==typeof e?ve.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new ve.ErrnoError(63);if(ve.isDir(r.mode))throw new ve.ErrnoError(31);if(!ve.isFile(r.mode))throw new ve.ErrnoError(28);var i=ve.nodePermissions(r,"w");if(i)throw new ve.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=ve.getStream(e);if(!r)throw new ve.ErrnoError(8);if(0==(2097155&r.flags))throw new ve.ErrnoError(28);ve.truncate(r.node,t)},utime:(e,t,r)=>{var i=ve.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(t,r,i)=>{if(""===t)throw new ve.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?ve.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof t)n=t;else{t=he.normalize(t);try{n=ve.lookupPath(t,{follow:!(131072&r)}).node}catch(e){}}var o=!1;if(64&r)if(n){if(128&r)throw new ve.ErrnoError(20)}else n=ve.mknod(t,i,0),o=!0;if(!n)throw new ve.ErrnoError(44);if(ve.isChrdev(n.mode)&&(r&=-513),65536&r&&!ve.isDir(n.mode))throw new ve.ErrnoError(54);if(!o){var s=ve.mayOpen(n,r);if(s)throw new ve.ErrnoError(s)}512&r&&!o&&ve.truncate(n,0),r&=-131713;var a=ve.createStream({node:n,path:ve.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!e.logReadFiles||1&r||(ve.readFiles||(ve.readFiles={}),t in ve.readFiles||(ve.readFiles[t]=1)),a},close:e=>{if(ve.isClosed(e))throw new ve.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ve.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(ve.isClosed(e))throw new ve.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ve.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ve.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new ve.ErrnoError(28);if(ve.isClosed(e))throw new ve.ErrnoError(8);if(1==(2097155&e.flags))throw new ve.ErrnoError(8);if(ve.isDir(e.node.mode))throw new ve.ErrnoError(31);if(!e.stream_ops.read)throw new ve.ErrnoError(28);var o=void 0!==n;if(o){if(!e.seekable)throw new ve.ErrnoError(70)}else n=e.position;var s=e.stream_ops.read(e,t,r,i,n);return o||(e.position+=s),s},write:(e,t,r,i,n,o)=>{if(i<0||n<0)throw new ve.ErrnoError(28);if(ve.isClosed(e))throw new ve.ErrnoError(8);if(0==(2097155&e.flags))throw new ve.ErrnoError(8);if(ve.isDir(e.node.mode))throw new ve.ErrnoError(31);if(!e.stream_ops.write)throw new ve.ErrnoError(28);e.seekable&&1024&e.flags&&ve.llseek(e,0,2);var s=void 0!==n;if(s){if(!e.seekable)throw new ve.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,o);return s||(e.position+=a),a},allocate:(e,t,r)=>{if(ve.isClosed(e))throw new ve.ErrnoError(8);if(t<0||r<=0)throw new ve.ErrnoError(28);if(0==(2097155&e.flags))throw new ve.ErrnoError(8);if(!ve.isFile(e.node.mode)&&!ve.isDir(e.node.mode))throw new ve.ErrnoError(43);if(!e.stream_ops.allocate)throw new ve.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ve.ErrnoError(2);if(1==(2097155&e.flags))throw new ve.ErrnoError(2);if(!e.stream_ops.mmap)throw new ve.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new ve.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=ve.open(e,t.flags),n=ve.stat(e),o=n.size,s=new Uint8Array(o);return ve.read(i,s,0,o,0),"utf8"===t.encoding?r=O(s,0):"binary"===t.encoding&&(r=s),ve.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ve.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(H(t)+1),o=$(t,n,0,n.length);ve.write(i,n,0,o,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ve.write(i,t,0,t.byteLength,void 0,r.canOwn)}ve.close(i)},cwd:()=>ve.currentPath,chdir:e=>{var t=ve.lookupPath(e,{follow:!0});if(null===t.node)throw new ve.ErrnoError(44);if(!ve.isDir(t.node.mode))throw new ve.ErrnoError(54);var r=ve.nodePermissions(t.node,"x");if(r)throw new ve.ErrnoError(r);ve.currentPath=t.path},createDefaultDirectories:()=>{ve.mkdir("/tmp"),ve.mkdir("/home"),ve.mkdir("/home/web_user")},createDefaultDevices:()=>{ve.mkdir("/dev"),ve.registerDevice(ve.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ve.mkdev("/dev/null",ve.makedev(1,3)),_e.register(ve.makedev(5,0),_e.default_tty_ops),_e.register(ve.makedev(6,0),_e.default_tty1_ops),ve.mkdev("/dev/tty",ve.makedev(5,0)),ve.mkdev("/dev/tty1",ve.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(m)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>oe("randomDevice")}();ve.createDevice("/dev","random",e),ve.createDevice("/dev","urandom",e),ve.mkdir("/dev/shm"),ve.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ve.mkdir("/proc");var e=ve.mkdir("/proc/self");ve.mkdir("/proc/self/fd"),ve.mount({mount:()=>{var t=ve.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=ve.getStream(r);if(!i)throw new ve.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?ve.createDevice("/dev","stdin",e.stdin):ve.symlink("/dev/tty","/dev/stdin"),e.stdout?ve.createDevice("/dev","stdout",null,e.stdout):ve.symlink("/dev/tty","/dev/stdout"),e.stderr?ve.createDevice("/dev","stderr",null,e.stderr):ve.symlink("/dev/tty1","/dev/stderr"),ve.open("/dev/stdin",0),ve.open("/dev/stdout",1),ve.open("/dev/stderr",1)},ensureErrnoError:()=>{ve.ErrnoError||(ve.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ve.ErrnoError.prototype=new Error,ve.ErrnoError.prototype.constructor=ve.ErrnoError,[44].forEach((e=>{ve.genericErrors[e]=new ve.ErrnoError(e),ve.genericErrors[e].stack=""})))},staticInit:()=>{ve.ensureErrnoError(),ve.nameTable=new Array(4096),ve.mount(ye,{},"/"),ve.createDefaultDirectories(),ve.createDefaultDevices(),ve.createSpecialDirectories(),ve.filesystems={MEMFS:ye}},init:(t,r,i)=>{ve.init.initialized=!0,ve.ensureErrnoError(),e.stdin=t||e.stdin,e.stdout=r||e.stdout,e.stderr=i||e.stderr,ve.createStandardStreams()},quit:()=>{ve.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=ve.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=ve.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=ve.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=he.basename(e),i=ve.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:ve.getPath(e);for(var n=t.split("/").reverse();n.length;){var o=n.pop();if(o){var s=he.join2(e,o);try{ve.mkdir(s)}catch(e){}e=s}}return s},createFile:(e,t,r,i,n)=>{var o=he.join2("string"==typeof e?e:ve.getPath(e),t),s=ve.getMode(i,n);return ve.create(o,s)},createDataFile:(e,t,r,i,n,o)=>{var s=t;e&&(e="string"==typeof e?e:ve.getPath(e),s=t?he.join2(e,t):e);var a=ve.getMode(i,n),d=ve.create(s,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,c=r.length;u{var n=he.join2("string"==typeof e?e:ve.getPath(e),t),o=ve.getMode(!!r,!!i);ve.createDevice.major||(ve.createDevice.major=64);var s=ve.makedev(ve.createDevice.major++,0);return ve.registerDevice(s,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,o)=>{for(var s=0,a=0;a{for(var s=0;s{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=me(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new ve.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function o(){this.lengthKnown=!1,this.chunks=[]}if(o.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},o.prototype.setDataGetter=function(e){this.getter=e},o.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,o=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,s=1048576;n||(s=i);var a=this;a.setDataGetter((e=>{var t=e*s,n=(e+1)*s-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==s&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):me(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!o&&i||(s=i=1,i=this.getter(0).length,s=i,S("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=s,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!p)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new o;Object.defineProperties(s,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:s}}else a={isDevice:!1,url:r};var d=ve.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,n){var o=e.node.contents;if(n>=o.length)return 0;var s=Math.min(o.length-n,i);if(o.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return ve.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ve.forceLoadFile(d),u(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ve.forceLoadFile(d);var o=ge(t);if(!o)throw new ve.ErrnoError(48);return u(e,D,o,t,r),{ptr:o,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,s,a,d,l,u)=>{var c=t?pe.resolve(he.join2(e,t)):e;function f(r){function o(r){u&&u(),d||ve.createDataFile(e,t,r,i,n,l),s&&s(),ne()}Browser.handledByPreloadPlugin(r,c,o,(()=>{a&&a(),ne()}))||o(r)}ie(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;o(e,(r=>{T(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&ne()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&ie()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ve.indexedDB();try{var n=i.open(ve.DB_NAME(),ve.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{S("creating db"),n.result.createObjectStore(ve.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([ve.DB_STORE_NAME],"readwrite"),o=i.objectStore(ve.DB_STORE_NAME),s=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=o.put(ve.analyzePath(e).object.contents,e);t.onsuccess=()=>{++s+a==d&&l()},t.onerror=()=>{a++,s+a==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ve.indexedDB();try{var n=i.open(ve.DB_NAME(),ve.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var o=i.transaction([ve.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var s=o.objectStore(ve.DB_STORE_NAME),a=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=s.get(e);t.onsuccess=()=>{ve.analyzePath(e).exists&&ve.unlink(e),ve.createDataFile(he.dirname(e),he.basename(e),t.result,!0,!0,!0),++a+d==l&&u()},t.onerror=()=>{d++,a+d==l&&u()}})),o.onerror=r},n.onerror=r}},be={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(he.isAbs(t))return t;var i;if(-100===e)i=ve.cwd();else{var n=ve.getStream(e);if(!n)throw new ve.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new ve.ErrnoError(44);return i}return he.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&he.normalize(t)!==he.normalize(ve.getPath(e.node)))return-54;throw e}return L[r>>2]=i.dev,L[r+4>>2]=0,L[r+8>>2]=i.ino,L[r+12>>2]=i.mode,L[r+16>>2]=i.nlink,L[r+20>>2]=i.uid,L[r+24>>2]=i.gid,L[r+28>>2]=i.rdev,L[r+32>>2]=0,ee=[i.size>>>0,(Q=i.size,+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],L[r+40>>2]=ee[0],L[r+44>>2]=ee[1],L[r+48>>2]=4096,L[r+52>>2]=i.blocks,ee=[Math.floor(i.atime.getTime()/1e3)>>>0,(Q=Math.floor(i.atime.getTime()/1e3),+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],L[r+56>>2]=ee[0],L[r+60>>2]=ee[1],L[r+64>>2]=0,ee=[Math.floor(i.mtime.getTime()/1e3)>>>0,(Q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],L[r+72>>2]=ee[0],L[r+76>>2]=ee[1],L[r+80>>2]=0,ee=[Math.floor(i.ctime.getTime()/1e3)>>>0,(Q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],L[r+88>>2]=ee[0],L[r+92>>2]=ee[1],L[r+96>>2]=0,ee=[i.ino>>>0,(Q=i.ino,+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],L[r+104>>2]=ee[0],L[r+108>>2]=ee[1],0},doMsync:function(e,t,r,i,n){var o=P.slice(e,e+r);ve.msync(t,o,n,r,i)},varargs:void 0,get:function(){return be.varargs+=4,L[be.varargs-4>>2]},getStr:function(e){return G(e)},getStreamFromFD:function(e){var t=ve.getStream(e);if(!t)throw new ve.ErrnoError(8);return t}};function we(t){if(_)return sr(1,1,t);U=t,X()||(Ee.terminateAllThreads(),e.onExit&&e.onExit(t),k=!0),f(t,new ue(t))}var Se=function(e,t){if(U=e,!t&&_)throw Be(e),"unwind";we(e)},Ee={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){_?Ee.initWorker():Ee.initMainThread()},initMainThread:function(){},initWorker:function(){B=!1},setExitStatus:function(e){U=e},terminateAllThreads:function(){for(var e in Ee.pthreads)(r=Ee.pthreads[e])&&Ee.returnWorkerToPool(r);for(var t=0;t{var n,o=i.data,s=o.cmd;if(t.pthread_ptr&&(Ee.currentProxiedOperationCallerThread=t.pthread_ptr),o.targetThread&&o.targetThread!=xr()){var a=Ee.pthreads[o.targetThread];return a?a.postMessage(o,o.transferList):E('Internal error! Worker sent a message "'+s+'" to target pthread '+o.targetThread+", but that thread no longer exists!"),void(Ee.currentProxiedOperationCallerThread=void 0)}"processProxyingQueue"===s?er(o.queue):"spawnThread"===s?fe(o):"cleanupThread"===s?ce(o.thread):"killThread"===s?function(e){var t=Ee.pthreads[e];delete Ee.pthreads[e],t.terminate(),Pr(e),Ee.runningWorkers.splice(Ee.runningWorkers.indexOf(t),1),t.pthread_ptr=0}(o.thread):"cancelThread"===s?(n=o.thread,Ee.pthreads[n].postMessage({cmd:"cancel"})):"loaded"===s?(t.loaded=!0,r&&r(t),t.runPthread&&(t.runPthread(),delete t.runPthread)):"print"===s?S("Thread "+o.threadId+": "+o.text):"printErr"===s?E("Thread "+o.threadId+": "+o.text):"alert"===s?alert("Thread "+o.threadId+": "+o.text):"setimmediate"===o.target?t.postMessage(o):"onAbort"===s?e.onAbort&&e.onAbort(o.arg):s&&E("worker sent an unknown command "+s),Ee.currentProxiedOperationCallerThread=void 0},t.onerror=e=>{throw E("worker sent an error! "+e.filename+":"+e.lineno+": "+e.message),e},m&&(t.on("message",(function(e){t.onmessage({data:e})})),t.on("error",(function(e){t.onerror(e)})),t.on("detachedExit",(function(){}))),t.postMessage({cmd:"load",urlOrBlob:e.mainScriptUrlOrBlob,wasmMemory:A,wasmModule:x})},allocateUnusedWorker:function(){if(e.locateFile){var t=y("decoder-pro-mt-worker.worker.js");Ee.unusedWorkers.push(new Worker(t))}else Ee.unusedWorkers.push(new Worker(new URL("decoder-pro-mt-worker.worker.js","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href)))},getNewWorker:function(){return 0==Ee.unusedWorkers.length&&(Ee.allocateUnusedWorker(),Ee.loadWasmModuleToWorker(Ee.unusedWorkers[0])),Ee.unusedWorkers.pop()}};function Ae(t){for(;t.length>0;)t.shift()(e)}function xe(e){var t=Lr(),r=e();return Mr(t),r}function Be(e){if(_)return sr(2,0,e);try{Se(e)}catch(e){!function(e){if(e instanceof ue||"unwind"==e)return U;f(1,e)}(e)}}e.PThread=Ee,e.establishStackSpace=function(){var e=xr(),t=L[e+44>>2],r=L[e+48>>2];Ir(t,t-r),Mr(t)};var Ue=[];function ke(e){var t=Ue[e];return t||(e>=Ue.length&&(Ue.length=e+1),Ue[e]=t=W.get(e)),t}function Te(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){M[this.ptr+4>>2]=e},this.get_type=function(){return M[this.ptr+4>>2]},this.set_destructor=function(e){M[this.ptr+8>>2]=e},this.get_destructor=function(){return M[this.ptr+8>>2]},this.set_refcount=function(e){L[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,D[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=D[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,D[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=D[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){Atomics.add(L,this.ptr+0>>2,1)},this.release_ref=function(){return 1===Atomics.sub(L,this.ptr+0>>2,1)},this.set_adjusted_ptr=function(e){M[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return M[this.ptr+16>>2]},this.get_exception_ptr=function(){if(zr(this.get_type()))return M[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}function Ce(e,t,r,i){return _?sr(3,1,e,t,r,i):De(e,t,r,i)}function De(e,t,r,i){if("undefined"==typeof SharedArrayBuffer)return E("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(_&&0===n.length)return Ce(e,t,r,i);var o={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return _?(o.cmd="spawnThread",postMessage(o,n),0):fe(o)}function Pe(e,t,r){if(_)return sr(4,1,e,t,r);be.varargs=r;try{var i=be.getStreamFromFD(e);switch(t){case 0:return(n=be.get())<0?-28:ve.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=be.get();return i.flags|=n,0;case 5:return n=be.get(),F[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return o=28,L[Ar()>>2]=o,-1}}catch(e){if(void 0===ve||!(e instanceof ve.ErrnoError))throw e;return-e.errno}var o}function Fe(e,t,r,i){if(_)return sr(5,1,e,t,r,i);be.varargs=i;try{t=be.getStr(t),t=be.calculateAt(e,t);var n=i?be.get():0;return ve.open(t,r,n).fd}catch(e){if(void 0===ve||!(e instanceof ve.ErrnoError))throw e;return-e.errno}}function Ie(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}e.invokeEntryPoint=function(e,t){var r=ke(e)(t);X()?Ee.setExitStatus(r):Fr(r)};var Le=void 0;function Me(e){for(var t="",r=e;P[r];)t+=Le[P[r++]];return t}var Re={},ze={},Ne={};function Oe(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function Ge(e,t){return e=Oe(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function $e(e,t){var r=Ge(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var He=void 0;function Ve(e){throw new He(e)}var We=void 0;function je(e){throw new We(e)}function qe(e,t,r){function i(t){var i=r(t);i.length!==e.length&&je("Mismatched type converter count");for(var n=0;n{ze.hasOwnProperty(e)?n[t]=ze[e]:(o.push(e),Re.hasOwnProperty(e)||(Re[e]=[]),Re[e].push((()=>{n[t]=ze[e],++s===o.length&&i(n)})))})),0===o.length&&i(n)}function Ye(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||Ve('type "'+i+'" must have a positive integer typeid pointer'),ze.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Ve("Cannot register type '"+i+"' twice")}if(ze[e]=t,delete Ne[e],Re.hasOwnProperty(e)){var n=Re[e];delete Re[e],n.forEach((e=>e()))}}function Ke(e){if(!(this instanceof gt))return!1;if(!(e instanceof gt))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Xe(e){Ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Ze=!1;function Je(e){}function Qe(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function et(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=et(e,t,r.baseClass);return null===i?null:r.downcast(i)}var tt={};function rt(){return Object.keys(dt).length}function it(){var e=[];for(var t in dt)dt.hasOwnProperty(t)&&e.push(dt[t]);return e}var nt=[];function ot(){for(;nt.length;){var e=nt.pop();e.$$.deleteScheduled=!1,e.delete()}}var st=void 0;function at(e){st=e,nt.length&&st&&st(ot)}var dt={};function lt(e,t){return t=function(e,t){for(void 0===t&&Ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),dt[t]}function ut(e,t){return t.ptrType&&t.ptr||je("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&je("Both smartPtrType and smartPtr must be specified"),t.count={value:1},ft(Object.create(e,{$$:{value:t}}))}function ct(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=lt(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?ut(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):ut(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var o,s=this.registeredClass.getActualType(t),a=tt[s];if(!a)return n.call(this);o=this.isConst?a.constPointerType:a.pointerType;var d=et(t,this.registeredClass,o.registeredClass);return null===d?n.call(this):this.isSmartPointer?ut(o.registeredClass.instancePrototype,{ptrType:o,ptr:d,smartPtrType:this,smartPtr:e}):ut(o.registeredClass.instancePrototype,{ptrType:o,ptr:d})}function ft(e){return"undefined"==typeof FinalizationRegistry?(ft=e=>e,e):(Ze=new FinalizationRegistry((e=>{Qe(e.$$)})),ft=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Ze.register(e,r,e)}return e},Je=e=>Ze.unregister(e),ft(e))}function ht(){if(this.$$.ptr||Xe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=ft(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function pt(){this.$$.ptr||Xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),Je(this),Qe(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function mt(){return!this.$$.ptr}function _t(){return this.$$.ptr||Xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),nt.push(this),1===nt.length&&st&&st(ot),this.$$.deleteScheduled=!0,this}function gt(){}function yt(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function vt(e,t,r,i,n,o,s,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=o,this.upcast=s,this.downcast=a,this.pureVirtualFunctions=[]}function bt(e,t,r){for(;t!==r;)t.upcast||Ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function wt(e,t){if(null===t)return this.isReference&&Ve("null is not a valid "+this.name),0;t.$$||Ve('Cannot pass "'+Vt(t)+'" as a '+this.name),t.$$.ptr||Ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return bt(t.$$.ptr,r,this.registeredClass)}function St(e,t){var r;if(null===t)return this.isReference&&Ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Ve('Cannot pass "'+Vt(t)+'" as a '+this.name),t.$$.ptr||Ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=bt(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,Ht.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:Ve("Unsupporting sharing policy")}return r}function Et(e,t){if(null===t)return this.isReference&&Ve("null is not a valid "+this.name),0;t.$$||Ve('Cannot pass "'+Vt(t)+'" as a '+this.name),t.$$.ptr||Ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return bt(t.$$.ptr,r,this.registeredClass)}function At(e){return this.fromWireType(L[e>>2])}function xt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Bt(e){this.rawDestructor&&this.rawDestructor(e)}function Ut(e){null!==e&&e.delete()}function kt(e,t,r,i,n,o,s,a,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=St:i?(this.toWireType=wt,this.destructorFunction=null):(this.toWireType=Et,this.destructorFunction=null)}function Tt(t,r,i){return t.includes("j")?function(t,r,i){var n=e["dynCall_"+t];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(t,r,i):ke(r).apply(null,i)}function Ct(e,t){var r,i,n,o=(e=Me(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),Tt(r,i,n)}):ke(t);return"function"!=typeof o&&Ve("unknown function pointer with signature "+e+": "+t),o}var Dt=void 0;function Pt(e){var t=Ur(e),r=Me(t);return Sr(t),r}function Ft(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||ze[t]||(Ne[t]?Ne[t].forEach(e):(r.push(t),i[t]=!0))})),new Dt(e+": "+r.map(Pt).join([", "]))}function It(e,t){for(var r=[],i=0;i>2]);return r}function Lt(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function Mt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=Ge(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Rt(e,t,r,i,n){var o=t.length;o<2&&Ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=null!==t[1]&&null!==r,a=!1,d=1;d0?", ":"")+c),f+=(l?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(d=s?1:2;d4&&0==--Nt[e].refcount&&(Nt[e]=void 0,zt.push(e))}function Gt(){for(var e=0,t=5;t(e||Ve("Cannot use deleted val. handle = "+e),Nt[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=zt.length?zt.pop():Nt.length;return Nt[t]={refcount:1,value:e},t}}};function Vt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function Wt(e,t){switch(t){case 2:return function(e){return this.fromWireType(R[e>>2])};case 3:return function(e){return this.fromWireType(z[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function jt(e,t,r){switch(t){case 0:return r?function(e){return D[e]}:function(e){return P[e]};case 1:return r?function(e){return F[e>>1]}:function(e){return I[e>>1]};case 2:return r?function(e){return L[e>>2]}:function(e){return M[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var qt="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Yt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&I[i];)++i;if((r=i<<1)-e>32&&qt)return qt.decode(P.slice(e,r));for(var o="",s=0;!(s>=t/2);++s){var a=F[e+2*s>>1];if(0==a)break;o+=String.fromCharCode(a)}return o}function Kt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,o=0;o>1]=s,t+=2}return F[t>>1]=0,t-i}function Xt(e){return 2*e.length}function Zt(e,t){for(var r=0,i="";!(r>=t/4);){var n=L[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var o=n-65536;i+=String.fromCharCode(55296|o>>10,56320|1023&o)}else i+=String.fromCharCode(n)}return i}function Jt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,o=0;o=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),L[t>>2]=s,(t+=4)+4>n)break}return L[t>>2]=0,t-i}function Qt(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}function er(e){Atomics.store(L,e>>2,1),xr()&&Dr(e),Atomics.compareExchange(L,e>>2,1,0)}e.executeNotifiedProxyingQueue=er;var tr,rr={},ir=[],nr=[];function or(e){or.shown||(or.shown={}),or.shown[e]||(or.shown[e]=1,m&&(e="warning: "+e),E(e))}function sr(e,t){var r=arguments.length-2,i=arguments;return xe((function(){for(var n=r,o=Rr(8*n),s=o>>3,a=0;a{var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:_?()=>performance.now()-e.__performance_now_clock_drift:()=>performance.now();var ar=[],dr={};function lr(){if(!lr.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in dr)void 0===dr[t]?delete e[t]:e[t]=dr[t];var r=[];for(var t in e)r.push(t+"="+e[t]);lr.strings=r}return lr.strings}function ur(e,t){if(_)return sr(6,1,e,t);var r=0;return lr().forEach((function(i,n){var o=t+r;M[e+4*n>>2]=o,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(D[t>>0]=0)}(i,o),r+=i.length+1})),0}function cr(e,t){if(_)return sr(7,1,e,t);var r=lr();M[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),M[t>>2]=i,0}function fr(e){if(_)return sr(8,1,e);try{var t=be.getStreamFromFD(e);return ve.close(t),0}catch(e){if(void 0===ve||!(e instanceof ve.ErrnoError))throw e;return e.errno}}function hr(e,t){if(_)return sr(9,1,e,t);try{var r=be.getStreamFromFD(e),i=r.tty?2:ve.isDir(r.mode)?3:ve.isLink(r.mode)?7:4;return D[t>>0]=i,0}catch(e){if(void 0===ve||!(e instanceof ve.ErrnoError))throw e;return e.errno}}function pr(e,t,r,i){if(_)return sr(10,1,e,t,r,i);try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=M[t+4>>2];t+=8;var d=ve.read(e,D,s,a,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===ve||!(e instanceof ve.ErrnoError))throw e;return e.errno}}function mr(e,t,r,i,n){if(_)return sr(11,1,e,t,r,i,n);try{var o=(d=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*d:NaN;if(isNaN(o))return 61;var s=be.getStreamFromFD(e);return ve.llseek(s,o,i),ee=[s.position>>>0,(Q=s.position,+Math.abs(Q)>=1?Q>0?(0|Math.min(+Math.floor(Q/4294967296),4294967295))>>>0:~~+Math.ceil((Q-+(~~Q>>>0))/4294967296)>>>0:0)],L[n>>2]=ee[0],L[n+4>>2]=ee[1],s.getdents&&0===o&&0===i&&(s.getdents=null),0}catch(e){if(void 0===ve||!(e instanceof ve.ErrnoError))throw e;return e.errno}var a,d}function _r(e,t,r,i){if(_)return sr(12,1,e,t,r,i);try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=M[t+4>>2];t+=8;var d=ve.write(e,D,s,a,i);if(d<0)return-1;n+=d}return n}(be.getStreamFromFD(e),t,r);return M[i>>2]=n,0}catch(e){if(void 0===ve||!(e instanceof ve.ErrnoError))throw e;return e.errno}}Ee.init();var gr=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ve.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},yr=365,vr=146;Object.defineProperties(gr.prototype,{read:{get:function(){return(this.mode&yr)===yr},set:function(e){e?this.mode|=yr:this.mode&=-366}},write:{get:function(){return(this.mode&vr)===vr},set:function(e){e?this.mode|=vr:this.mode&=-147}},isFolder:{get:function(){return ve.isDir(this.mode)}},isDevice:{get:function(){return ve.isChrdev(this.mode)}}}),ve.FSNode=gr,ve.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Le=e}(),He=e.BindingError=$e(Error,"BindingError"),We=e.InternalError=$e(Error,"InternalError"),gt.prototype.isAliasOf=Ke,gt.prototype.clone=ht,gt.prototype.delete=pt,gt.prototype.isDeleted=mt,gt.prototype.deleteLater=_t,e.getInheritedInstanceCount=rt,e.getLiveInheritedInstances=it,e.flushPendingDeletes=ot,e.setDelayFunction=at,kt.prototype.getPointee=xt,kt.prototype.destructor=Bt,kt.prototype.argPackAdvance=8,kt.prototype.readValueFromPointer=At,kt.prototype.deleteObject=Ut,kt.prototype.fromWireType=ct,Dt=e.UnboundTypeError=$e(Error,"UnboundTypeError"),e.count_emval_handles=Gt,e.get_first_emval=$t;var br=[null,we,Be,Ce,Pe,Fe,ur,cr,fr,hr,pr,mr,_r],wr={t:function(e){return Er(e+24)+24},s:function(e,t,r){throw new Te(e).init(t,r),e},G:function(e){kr(e,!p,1,!h),Ee.threadInitTLS()},j:function(e){_?postMessage({cmd:"cleanupThread",thread:e}):ce(e)},C:De,Q:Pe,F:Fe,v:function(e,t,r,i,n){},S:function(e,t,r,i,n){var o=Ie(r);Ye(e,{name:t=Me(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=D;else if(2===r)i=F;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=L}return this.fromWireType(i[e>>o])},destructorFunction:null})},H:function(t,r,i,n,o,s,a,d,l,u,c,f,h){c=Me(c),s=Ct(o,s),d&&(d=Ct(a,d)),u&&(u=Ct(l,u)),h=Ct(f,h);var p=Oe(c);!function(t,r,i){e.hasOwnProperty(t)?((void 0===i||void 0!==e[t].overloadTable&&void 0!==e[t].overloadTable[i])&&Ve("Cannot register public name '"+t+"' twice"),yt(e,t,t),e.hasOwnProperty(i)&&Ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),e[t].overloadTable[i]=r):(e[t]=r,void 0!==i&&(e[t].numArguments=i))}(p,(function(){Ft("Cannot construct "+c+" due to unbound types",[n])})),qe([t,r,i],n?[n]:[],(function(r){var i,o;r=r[0],o=n?(i=r.registeredClass).instancePrototype:gt.prototype;var a=Ge(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new He("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new He(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new He("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(o,{constructor:{value:a}});a.prototype=l;var f=new vt(c,a,l,h,i,s,d,u),m=new kt(c,f,!0,!1,!1),_=new kt(c+"*",f,!1,!1,!1),g=new kt(c+" const*",f,!1,!0,!1);return tt[t]={pointerType:_,constPointerType:g},function(t,r,i){e.hasOwnProperty(t)||je("Replacing nonexistant public symbol"),void 0!==e[t].overloadTable&&void 0!==i?e[t].overloadTable[i]=r:(e[t]=r,e[t].argCount=i)}(p,a),[m,_,g]}))},y:function(e,t,r,i,n,o){T(t>0);var s=It(t,r);n=Ct(i,n),qe([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new He("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{Ft("Cannot construct "+e.name+" due to unbound types",s)},qe([],s,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Rt(r,i,null,n,o),[]})),[]}))},f:function(e,t,r,i,n,o,s,a){var d=It(r,i);t=Me(t),o=Ct(n,o),qe([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){Ft("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(yt(l,t,i),l[t].overloadTable[r-2]=n),qe([],d,(function(n){var a=Rt(i,n,e,o,s);return void 0===l[t].overloadTable?(a.argCount=r-2,l[t]=a):l[t].overloadTable[r-2]=a,[]})),[]}))},R:function(e,t){Ye(e,{name:t=Me(t),fromWireType:function(e){var t=Ht.toValue(e);return Ot(e),t},toWireType:function(e,t){return Ht.toHandle(t)},argPackAdvance:8,readValueFromPointer:At,destructorFunction:null})},p:function(e,t,r){var i=Ie(r);Ye(e,{name:t=Me(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:Wt(t,i),destructorFunction:null})},d:function(e,t,r,i,n){t=Me(t);var o=Ie(r),s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var d=t.includes("unsigned");Ye(e,{name:t,fromWireType:s,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:jt(t,o,0!==i),destructorFunction:null})},c:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=M,r=t[e>>=2],n=t[e+1];return new i(C,n,r)}Ye(e,{name:r=Me(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},o:function(e,t){var r="std::string"===(t=Me(t));Ye(e,{name:t,fromWireType:function(e){var t,i=M[e>>2],n=e+4;if(r)for(var o=n,s=0;s<=i;++s){var a=n+s;if(s==i||0==P[a]){var d=G(o,a-o);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),o=a+1}}else{var l=new Array(i);for(s=0;s>2]=i,r&&n)$(t,P,s,i+1);else if(n)for(var a=0;a255&&(Sr(s),Ve("String has UTF-16 code units that do not fit in 8 bits")),P[s+a]=d}else for(a=0;aI,a=1):4===t&&(i=Zt,n=Jt,s=Qt,o=()=>M,a=2),Ye(e,{name:r,fromWireType:function(e){for(var r,n=M[e>>2],s=o(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==s[u>>a]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Sr(e),r},toWireType:function(e,i){"string"!=typeof i&&Ve("Cannot pass non-string to C++ string type "+r);var o=s(i),d=Er(4+o+t);return M[d>>2]=o>>a,n(i,d+4,o+t),null!==e&&e.push(Sr,d),d},argPackAdvance:8,readValueFromPointer:At,destructorFunction:function(e){Sr(e)}})},r:function(e,t){Ye(e,{isVoid:!0,name:t=Me(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},g:function(){return Date.now()},D:function(){return 2097152},E:function(e,t,r,i){if(e==t)setTimeout((()=>er(i)));else if(_)postMessage({targetThread:e,cmd:"processProxyingQueue",queue:i});else{var n=Ee.pthreads[e];if(!n)return;n.postMessage({cmd:"processProxyingQueue",queue:i})}return 1},J:function(e,t,r){return-1},m:function(e,t,r,i){var n,o;(e=ir[e])(t=Ht.toValue(t),r=void 0===(o=rr[n=r])?Me(n):o,null,i)},i:Ot,q:function(e,t){var r=function(e,t){for(var r,i,n,o=new Array(e),s=0;s>2],i="parameter "+s,n=void 0,void 0===(n=ze[r])&&Ve(i+" has unknown type "+Pt(r)),n);return o}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",o=nr[n];if(void 0!==o)return o;for(var s=["retType"],a=[i],d="",l=0;l>3,n=0;n0)){if(_)return t(e),Z(),void postMessage({cmd:"loaded"});!function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)t=e.preRun.shift(),q.unshift(t);var t;Ae(q)}(),te>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),i()}),1)):i())}function i(){Tr||(Tr=!0,e.calledRun=!0,k||(Z(),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),function(){if(!_){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)t=e.postRun.shift(),K.unshift(t);var t;Ae(K)}}()))}}if(e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.ma).apply(null,arguments)},e._ff_h264_cabac_tables=111557,e.keepRuntimeAlive=X,e.wasmMemory=A,e.ExitStatus=ue,e.PThread=Ee,re=function e(){Tr||Nr(),Tr||(re=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return Nr(),e.ready}),s=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,o,s,a,d,l,u=Object.assign({},t),c="./this.program",f="object"==typeof window,h="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=h?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(a=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),a.readFileSync(e,t?void 0:"utf8")},s=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=(e,t,r)=>{l(),e=d.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof J))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(f||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),g=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&t.quit;var y,v;t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&V("no native wasm support detected");var b=!1;function w(e,t){e||V(t)}var S,E,A,x,B,U,k,T,C,D,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&P)return P.decode(e.subarray(t,n));for(var o="";t>10,56320|1023&l)}}else o+=String.fromCharCode((31&s)<<6|a)}else o+=String.fromCharCode(s)}return o}function I(e,t){return e?F(A,e,t):""}function L(e,t,r,i){if(!(i>0))return 0;for(var n=r,o=r+i-1,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(a<=127){if(r>=o)break;t[r++]=a}else if(a<=2047){if(r+1>=o)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=o)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=o)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var R=[],z=[],N=[];var O=0,G=null;function $(e){O++,t.monitorRunDependencies&&t.monitorRunDependencies(O)}function H(e){if(O--,t.monitorRunDependencies&&t.monitorRunDependencies(O),0==O&&G){var r=G;G=null,r()}}function V(e){t.onAbort&&t.onAbort(e),g(e="Aborted("+e+")"),b=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var W,j,q,Y;function K(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){return e.startsWith("file://")}function Z(e){try{if(e==W&&y)return new Uint8Array(y);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Q(e){for(;e.length>0;)e.shift()(t)}function ee(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){k[this.ptr+4>>2]=e},this.get_type=function(){return k[this.ptr+4>>2]},this.set_destructor=function(e){k[this.ptr+8>>2]=e},this.get_destructor=function(){return k[this.ptr+8>>2]},this.set_refcount=function(e){U[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,E[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=E[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,E[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=E[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=U[this.ptr>>2];U[this.ptr>>2]=e+1},this.release_ref=function(){var e=U[this.ptr>>2];return U[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){k[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return k[this.ptr+16>>2]},this.get_exception_ptr=function(){if(jt(this.get_type()))return k[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?K(W="decoder-pro-audio.wasm")||(j=W,W=t.locateFile?t.locateFile(j,m):m+j):W=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-mt.js",document.baseURI).href).toString();var te={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=te.isAbs(e),r="/"===e.substr(-1);return(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=te.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return te.normalize(e.join("/"))},join2:(e,t)=>te.normalize(e+"/"+t)};var re={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ae.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=te.isAbs(i)}return(t?"/":"")+(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=re.resolve(e).substr(1),t=re.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),o=Math.min(i.length,n.length),s=o,a=0;a0?r:M(e)+1,n=new Array(i),o=L(e,n,0,n.length);return t&&(n.length=o),n}var ne={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ne.ttys[e]={input:[],output:[],ops:t},ae.registerDevice(e,ne.stream_ops)},stream_ops:{open:function(e){var t=ne.ttys[e.node.rdev];if(!t)throw new ae.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ae.ErrnoError(60);for(var o=0,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ie(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(F(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(g(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g(F(e.output,0)),e.output=[])}}};function oe(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Wt(65536,e);return t?(function(e,t){A.fill(0,e,e+t)}(t,e),t):0}var se={ops_table:null,mount:function(e){return se.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ae.isBlkdev(r)||ae.isFIFO(r))throw new ae.ErrnoError(63);se.ops_table||(se.ops_table={dir:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,lookup:se.node_ops.lookup,mknod:se.node_ops.mknod,rename:se.node_ops.rename,unlink:se.node_ops.unlink,rmdir:se.node_ops.rmdir,readdir:se.node_ops.readdir,symlink:se.node_ops.symlink},stream:{llseek:se.stream_ops.llseek}},file:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:{llseek:se.stream_ops.llseek,read:se.stream_ops.read,write:se.stream_ops.write,allocate:se.stream_ops.allocate,mmap:se.stream_ops.mmap,msync:se.stream_ops.msync}},link:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,readlink:se.node_ops.readlink},stream:{}},chrdev:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:ae.chrdev_stream_ops}});var n=ae.createNode(e,t,r,i);return ae.isDir(n.mode)?(n.node_ops=se.ops_table.dir.node,n.stream_ops=se.ops_table.dir.stream,n.contents={}):ae.isFile(n.mode)?(n.node_ops=se.ops_table.file.node,n.stream_ops=se.ops_table.file.stream,n.usedBytes=0,n.contents=null):ae.isLink(n.mode)?(n.node_ops=se.ops_table.link.node,n.stream_ops=se.ops_table.link.stream):ae.isChrdev(n.mode)&&(n.node_ops=se.ops_table.chrdev.node,n.stream_ops=se.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=ae.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ae.isDir(e.mode)?t.size=4096:ae.isFile(e.mode)?t.size=e.usedBytes:ae.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&se.resizeFileStorage(e,t.size)},lookup:function(e,t){throw ae.genericErrors[44]},mknod:function(e,t,r,i){return se.createNode(e,t,r,i)},rename:function(e,t,r){if(ae.isDir(e.mode)){var i;try{i=ae.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ae.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=ae.lookupNode(e,t);for(var i in r.contents)throw new ae.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=se.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!ae.isLink(e.mode))throw new ae.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var o=e.node.contents;if(n>=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-n,i);if(s>8&&o.subarray)t.set(o.subarray(n,n+s),r);else for(var a=0;a0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=re.resolve(ae.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new ae.ErrnoError(32);for(var i=te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=ae.root,o="/",s=0;s40)throw new ae.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var t;;){if(ae.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%ae.nameTable.length},hashAddNode:e=>{var t=ae.hashName(e.parent.id,e.name);e.name_next=ae.nameTable[t],ae.nameTable[t]=e},hashRemoveNode:e=>{var t=ae.hashName(e.parent.id,e.name);if(ae.nameTable[t]===e)ae.nameTable[t]=e.name_next;else for(var r=ae.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=ae.mayLookup(e);if(r)throw new ae.ErrnoError(r,e);for(var i=ae.hashName(e.id,t),n=ae.nameTable[i];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===t)return n}return ae.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new ae.FSNode(e,t,r,i);return ae.hashAddNode(n),n},destroyNode:e=>{ae.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=ae.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ae.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=ae.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{ae.lookupNode(e,t);return 20}catch(e){}return ae.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=ae.lookupNode(e,t)}catch(e){return e.errno}var n=ae.nodePermissions(e,"wx");if(n)return n;if(r){if(!ae.isDir(i.mode))return 54;if(ae.isRoot(i)||ae.getPath(i)===ae.cwd())return 10}else if(ae.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ae.isLink(e.mode)?32:ae.isDir(e.mode)&&("r"!==ae.flagsToPermissionString(t)||512&t)?31:ae.nodePermissions(e,ae.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ae.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!ae.streams[r])return r;throw new ae.ErrnoError(33)},getStream:e=>ae.streams[e],createStream:(e,t,r)=>{ae.FSStream||(ae.FSStream=function(){this.shared={}},ae.FSStream.prototype={},Object.defineProperties(ae.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new ae.FSStream,e);var i=ae.nextfd(t,r);return e.fd=i,ae.streams[i]=e,e},closeStream:e=>{ae.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=ae.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new ae.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{ae.devices[e]={stream_ops:t}},getDevice:e=>ae.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),ae.syncFSRequests++,ae.syncFSRequests>1&&g("warning: "+ae.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ae.getMounts(ae.root.mount),i=0;function n(e){return ae.syncFSRequests--,t(e)}function o(e){if(e)return o.errored?void 0:(o.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return o(null);t.type.syncfs(t,e,o)}))},mount:(e,t,r)=>{var i,n="/"===r,o=!r;if(n&&ae.root)throw new ae.ErrnoError(10);if(!n&&!o){var s=ae.lookupPath(r,{follow_mount:!1});if(r=s.path,i=s.node,ae.isMountpoint(i))throw new ae.ErrnoError(10);if(!ae.isDir(i.mode))throw new ae.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?ae.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=ae.lookupPath(e,{follow_mount:!1});if(!ae.isMountpoint(t.node))throw new ae.ErrnoError(28);var r=t.node,i=r.mounted,n=ae.getMounts(i);Object.keys(ae.nameTable).forEach((e=>{for(var t=ae.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ae.destroyNode(t),t=r}})),r.mounted=null;var o=r.mount.mounts.indexOf(i);r.mount.mounts.splice(o,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=ae.lookupPath(e,{parent:!0}).node,n=te.basename(e);if(!n||"."===n||".."===n)throw new ae.ErrnoError(28);var o=ae.mayCreate(i,n);if(o)throw new ae.ErrnoError(o);if(!i.node_ops.mknod)throw new ae.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ae.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ae.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ae.mknod(e,t,r)),symlink:(e,t)=>{if(!re.resolve(e))throw new ae.ErrnoError(44);var r=ae.lookupPath(t,{parent:!0}).node;if(!r)throw new ae.ErrnoError(44);var i=te.basename(t),n=ae.mayCreate(r,i);if(n)throw new ae.ErrnoError(n);if(!r.node_ops.symlink)throw new ae.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=te.dirname(e),o=te.dirname(t),s=te.basename(e),a=te.basename(t);if(r=ae.lookupPath(e,{parent:!0}).node,i=ae.lookupPath(t,{parent:!0}).node,!r||!i)throw new ae.ErrnoError(44);if(r.mount!==i.mount)throw new ae.ErrnoError(75);var d,l=ae.lookupNode(r,s),u=re.relative(e,o);if("."!==u.charAt(0))throw new ae.ErrnoError(28);if("."!==(u=re.relative(t,n)).charAt(0))throw new ae.ErrnoError(55);try{d=ae.lookupNode(i,a)}catch(e){}if(l!==d){var c=ae.isDir(l.mode),f=ae.mayDelete(r,s,c);if(f)throw new ae.ErrnoError(f);if(f=d?ae.mayDelete(i,a,c):ae.mayCreate(i,a))throw new ae.ErrnoError(f);if(!r.node_ops.rename)throw new ae.ErrnoError(63);if(ae.isMountpoint(l)||d&&ae.isMountpoint(d))throw new ae.ErrnoError(10);if(i!==r&&(f=ae.nodePermissions(r,"w")))throw new ae.ErrnoError(f);ae.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{ae.hashAddNode(l)}}},rmdir:e=>{var t=ae.lookupPath(e,{parent:!0}).node,r=te.basename(e),i=ae.lookupNode(t,r),n=ae.mayDelete(t,r,!0);if(n)throw new ae.ErrnoError(n);if(!t.node_ops.rmdir)throw new ae.ErrnoError(63);if(ae.isMountpoint(i))throw new ae.ErrnoError(10);t.node_ops.rmdir(t,r),ae.destroyNode(i)},readdir:e=>{var t=ae.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ae.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=ae.lookupPath(e,{parent:!0}).node;if(!t)throw new ae.ErrnoError(44);var r=te.basename(e),i=ae.lookupNode(t,r),n=ae.mayDelete(t,r,!1);if(n)throw new ae.ErrnoError(n);if(!t.node_ops.unlink)throw new ae.ErrnoError(63);if(ae.isMountpoint(i))throw new ae.ErrnoError(10);t.node_ops.unlink(t,r),ae.destroyNode(i)},readlink:e=>{var t=ae.lookupPath(e).node;if(!t)throw new ae.ErrnoError(44);if(!t.node_ops.readlink)throw new ae.ErrnoError(28);return re.resolve(ae.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=ae.lookupPath(e,{follow:!t}).node;if(!r)throw new ae.ErrnoError(44);if(!r.node_ops.getattr)throw new ae.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ae.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=ae.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ae.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{ae.chmod(e,t,!0)},fchmod:(e,t)=>{var r=ae.getStream(e);if(!r)throw new ae.ErrnoError(8);ae.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=ae.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ae.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{ae.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=ae.getStream(e);if(!i)throw new ae.ErrnoError(8);ae.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new ae.ErrnoError(28);var r;"string"==typeof e?r=ae.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ae.ErrnoError(63);if(ae.isDir(r.mode))throw new ae.ErrnoError(31);if(!ae.isFile(r.mode))throw new ae.ErrnoError(28);var i=ae.nodePermissions(r,"w");if(i)throw new ae.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=ae.getStream(e);if(!r)throw new ae.ErrnoError(8);if(0==(2097155&r.flags))throw new ae.ErrnoError(28);ae.truncate(r.node,t)},utime:(e,t,r)=>{var i=ae.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new ae.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?ae.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=te.normalize(e);try{n=ae.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var o=!1;if(64&r)if(n){if(128&r)throw new ae.ErrnoError(20)}else n=ae.mknod(e,i,0),o=!0;if(!n)throw new ae.ErrnoError(44);if(ae.isChrdev(n.mode)&&(r&=-513),65536&r&&!ae.isDir(n.mode))throw new ae.ErrnoError(54);if(!o){var s=ae.mayOpen(n,r);if(s)throw new ae.ErrnoError(s)}512&r&&!o&&ae.truncate(n,0),r&=-131713;var a=ae.createStream({node:n,path:ae.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!t.logReadFiles||1&r||(ae.readFiles||(ae.readFiles={}),e in ae.readFiles||(ae.readFiles[e]=1)),a},close:e=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ae.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ae.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ae.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(1==(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.read)throw new ae.ErrnoError(28);var o=void 0!==n;if(o){if(!e.seekable)throw new ae.ErrnoError(70)}else n=e.position;var s=e.stream_ops.read(e,t,r,i,n);return o||(e.position+=s),s},write:(e,t,r,i,n,o)=>{if(i<0||n<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(0==(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.write)throw new ae.ErrnoError(28);e.seekable&&1024&e.flags&&ae.llseek(e,0,2);var s=void 0!==n;if(s){if(!e.seekable)throw new ae.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,o);return s||(e.position+=a),a},allocate:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(t<0||r<=0)throw new ae.ErrnoError(28);if(0==(2097155&e.flags))throw new ae.ErrnoError(8);if(!ae.isFile(e.node.mode)&&!ae.isDir(e.node.mode))throw new ae.ErrnoError(43);if(!e.stream_ops.allocate)throw new ae.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ae.ErrnoError(2);if(1==(2097155&e.flags))throw new ae.ErrnoError(2);if(!e.stream_ops.mmap)throw new ae.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new ae.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=ae.open(e,t.flags),n=ae.stat(e),o=n.size,s=new Uint8Array(o);return ae.read(i,s,0,o,0),"utf8"===t.encoding?r=F(s,0):"binary"===t.encoding&&(r=s),ae.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ae.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),o=L(t,n,0,n.length);ae.write(i,n,0,o,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ae.write(i,t,0,t.byteLength,void 0,r.canOwn)}ae.close(i)},cwd:()=>ae.currentPath,chdir:e=>{var t=ae.lookupPath(e,{follow:!0});if(null===t.node)throw new ae.ErrnoError(44);if(!ae.isDir(t.node.mode))throw new ae.ErrnoError(54);var r=ae.nodePermissions(t.node,"x");if(r)throw new ae.ErrnoError(r);ae.currentPath=t.path},createDefaultDirectories:()=>{ae.mkdir("/tmp"),ae.mkdir("/home"),ae.mkdir("/home/web_user")},createDefaultDevices:()=>{ae.mkdir("/dev"),ae.registerDevice(ae.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ae.mkdev("/dev/null",ae.makedev(1,3)),ne.register(ae.makedev(5,0),ne.default_tty_ops),ne.register(ae.makedev(6,0),ne.default_tty1_ops),ae.mkdev("/dev/tty",ae.makedev(5,0)),ae.mkdev("/dev/tty1",ae.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>V("randomDevice")}();ae.createDevice("/dev","random",e),ae.createDevice("/dev","urandom",e),ae.mkdir("/dev/shm"),ae.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ae.mkdir("/proc");var e=ae.mkdir("/proc/self");ae.mkdir("/proc/self/fd"),ae.mount({mount:()=>{var t=ae.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=ae.getStream(r);if(!i)throw new ae.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?ae.createDevice("/dev","stdin",t.stdin):ae.symlink("/dev/tty","/dev/stdin"),t.stdout?ae.createDevice("/dev","stdout",null,t.stdout):ae.symlink("/dev/tty","/dev/stdout"),t.stderr?ae.createDevice("/dev","stderr",null,t.stderr):ae.symlink("/dev/tty1","/dev/stderr"),ae.open("/dev/stdin",0),ae.open("/dev/stdout",1),ae.open("/dev/stderr",1)},ensureErrnoError:()=>{ae.ErrnoError||(ae.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ae.ErrnoError.prototype=new Error,ae.ErrnoError.prototype.constructor=ae.ErrnoError,[44].forEach((e=>{ae.genericErrors[e]=new ae.ErrnoError(e),ae.genericErrors[e].stack=""})))},staticInit:()=>{ae.ensureErrnoError(),ae.nameTable=new Array(4096),ae.mount(se,{},"/"),ae.createDefaultDirectories(),ae.createDefaultDevices(),ae.createSpecialDirectories(),ae.filesystems={MEMFS:se}},init:(e,r,i)=>{ae.init.initialized=!0,ae.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,ae.createStandardStreams()},quit:()=>{ae.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=ae.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=ae.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=ae.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=te.basename(e),i=ae.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:ae.getPath(e);for(var n=t.split("/").reverse();n.length;){var o=n.pop();if(o){var s=te.join2(e,o);try{ae.mkdir(s)}catch(e){}e=s}}return s},createFile:(e,t,r,i,n)=>{var o=te.join2("string"==typeof e?e:ae.getPath(e),t),s=ae.getMode(i,n);return ae.create(o,s)},createDataFile:(e,t,r,i,n,o)=>{var s=t;e&&(e="string"==typeof e?e:ae.getPath(e),s=t?te.join2(e,t):e);var a=ae.getMode(i,n),d=ae.create(s,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,c=r.length;u{var n=te.join2("string"==typeof e?e:ae.getPath(e),t),o=ae.getMode(!!r,!!i);ae.createDevice.major||(ae.createDevice.major=64);var s=ae.makedev(ae.createDevice.major++,0);return ae.registerDevice(s,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,o)=>{for(var s=0,a=0;a{for(var s=0;s{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ie(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new ae.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function o(){this.lengthKnown=!1,this.chunks=[]}if(o.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},o.prototype.setDataGetter=function(e){this.getter=e},o.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,o=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,s=1048576;n||(s=i);var a=this;a.setDataGetter((e=>{var t=e*s,n=(e+1)*s-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==s&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ie(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!o&&i||(s=i=1,i=this.getter(0).length,s=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=s,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new o;Object.defineProperties(s,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:s}}else a={isDevice:!1,url:r};var d=ae.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,n){var o=e.node.contents;if(n>=o.length)return 0;var s=Math.min(o.length-n,i);if(o.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return ae.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ae.forceLoadFile(d),u(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ae.forceLoadFile(d);var o=oe(t);if(!o)throw new ae.ErrnoError(48);return u(e,E,o,t,r),{ptr:o,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,s,a,d,l,u)=>{var c=t?re.resolve(te.join2(e,t)):e;function f(r){function o(r){u&&u(),d||ae.createDataFile(e,t,r,i,n,l),s&&s(),H()}Browser.handledByPreloadPlugin(r,c,o,(()=>{a&&a(),H()}))||o(r)}$(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;o(e,(r=>{w(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&H()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&$()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ae.indexedDB();try{var n=i.open(ae.DB_NAME(),ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(ae.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([ae.DB_STORE_NAME],"readwrite"),o=i.objectStore(ae.DB_STORE_NAME),s=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=o.put(ae.analyzePath(e).object.contents,e);t.onsuccess=()=>{++s+a==d&&l()},t.onerror=()=>{a++,s+a==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ae.indexedDB();try{var n=i.open(ae.DB_NAME(),ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var o=i.transaction([ae.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var s=o.objectStore(ae.DB_STORE_NAME),a=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=s.get(e);t.onsuccess=()=>{ae.analyzePath(e).exists&&ae.unlink(e),ae.createDataFile(te.dirname(e),te.basename(e),t.result,!0,!0,!0),++a+d==l&&u()},t.onerror=()=>{d++,a+d==l&&u()}})),o.onerror=r},n.onerror=r}},de={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(te.isAbs(t))return t;var i;if(-100===e)i=ae.cwd();else{var n=ae.getStream(e);if(!n)throw new ae.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new ae.ErrnoError(44);return i}return te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&te.normalize(t)!==te.normalize(ae.getPath(e.node)))return-54;throw e}return U[r>>2]=i.dev,U[r+4>>2]=0,U[r+8>>2]=i.ino,U[r+12>>2]=i.mode,U[r+16>>2]=i.nlink,U[r+20>>2]=i.uid,U[r+24>>2]=i.gid,U[r+28>>2]=i.rdev,U[r+32>>2]=0,Y=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+40>>2]=Y[0],U[r+44>>2]=Y[1],U[r+48>>2]=4096,U[r+52>>2]=i.blocks,Y=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+56>>2]=Y[0],U[r+60>>2]=Y[1],U[r+64>>2]=0,Y=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+72>>2]=Y[0],U[r+76>>2]=Y[1],U[r+80>>2]=0,Y=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+88>>2]=Y[0],U[r+92>>2]=Y[1],U[r+96>>2]=0,Y=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+104>>2]=Y[0],U[r+108>>2]=Y[1],0},doMsync:function(e,t,r,i,n){var o=A.slice(e,e+r);ae.msync(t,o,n,r,i)},varargs:void 0,get:function(){return de.varargs+=4,U[de.varargs-4>>2]},getStr:function(e){return I(e)},getStreamFromFD:function(e){var t=ae.getStream(e);if(!t)throw new ae.ErrnoError(8);return t}};function le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ue=void 0;function ce(e){for(var t="",r=e;A[r];)t+=ue[A[r++]];return t}var fe={},he={},pe={};function me(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function _e(e,t){return e=me(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function ge(e,t){var r=_e(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ye=void 0;function ve(e){throw new ye(e)}var be=void 0;function we(e){throw new be(e)}function Se(e,t,r){function i(t){var i=r(t);i.length!==e.length&&we("Mismatched type converter count");for(var n=0;n{he.hasOwnProperty(e)?n[t]=he[e]:(o.push(e),fe.hasOwnProperty(e)||(fe[e]=[]),fe[e].push((()=>{n[t]=he[e],++s===o.length&&i(n)})))})),0===o.length&&i(n)}function Ee(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||ve('type "'+i+'" must have a positive integer typeid pointer'),he.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ve("Cannot register type '"+i+"' twice")}if(he[e]=t,delete pe[e],fe.hasOwnProperty(e)){var n=fe[e];delete fe[e],n.forEach((e=>e()))}}function Ae(e){if(!(this instanceof je))return!1;if(!(e instanceof je))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function xe(e){ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Be=!1;function Ue(e){}function ke(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Te(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Te(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ce={};function De(){return Object.keys(Re).length}function Pe(){var e=[];for(var t in Re)Re.hasOwnProperty(t)&&e.push(Re[t]);return e}var Fe=[];function Ie(){for(;Fe.length;){var e=Fe.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function Me(e){Le=e,Fe.length&&Le&&Le(Ie)}var Re={};function ze(e,t){return t=function(e,t){for(void 0===t&&ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Re[t]}function Ne(e,t){return t.ptrType&&t.ptr||we("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&we("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ge(Object.create(e,{$$:{value:t}}))}function Oe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ze(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Ne(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ne(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var o,s=this.registeredClass.getActualType(t),a=Ce[s];if(!a)return n.call(this);o=this.isConst?a.constPointerType:a.pointerType;var d=Te(t,this.registeredClass,o.registeredClass);return null===d?n.call(this):this.isSmartPointer?Ne(o.registeredClass.instancePrototype,{ptrType:o,ptr:d,smartPtrType:this,smartPtr:e}):Ne(o.registeredClass.instancePrototype,{ptrType:o,ptr:d})}function Ge(e){return"undefined"==typeof FinalizationRegistry?(Ge=e=>e,e):(Be=new FinalizationRegistry((e=>{ke(e.$$)})),Ge=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Be.register(e,r,e)}return e},Ue=e=>Be.unregister(e),Ge(e))}function $e(){if(this.$$.ptr||xe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Ge(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function He(){this.$$.ptr||xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ue(this),ke(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function We(){return this.$$.ptr||xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Fe.push(this),1===Fe.length&&Le&&Le(Ie),this.$$.deleteScheduled=!0,this}function je(){}function qe(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Ye(e,t,r,i,n,o,s,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=o,this.upcast=s,this.downcast=a,this.pureVirtualFunctions=[]}function Ke(e,t,r){for(;t!==r;)t.upcast||ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Xe(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:ve("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(U[e>>2])}function et(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function tt(e){this.rawDestructor&&this.rawDestructor(e)}function rt(e){null!==e&&e.delete()}function it(e,t,r,i,n,o,s,a,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var nt=[];function ot(e){var t=nt[e];return t||(e>=nt.length&&(nt.length=e+1),nt[e]=t=D.get(e)),t}function st(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):ot(r).apply(null,i)}function at(e,t){var r,i,n,o=(e=ce(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),st(r,i,n)}):ot(t);return"function"!=typeof o&&ve("unknown function pointer with signature "+e+": "+t),o}var dt=void 0;function lt(e){var t=$t(e),r=ce(t);return Ot(t),r}function ut(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||he[t]||(pe[t]?pe[t].forEach(e):(r.push(t),i[t]=!0))})),new dt(e+": "+r.map(lt).join([", "]))}function ct(e,t){for(var r=[],i=0;i>2]);return r}function ft(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ht(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=_e(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function pt(e,t,r,i,n){var o=t.length;o<2&&ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=null!==t[1]&&null!==r,a=!1,d=1;d0?", ":"")+c),f+=(l?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(d=s?1:2;d4&&0==--_t[e].refcount&&(_t[e]=void 0,mt.push(e))}function yt(){for(var e=0,t=5;t<_t.length;++t)void 0!==_t[t]&&++e;return e}function vt(){for(var e=5;e<_t.length;++e)if(void 0!==_t[e])return _t[e];return null}var bt={toValue:e=>(e||ve("Cannot use deleted val. handle = "+e),_t[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=mt.length?mt.pop():_t.length;return _t[t]={refcount:1,value:e},t}}};function wt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function St(e,t){switch(t){case 2:return function(e){return this.fromWireType(T[e>>2])};case 3:return function(e){return this.fromWireType(C[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Et(e,t,r){switch(t){case 0:return r?function(e){return E[e]}:function(e){return A[e]};case 1:return r?function(e){return x[e>>1]}:function(e){return B[e>>1]};case 2:return r?function(e){return U[e>>2]}:function(e){return k[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function xt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&B[i];)++i;if((r=i<<1)-e>32&&At)return At.decode(A.subarray(e,r));for(var o="",s=0;!(s>=t/2);++s){var a=x[e+2*s>>1];if(0==a)break;o+=String.fromCharCode(a)}return o}function Bt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,o=0;o>1]=s,t+=2}return x[t>>1]=0,t-i}function Ut(e){return 2*e.length}function kt(e,t){for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var o=n-65536;i+=String.fromCharCode(55296|o>>10,56320|1023&o)}else i+=String.fromCharCode(n)}return i}function Tt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,o=0;o=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o);if(U[t>>2]=s,(t+=4)+4>n)break}return U[t>>2]=0,t-i}function Ct(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Dt={};var Pt=[];var Ft=[];var It={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in It)void 0===It[t]?delete e[t]:e[t]=It[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}var Mt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ae.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Rt=365,zt=146;Object.defineProperties(Mt.prototype,{read:{get:function(){return(this.mode&Rt)===Rt},set:function(e){e?this.mode|=Rt:this.mode&=-366}},write:{get:function(){return(this.mode&zt)===zt},set:function(e){e?this.mode|=zt:this.mode&=-147}},isFolder:{get:function(){return ae.isDir(this.mode)}},isDevice:{get:function(){return ae.isChrdev(this.mode)}}}),ae.FSNode=Mt,ae.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ue=e}(),ye=t.BindingError=ge(Error,"BindingError"),be=t.InternalError=ge(Error,"InternalError"),je.prototype.isAliasOf=Ae,je.prototype.clone=$e,je.prototype.delete=He,je.prototype.isDeleted=Ve,je.prototype.deleteLater=We,t.getInheritedInstanceCount=De,t.getLiveInheritedInstances=Pe,t.flushPendingDeletes=Ie,t.setDelayFunction=Me,it.prototype.getPointee=et,it.prototype.destructor=tt,it.prototype.argPackAdvance=8,it.prototype.readValueFromPointer=Qe,it.prototype.deleteObject=rt,it.prototype.fromWireType=Oe,dt=t.UnboundTypeError=ge(Error,"UnboundTypeError"),t.count_emval_handles=yt,t.get_first_emval=vt;var Nt={q:function(e){return Vt(e+24)+24},p:function(e,t,r){throw new ee(e).init(t,r),e},C:function(e,t,r){de.varargs=r;try{var i=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:ae.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=de.get();return i.flags|=n,0;case 5:n=de.get();return x[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return o=28,U[Gt()>>2]=o,-1}}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return-e.errno}var o},w:function(e,t,r,i){de.varargs=i;try{t=de.getStr(t),t=de.calculateAt(e,t);var n=i?de.get():0;return ae.open(t,r,n).fd}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var o=le(r);Ee(e,{name:t=ce(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=E;else if(2===r)i=x;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=U}return this.fromWireType(i[e>>o])},destructorFunction:null})},t:function(e,r,i,n,o,s,a,d,l,u,c,f,h){c=ce(c),s=at(o,s),d&&(d=at(a,d)),u&&(u=at(l,u)),h=at(f,h);var p=me(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&ve("Cannot register public name '"+e+"' twice"),qe(t,e,e),t.hasOwnProperty(i)&&ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){ut("Cannot construct "+c+" due to unbound types",[n])})),Se([e,r,i],n?[n]:[],(function(r){var i,o;r=r[0],o=n?(i=r.registeredClass).instancePrototype:je.prototype;var a=_e(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new ye(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new ye("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(o,{constructor:{value:a}});a.prototype=l;var f=new Ye(c,a,l,h,i,s,d,u),m=new it(c,f,!0,!1,!1),_=new it(c+"*",f,!1,!1,!1),g=new it(c+" const*",f,!1,!0,!1);return Ce[e]={pointerType:_,constPointerType:g},function(e,r,i){t.hasOwnProperty(e)||we("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,a),[m,_,g]}))},r:function(e,t,r,i,n,o){w(t>0);var s=ct(t,r);n=at(i,n),Se([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ye("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{ut("Cannot construct "+e.name+" due to unbound types",s)},Se([],s,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=pt(r,i,null,n,o),[]})),[]}))},d:function(e,t,r,i,n,o,s,a){var d=ct(r,i);t=ce(t),o=at(n,o),Se([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){ut("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(qe(l,t,i),l[t].overloadTable[r-2]=n),Se([],d,(function(n){var a=pt(i,n,e,o,s);return void 0===l[t].overloadTable?(a.argCount=r-2,l[t]=a):l[t].overloadTable[r-2]=a,[]})),[]}))},D:function(e,t){Ee(e,{name:t=ce(t),fromWireType:function(e){var t=bt.toValue(e);return gt(e),t},toWireType:function(e,t){return bt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},n:function(e,t,r){var i=le(r);Ee(e,{name:t=ce(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:St(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=ce(t);var o=le(r),s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var d=t.includes("unsigned");Ee(e,{name:t,fromWireType:s,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Et(t,o,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=k,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}Ee(e,{name:r=ce(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=ce(t));Ee(e,{name:t,fromWireType:function(e){var t,i=k[e>>2],n=e+4;if(r)for(var o=n,s=0;s<=i;++s){var a=n+s;if(s==i||0==A[a]){var d=I(o,a-o);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),o=a+1}}else{var l=new Array(i);for(s=0;s>2]=i,r&&n)L(t,A,s,i+1);else if(n)for(var a=0;a255&&(Ot(s),ve("String has UTF-16 code units that do not fit in 8 bits")),A[s+a]=d}else for(a=0;aB,a=1):4===t&&(i=kt,n=Tt,s=Ct,o=()=>k,a=2),Ee(e,{name:r,fromWireType:function(e){for(var r,n=k[e>>2],s=o(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==s[u>>a]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Ot(e),r},toWireType:function(e,i){"string"!=typeof i&&ve("Cannot pass non-string to C++ string type "+r);var o=s(i),d=Vt(4+o+t);return k[d>>2]=o>>a,n(i,d+4,o+t),null!==e&&e.push(Ot,d),d},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Ot(e)}})},o:function(e,t){Ee(e,{isVoid:!0,name:t=ce(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,o;(e=Pt[e])(t=bt.toValue(t),r=void 0===(o=Dt[n=r])?ce(n):o,null,i)},j:gt,i:function(e,t){var r=function(e,t){for(var r,i,n,o=new Array(e),s=0;s>2],i="parameter "+s,n=void 0,void 0===(n=he[r])&&ve(i+" has unknown type "+lt(r)),n);return o}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",o=Ft[n];if(void 0!==o)return o;for(var s=["retType"],a=[i],d="",l=0;l>2]=o,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(E[t>>0]=0)}(i,o),r+=i.length+1})),0},z:function(e,t){var r=Lt();k[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),k[t>>2]=i,0},l:function(e){try{var t=de.getStreamFromFD(e);return ae.close(t),0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=de.getStreamFromFD(e),i=r.tty?2:ae.isDir(r.mode)?3:ae.isLink(r.mode)?7:4;return E[t>>0]=i,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=k[t+4>>2];t+=8;var d=ae.read(e,E,s,a,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var o=(d=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*d:NaN;if(isNaN(o))return 61;var s=de.getStreamFromFD(e);return ae.llseek(s,o,i),Y=[s.position>>>0,(q=s.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[n>>2]=Y[0],U[n+4>>2]=Y[1],s.getdents&&0===o&&0===i&&(s.getdents=null),0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}var a,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=k[t+4>>2];t+=8;var d=ae.write(e,E,s,a,i);if(d<0)return-1;n+=d}return n}(de.getStreamFromFD(e),t,r);return k[i>>2]=n,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Nt};function r(e,r){var i,n,o=e.exports;t.asm=o,v=t.asm.F,i=v.buffer,S=i,t.HEAP8=E=new Int8Array(i),t.HEAP16=x=new Int16Array(i),t.HEAP32=U=new Int32Array(i),t.HEAPU8=A=new Uint8Array(i),t.HEAPU16=B=new Uint16Array(i),t.HEAPU32=k=new Uint32Array(i),t.HEAPF32=T=new Float32Array(i),t.HEAPF64=C=new Float64Array(i),D=t.asm.I,n=t.asm.G,z.unshift(n),H()}function n(e){r(e.instance)}function s(t){return function(){if(!y&&(f||h)){if("function"==typeof fetch&&!X(W))return fetch(W,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+W+"'";return e.arrayBuffer()})).catch((function(){return Z(W)}));if(o)return new Promise((function(e,t){o(W,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Z(W)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){g("failed to asynchronously prepare wasm: "+e),V(e)}))}if($(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return g("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||K(W)||X(W)||p||"function"!=typeof fetch?s(n):fetch(W,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),s(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Ot=t._free=function(){return(Ot=t._free=t.asm.H).apply(null,arguments)},Gt=t.___errno_location=function(){return(Gt=t.___errno_location=t.asm.J).apply(null,arguments)},$t=t.___getTypeName=function(){return($t=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Ht,Vt=t._malloc=function(){return(Vt=t._malloc=t.asm.M).apply(null,arguments)},Wt=t._emscripten_builtin_memalign=function(){return(Wt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},jt=t.___cxa_is_pointer_type=function(){return(jt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function qt(e){function i(){Ht||(Ht=!0,t.calledRun=!0,b||(t.noFSInit||ae.init.initialized||ae.init(),ae.ignorePermissions=!1,Q(z),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),N.unshift(e);var e;Q(N)}()))}O>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),R.unshift(e);var e;Q(R)}(),O>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},G=function e(){Ht||qt(),Ht||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return qt(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function u(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var c,f=function(e,t,r,i,n,o,s){var a=1/(t-r),d=1/(i-n),l=1/(o-s);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(n+i)*d,e[14]=(s+o)*l,e[15]=1,e};function h(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new d(3),d!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),o=p(),s=p(),d=p(),c=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const o=l();f(o,-1,1,-1,1,.1,100);const p=l();u(p);const m=l();!function(e,t,r,i){var n,o,s,d,l,c,f,h,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,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)}}const $t=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=$t,Vt=$t;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===Bt}function qt(e){return e[0]>>4===ze}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,o=0,s=null;if(i=n=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Yt[o],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(s=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?o>=6?(i=5,r=new Array(4),s=o-3):(i=2,r=new Array(2),s=o):-1!==l.indexOf("android")?(i=2,r=new Array(2),s=o):(i=5,s=o,r=new Array(4),o>=6?s=o-3:1===d&&(i=2,r=new Array(2),s=o)),r[0]=i<<3,r[0]|=(15&o)>>>1,r[1]=(15&o)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&s)>>>1,r[2]=(1&s)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,o=1&e[r+1],s=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let u=1===o?7:9,c=l-u;r+=u;let f=this.findNextSyncwordOffset(r+c);if(this.current_syncword_offset_=f,0!==i&&1!==i||0!==n)continue;let h=e.subarray(r,r+c);t={},t.audio_object_type=s+1,t.sampling_freq_index=a,t.sampling_frequency=Ht[a],t.channel_config=d,t.data=h}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new Gt(t.subarray(i+3,i+3+n)),s=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),o.destroy();continue}s=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,r=o.readBits(5);t-=5;let i=o.readBits(4);t-=4;let n=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let a=o.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let d=o.readBool();if(d)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),s={},s.audio_object_type=r,s.sampling_freq_index=i,s.sampling_frequency=Ht[s.sampling_freq_index],s.channel_config=n,s.other_data_present=d}let a=0;for(;;){let e=o.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,o=0;for(;o+t>>=8),o+=t,n){if(o+n>r)break;i.push(e.subarray(o,o+n)),o+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function or(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const o=nr(),s=o-r;s>=1e3&&(e(t/s*1e3),r=o,t=0)}}function sr(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function ar(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ft)||self.MediaSource.isTypeSupported(ht)||self.MediaSource.isTypeSupported(pt)||self.MediaSource.isTypeSupported(mt)||self.MediaSource.isTypeSupported(_t))&&(e=!0),e}function dr(e){return null==e}function lr(e){return!dr(e)}function ur(e){return"function"==typeof e}function cr(e){let t=null,r=31&e[0];return r!==$e&&r!==He||(t=Me),t||(r=(126&e[0])>>1,r!==et&&r!==rt&&r!==nt||(t=Re)),t}function fr(){return"undefined"!=typeof WritableStream}function hr(e){e.close()}function pr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let o=n;o=1e3){e[o-1].ts-r.ts<1e3&&(i=o+1)}}}return i}function mr(e){return e.ok&&e.status>=200&&e.status<=299}function _r(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(U)}function gr(e){return e[0]>>4===Ut&&e[1]===Bt}function yr(e){return!0===e||"true"===e}function vr(e){return!0!==e&&"true"!==e}function br(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var wr=function(e,t,r,i){return new(r||(r=Promise))((function(n,o){function s(e){try{d(i.next(e))}catch(e){o(e)}}function a(e){try{d(i.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}d((i=i.apply(e,t||[])).next())}))};const Sr=Symbol(32),Er=Symbol(16),Ar=Symbol(8);class xr{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return wr(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(Sr)}readU16(){return this.read(Er)}readU8(){return this.read(Ar)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===Sr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Er){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ar){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}xr.U32=Sr,xr.U16=Er,xr.U8=Ar;class Br{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const o=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),o=1;o=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=Ur._ebsp2rbsp(e),r=new Gt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let o=Ur.getProfileString(i),s=Ur.getLevelString(n),a=1,d=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=r.readUEG(),3===a&&r.readBits(1),a<=3&&(d=l[a]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,x=2*e,S=A/x}}let B=1;1===b&&1===w||(B=b/w);let U=0,k=0;if(0===a)U=1,k=2-m;else{U=3===a?1:2,k=(1===a?2:1)*(2-m)}let T=16*(h+1),C=16*(p+1)*(2-m);T-=(_+g)*U,C-=(y+v)*k;let D=Math.ceil(T*B);return r.destroy(),r=null,{profile_string:o,level_string:s,bit_depth:u,ref_frames:f,chroma_format:d,chroma_format_string:Ur.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Ur._ebsp2rbsp(e),n=new Gt(i);n.readByte();let o=n.readByte();n.readByte();let s=n.readByte();n.readUEG();let a=Ur.getProfileString(o),d=Ur.getLevelString(s),l=1,u=420,c=[0,420,422,444],f=8,h=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(u=c[l]),f=n.readUEG()+8,h=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);B=n.readBool(),U=t,k=2*e,x=U/k}}let T=1;1===E&&1===A||(T=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),F=16*(g+1)*(2-y);P-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(P*T);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:o,level_idc:s,profile_string:a,level_string:d,chroma_format_idc:l,bit_depth:f,bit_depth_luma:f,bit_depth_chroma:h,ref_frames:m,chroma_format:u,chroma_format_string:Ur.getChromaFormatString(u),frame_rate:{fixed:B,fps:x,fps_den:k,fps_num:U},sar_ratio:{width:E,height:A},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let o=0;o=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function Cr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Dr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const o=Ur.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let s=new Uint8Array(i);s[0]=1,s[1]=t[1],s[2]=t[2],s[3]=t[3],s[4]=255,s[5]=225;let a=t.byteLength;s[6]=a>>>8,s[7]=255&a;let d=8;s.set(t,8),d+=a,s[d]=1;let l=r.byteLength;s[d+1]=l>>>8,s[d+2]=255&l,s.set(r,d+3),d+=3+l,n&&(s[d]=252|o.chroma_format_idc,s[d+1]=248|o.bit_depth_luma-8,s[d+2]=248|o.bit_depth_chroma-8,s[d+3]=0,d+=4);const u=[23,0,0,0,0],c=new Uint8Array(u.length+s.byteLength);return c.set(u,0),c.set(s,u.length),c}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e){return 31&e[0]}function Lr(e){return e===qe}function Mr(e){return!function(e){return e===$e||e===He}(e)&&!Lr(e)}function Rr(e){return e===Ve}function zr(e){if(0===e.length)return!1;const t=Ir(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,o=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=o,i>=Xe||0===n&&(t={type:i,data:e.subarray(r,o)})}return t}}class Or{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Gr=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},$r=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Hr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Hr._ebsp2rbsp(e),r=new Gt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Hr._ebsp2rbsp(e),r=new Gt(t);r.readByte(),r.readByte();let i=0,n=0,o=0,s=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),c=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let o=!0,s=1;n||(o=r.readBool());let a=!1;if(o?r.readUEG():a=r.readBool(),a||(s=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=Gr(e),r=new Gt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),s=(e=>{let t=Gr(e),r=new Gt(t);r.readByte(),r.readByte();let i=0,n=0,o=0,s=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),c=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),o+=r.readUEG(),s+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let o=!1,s=1;n||(o=r.readBool());let a=!1;if(o?r.readSEG():a=r.readBool(),a||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Gr(e),r=new Gt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),o=1;return n&&i?o=0:n?o=3:i&&(o=2),{parallelismType:o}})(r);n=Object.assign(n,o,s,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|et,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|rt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|nt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const u=[28,0,0,0,0],c=new Uint8Array(u.length+l.byteLength);return c.set(u,0),c.set(l,u.length),c}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Xr(e){return(126&e[0])>>1}function Zr(e){return e===st}function Jr(e){return!function(e){return e>=32&&e<=40}(e)}function Qr(e){return e>=16&&e<=21}function ei(e){if(0===e.length)return!1;const t=Xr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,o=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=o,0===n&&(t={type:i,data:e.subarray(r,o)})}return t}}class ri{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ii(e){return parseInt(e)===e}function ni(e){if(!ii(e.length))return!1;for(var t=0;t255)return!1;return!0}function oi(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ni(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ii(e.length)&&ni(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ai(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var di,li={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},ui=(di="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+di[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},fi=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],pi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],mi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],_i=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],gi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],yi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],vi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],bi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],wi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],Si=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Ei=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ai=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],xi=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Bi=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Ui(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=o[t],this._Kd[e-r][t%4]=o[t];for(var s,a=0,d=n;d>16&255]<<24^hi[s>>8&255]<<16^hi[255&s]<<8^hi[s>>24&255]^fi[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^hi[s>>16&255]<<16^hi[s>>24&255]<<24;for(t=n/2+1;t>2,u=d%4,this._Ke[l][u]=o[t],this._Kd[e-l][u]=o[t++],d++}for(var l=1;l>24&255]^Ai[s>>16&255]^xi[s>>8&255]^Bi[255&s]},ki.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var o=1;o>24&255]^_i[i[(n+1)%4]>>16&255]^gi[i[(n+2)%4]>>8&255]^yi[255&i[(n+3)%4]]^this._Ke[o][n];i=r.slice()}var s,a=si(16);for(n=0;n<4;n++)s=this._Ke[t][n],a[4*n]=255&(hi[i[n]>>24&255]^s>>24),a[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^s>>16),a[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^s>>8),a[4*n+3]=255&(hi[255&i[(n+3)%4]]^s);return a},ki.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var o=1;o>24&255]^bi[i[(n+3)%4]>>16&255]^wi[i[(n+2)%4]>>8&255]^Si[255&i[(n+1)%4]]^this._Kd[o][n];i=r.slice()}var s,a=si(16);for(n=0;n<4;n++)s=this._Kd[t][n],a[4*n]=255&(pi[i[n]>>24&255]^s>>24),a[4*n+1]=255&(pi[i[(n+3)%4]>>16&255]^s>>16),a[4*n+2]=255&(pi[i[(n+2)%4]>>8&255]^s>>8),a[4*n+3]=255&(pi[255&i[(n+1)%4]]^s);return a};var Ti=function(e){if(!(this instanceof Ti))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new ki(e)};Ti.prototype.encrypt=function(e){if((e=oi(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Fi.prototype.setBytes=function(e){if(16!=(e=oi(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Fi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ii=function(e,t){if(!(this instanceof Ii))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Fi||(t=new Fi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new ki(e)};Ii.prototype.encrypt=function(e){for(var t=oi(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-o%4*8&255;t[i+o>>>2]|=s<<24-(i+o)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},f=u.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},h=u.Utf8={stringify:function(e){try{return decodeURIComponent(escape(f.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return f.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=h.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,a=o/(4*s),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*s,u=e.min(4*d,o);if(d){for(var c=0;c>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],o=0;o>>2]>>>16-o%4*8&65535);i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],o=0;o>>1]|=n(e.charCodeAt(o)<<16-o%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],o=0,s=0;s>>6-s%4*2;n[o>>>2]|=a<<24-o%4*8,o++}return t.create(n,o)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;a<4&&o+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=a<<24-o%4*8,o++}return t.create(n,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var o=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(r[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|r[s+2>>>2]>>>24-(s+2)%4*8&255,d=0;d<4&&s+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;o.length%4;)o.push(l);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var s=0;s>>24)|4278255360&(n<<24|n>>>8)}var o=this._hash.words,s=e[t+0],d=e[t+1],h=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],x=e[t+14],B=e[t+15],U=o[0],k=o[1],T=o[2],C=o[3];U=l(U,k,T,C,s,7,a[0]),C=l(C,U,k,T,d,12,a[1]),T=l(T,C,U,k,h,17,a[2]),k=l(k,T,C,U,p,22,a[3]),U=l(U,k,T,C,m,7,a[4]),C=l(C,U,k,T,_,12,a[5]),T=l(T,C,U,k,g,17,a[6]),k=l(k,T,C,U,y,22,a[7]),U=l(U,k,T,C,v,7,a[8]),C=l(C,U,k,T,b,12,a[9]),T=l(T,C,U,k,w,17,a[10]),k=l(k,T,C,U,S,22,a[11]),U=l(U,k,T,C,E,7,a[12]),C=l(C,U,k,T,A,12,a[13]),T=l(T,C,U,k,x,17,a[14]),U=u(U,k=l(k,T,C,U,B,22,a[15]),T,C,d,5,a[16]),C=u(C,U,k,T,g,9,a[17]),T=u(T,C,U,k,S,14,a[18]),k=u(k,T,C,U,s,20,a[19]),U=u(U,k,T,C,_,5,a[20]),C=u(C,U,k,T,w,9,a[21]),T=u(T,C,U,k,B,14,a[22]),k=u(k,T,C,U,m,20,a[23]),U=u(U,k,T,C,b,5,a[24]),C=u(C,U,k,T,x,9,a[25]),T=u(T,C,U,k,p,14,a[26]),k=u(k,T,C,U,v,20,a[27]),U=u(U,k,T,C,A,5,a[28]),C=u(C,U,k,T,h,9,a[29]),T=u(T,C,U,k,y,14,a[30]),U=c(U,k=u(k,T,C,U,E,20,a[31]),T,C,_,4,a[32]),C=c(C,U,k,T,v,11,a[33]),T=c(T,C,U,k,S,16,a[34]),k=c(k,T,C,U,x,23,a[35]),U=c(U,k,T,C,d,4,a[36]),C=c(C,U,k,T,m,11,a[37]),T=c(T,C,U,k,y,16,a[38]),k=c(k,T,C,U,w,23,a[39]),U=c(U,k,T,C,A,4,a[40]),C=c(C,U,k,T,s,11,a[41]),T=c(T,C,U,k,p,16,a[42]),k=c(k,T,C,U,g,23,a[43]),U=c(U,k,T,C,b,4,a[44]),C=c(C,U,k,T,E,11,a[45]),T=c(T,C,U,k,B,16,a[46]),U=f(U,k=c(k,T,C,U,h,23,a[47]),T,C,s,6,a[48]),C=f(C,U,k,T,y,10,a[49]),T=f(T,C,U,k,x,15,a[50]),k=f(k,T,C,U,_,21,a[51]),U=f(U,k,T,C,E,6,a[52]),C=f(C,U,k,T,p,10,a[53]),T=f(T,C,U,k,w,15,a[54]),k=f(k,T,C,U,d,21,a[55]),U=f(U,k,T,C,v,6,a[56]),C=f(C,U,k,T,B,10,a[57]),T=f(T,C,U,k,g,15,a[58]),k=f(k,T,C,U,A,21,a[59]),U=f(U,k,T,C,m,6,a[60]),C=f(C,U,k,T,S,10,a[61]),T=f(T,C,U,k,h,15,a[62]),k=f(k,T,C,U,b,21,a[63]),o[0]=o[0]+U|0,o[1]=o[1]+k|0,o[2]=o[2]+T|0,o[3]=o[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var o=e.floor(i/4294967296),s=i;r[15+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var u=d[l];d[l]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return a},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,o,s){var a=e+(t&r|~t&i)+n+s;return(a<>>32-o)+t}function u(e,t,r,i,n,o,s){var a=e+(t&i|r&~i)+n+s;return(a<>>32-o)+t}function c(e,t,r,i,n,o,s){var a=e+(t^r^i)+n+s;return(a<>>32-o)+t}function f(e,t,r,i,n,o,s){var a=e+(r^(t|~i))+n+s;return(a<>>32-o)+t}t.MD5=o._createHelper(d),t.HmacMD5=o._createHmacHelper(d)}(Math),r.MD5)})),Ot((function(e,t){var r,i,n,o,s,a,d,l;e.exports=(i=(r=l=Mi).lib,n=i.WordArray,o=i.Hasher,s=r.algo,a=[],d=s.SHA1=o.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var u=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=u<<1|u>>>31}var c=(i<<5|i>>>27)+d+a[l];c+=l<20?1518500249+(n&o|~n&s):l<40?1859775393+(n^o^s):l<60?(n&o|n&s|o&s)-1894007588:(n^o^s)-899497514,d=s,s=o,o=n<<30|n>>>2,n=i,i=c}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=o._createHelper(d),r.HmacSHA1=o._createHmacHelper(d),l.SHA1)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,o=i.Hasher,s=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],u=s.SHA256=o.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],u=r[5],c=r[6],f=r[7],h=0;h<64;h++){if(h<16)l[h]=0|e[t+h];else{var p=l[h-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[h-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[h]=m+l[h-7]+g+l[h-16]}var y=i&n^i&o^n&o,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+d[h]+l[h];f=c,c=u,u=a,a=s+b|0,s=o,o=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(u),t.HmacSHA256=o._createHmacHelper(u)}(Math),r.SHA256)})),Ot((function(e,t){var r,i,n,o,s,a;e.exports=(i=(r=a=Mi).lib.WordArray,n=r.algo,o=n.SHA256,s=n.SHA224=o.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=o._createHelper(s),r.HmacSHA224=o._createHmacHelper(s),a.SHA224)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,o=i.WordArray,s=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var u=s.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],u=r[5],c=r[6],f=r[7],h=i.high,p=i.low,m=n.high,_=n.low,g=o.high,y=o.low,v=s.high,b=s.low,w=a.high,S=a.low,E=u.high,A=u.low,x=c.high,B=c.low,U=f.high,k=f.low,T=h,C=p,D=m,P=_,F=g,I=y,L=v,M=b,R=w,z=S,N=E,O=A,G=x,$=B,H=U,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),oe=l[W-7],se=oe.high,ae=oe.low,de=l[W-16],le=de.high,ue=de.low;q=(q=(q=J+se+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ue)>>>0>>0?1:0),Y.high=q,Y.low=j}var ce,fe=R&N^~R&G,he=z&O^~z&$,pe=T&D^T&F^D&F,me=C&P^C&I^P&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ce=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=L+(Ee=(Ee=(Ee=Ee+fe+((ce+=he)>>>0>>0?1:0))+we+((ce+=Se)>>>0>>0?1:0))+q+((ce+=j)>>>0>>0?1:0))+((z=M+ce|0)>>>0>>0?1:0)|0,L=F,M=I,F=D,I=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ce+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=h+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

>>0?1:0),y=o.low=y+I,o.high=g+F+(y>>>0>>0?1:0),b=s.low=b+M,s.high=v+L+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=u.low=A+O,u.high=E+N+(A>>>0>>0?1:0),B=c.low=B+$,c.high=x+G+(B>>>0<$>>>0?1:0),k=f.low=k+V,f.high=U+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(u),e.HmacSHA512=t._createHmacHelper(u)}(),r.SHA512)})),Ot((function(e,t){var r,i,n,o,s,a,d,l;e.exports=(i=(r=l=Mi).x64,n=i.Word,o=i.WordArray,s=r.algo,a=s.SHA512,d=s.SHA384=a.extend({_doReset:function(){this._hash=new o.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,o=i.Hasher,s=t.x64.Word,a=t.algo,d=[],l=[],u=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,o=0;o<24;o++){for(var a=0,c=0,f=0;f<7;f++){if(1&n){var h=(1<>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(k=r[n]).high^=s,k.low^=o}for(var a=0;a<24;a++){for(var f=0;f<5;f++){for(var h=0,p=0,m=0;m<5;m++)h^=(k=r[f+5*m]).high,p^=k.low;var _=c[f];_.high=h,_.low=p}for(f=0;f<5;f++){var g=c[(f+4)%5],y=c[(f+1)%5],v=y.high,b=y.low;for(h=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[f+5*m]).high^=h,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(h=S<>>32-A,p=E<>>32-A):(h=E<>>64-A,p=S<>>64-A);var x=c[l[w]];x.high=h,x.low=p}var B=c[0],U=r[0];for(B.high=U.high,B.low=U.low,f=0;f<5;f++)for(m=0;m<5;m++){var k=r[w=f+5*m],T=c[w],C=c[(f+1)%5+5*m],D=c[(f+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var P=u[a];k.high^=P.high,k.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,o=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var s=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],u=0;u>>24)|4278255360&(f<<24|f>>>8),h=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8),l.push(h),l.push(f)}return new n.init(l,a)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=o._createHelper(f),t.HmacSHA3=o._createHmacHelper(f)}(Math),r.SHA3)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,o=i.Hasher,s=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),u=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=s.RIPEMD160=o.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o,s,h,b,w,S,E,A,x,B,U,k=this._hash.words,T=c.words,C=f.words,D=a.words,P=d.words,F=l.words,I=u.words;for(S=o=k[0],E=s=k[1],A=h=k[2],x=b=k[3],B=w=k[4],r=0;r<80;r+=1)U=o+e[t+D[r]]|0,U+=r<16?p(s,h,b)+T[0]:r<32?m(s,h,b)+T[1]:r<48?_(s,h,b)+T[2]:r<64?g(s,h,b)+T[3]:y(s,h,b)+T[4],U=(U=v(U|=0,F[r]))+w|0,o=w,w=b,b=v(h,10),h=s,s=U,U=S+e[t+P[r]]|0,U+=r<16?y(E,A,x)+C[0]:r<32?g(E,A,x)+C[1]:r<48?_(E,A,x)+C[2]:r<64?m(E,A,x)+C[3]:p(E,A,x)+C[4],U=(U=v(U|=0,I[r]))+B|0,S=B,B=x,x=v(A,10),A=E,E=U;U=k[1]+h+x|0,k[1]=k[2]+b+B|0,k[2]=k[3]+w+S|0,k[3]=k[4]+o+E|0,k[4]=k[0]+s+A|0,k[0]=U},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,o=n.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(h),t.HmacRIPEMD160=o._createHmacHelper(h)}(),r.RIPEMD160)})),Ot((function(e,t){var r,i,n;e.exports=(i=(r=Mi).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),s=this._iKey=t.clone(),a=o.words,d=s.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=u.extend({cfg:u.cfg.extend({mode:h,padding:p}),reset:function(){var e;u.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?o.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=o.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),o=n.finalize(t),s=n.cfg;return m.create({ciphertext:o,key:r,iv:s.iv,algorithm:e,mode:s.mode,padding:s.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=o.random(8)),n)s=l.create({keySize:t+r,hasher:n}).compute(e,i);else var s=l.create({keySize:t+r}).compute(e,i);var a=o.create(s.words.slice(t),4*r);return s.sigBytes=4*t,m.create({key:s,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var o=g.encrypt.call(this,e,t,n.key,i);return o.mixIn(n),o},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ot((function(e,t){var r;e.exports=((r=Mi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,o=this._iv;o?(n=o.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var s=0;s>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),i(s);var a=s.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-o%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],o=[],s=[],a=[],d=[],l=[],u=[],c=[],f=[],h=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,o[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;s[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,u[p]=y<<24|y>>>8,c[p]=y<<16|y>>>16,f[p]=y<<8|y>>>24,h[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],s=0;s6&&s%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[s/r|0]<<24),o[s]=o[s-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^c[n[l>>>16&255]]^f[n[l>>>8&255]]^h[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,u,c,f,h,o),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,o,s,a){for(var d=this._nRounds,l=e[t]^r[0],u=e[t+1]^r[1],c=e[t+2]^r[2],f=e[t+3]^r[3],h=4,p=1;p>>24]^n[u>>>16&255]^o[c>>>8&255]^s[255&f]^r[h++],_=i[u>>>24]^n[c>>>16&255]^o[f>>>8&255]^s[255&l]^r[h++],g=i[c>>>24]^n[f>>>16&255]^o[l>>>8&255]^s[255&u]^r[h++],y=i[f>>>24]^n[l>>>16&255]^o[u>>>8&255]^s[255&c]^r[h++];l=m,u=_,c=g,f=y}m=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^r[h++],_=(a[u>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[h++],g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^r[h++],y=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&c])^r[h++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,o=e.algo,s=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=s[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],o=0;o<16;o++){var l=n[o]=[],u=d[o];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+u)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+u)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var c=this._invSubKeys=[];for(r=0;r<16;r++)c[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),h.call(this,2,858993459),h.call(this,8,16711935),f.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],o=this._lBlock,s=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((s^n[d])&u[d])>>>0];this._lBlock=s,this._rBlock=o^a}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,f.call(this,1,1431655765),h.call(this,8,16711935),h.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function f(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(i.create(t)),this._des2=c.createEncryptor(i.create(r)),this._des3=c.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var o=0;n<256;n++){var s=n%r,a=t[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var d=i[n];i[n]=i[o],i[o]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[r],e[r]=o,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var s=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(s)}(),r.RC4)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],o=[],s=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var o=t.words,s=o[0],a=o[1],l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=l>>>16|4294901760&u,f=u<<16|65535&l;for(n[0]^=l,n[1]^=c,n[2]^=u,n[3]^=f,n[4]^=l,n[5]^=c,n[6]^=u,n[7]^=f,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);s[r]=d^l}e[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,e[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,e[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,e[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,e[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,e[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,e[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,e[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],o=[],s=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var o=t.words,s=o[0],a=o[1],l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=l>>>16|4294901760&u,f=u<<16|65535&l;for(i[0]^=l,i[1]^=c,i[2]^=u,i[3]^=f,i[4]^=l,i[5]^=c,i[6]^=u,i[7]^=f,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);s[r]=d^l}e[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,e[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,e[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,e[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,e[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,e[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,e[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,e[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,o=255&t,s=e.sbox[0][r]+e.sbox[1][i];return s^=e.sbox[2][n],s+=e.sbox[3][o],s}function l(e,t,r){let i,o=t,s=r;for(let t=0;t1;--t)o^=e.pbox[t],s=d(e,o)^s,i=o,o=s,s=i;return i=o,o=s,s=i,s^=e.pbox[1],o^=e.pbox[0],{left:o,right:s}}function c(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=s[t][r]}let i=0;for(let s=0;s=r&&(i=0);let a=0,d=0,u=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let o=5;for(;on)break;let a=e[o+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=e.slice(o+4+2,o+4+s);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const a=n.decrypt(i);n=null,e.set(a,o+4+2)}o=o+4+s}return e}function Ni(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const o=n.decrypt(i);return n=null,e.set(o,32),e}Ot((function(e,t){e.exports=Mi}));var Oi=Ot((function(e,t){var r,n,o,s=(r=new Date,n=4,o={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},o);s.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+s.getDurationString(e.start(i))+","+s.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=s;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var o=new Uint8Array(e,t,n),s=new Uint8Array(r,i,n);o.set(s)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var o=t[n];t[n]=t[i],t[i]=o}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var u=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(u.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,s.debug("MultiBufferStream","Stream ready for parsing"),!0):(s.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(s.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){s.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},u.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},u.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}s.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,o)}}t&&(s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},u.prototype.logBufferLevel=function(e){var t,r,i,n,o,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=o.end-1+"]");var l=e?s.info:s.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},u.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},u.prototype.findPosition=function(e,t,r){var i,n=null,o=-1;for(i=!0===e?0:this.bufferIndex;i=t?(s.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},u.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=c;var f={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){f.FullBox.prototype=new f.Box,f.ContainerBox.prototype=new f.Box,f.SampleEntry.prototype=new f.Box,f.TrackGroupTypeBox.prototype=new f.FullBox,f.BASIC_BOXES.forEach((function(e){f.createBoxCtor(e)})),f.FULL_BOXES.forEach((function(e){f.createFullBoxCtor(e)})),f.CONTAINER_BOXES.forEach((function(e){f.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){f.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){f.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){f.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){f.FullBox.call(this,e,t)},createBoxCtor:function(e,t){f.boxCodes.push(e),f[e+"Box"]=function(t){f.Box.call(this,e,t)},f[e+"Box"].prototype=new f.Box,t&&(f[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){f[e+"Box"]=function(t){f.FullBox.call(this,e,t)},f[e+"Box"].prototype=new f.FullBox,f[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(s.error("BoxParser","Box of type '"+u+"' has a size "+l+" greater than its container size "+r),{code:f.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),s.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:f.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:a}):t?{code:f.OK,type:u,size:l,hdr_size:d,start:a}:(f[u+"Box"]?i=new f[u+"Box"](l):"uuid"!==u?(s.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new f.Box(u,l)).has_unparsed_data=!0):f.UUIDBoxes[o]?i=new f.UUIDBoxes[o](l):(s.warn("BoxParser","Unknown uuid type: '"+o+"'"),(i=new f.Box(u,l)).uuid=o,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===f.Box.prototype.write&&"mdat"!==i.type&&(s.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(s.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(s.error("BoxParser","Parsing of box '"+c+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:f.OK,box:i,size:i.size})},f.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},f.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},f.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},f.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},f.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},f.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},f.SAMPLE_ENTRY_TYPE_VISUAL="Visual",f.SAMPLE_ENTRY_TYPE_AUDIO="Audio",f.SAMPLE_ENTRY_TYPE_HINT="Hint",f.SAMPLE_ENTRY_TYPE_METADATA="Metadata",f.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",f.SAMPLE_ENTRY_TYPE_SYSTEM="System",f.SAMPLE_ENTRY_TYPE_TEXT="Text",f.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},f.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},f.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},f.SampleEntry.prototype.parseFooter=function(e){f.ContainerBox.prototype.parse.call(this,e)},f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_HINT),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_METADATA),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SUBTITLE),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SYSTEM),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_TEXT),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_TEXT,"enct"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_METADATA,"encm"),f.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),f.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),f.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),f.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)s.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void s.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else s.error("av1C reserved_1 parsing problem");else s.error("av1C version "+this.version+" not supported")})),f.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),f.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),f.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),f.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),f.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),f.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),f.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),f.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),f.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|o>>4&15,i.acmod=o>>1&7,i.lfeon=1&o,i.num_dep_sub=s>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&s)<<8|e.readUint8())}})),f.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),f.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),f.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),f.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),f.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),f.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),f.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,s.nalu_type=63&n;var a=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),f.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),s.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),f.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?s.property_index=(127&o)<<8|e.readUint8():s.property_index=127&o}}})),f.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:s.warn("BoxParser","Unknown leva assignement type")}}})),f.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),f.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),h.prototype.toString=function(){return"("+this.x+","+this.y+")"},f.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new h(e.readUint16(),e.readUint16()),this.display_primaries[1]=new h(e.readUint16(),e.readUint16()),this.display_primaries[2]=new h(e.readUint16(),e.readUint16()),this.white_point=new h(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),f.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),f.createFullBoxCtor("mehd",(function(e){1&this.flags&&(s.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),f.createFullBoxCtor("meta",(function(e){this.boxes=[],f.ContainerBox.prototype.parse.call(this,e)})),f.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),f.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),f.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),f.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),f.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),f.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),f.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),f.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),f.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),f.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),f.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)s.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=f.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),f.createSampleGroupCtor("stsa",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),f.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),f.createSampleGroupCtor("tsas",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("tscl",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("vipr",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),f.createFullBoxCtor("senc"),f.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),s.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),f.SingleItemTypeReferenceBox=function(e,t,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},f.SingleItemTypeReferenceBox.prototype=new f.Box,f.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=f.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),f.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),f.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),f.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),f.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),f.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),f.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),f.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),f.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),f.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},f.createTrackGroupCtor("msrc"),f.TrackReferenceTypeBox=function(e,t,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},f.TrackReferenceTypeBox.prototype=new f.Box,f.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},f.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&f.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&f.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),f.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),f.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),f.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),f.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=f.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),f.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),f.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=f.parseHex16(e)})),f.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),f.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),f.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var s=i.extract_bits(1);this.ptl_sublayer_present_mask|=s<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=f.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(o="."+f.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,n=!0);t+=o}return t},f.vvc1SampleEntry.prototype.getCodec=f.vvi1SampleEntry.prototype.getCodec=function(){var e,t=f.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(o),o&&(i=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var s="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a=0,d=0;for(e=0;e<=i;++e)for(a=a<<8|n[e],d+=8;d>=5;){r+=s[a>>d-5&31],a&=(1<<(d-=5))-1}d&&(r+=s[31&(a<<=5-d)])}}t+=r}return t},f.mp4aSampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+f.decimalToHex(t)+(r?"."+r:"")}return e},f.stxtSampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},f.vp08SampleEntry.prototype.getCodec=f.vp09SampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},f.av01SampleEntry.prototype.getCodec=function(){var e,t=f.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},f.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),s.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},f.FullBox.prototype.writeHeader=function(e){this.size+=4,f.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},f.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},f.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},f.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&f.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&f.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&f.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&f.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&f.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},f.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},f.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},f.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&f.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&f.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&f.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&f.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&f.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&f.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&f.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&f.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof f.Box||t[r]instanceof f.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||f.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},f.boxEqual=function(e,t){if(!f.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=f.parseOneBox(this.stream,false)).code===f.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&s.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(s.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(s.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(s.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(s.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,o,s={},a=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(s.hasMoov=!0,s.duration=this.moov.mvhd.duration,s.timescale=this.moov.mvhd.timescale,s.isFragmented=null!=this.moov.mvex,s.isFragmented&&this.moov.mvex.mehd&&(s.fragment_duration=this.moov.mvex.mehd.fragment_duration),s.isProgressive=this.isProgressive,s.hasIOD=null!=this.moov.iods,s.brands=[],s.brands.push(this.ftyp.major_brand),s.brands=s.brands.concat(this.ftyp.compatible_brands),s.created=new Date(a+1e3*this.moov.mvhd.creation_time),s.modified=new Date(a+1e3*this.moov.mvhd.modification_time),s.tracks=[],s.audioTracks=[],s.videoTracks=[],s.subtitleTracks=[],s.metadataTracks=[],s.hintTracks=[],s.otherTracks=[],e=0;e0?s.mime+='video/mp4; codecs="':s.audioTracks&&s.audioTracks.length>0?s.mime+='audio/mp4; codecs="':s.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(s.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(s.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return o=r.samples[l].offset+r.samples[l].alreadyRead,s.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+s.getDurationString(e,a)+" and offset: "+o),{offset:o,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,o=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){s=d;break}switch(s){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var c=new f.avcCBox;c.parse(new a(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var h=new f.hvcCBox;h.parse(new a(t.hevcDecoderConfigRecord)),o.addBox(h)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),n.add("dinf").add("dref").addEntry((new f["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(o),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},f.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},o=this.getTrackById(e);if(null!==o){n.number=o.samples.length,n.track_id=o.tkhd.track_id,n.timescale=o.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=o.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,o.samples.push(n),o.samples_size+=n.size,o.samples_duration+=n.duration,void 0===o.first_dts&&(o.first_dts=i.dts),this.processSamples();var s=this.createSingleSampleMoof(n);return this.addBox(s),s.computeSize(),s.trafs[0].truns[0].data_offset=s.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new f.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",f.TRUN_FLAGS_DATA_OFFSET|f.TRUN_FLAGS_DURATION|f.TRUN_FLAGS_SIZE|f.TRUN_FLAGS_FLAGS|f.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[s].grouping_type+"/0",(a=new l(n[s].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=a))}else for(s=0;s=2&&(d=i[s].grouping_type+"/0",a=new l(i[s].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=a))},g.setSampleGroupProperties=function(e,t,r,i){var n,o;for(n in t.sample_groups=[],i){var s;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)s=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(o=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,s&&o>=0&&(t.sample_groups[n].description=s.entries[o])):s&&s.version>=2&&s.default_group_description_index>0&&(t.sample_groups[n].description=s.entries[s.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=o.sample_counts[b]),t>0?(e.samples[t-1].duration=o.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,B.dts=e.samples[t-1].dts+e.samples[t-1].duration):B.dts=0,s?(t>=w&&(S++,w<0&&(w=0),w+=s.sample_counts[S]),B.cts=e.samples[t].dts+s.sample_offsets[S]):B.cts=B.dts,a?(t==a.sample_numbers[E]-1?(B.is_sync=!0,E++):(B.is_sync=!1,B.degradation_priority=0),l&&l.entries[A].sample_delta+x==t+1&&(B.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta,A++)):B.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,B,B.number),B.degradation_priority=f?f.priority[t]:0,l&&l.entries[A].sample_delta+x==t&&(B.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta),(u.length>0||c.length>0)&&g.setSampleGroupProperties(e,B,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,o,s,a,d,l,u,c,h,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(c,u,u.sbgps,c.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?p.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(u.tfdt?p.dts=u.tfdt.baseMediaDecodeTime:p.dts=0,c.first_traf_merged=!0),p.cts=p.dts,_.flags&f.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=s,_.flags&f.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&f.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(u.tfhd.flags&f.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(u.tfhd.flags&f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&f.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?u.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(u.sbgps.length>0||u.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(c,p,p.number_in_traf,u.sample_groups_info)}}if(u.subs){c.has_fragment_subsamples=!0;var S=u.first_sample_index;for(t=0;t-1))return null;var o=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=o)return s.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===o)return null;s.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+o+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,o),i.alreadyRead+=o,r.usedBytes+=o,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?r.type=o.iinf.item_infos[e].item_type:r.type="mime",r.content_type=o.iinf.item_infos[e].content_type,r.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&f.property_index-1-1))return null;var a=(t=this.stream.buffers[o]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return s.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;s.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},f.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},f.FullBox.prototype.printHeader=function(e){this.size+=4,f.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},f.Box.prototype.print=function(e){this.printHeader(e)},f.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},f.tkhdBox.prototype.print=function(e){f.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Gi(e){return e.reduce(((e,t)=>256*e+t))}function $i(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Oi.Log,Oi.MP4BoxStream,Oi.DataStream,Oi.MultiBufferStream,Oi.MPEG4DescriptorParser,Oi.BoxParser,Oi.XMLSubtitlein4Parser,Oi.Textin4Parser,Oi.ISOFile,Oi.createFile;class Hi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],$i(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:o=[],output:s="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof o&&(o=qi(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(c,c+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2];const i=e.byteLength;let n=5;for(;ni)break;let s=e[n+4],a=!1;if(r?(s=s>>>1&63,a=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(s)):(s&=31,a=1===s||5===s),a){const r=nn(e.slice(n+4+2,n+4+o),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+o}return e}class an{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var o=arguments.length,s=new Array(o),a=0;a1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=dn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=dn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=dn.findFirstStartCode}}}}function un(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let o=5;for(;on)break;let a=e[o+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=un(e.slice(o+4,o+4+s),t,r);e.set(i,o+4)}o=o+4+s}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class pn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{ur(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class mn{static init(){mn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in mn.types)mn.types.hasOwnProperty(e)&&(mn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mn.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,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let o=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 mn.box(mn.types.trak,mn.tkhd(e),mn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,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(e){return mn.box(mn.types.mdia,mn.mdhd(e),mn.hdlr(e),mn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?mn.constants.HDLR_AUDIO:mn.constants.HDLR_VIDEO,mn.box(mn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mn.box(mn.types.smhd,mn.constants.SMHD):mn.box(mn.types.vmhd,mn.constants.VMHD),mn.box(mn.types.minf,t,mn.dinf(),mn.stbl(e))}static dinf(){return mn.box(mn.types.dinf,mn.box(mn.types.dref,mn.constants.DREF))}static stbl(e){return mn.box(mn.types.stbl,mn.stsd(e),mn.box(mn.types.stts,mn.constants.STTS),mn.box(mn.types.stsc,mn.constants.STSC),mn.box(mn.types.stsz,mn.constants.STSZ),mn.box(mn.types.stco,mn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp3(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp4a(e)):"avc"===e.videoType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.avc1(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types.mp4a,i,mn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return mn.box(mn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.avc1,n,mn.box(mn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.hvc1,n,mn.box(mn.types.hvcC,t))}static mvex(e){return mn.box(mn.types.mvex,mn.trex(e))}static trex(e){let t=e.id,r=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 mn.box(mn.types.trex,r)}static moof(e,t){return mn.box(mn.types.moof,mn.mfhd(e.sequenceNumber),mn.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 mn.box(mn.types.mfhd,t)}static traf(e,t){let r=e.id,i=mn.box(mn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=mn.box(mn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=mn.sdtp(e),s=mn.trun(e,o.byteLength+16+16+8+16+8+8);return mn.box(mn.types.traf,i,n,s,o)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,mn.box(mn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,o=e.flags,s=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s],12),mn.box(mn.types.trun,r)}static mdat(e){return mn.box(mn.types.mdat,e)}}mn.init();var _n,gn=Ot((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_n=gn)&&_n.__esModule&&Object.prototype.hasOwnProperty.call(_n,"default")&&_n.default;const yn=[44100,48e3,32e3,0],vn=[22050,24e3,16e3,0],bn=[11025,12e3,8e3,0],wn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Sn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],En=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function An(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,o=(240&t[2])>>>4,s=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=bn[s];break;case 2:d=vn[s];break;case 3:d=yn[s]}switch(n){case 1:o=e[n]&&t=6?(i=5,t=new Array(4),s=n-3):(i=2,t=new Array(2),s=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),s=n):(i=5,s=n,t=new Array(4),n>=6?s=n-3:1===o&&(i=2,t=new Array(2),s=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&o)<<3,5===i&&(t[1]|=(15&s)>>>1,t[2]=(1&s)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Nn[n],this.sampling_index=n,this.channel_count=o,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}Date.now||(Date.now=function(){return(new Date).getTime()});const $n=[];$n.push(s({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}}),o({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all($n).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],o={},s=new AbortController,a=null,d=null,l=null,u=null,c=!1,f=null,h=null,S=!1,E=!1,U=!!yr(r),be=!1,we=null,Ve=null,Xe=null,st=[],ht=null,pt=null,mt=0,_t=0,Et=null,At=null,Ut=0,Nt=0,Ot=!1,Gt=!1,$t=!1,Ht=null,Yt=null,Jt=null,nr=!1,wr=!0,Sr=()=>{const e=_r();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(o.isEmitInfo||(ii.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:e.codedWidth,h:e.codedHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d")),ur(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ii.delay,ts:0},[r]),hr(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ii.delay,ts:0},[t]),hr(e)}},error:function(e){ii.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?lt:ut});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Fe?(n=Tr(s),i={codec:n.codec,description:s}):t===Ie&&(n=Wr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth);try{o.decoder.configure(i),o.hasInit=!0}catch(e){ii.debug.log("worker","VideoDecoder configure error",e.code,e)}}},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Er=function(){if(nr=!0,ii.fetchStatus!==Ct||vr(ii._opt.isChrome)){if(s)try{s.abort(),s=null}catch(e){ii.debug.log("worker","abort catch",e)}}else s=null,ii.debug.log("worker",`abort() and not abortController.abort() _status is ${ii.fetchStatus} and _isChrome is ${ii._opt.isChrome}`)},Ar={init(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},destroy(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Ar.extractNALu$2(t)},getNaluDts(){let e=Ar.localDts;return Ar.localDts=Ar.localDts+40,e},getNaluAudioDts(){const e=ii._opt.sampleRate,t=ii._opt.audioBufferSize;return Ar.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,o=0,s=[];for(;i1)for(let e=0;e{const t=Ir(e);t===He||t===$e?Ar.handleVideoH264Nalu(e):Mr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH264Nalu(i[0]);else if(zr(i)){const e=Ir(i[0]),t=Rr(e);Ar.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH264Nalu(e)}))}else if(Ar.streamType===Re)if(ii._opt.nakedFlowH265DemuxUseNew){const t=Ar.handleAddNaluStartCode(e),r=Ar.extractNALu(t);if(0===r.length)return void ii.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Xr(e);t===nt||t===rt||t===et?Ar.handleVideoH265Nalu(e):Jr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH265Nalu(i[0]);else if(ei(i)){const e=Xr(i[0]),t=Qr(e);Ar.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH265Nalu(e)}))}else Xr(e)===nt?Ar.extractH265PPS(e):Ar.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Lr(Ir(e))?Ar.extractH264SEI(e):Ar.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Zr(Xr(e))?Ar.extractH265SEI(e):Ar.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Ir(e);switch(t){case $e:Ar.sps=e;break;case He:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.sps&&Ar.pps){const e=Cr({sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}if(Mr(t)){const r=Rr(t),i=Ar.getNaluDts(),n=Pr(e,r);Ar.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=Cr({sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}},handleVideoH264NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Fr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Xr(e);switch(t){case et:Ar.vps=e;break;case rt:Ar.sps=e;break;case nt:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.vps&&Ar.sps&&Ar.pps){const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}if(Jr(t)){const r=Qr(t),i=Ar.getNaluDts(),n=Yr(e,r);Ar.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Ar.vps&&Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}},handleVideoH265NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Kr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){ii.calcNetworkDelay(t.ts),t.isIFrame&&ii.calcIframeIntervalTimestamp(t.ts),ii.decode(e,t)}},kr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){kr.mp4Box=Oi.createFile(),kr.mp4Box.onReady=kr.onReady,kr.mp4Box.onError=kr.onError,kr.mp4Box.onSamples=kr.onSamples},initTransportDescarmber(){kr.transportDescarmber=new Hi},_getSeqHeader(e){const t=kr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Oi.DataStream(void 0,0,Oi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(kr.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ii.debug.log(kr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){kr.videoTrackId=t.id;const e=kr._getSeqHeader(t);e&&(ii.debug.log(kr.LOG_NAME,"seqHeader"),ii.decodeVideo(e,0,!0,0)),kr.mp4Box.setExtractionOptions(t.id)}if(r&&ii._opt.hasAudio){kr.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");kr.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ii.debug.log(kr.LOG_NAME,"aacADTSHeader"),ii.decodeAudio(n,0)}kr.mp4Box.start()},onError(e){ii.debug.error(kr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===kr.videoTrackId)for(const t of r){const r=t.data,i=t.is_sync,n=1e3*t.cts/t.timescale;t.duration,t.timescale,i&&ii.calcIframeIntervalTimestamp(n);let o=null;o=kr.isHevc?Kr(r,i):Fr(r,i),ii.decode(o,{type:se,ts:n,isIFrame:i,cts:0}),kr.mp4Box.releaseUsedSamples(e,t.number)}else if(e===kr.audioTrackId){if(ii._opt.hasAudio)for(const t of r){const r=t.data,i=1e3*t.cts/t.timescale;t.duration,t.timescale;const n=new Uint8Array(r.byteLength+2);n.set([175,1],0),n.set(r,2),ii.decode(n,{type:oe,ts:i,isIFrame:!1,cts:0}),kr.mp4Box.releaseUsedSamples(e,t.number)}}else ii.debug.warn(kr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);kr.transportDescarmber&&(t=kr.transportDescarmber.transport(t)),t.buffer.fileStart=kr.offset,kr.offset+=t.byteLength,kr.mp4Box.appendBuffer(t.buffer)},destroy(){kr.mp4Box&&(kr.mp4Box.stop(),kr.mp4Box.flush(),kr.mp4Box.destroy(),kr.mp4Box=null),kr.transportDescarmber&&(kr.transportDescarmber.destroy(),kr.transportDescarmber=null),kr.offset=0,kr.videoTrackId=null,kr.audioTrackId=null,kr.isHevc=!1}},Gr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Gr.extractNALu(t)},destroy(){Gr.lastBuffer=new Uint8Array(0),Gr.parsedOffset=0,Gr.firstStartCodeOffset=0,Gr.secondStartCodeOffset=0,Gr.state="init",Gr.hasInitVideoCodec=!1,Gr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ii.debug.warn(Gr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Gr.lastBuffer.length+e.length);for(t.set(Gr.lastBuffer,0),t.set(new Uint8Array(e),Gr.lastBuffer.length),Gr.lastBuffer=t;;){if("init"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findFirstStartCode",Gr.firstStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findSecondStartCode",Gr.secondStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Gr.state){if(!(Gr.lastBuffer.length-Gr.parsedOffset>0))break;{let e,t,r=192&Gr.lastBuffer[Gr.parsedOffset];e=0==r?Gr.secondStartCodeOffset-14:Gr.secondStartCodeOffset;let i=0==(192&Gr.lastBuffer[Gr.firstStartCodeOffset+4]);if(i){if(Gr.firstStartCodeOffset-14<0)return void ii.debug.warn(Gr.LOG_NAME,"firstStartCodeOffset -14 is",Gr.firstStartCodeOffset-14);Gr.hasInitVideoCodec||(Gr.hasInitVideoCodec=!0,ii.debug.log(Gr.LOG_NAME,"setCodec"),oi.setCodec(Le,"")),t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset-14,e)}else t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset,e);let n=Gr.getNaluDts();Gr.hasInitVideoCodec?(postMessage({cmd:G,type:xe,value:t.byteLength}),postMessage({cmd:G,type:Be,value:n}),oi.decode(t,i?1:0,n)):ii.debug.warn(Gr.LOG_NAME,"has not init video codec"),Gr.lastBuffer=Gr.lastBuffer.subarray(e),Gr.firstStartCodeOffset=0==r?14:0,Gr.parsedOffset=Gr.firstStartCodeOffset+4,Gr.state="findFirstStartCode"}}}},getNaluDts(){let e=Gr.localDts;return Gr.localDts=Gr.localDts+40,e}},$r={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new On,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){$r.media_info_=null,$r.pes_slice_queues_=null,$r.section_slice_queues_=null,$r.video_metadata_=null,$r.audio_metadata_=null,$r.aac_last_incomplete_data_=null,$r.video_track_=null,$r.audio_track_=null,$r._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){$r._remainingPacketData&&(e=hn($r._remainingPacketData,e),$r._remainingPacketData=null);let t=e.buffer;const r=$r.parseChunks(t);r?$r._remainingPacketData=e.subarray(r):e.length>>6;r[1];let o=(31&r[1])<<8|r[2],s=(48&r[3])>>>4,a=15&r[3],d=!(!$r.pmt_||$r.pmt_.pcr_pid!==o),l={},u=4;if(2==s||3==s){let e=r[4];if(e>0&&(d||3==s)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);$r.last_pcr_=e}if(2==s||5+e===188){t+=188,204===$r.tsPacketSize&&(t+=16);continue}u=5+e}if(1==s||3==s)if(0===o||o===$r.current_pmt_pid_||null!=$r.pmt_&&$r.pmt_.pid_stream_type[o]===Fn){let r=188-u;$r.handleSectionSlice(e,t+u,r,{pid:o,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=$r.pmt_&&null!=$r.pmt_.pid_stream_type[o]){let r=188-u,i=$r.pmt_.pid_stream_type[o];o!==$r.pmt_.common_pids.h264&&o!==$r.pmt_.common_pids.h265&&o!==$r.pmt_.common_pids.adts_aac&&o!==$r.pmt_.common_pids.loas_aac&&o!==$r.pmt_.common_pids.ac3&&o!==$r.pmt_.common_pids.eac3&&o!==$r.pmt_.common_pids.opus&&o!==$r.pmt_.common_pids.mp3&&!0!==$r.pmt_.pes_private_data_pids[o]&&!0!==$r.pmt_.timed_id3_pids[o]&&!0!==$r.pmt_.synchronous_klv_pids[o]&&!0!==$r.pmt_.asynchronous_klv_pids[o]||$r.handlePESSlice(e,t+u,r,{pid:o,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===$r.tsPacketSize&&(t+=16)}return $r.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),o=$r.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let s=n[0];if(null!=o&&0!==o.total_length){let n=new Uint8Array(e,t+1,Math.min(r,s));o.slices.push(n),o.total_length+=n.byteLength,o.total_length===o.expected_length?$r.emitSectionSlices(o,i):$r.clearSlices(o,i)}for(let a=1+s;a=o.expected_length&&$r.clearSlices(o,i),a+=d.byteLength}}else if(null!=o&&0!==o.total_length){let n=new Uint8Array(e,t,Math.min(r,o.expected_length-o.total_length));o.slices.push(n),o.total_length+=n.byteLength,o.total_length===o.expected_length?$r.emitSectionSlices(o,i):o.total_length>=o.expected_length&&$r.clearSlices(o,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),o=n[0]<<16|n[1]<<8|n[2];n[3];let s=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==o)return void ii.debug.warn($r.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=$r.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?$r.emitPESSlices(e,i):$r.clearSlices(e,i)),$r.pes_slice_queues_[i.pid]=new Mn,$r.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==$r.pes_slice_queues_[i.pid])return;let a=$r.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===s?0:s+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?$r.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==s&&3!==s||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,o=3===s?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ii.debug.warn($r.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let u=t.subarray(l,l+d);switch(e.stream_type){case xn:case Bn:$r.parseMP3Payload(u,r);break;case Un:$r.pmt_.common_pids.opus===e.pid||$r.pmt_.common_pids.ac3===e.pid||$r.pmt_.common_pids.eac3===e.pid||($r.pmt_.asynchronous_klv_pids[e.pid]?$r.parseAsynchronousKLVMetadataPayload(u,e.pid,i):$r.pmt_.smpte2038_pids[e.pid]?$r.parseSMPTE2038MetadataPayload(u,r,o,e.pid,i):$r.parsePESPrivateDataPayload(u,r,o,e.pid,i));break;case kn:$r.parseADTSAACPayload(u,r);break;case Tn:$r.parseLOASAACPayload(u,r);break;case Cn:case Dn:break;case Pn:$r.pmt_.timed_id3_pids[e.pid]?$r.parseTimedID3MetadataPayload(u,r,o,e.pid,i):$r.pmt_.synchronous_klv_pids[e.pid]&&$r.parseSynchronousKLVMetadataPayload(u,r,o,e.pid,i);break;case In:$r.parseH264Payload(u,r,o,e.random_access_indicator);break;case Ln:$r.parseH265Payload(u,r,o,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Un){let r,o=6;r=0!==n?n:t.byteLength-o;let s=t.subarray(o,o+r);$r.parsePESPrivateDataPayload(s,void 0,void 0,e.pid,i)}}else ii.debug.error($r.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e($r.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],o=e[6];e[7];let s=null;if(1===n&&0===o)s={version_number:0,network_pid:0,program_pmt_pid:{}},s.version_number=i;else if(s=$r.pat_,null==s)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?s.network_pid=i:(s.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===o&&(null==$r.pat_&&ii.debug.log($r.TAG_NAME,`Parsed first PAT: ${JSON.stringify(s)}`),$r.pat_=s,$r.current_program_=d,$r.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ii.debug.error($r.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],o=(62&e[5])>>>1,s=1&e[5],a=e[6];if(e[7],1===s&&0===a)r=$r._initPmt(),r.program_number=n,r.version_number=o,$r.program_pmt_map_[n]=r;else if(r=$r.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,u=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;i$r.has_video_&&$r.has_audio_?$r.video_init_segment_dispatched_&&$r.audio_init_segment_dispatched_:$r.has_video_&&!$r.has_audio_?$r.video_init_segment_dispatched_:!($r.has_video_||!$r.has_audio_)&&$r.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=$r.video_metadata_.details,t={type:"video"};t.id=$r.video_track_.id,t.timescale=1e3,t.duration=$r.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,$r.video_metadata_.vps){let e=$r.video_metadata_.vps.data.subarray(4),r=$r.video_metadata_.sps.data.subarray(4),i=$r.video_metadata_.pps.data.subarray(4);t.hvcc=qr({vps:e,sps:r,pps:i}),0==$r.video_init_segment_dispatched_&&ii.debug.log($r.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ii.decodeVideo(t.hvcc,0,!0,0)}else{let e=$r.video_metadata_.sps.data.subarray(4),r=$r.video_metadata_.pps.data.subarray(4);t.avcc=Dr({sps:e,pps:r}),0==$r.video_init_segment_dispatched_&&ii.debug.log($r.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ii.decodeVideo(t.avcc,0,!0,0)}$r.video_init_segment_dispatched_=!0,$r.video_metadata_changed_=!1;let n=$r.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){$r.isInitSegmentDispatched()&&$r.video_track_.length&&$r._preDoDecode()},dispatchAudioMediaSegment(){$r.isInitSegmentDispatched()&&$r.audio_track_.length&&$r._preDoDecode()},dispatchAudioVideoMediaSegment(){$r.isInitSegmentDispatched()&&($r.audio_track_.length||$r.video_track_.length)&&$r._preDoDecode()},parseADTSAACPayload(e,t){if($r.has_video_&&!$r.video_init_segment_dispatched_)return;if($r.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+$r.aac_last_incomplete_data_.byteLength);t.set($r.aac_last_incomplete_data_,0),t.set(e,$r.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/$r.timescale_),"aac"===$r.audio_metadata_.codec){if(null==t&&null!=$r.audio_last_sample_pts_)r=1024/$r.audio_metadata_.sampling_frequency*1e3,i=$r.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn($r.TAG_NAME,"AAC: Unknown pts");if($r.aac_last_incomplete_data_&&$r.audio_last_sample_pts_){r=1024/$r.audio_metadata_.sampling_frequency*1e3;let e=$r.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn($r.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,o=new Xt(e),s=null,a=i;for(;null!=(s=o.readNextAACFrame());){r=1024/s.sampling_frequency*1e3;const e={codec:"aac",data:s};0==$r.audio_init_segment_dispatched_?($r.audio_metadata_={codec:"aac",audio_object_type:s.audio_object_type,sampling_freq_index:s.sampling_freq_index,sampling_frequency:s.sampling_frequency,channel_config:s.channel_config},$r.dispatchAudioInitSegment(e)):$r.detectAudioMetadataChange(e)&&($r.dispatchAudioMediaSegment(),$r.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(s.data.length+2);i.set([175,1],0),i.set(s.data,2);let o={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};$r.audio_track_.samples.push(o),$r.audio_track_.length+=i.byteLength,a+=r}o.hasIncompleteData()&&($r.aac_last_incomplete_data_=o.getIncompleteData()),n&&($r.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if($r.has_video_&&!$r.video_init_segment_dispatched_)return;if($r.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+$r.aac_last_incomplete_data_.byteLength);t.set($r.aac_last_incomplete_data_,0),t.set(e,$r.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/$r.timescale_),"aac"===$r.audio_metadata_.codec){if(null==t&&null!=$r.audio_last_sample_pts_)r=1024/$r.audio_metadata_.sampling_frequency*1e3,i=$r.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn($r.TAG_NAME,"AAC: Unknown pts");if($r.aac_last_incomplete_data_&&$r.audio_last_sample_pts_){r=1024/$r.audio_metadata_.sampling_frequency*1e3;let e=$r.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn($r.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,o=new Zt(e),s=null,a=i;for(;null!=(s=o.readNextAACFrame(dr(this.loas_previous_frame)?void 0:this.loas_previous_frame));){$r.loas_previous_frame=s,r=1024/s.sampling_frequency*1e3;const e={codec:"aac",data:s};0==$r.audio_init_segment_dispatched_?($r.audio_metadata_={codec:"aac",audio_object_type:s.audio_object_type,sampling_freq_index:s.sampling_freq_index,sampling_frequency:s.sampling_frequency,channel_config:s.channel_config},$r.dispatchAudioInitSegment(e)):$r.detectAudioMetadataChange(e)&&($r.dispatchAudioMediaSegment(),$r.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(s.data.length+2);i.set([175,1],0),i.set(s.data,2);let o={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};$r.audio_track_.samples.push(o),$r.audio_track_.length+=i.byteLength,a+=r}o.hasIncompleteData()&&($r.aac_last_incomplete_data_=o.getIncompleteData()),n&&($r.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if($r.has_video_&&!$r.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],o=e[1]>>>3&3,s=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,u=34;switch(o){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(s){case 1:u=34;break;case 2:u=33;break;case 3:u=32}const c={};c.object_type=u,c.sample_rate=l,c.channel_count=d,c.data=e;const f={codec:"mp3",data:c};0==$r.audio_init_segment_dispatched_?($r.audio_metadata_={codec:"mp3",object_type:u,sample_rate:l,channel_count:d},$r.dispatchAudioInitSegment(f)):$r.detectAudioMetadataChange(f)&&($r.dispatchAudioMediaSegment(),$r.dispatchAudioInitSegment(f));let h={payload:e,length:e.byteLength,pts:t/$r.timescale_,dts:t/$r.timescale_,type:oe};$r.audio_track_.samples.push(h),$r.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==$r.audio_metadata_.codec)return ii.debug.log($r.TAG_NAME,`Audio: Audio Codecs changed from ${$r.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===$r.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==$r.audio_metadata_.audio_object_type)return ii.debug.log($r.TAG_NAME,`AAC: AudioObjectType changed from ${$r.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==$r.audio_metadata_.sampling_freq_index)return ii.debug.log($r.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${$r.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==$r.audio_metadata_.channel_config)return ii.debug.log($r.TAG_NAME,`AAC: Channel configuration changed from ${$r.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===$r.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==$r.audio_metadata_.sampling_frequency)return ii.debug.log($r.TAG_NAME,`AC3: Sampling Frequency changed from ${$r.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==$r.audio_metadata_.bit_stream_identification)return ii.debug.log($r.TAG_NAME,`AC3: Bit Stream Identification changed from ${$r.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==$r.audio_metadata_.bit_stream_mode)return ii.debug.log($r.TAG_NAME,`AC3: BitStream Mode changed from ${$r.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==$r.audio_metadata_.channel_mode)return ii.debug.log($r.TAG_NAME,`AC3: Channel Mode changed from ${$r.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==$r.audio_metadata_.low_frequency_effects_channel_on)return ii.debug.log($r.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${$r.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===$r.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==$r.audio_metadata_.sample_rate)return ii.debug.log($r.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${$r.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==$r.audio_metadata_.channel_count)return ii.debug.log($r.TAG_NAME,`Opus: Channel count changed from ${$r.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===$r.audio_metadata_.codec){const t=e.data;if(t.object_type!==$r.audio_metadata_.object_type)return ii.debug.log($r.TAG_NAME,`MP3: AudioObjectType changed from ${$r.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==$r.audio_metadata_.sample_rate)return ii.debug.log($r.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${$r.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==$r.audio_metadata_.channel_count)return ii.debug.log($r.TAG_NAME,`MP3: Channel count changed from ${$r.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=$r.audio_track_.id,t.timescale=1e3,t.duration=$r.duration_,"aac"===$r.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Gn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ii._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ii.decodeAudio(n,0)}else"ac-3"===$r.audio_metadata_.codec||"ec-3"===$r.audio_metadata_.codec||"opus"===$r.audio_metadata_.codec||"mp3"===$r.audio_metadata_.codec&&(t.audioSampleRate=$r.audio_metadata_.sample_rate,t.channelCount=$r.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==$r.audio_init_segment_dispatched_&&ii.debug.log($r.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),$r.audio_init_segment_dispatched_=!0,$r.video_metadata_changed_=!1;let r=$r.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let o=new zn;if(o.pid=i,o.stream_id=n,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/$r.timescale_);o.pts=e}else o.nearest_pts=$r.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/$r.timescale_);o.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ii.debug.log($r.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ii.debug.log($r.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ii.debug.log($r.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ii.debug.log($r.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=$r.audio_last_sample_pts_?Math.floor($r.audio_last_sample_pts_):null!=$r.last_pcr_?Math.floor($r.last_pcr_/300/$r.timescale_):void 0,_preDoDecode(){const e=$r.video_track_,t=$r.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===se?$r._doDecodeVideo({...e,payload:t}):e.type===oe&&$r._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Kr(t,e.isIFrame):Fr(t,e.isIFrame),e.isIFrame&&ii.calcIframeIntervalTimestamp(e.dts);let i=ii.cryptoPayload(r,e.isIFrame);ii.decode(i,{type:se,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;yr(ii._opt.m7sCryptoAudio)&&(r=ii.cryptoPayloadAudio(t)),ii.decode(r,{type:oe,ts:e.dts,isIFrame:!1,cts:0})}},jr=null;br()&&(jr={TAG_NAME:"worker MediaSource",_resetInIt(){jr.isAvc=null,jr.isAAC=null,jr.videoInfo={},jr.videoMeta={},jr.audioMeta={},jr.sourceBuffer=null,jr.audioSourceBuffer=null,jr.hasInit=!1,jr.hasAudioInit=!1,jr.isAudioInitInfo=!1,jr.videoMimeType="",jr.audioMimeType="",jr.cacheTrack={},jr.cacheAudioTrack={},jr.timeInit=!1,jr.sequenceNumber=0,jr.audioSequenceNumber=0,jr.firstRenderTime=null,jr.firstAudioTime=null,jr.mediaSourceAppendBufferFull=!1,jr.mediaSourceAppendBufferError=!1,jr.mediaSourceAddSourceBufferError=!1,jr.mediaSourceBufferError=!1,jr.mediaSourceError=!1,jr.prevTimestamp=null,jr.decodeDiffTimestamp=null,jr.prevDts=null,jr.prevAudioDts=null,jr.prevPayloadBufferSize=0,jr.isWidthOrHeightChanged=!1,jr.prevTs=null,jr.prevAudioTs=null,jr.eventListenList=[],jr.pendingRemoveRanges=[],jr.pendingSegments=[],jr.pendingAudioRemoveRanges=[],jr.pendingAudioSegments=[],jr.supportVideoFrameCallbackHandle=null,jr.audioSourceBufferCheckTimeout=null,jr.audioSourceNoDataCheckTimeout=null,jr.hasPendingEos=!1,jr.$video={currentTime:0,readyState:0}},init(){jr.events=new pn,jr._resetInIt(),jr.mediaSource=new self.MediaSource,jr.isDecodeFirstIIframe=!!vr(ii._opt.checkFirstIFrame),jr._bindMediaSourceEvents()},destroy(){jr.stop(),jr._clearAudioSourceBufferCheckTimeout(),jr.eventListenList&&jr.eventListenList.length&&(jr.eventListenList.forEach((e=>e())),jr.eventListenList=[]),jr._resetInIt(),jr.mediaSource=null},getState:()=>jr.mediaSource&&jr.mediaSource.readyState,isStateOpen:()=>jr.getState()===yt,isStateClosed:()=>jr.getState()===vt,isStateEnded:()=>jr.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=jr.events,t=e(jr.mediaSource,wt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceOpen"),jr._onMediaSourceSourceOpen()})),r=e(jr.mediaSource,bt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceClose")})),i=e(jr.mediaSource,St,(()=>{ii.debug.log(jr.TAG_NAME,"sourceended")}));jr.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){jr.sourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),jr._initSourceBuffer()),jr.audioSourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),jr._initAudioSourceBuffer()),jr._hasPendingSegments()&&jr._doAppendSegments()},decodeVideo(e,t,r,i){if(ii.isDestroyed)ii.debug.warn(jr.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(vr(jr.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Ie&&vr(ar()))return void jr.emitError(De.mediaSourceH265NotSupport);jr.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),jr.hasInit=jr._decodeConfigurationRecord(e,t,r,i)}else ii.debug.warn(jr.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]}`);else if(!jr.isDecodeFirstIIframe&&r&&(jr.isDecodeFirstIIframe=!0),jr.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Fe?r=Tr(e.slice(5)):t===Ie&&(r=Vr(e));const i=jr.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ii.debug.warn(jr.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecWidth},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),jr.isWidthOrHeightChanged=!0,jr.emitError(De.mseWidthOrHeightChange))}if(jr.isWidthOrHeightChanged)return void ii.debug.warn(jr.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(gr(e))return void ii.debug.warn(jr.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength300&&(jr.firstAudioTime-=e,ii.debug.warn(jr.TAG_NAME,`video\n firstAudioTime is ${jr.firstRenderTime} and current time is ${jr.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${jr.firstAudioTime}`))}r=t-jr.firstAudioTime,r<0&&(ii.debug.warn(jr.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${jr.prevAudioTs},\n firstAudioTime is ${jr.firstAudioTime}`),r=null===jr.prevAudioDts?0:jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration),null!==jr.prevAudioTs&&r<=jr.prevAudioDts&&(ii.debug.warn(jr.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${jr.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${jr.prevAudioTs} ,\n and diff is ${t-jr.prevAudioTs}`),r=jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration)}ii.isPlayer?jr._decodeAudio(e,r,t):ii.isPlayback,jr.prevAudioTs=t,jr.prevAudioDts=r}else ii.debug.log(jr.TAG_NAME,"decodeAudio first frame is not iFrame")}},_checkTsIsMaxDiff:e=>jr.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),o={};if(i===Fe?o=Tr(n):i===Ie&&(o=Wr(n)),jr.videoInfo.width=o.codecWidth,jr.videoInfo.height=o.codecHeight,0===o.codecWidth&&0===o.codecHeight)return ii.debug.warn(jr.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(o)),jr.emitError(De.mediaSourceDecoderConfigurationError),!1;const s={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},a=mn.generateInitSegment(s);jr.isAvc=i===Fe;let d=o.codec;return jr.videoMimeType=d?`video/mp4; codecs="${o.codec}"`:jr.isAvc?ct:ft,postMessage({cmd:T,w:o.codecWidth,h:o.codecHeight}),jr._initSourceBuffer(),jr.appendBuffer(a.buffer),jr.sequenceNumber=0,jr.cacheTrack={},jr.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ge,o=r===ze;if(vr(o||n))return ii.debug.warn(jr.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),jr.emitError(De.mediaSourceAudioG711NotSupport),!1;const s={id:Ft,type:"audio",timescale:1e3};let a={};if(jt(e)){if(a=Kt(e.slice(2)),!a)return!1;s.audioSampleRate=a.sampleRate,s.channelCount=a.channelCount,s.config=a.config,s.refSampleDuration=1024/s.audioSampleRate*s.timescale}else{if(!n)return!1;if(a=An(e),!a)return!1;s.audioSampleRate=a.samplingRate,s.channelCount=a.channelCount,s.refSampleDuration=1152/s.audioSampleRate*s.timescale}s.codec=a.codec,s.duration=0;let d="mp4",l=a.codec,u=null;n&&vr(sr())?(d="mpeg",l="",u=new Uint8Array):u=mn.generateInitSegment(s);let c=`${s.type}/${d}`;return l&&l.length>0&&(c+=`;codecs=${l}`),vr(jr.isAudioInitInfo)&&(Jt=r===ze?i?16:8:0===i?8:16,postMessage({cmd:F,code:r}),postMessage({cmd:P,sampleRate:s.audioSampleRate,channels:s.channelCount,depth:Jt}),jr.isAudioInitInfo=!0),jr.audioMimeType=c,jr.isAAC=o,jr._initAudioSourceBuffer(),jr.appendAudioBuffer(u.buffer),!0},_initSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.sourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.videoMimeType){try{jr.sourceBuffer=jr.mediaSource.addSourceBuffer(jr.videoMimeType),ii.debug.log(jr.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.videoMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.sourceBuffer){const t=e(jr.sourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.sourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r)}}else ii.debug.log(jr.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.isAvc === null is ${null===jr.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.audioSourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.audioMimeType){try{jr.audioSourceBuffer=jr.mediaSource.addSourceBuffer(jr.audioMimeType),jr._clearAudioSourceBufferCheckTimeout(),ii.debug.log(jr.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.audioMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendAudioBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.audioSourceBuffer){const t=e(jr.audioSourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.audioSourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r),null===jr.audioSourceNoDataCheckTimeout&&(jr.audioSourceNoDataCheckTimeout=setTimeout((()=>{jr._clearAudioNoDataCheckTimeout(),jr.emitError(De.mediaSourceAudioNoDataTimeout)}),1e3))}}else ii.debug.log(jr.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.audioMimeType is ${jr.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let o=e.slice(5),s=o.byteLength;if(0===s)return void ii.debug.warn(jr.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;jr.prevTimestamp||(jr.prevTimestamp=a,d=!0);const l=a-jr.prevTimestamp;if(jr.decodeDiffTimestamp=l,l>500&&!d&&ii.isPlayer&&ii.debug.warn(jr.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${jr.prevTimestamp}, diff time is ${l} ms`),jr.cacheTrack.id&&t>=jr.cacheTrack.dts){let e=8+jr.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheTrack.data,8),jr.cacheTrack.duration=t-jr.cacheTrack.dts;let i=mn.moof(jr.cacheTrack,jr.cacheTrack.dts);jr.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendBuffer(n.buffer)}else ii.debug.log(jr.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${jr.cacheTrack&&jr.cacheTrack.dts}`),jr.timeInit=!1,jr.cacheTrack={};jr.cacheTrack||(jr.cacheTrack={}),jr.cacheTrack.id=Pt,jr.cacheTrack.sequenceNumber=++jr.sequenceNumber,jr.cacheTrack.size=s,jr.cacheTrack.dts=t,jr.cacheTrack.cts=i,jr.cacheTrack.isKeyframe=r,jr.cacheTrack.data=o,jr.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},jr.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=jr.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(jr.cacheAudioTrack.id&&t>=jr.cacheAudioTrack.dts){let e=8+jr.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheAudioTrack.data,8),jr.cacheAudioTrack.duration=t-jr.cacheAudioTrack.dts;let i=mn.moof(jr.cacheAudioTrack,jr.cacheAudioTrack.dts);jr.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendAudioBuffer(n.buffer)}else jr.cacheAudioTrack={};jr.cacheAudioTrack||(jr.cacheAudioTrack={}),jr.cacheAudioTrack.id=Ft,jr.cacheAudioTrack.sequenceNumber=++jr.audioSequenceNumber,jr.cacheAudioTrack.size=n,jr.cacheAudioTrack.dts=t,jr.cacheAudioTrack.cts=0,jr.cacheAudioTrack.data=i,jr.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingSegments.push(e),jr.sourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`video has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},appendAudioBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendAudioBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingAudioSegments.push(e),jr.audioSourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getAudioSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`audio has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},getSourceBufferUpdating:()=>jr.sourceBuffer&&jr.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>jr.audioSourceBuffer&&jr.audioSourceBuffer.updating,stop(){jr.abortSourceBuffer(),jr.removeSourceBuffer(),jr.endOfStream()},clearUpAllSourceBuffer(){if(jr.sourceBuffer){const e=jr.sourceBuffer.buffered;for(let t=0;tjr.pendingSegments.length>0||jr.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>jr.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(jr.isStateClosed()||jr.isStateEnded())ii.debug.log(jr.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==jr.sourceBuffer){if(jr.needInitAudio()&&null===jr.audioSourceBuffer)return ii.debug.log(jr.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===jr.audioSourceBufferCheckTimeout&&(jr.audioSourceBufferCheckTimeout=setTimeout((()=>{jr._clearAudioSourceBufferCheckTimeout(),jr.emitError(De.mediaSourceAudioInitTimeout)}),1e3)));if(vr(jr.getSourceBufferUpdating())&&jr.pendingSegments.length>0){const e=jr.pendingSegments.shift();try{jr.sourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}if(vr(jr.getAudioSourceBufferUpdating())&&jr.pendingAudioSegments.length>0){const e=jr.pendingAudioSegments.shift();try{jr.audioSourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}}else ii.debug.log(jr.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=jr.$video.currentTime;if(jr.sourceBuffer){const t=jr.sourceBuffer.buffered;let r=!1;for(let i=0;i=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingRemoveRanges.push({start:n,end:t})}}else o=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingAudioRemoveRanges.push({start:n,end:t})}}else ojr.pendingRemoveRanges.length>0||jr.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ii._opt.hasAudio&&ii._opt.mseDecodeAudio,_doRemoveRanges(){if(jr.sourceBuffer&&vr(jr.getSourceBufferUpdating())){let e=jr.pendingRemoveRanges;for(;e.length&&vr(jr.getSourceBufferUpdating());){let t=e.shift();try{jr.sourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(jr.audioSourceBuffer&&vr(jr.getAudioSourceBufferUpdating())){let e=jr.pendingAudioRemoveRanges;for(;e.length&&vr(jr.getAudioSourceBufferUpdating());){let t=e.shift();try{jr.audioSourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(vr(ii._opt.mseAutoCleanupSourceBuffer))return!1;const e=jr.$video.currentTime;if(jr.sourceBuffer){let t=jr.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(jr.audioSourceBuffer){let t=jr.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){jr.audioSourceBufferCheckTimeout&&(clearTimeout(jr.audioSourceBufferCheckTimeout),jr.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){jr.audioSourceNoDataCheckTimeout&&(clearTimeout(jr.audioSourceNoDataCheckTimeout),jr.audioSourceNoDataCheckTimeout=null)},getHandle:()=>jr.mediaSource.handle,emitError(e){postMessage({cmd:ne,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ii={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:Sr(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ii.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ii.getVideoBufferLength(),audioDemuxBufferDelay:ii.getAudioBufferLength(),streamBufferByteLength:ii.getStreamBufferLength(),netBuf:ii.networkDelay||0,pushLatestDelay:ii.pushLatestDelay||0,latestDelay:ii.delay,isStreamTsMoreThanLocal:be});postMessage({cmd:G,type:ke,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ii._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===oe)return ii.delay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp>e)return ii.preDelayTimestamp-e>1e3&&ii.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return ${ii.delay}`),ii.preDelayTimestamp=e,ii.delay;if(ii.firstTimestamp){if(e){const t=Date.now()-ii.startTimestamp,r=e-ii.firstTimestamp;t>=r?(be=!1,ii.delay=t-r):(be=!0,ii.delay=r-t)}}else ii.firstTimestamp=e,ii.startTimestamp=Date.now(),ii.delay=-1;return ii.preDelayTimestamp=e,ii.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===oe)return ii.pushLatestDelay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp-e>1e3)return ii.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return -1`),-1;if(ii.firstTimestamp){let t=-1;if(e){const r=Date.now()-ii.startTimestamp,i=e-ii.firstTimestamp;r>=i?(be=!1,t=r-i):(be=!0,t=i-r)}return t}return-1},resetDelay:function(){ii.firstTimestamp=null,ii.startTimestamp=null,ii.delay=-1,ii.dropping=!1},resetAllDelay:function(){ii.resetDelay(),ii.preDelayTimestamp=null},doDecode:function(e){ii._opt.isEmitSEI&&e.type===se&&ii.isWorkerFetch&&ii.findSei(e.payload,e.ts),ii.isPlayUseMSEAndDecoderInWorker()?e.type===oe?ii._opt.mseDecodeAudio?jr.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===se&&jr.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ii._opt.useWCS&&ii.useOffscreen()&&e.type===se&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],o=e.type===se&&gr(e.payload);if(vr(r))o&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${o}`),i.shift(),ii.doDecode(n));else{const r=n.ts-t,s=n.type===oe&&e.type===se;(r<=20||s||o)&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${s} and isVideoSqeHeader is ${o}`),i.shift(),ii.doDecode(n))}},init:function(){ii.debug.log("worker","init and opt is",JSON.stringify(ii._opt));const e=ii._opt.playType===v,t=ii._opt.playType===b;if(Ar.init(),ii.isPlayer=e,ii.isPlayback=t,ii.isPlayUseMSEAndDecoderInWorker()&&jr&&jr.init(),ii.isPlaybackCacheBeforeDecodeForFpsRender())ii.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ii.debug.log("worker","setInterval()");const t=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(ii.isPushDropping)return void ii.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ii.dropping){for(r=i.shift(),ii.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ii.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ii.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ii.getNotDroppingDelayTs()&&(ii.debug.log("worker","loop() is dropping = false, is iFrame"),ii.dropping=!1,ii.doDecode(r),ii.decodeNext(r))}else if(ii.isPlayback||ii.isPlayUseMSE()||0===ii._opt.videoBuffer)for(;i.length;)r=i.shift(),ii.doDecode(r);else if(r=i[0],-1===ii.getDelay(r.ts,r.type))ii.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ii.doDecode(r),ii.decodeNext(r);else if(ii.delay>t&&e)ii.hasIframeInBufferList()?(ii.debug.log("worker",`delay is ${ii.delay} > maxDelay ${t}, set dropping is true`),ii.resetAllDelay(),ii.dropping=!0,postMessage({cmd:H})):(i.shift(),ii.doDecode(r),ii.decodeNext(r));else for(;i.length;){if(r=i[0],!(ii.getDelay(r.ts,r.type)>ii._opt.videoBuffer)){ii.delay<0&&ii.debug.warn("worker",`loop() do not decode and delay is ${ii.delay}, bufferList is ${i.length}`);break}i.shift(),ii.doDecode(r)}}else-1!==ii.delay&&ii.debug.log("worker","loop() bufferList is empty and reset delay"),ii.resetAllDelay()};ii.stopId=setInterval((()=>{let e=(new Date).getTime();we||(we=e);const t=e-we;t>100&&ii.debug.warn("worker",`loop demux diff time is ${t}`),r(),we=(new Date).getTime()}),20)}if(vr(ii._opt.checkFirstIFrame)&&(U=!0),ii.isPlayUseMSEAndDecoderInWorker()&&jr){const e=jr.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ii.doDecode(e))};e();const t=Math.ceil(1e3/(ii.streamFps*ii._opt.playbackRate));ii.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ii.streamFps}, streamAudioFps is ${ii.streamAudioFps} ,streamVideoFps is ${ii.streamVideoFps} playbackRate is ${ii._opt.playbackRate}`),ii.stopId=setInterval(e,t)},close:function(){if(ii.debug.log("worker","close"),ii.isDestroyed=!0,Er(),!a||1!==a.readyState&&2!==a.readyState?a&&ii.debug.log("worker",`close() and socket.readyState is ${a.readyState}`):(nr=!0,a.close(1e3,"Client disconnecting")),a=null,ii.stopStreamRateAndStatsInterval(),ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null),ii.mp3Demuxer&&(ii.mp3Demuxer.destroy(),ii.mp3Demuxer=null),ii.writableStream&&vr(ii.writableStream.locked)&&ii.writableStream.close().catch((e=>{ii.debug.log("worker","close() and writableStream.close() error",e)})),ii.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){ii.debug.warn("worker","close() and audioDecoder.clear error",e)}if(oi)try{oi.clear&&oi.clear(),oi=null}catch(e){ii.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,we=null,be=!1,o&&(o.reset&&o.reset(),o=null),jr&&(jr.destroy(),jr=null),ii.firstTimestamp=null,ii.startTimestamp=null,ii.networkDelay=0,ii.streamFps=null,ii.streamAudioFps=null,ii.streamVideoFps=null,ii.delay=-1,ii.pushLatestDelay=-1,ii.preDelayTimestamp=null,ii.dropping=!1,ii.isPushDropping=!1,ii.isPlayer=!0,ii.isPlayback=!1,ii.isWorkerFetch=!1,ii._opt=Sr(),ii.webglObj&&(ii.webglObj.destroy(),ii.offscreenCanvas.removeEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost),ii.offscreenCanvas.removeEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored),ii.offscreenCanvas=null,ii.offscreenCanvasGL=null,ii.offscreenCanvasCtx=null),i=[],n=[],u&&(u.buffer=null,u=null),f=null,h=null,S=!1,E=!1,U=!1,Ot=!1,Gt=!1,$t=!1,Ht=null,Yt=null,st=[],mt=0,_t=0,Ve=null,Xe=null,Et=null,At=null,Jt=null,Ut=0,Nt=0,ht=null,pt=null,ii.fetchStatus=Tt,wr=!0,Ar.destroy(),kr.destroy(),Gr.destroy(),$r.destroy(),postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===oe&&jt(e)){if(ii.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ii.decodeAudio(e,t.ts)}else if(t.type===se&&t.isIFrame&&gr(e)){if(ii.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ii.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ii._opt.isRecording)if(ii._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ii._opt.recordType===w)if(t.type===se){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===oe&&ii._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:I,buffer:i,ts:t.ts},[i.buffer])}if(ii.isPlayer&&Ut>0&&At>0&&t.type===se){const e=t.ts-At,r=Ut+Ut/2;e>r&&ii.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${At},\n diff is ${e} and preTimestampDuration is ${Ut} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(ii.isPlayer&&At>0&&t.type===se&&t.tsA&&(ii.debug.warn("worker",`pushBuffer,\n preTimestamp is ${At}, options.ts is ${t.ts},\n diff is ${At-t.ts} more than 3600000,\n and resetAllDelay`),ii.resetAllDelay(),At=null,Ut=0),ii.isPlayer&&At>0&&t.ts<=At&&t.type===se&&(ii.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${At} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),ii._opt.isDropSameTimestampGop&&vr(t.isIFrame)&&U)){const e=ii.hasIframeInBufferList(),t=vr(ii.isPushDropping);return ii.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ii.dropBuffer$2():(ii.clearBuffer(!0),yr(ii._opt.checkFirstIFrame)&&yr(r)&&(ii.isPlayUseMSEAndDecoderInWorker()?jr.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}if(ii.isPlayer&&U){const e=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=ii.getDelayNotUpdateDelay(t.ts,t.type);ii.pushLatestDelay=r,r>e&&ii.delay0&&ii.hasIframeInBufferList()&&!1===ii.isPushDropping&&(ii.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${ii.delay} and has iIframe and next decoder.dropBuffer$2()`),ii.dropBuffer$2())}if(ii.isPlayer&&t.type===se&&(At>0&&(Ut=t.ts-At),Nt=e.byteLength,At=t.ts),t.type===oe?i.push({ts:t.ts,payload:e,decoder:{decode:ii.decodeAudio},type:oe,isIFrame:!1}):t.type===se&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:ii.decodeVideo},type:se,isIFrame:t.isIFrame}),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&(dr(ii.streamVideoFps)||dr(ii.streamAudioFps))){let e=ii.streamVideoFps,t=ii.streamAudioFps;if(dr(ii.streamVideoFps)&&(e=pr(i,se),e&&(ii.streamVideoFps=e,postMessage({cmd:V,value:ii.streamVideoFps}),ii.streamFps=t?e+t:e,vr(ii._opt.hasAudio)&&(ii.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),ii.streamAudioFps=0),ii.playbackCacheLoop())),dr(ii.streamAudioFps)&&(t=pr(i,oe),t&&(ii.streamAudioFps=t,ii.streamFps=e?e+t:t,ii.playbackCacheLoop())),dr(ii.streamVideoFps)&&dr(ii.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));ii.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ii.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ii.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ii.streamVideoFps=25,postMessage({cmd:V,value:ii.streamVideoFps}),r?(ii.streamAudioFps=25,ii.streamFps=ii.streamVideoFps+ii.streamAudioFps):ii.streamFps=ii.streamVideoFps,ii.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===se&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===se&&e.isIFrame)),isAllIframeInBufferList(){const e=ii.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===se&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ii._opt.videoBuffer+ii._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===oe&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ii._opt.isNakedFlow?Ar.lastBuf&&(e=Ar.lastBuf.byteLength):ii._opt.isTs?$r._remainingPacketData&&(e=$r._remainingPacketData.byteLength):ii._opt.isFmp4&&kr.mp4Box&&(e=kr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){ii.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ii.isWorkerFetch=!0,t.isFlv?ii._opt.isFlv=!0:t.isFmp4?ii._opt.isFmp4=!0:t.isMpeg4?ii._opt.isMpeg4=!0:t.isNakedFlow?ii._opt.isNakedFlow=!0:t.isTs&&(ii._opt.isTs=!0),d=or((e=>{postMessage({cmd:G,type:Ee,value:e})})),ii.startStreamRateAndStatsInterval(),t.isFmp4&&(kr.listenMp4Box(),ii._opt.isFmp4Private&&kr.initTransportDescarmber()),t.protocol===_?(u=new xr(ii.demuxFlv()),fetch(e,{signal:s.signal}).then((e=>{if(yr(nr))return ii.debug.log("worker","request abort and run res.body.cancel()"),ii.fetchStatus=Tt,void e.body.cancel();if(!mr(e))return ii.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Er(),void postMessage({cmd:G,type:De.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:G,type:Ue}),fr())ii.writableStream=new WritableStream({write:e=>s&&s.signal&&s.signal.aborted?(ii.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof e?(ii.fetchStatus=Ct,d(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ii.demuxFmp4(e):t.isMpeg4?ii.demuxMpeg4(e):t.isTs&&ii.demuxTs(e)):ii.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ii.debug.log("worker","writableStream close()"),ii.fetchStatus=Dt,u=null,Er(),postMessage({cmd:G,type:Se,value:g,msg:"fetch done"})},abort:e=>{if(s&&s.signal&&s.signal.aborted)return ii.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);u=null,e.name!==xt?(ii.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Er(),postMessage({cmd:G,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ii.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ii.debug.log("worker","fetchNext().then() and done is true"),ii.fetchStatus=Dt,u=null,Er(),void postMessage({cmd:G,type:Se,value:g,msg:"fetch done"})):s&&s.signal&&s.signal.aborted?(ii.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof n?(ii.fetchStatus=Ct,d(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ii.demuxFmp4(n):t.isMpeg4&&ii.demuxMpeg4(n),i()):ii.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(s&&s.signal&&s.signal.aborted)return ii.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);u=null,e.name!==xt?(ii.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:G,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{s&&s.signal&&s.signal.aborted?ii.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==xt?(ii.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:G,type:De.fetchError,value:e.toString()}),u=null):ii.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))):t.protocol===m&&(t.isFlv&&(u=new xr(ii.demuxFlv())),a=new WebSocket(e),a.binaryType="arraybuffer",a.onopen=()=>{ii.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:G,type:Ue}),postMessage({cmd:G,type:Ce})},a.onclose=e=>{c?ii.debug.log("worker","fetchStream, WebsocketStream socket close and isSocketError is true , so return"):(ii.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ii.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),yr(nr)?ii.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(u=null,postMessage({cmd:G,type:Se,value:y,msg:e.code})))},a.onerror=e=>{ii.debug.error("worker","fetchStream, WebsocketStream socket error",e),c=!0,u=null,postMessage({cmd:G,type:De.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},a.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ii.demuxFmp4(e.data):t.isMpeg4?ii.demuxMpeg4(e.data):ii._opt.isNakedFlow?ii.demuxNakedFlow(e.data):ii.demuxM7s(e.data)):ii.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let o=r[0];const s=(yield n).slice();switch(i){case ae:if(s.byteLength>0){let e=s;yr(ii._opt.m7sCryptoAudio)&&(e=ii.cryptoPayloadAudio(s)),ii.decode(e,{type:oe,ts:o})}else ii.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${s.byteLength} and return`);break;case de:if(s.byteLength>=6){const e=s[0];if(ii._isEnhancedH265Header(e))ii._decodeEnhancedH265Video(s,o);else{s[0];let e=s[0]>>4===kt;if(e&&gr(s)&&null===Ht){const e=15&s[0];Ht=e===Ie,Yt=tr(s,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`)}e&&ii.calcIframeIntervalTimestamp(o),ii.isPlayer&&ii.calcNetworkDelay(o),r[0]=s[4],r[1]=s[3],r[2]=s[2],r[3]=0;let t=r[0],i=ii.cryptoPayload(s,e);ii.decode(i,{type:se,ts:o,isIFrame:e,cts:t})}}else ii.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${s.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:s},[s.buffer]);break;default:ii.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===oe?ii._opt.hasAudio&&(postMessage({cmd:G,type:Ae,value:e.byteLength}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()||(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===se&&ii._opt.hasVideo&&(postMessage({cmd:G,type:xe,value:e.byteLength}),postMessage({cmd:G,type:Be,value:t.ts}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ii._opt.isM7sCrypto?ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=zi(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`):ii._opt.isSm4Crypto?ii._opt.sm4CryptoKey&&t?r=sn(e,ii._opt.sm4CryptoKey):ii._opt.sm4CryptoKey||ii.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ii._opt.isXorCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=fn(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isXorCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ii._opt.isM7sCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?e[0]>>4===ze&&(t=Ni(e,ii._opt.cryptoKey,ii._opt.cryptoIV)):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Jt=r===ze?i?16:8:0===i?8:16,ni&&ni.setCodec)if(jt(e)||r===Ne||r===Oe||r===Ge){ii.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===ze?e.slice(2):new Uint8Array(0);ni.setCodec(r,ii._opt.sampleRate,i),r===ze&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==ze&&(r===Ge?(ii.mp3Demuxer||(ii.mp3Demuxer=new ln(ii),ii.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),ii.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t))}else ii.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ii.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ii.isDestroyed)ii.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())jr.decodeAudio(e,t);else if(yr(r)&&yr(ii._opt.mseDecodeAudio))postMessage({cmd:O,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ii.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?ii.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===ze?e.slice(2):e.slice(1),t)}else ii.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(oi&&oi.setCodec)if(gr(e))if(t===Fe||t===Ie){ii.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===Fe&&ii._opt.useSIMD){const e=Tr(r);if(e.codecWidth>x||e.codecHeight>x)return postMessage({cmd:q}),void ii.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,oi.setCodec(t,r),postMessage({cmd:M,code:t}),postMessage({cmd:R,buffer:i,codecId:t},[i.buffer])}else ii.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else ii.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else ii.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ii.isDestroyed)ii.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorker())jr.decodeVideo(e,t,i,n);else if(yr(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ii.delay},[e.buffer]);else if(S)if(!U&&i&&(U=!0),U){if(i&&gr(e)){const t=15&e[0];let r={};t===Fe?r=Tr(e.slice(5)):t===Ie&&(r=Vr(e)),r.codecWidth&&r.codecHeight&&f&&h&&(r.codecWidth!==f||r.codecHeight!==h)&&(ii.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${h},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Gt=!0,postMessage({cmd:W}))}if(Gt)return void ii.debug.warn("worker","decodeVideo: video width or height is changed, and return");if($t)return void ii.debug.warn("worker","decodeVideo: simd decode error, and return");if(gr(e))return void ii.debug.warn("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ii.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ii.isPlayer&&(ii.resetAllDelay(),yr(ii._opt.checkFirstIFrame)&&(ii.dropping=!0,postMessage({cmd:H}))),yr(ii._opt.checkFirstIFrame)&&vr(r)&&(U=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>yr(e.isIFrame)&&e.type===se));if(ii.isAllIframeInBufferList())for(let t=0;t=ii.getNotDroppingDelayTs()){ii.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ii.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ii.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ii.resetAllDelay(),ii.getDelay(r.ts,r.type),ii.doDecode(r),ii.isPushDropping=!1,ii.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ii.delay} `)}else ii.isPushDropping=!1}0===i.length&&(ii.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),o=new Uint32Array(n);switch(i){case oe:ii.decode(new Uint8Array(e,5),{type:oe,ts:r});break;case se:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ii._isEnhancedH265Header(n))ii._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ii.calcIframeIntervalTimestamp(r),gr(i)&&null===Ht)){const e=15&i[0];Ht=e===Ie}ii.isPlayer&&ii.calcNetworkDelay(r),o[0]=i[4],o[1]=i[3],o[2]=i[2],o[3]=0;let n=o[0],s=ii.cryptoPayload(i,e);ii.decode(s,{type:se,ts:r,isIFrame:e,cts:n})}}else ii.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Ar.dispatch(e)},demuxFmp4:function(e){kr.dispatch(e)},demuxMpeg4:function(e){Gr.dispatch(e)},demuxTs:function(e){$r.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,o=e.slice(1,5),s=new ArrayBuffer(4),a=new Uint32Array(s),d="a"==String.fromCharCode(o[0]);if(Ht=vr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Yt=tr(e,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`),ii.decode(i,{type:se,ts:t,isIFrame:!0,cts:0})}}}else if(n===Mt){let r=e,n=0;const o=i===zt;o&&ii.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Kr(e.slice(8),o),r=ii.cryptoPayload(r,o),ii.decode(r,{type:se,ts:t,isIFrame:o,cts:n}))}else if(n===Rt){const r=i===zt;r&&ii.calcIframeIntervalTimestamp(t);let n=Kr(e.slice(5),r);n=ii.cryptoPayload(n,r),ii.decode(n,{type:se,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&It)===It},findSei:function(e,t){let r=4;lr(Yt)&&(r=Yt),Qt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===dt||r===at)||vr(Ht)&&r===qe)&&postMessage({cmd:X,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(U&&e>0))return;null===Ve?(Ve=e,Xe=rr()):et?r-t:0;ii.networkDelay=i,i>ii._opt.networkDelay&&ii._opt.playType===v&&(ii.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Ve} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:G,type:Te,value:i}))},calcIframeIntervalTimestamp:function(e){null===Et?Et=e:Et=ii._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return ii.isPlayer&&ii._opt.useMSE&&yr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ii.isPlayUseMSE()&&ii._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ii.isPlayUseMSEAndDecoderInWorker()&&ii._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ii.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ii.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,ii.webglObj.destroy(),ii.webglObj=null,ii.offscreenCanvasGL=null,setTimeout((()=>{ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.offscreenCanvasGL&&ii.offscreenCanvasGL.getContextAttributes().stencil?(ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),Ot=!1):ii.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ii.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),f=t,h=r,ii.useOffscreen()&&(ii.offscreenCanvas=new OffscreenCanvas(t,r),ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),ii.offscreenCanvas.addEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost,!1),ii.offscreenCanvas.addEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:F,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Jt}),_t=r},yuvData:function(t,r){if(ii.isDestroyed)return void ii.debug.log("worker","yuvData, decoder is destroyed and return");const i=f*h*3/2;let n=e.HEAPU8.subarray(t,t+i),o=new Uint8Array(n);if(ht=null,ii.useOffscreen())try{if(Ot)return;ii.webglObj.renderYUV(f,h,o);let e=ii.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ii.delay,ts:r},[e])}catch(e){ii.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:o,delay:ii.delay,ts:r},[o.buffer])},pcmData:function(e,r,i){if(ii.isDestroyed)return void ii.debug.log("worker","pcmData, decoder is destroyed and return");let o=r,s=[],a=0,d=ii._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;s[r]=t.HEAPF32.subarray(i,i+o)}if(mt){if(!(o>=(r=d-mt)))return mt+=o,n[0]=Float32Array.of(...n[0],...s[0]),void(2==_t&&(n[1]=Float32Array.of(...n[1],...s[1])));st[0]=Float32Array.of(...n[0],...s[0].subarray(0,r)),2==_t&&(st[1]=Float32Array.of(...n[1],...s[1].subarray(0,r))),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer))),a=r,o-=r}for(mt=o;mt>=d;mt-=d)st[0]=s[0].slice(a,a+=d),2==_t&&(st[1]=s[1].slice(a-d,a)),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer)));mt&&(n[0]=s[0].slice(a),2==_t&&(n[1]=s[1].slice(a))),s=[]},errorInfo:function(e){null===ht&&(ht=rr());const t=rr(),r=ir(pt>0?2*pt:5e3,1e3,5e3),i=t-ht;i>r&&(ii.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${pt} and diff is ${i} and maxDiff is ${r}\n and replay`),$t=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){a?a.readyState===Pe?a.send(e):ii.debug.error("worker","socket is not open"):ii.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])}};ii.debug=new Br(ii);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(ii));let oi=null;e.VideoDecoder&&(oi=new e.VideoDecoder(ii)),postMessage({cmd:k}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ii._opt=Object.assign(ii._opt,JSON.parse(t.opt))}catch(e){}ii.init();break;case ce:ii.pushBuffer(t.buffer,t.options);break;case fe:ii.decodeAudio(t.buffer,t.ts);break;case he:ii.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ii.clearBuffer(t.needClear);break;case ge:ii.fetchStream(t.url,JSON.parse(t.opt));break;case pe:ii.debug.log("worker","close",JSON.stringify(t.options)),t.options&&vr(t.options.isVideoInited)&&(wr=t.options.isVideoInited),ii.close();break;case me:ii.debug.log("worker","updateConfig",t.key,t.value),ii._opt[t.key]=t.value,"playbackRate"===t.key&&(ii.playbackUpdatePlaybackRate(),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&ii.playbackCacheLoop());break;case ye:ii.sendWebsocketMessage(t.message);break;case ve:jr.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.js b/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.js new file mode 100644 index 0000000..4e252dc --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.js @@ -0,0 +1,16 @@ + +var Module = (() => { + var _scriptDir = import.meta.url; + + return ( +async function(moduleArg = {}) { + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var Module=typeof Module!="undefined"?Module:{};Module["locateFile"]=function(url){if(url=="decoder-pro-simd-mt-worker.wasm"&&typeof JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL!="undefined"&&JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL!="")return JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL;else return url;if(url=="decoder-pro-simd-mt-worker.worker.js"&&typeof JESSIBUCA_PRO_SIMD_MT_WORKER_JS_URL!="undefined"&&JESSIBUCA_PRO_SIMD_MT_WORKER_JS_URL!=""){return JESSIBUCA_PRO_SIMD_MT_WORKER_JS_URL}else{return url}};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url);var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url))}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]";let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||536870912;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="decoder-pro-simd-mt-worker.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("decoder-pro-simd-mt-worker.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(instance=>instance).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;registerTLSInit(wasmExports["R"]);wasmTable=wasmExports["V"];addOnInit(wasmExports["N"]);wasmModule=module;removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var terminateWorker=worker=>{worker.terminate();worker.onmessage=e=>{}};var killThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];terminateWorker(worker);__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0};var cancelThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})};var cleanupThread=pthread_ptr=>{var worker=PThread.pthreads[pthread_ptr];PThread.returnWorkerToPool(worker)};var spawnThread=threadParams=>{var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret}};var withStackSave=f=>{var stack=stackSave();var ret=f();stackRestore(stack);return ret};var proxyToMainThread=function(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i{EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)};var _exit=exitJS;var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread(){var pthreadPoolSize=8;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},initWorker(){noExitRuntime=false},setExitStatus:status=>{EXITSTATUS=status},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:worker=>{var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer(data){},threadInitTLS(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d["targetThread"]];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err(`Internal error! Worker sent a message "${cmd}" to target pthread ${d["targetThread"]}, but that thread no longer exists!`)}return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="alert"){alert(`Thread ${d["threadId"]}: ${d["text"]}`)}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err(`worker sent an unknown command ${cmd}`)}};worker.onerror=e=>{var message="worker sent an error!";err(`${message} ${e.filename}:${e.lineno}: ${e.message}`);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",data=>worker.onmessage({data:data}));worker.on("error",e=>worker.onerror(e))}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"],"wasmMemory":wasmMemory,"wasmModule":wasmModule})}),loadWasmModuleToAllWorkers(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker(){var worker;if(!Module["locateFile"]){worker=new Worker(new URL("decoder-pro-simd-mt-worker.worker.js",import.meta.url),{type:"module"})}else{var pthreadMainJs=locateFile("decoder-pro-simd-mt-worker.worker.js");worker=new Worker(pthreadMainJs,{type:"module"})}PThread.unusedWorkers.push(worker)},getNewWorker(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var establishStackSpace=()=>{var pthread_ptr=_pthread_self();var stackHigh=HEAPU32[pthread_ptr+52>>2];var stackSize=HEAPU32[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)};Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,0,returnCode);_exit(returnCode)}var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var invokeEntryPoint=(ptr,arg)=>{var result=getWasmTableEntry(ptr)(arg);function finish(result){if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}finish(result)};Module["invokeEntryPoint"]=invokeEntryPoint;var noExitRuntime=Module["noExitRuntime"]||true;var registerTLSInit=tlsInitFunc=>{PThread.tlsInitFunctions.push(tlsInitFunc)};var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var ___emscripten_init_main_thread_js=tb=>{__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536,false);PThread.threadInitTLS()};var ___emscripten_thread_cleanup=thread=>{if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})};function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}var ___pthread_create_js=(pthread_ptr,attr,startRoutine,arg)=>{if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(type){typeDependencies[type]=dependentTypes});function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i{if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}});if(0===unregisteredTypes.length){onComplete(typeConverters)}};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){if(!("argPackAdvance"in registeredInstance)){throw new TypeError("registerType registeredInstance requires argPackAdvance")}return sharedRegisterType(rawType,registeredInstance,options)}var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":function(wt){return!!wt},"toWireType":function(destructors,o){return o?trueValue:falseValue},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{"isAliasOf"(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},"clone"(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},"delete"(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},"isDeleted"(){return!this.$$.ptr},"deleteLater"(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(){if(!proto[methodName].overloadTable.hasOwnProperty(arguments.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${arguments.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[arguments.length].apply(this,arguments)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){if(this.rawDestructor){this.rawDestructor(ptr)}},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":readPointer,"deleteObject"(handle){if(handle!==null){handle["delete"]()}},"fromWireType":RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistant public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return args&&args.length?f.apply(null,[ptr].concat(args)):f.call(null,ptr)};var dynCall=(sig,ptr,args)=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr).apply(null,args);return rtn};var getDynCaller=(sig,ptr)=>{var argCache=[];return function(){argCache.length=0;Object.assign(argCache,arguments);return dynCall(sig,ptr,argCache)}};var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);if(upcast){upcast=embind__requireFunction(upcastSignature,upcast)}if(downcast){downcast=embind__requireFunction(downcastSignature,downcast)}rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],function(base){base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[arguments.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,arguments)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){if(registeredClass.baseClass.__derivedClasses===undefined){registeredClass.baseClass.__derivedClasses=[]}registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function newFunc(constructor,argumentList){if(!(constructor instanceof Function)){throw new TypeError(`new_ called with constructor type ${typeof constructor} which is not a function`)}var dummy=createNamedFunction(constructor.name||"unknownFunctionName",function(){});dummy.prototype=constructor.prototype;var obj=new dummy;var r=constructor.apply(obj,argumentList);return r instanceof Object?r:obj}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=false;for(var i=1;i0?", ":"")+argsListWired}invokerFnBody+=(returns||isAsync?"var rv = ":"")+"invoker(fn"+(argsListWired.length>0?", ":"")+argsListWired+");\n";if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex!==-1){return signature.substr(0,argsIndex)}else{return signature}};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);whenDependentTypesAreResolved([],[rawClassType],function(classType){classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)]}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes)}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,function(argTypes){var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}return[]});return[]})};function handleAllocatorInit(){Object.assign(HandleAllocator.prototype,{get(id){return this.allocated[id]},has(id){return this.allocated[id]!==undefined},allocate(handle){var id=this.freelist.pop()||this.allocated.length;this.allocated[id]=handle;return id},free(id){this.allocated[id]=undefined;this.freelist.push(id)}})}function HandleAllocator(){this.allocated=[undefined];this.freelist=[]}var emval_handles=new HandleAllocator;var __emval_decref=handle=>{if(handle>=emval_handles.reserved&&0===--emval_handles.get(handle).refcount){emval_handles.free(handle)}};var count_emval_handles=()=>{var count=0;for(var i=emval_handles.reserved;i{emval_handles.allocated.push({value:undefined},{value:null},{value:true},{value:false});emval_handles.reserved=emval_handles.allocated.length;Module["count_emval_handles"]=count_emval_handles};var Emval={toValue:handle=>{if(!handle){throwBindingError("Cannot use deleted val. handle = "+handle)}return emval_handles.get(handle).value},toHandle:value=>{switch(value){case undefined:return 1;case null:return 2;case true:return 3;case false:return 4;default:{return emval_handles.allocate({refcount:1,value:value})}}}};function simpleReadValueFromPointer(pointer){return this["fromWireType"](HEAP32[pointer>>2])}var __embind_register_emval=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},"toWireType":(destructors,value)=>Emval.toHandle(value),"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction:null})};var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":value=>value,"toWireType":(destructors,value)=>value,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":floatReadValueFromPointer(name,size),destructorFunction:null})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer>>0]:pointer=>HEAPU8[pointer>>0];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,"fromWireType":fromWireType,"toWireType":toWireType,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,"fromWireType":decodeMemoryView,"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":decodeMemoryView},{ignoreDuplicateRegistrations:true})};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,"fromWireType"(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.slice(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,getHeap,lengthBytesUTF,shift;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;getHeap=()=>HEAPU16;shift=1}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;getHeap=()=>HEAPU32;shift=2}registerType(rawType,{name:name,"fromWireType":value=>{var length=HEAPU32[value>>2];var HEAP=getHeap();var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||HEAP[currentBytePtr>>shift]==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_free(value);return str},"toWireType":(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(4+length+charSize);HEAPU32[ptr>>2]=length>>shift;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},"argPackAdvance":GenericWireTypeSize,"readValueFromPointer":simpleReadValueFromPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,"argPackAdvance":0,"fromWireType":()=>undefined,"toWireType":(destructors,o)=>undefined})};var maybeExit=()=>{if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var __emscripten_thread_mailbox_await=pthread_ptr=>{if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(HEAP32,pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(HEAP32,waitingAsync>>2,1)}};Module["__emscripten_thread_mailbox_await"]=__emscripten_thread_mailbox_await;var checkMailbox=()=>{var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(__emscripten_check_mailbox)}};Module["checkMailbox"]=checkMailbox;var __emscripten_notify_mailbox_postmessage=(targetThreadId,currThreadId,mainThreadId)=>{if(targetThreadId==currThreadId){setTimeout(()=>checkMailbox())}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"checkMailbox"})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"checkMailbox"})}};var proxiedJSCallArgs=[];var __emscripten_receive_on_main_thread_js=(index,callingThread,numCallArgs,args)=>{proxiedJSCallArgs.length=numCallArgs;var b=args>>3;for(var i=0;i{if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_methodCallers=[];var __emval_call_method=(caller,objHandle,methodName,destructorsRef,args)=>{caller=emval_methodCallers[caller];objHandle=Emval.toValue(objHandle);methodName=getStringOrSymbol(methodName);return caller(objHandle,objHandle[methodName],destructorsRef,args)};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(humanName+" has unknown type "+getTypeName(rawType))}return impl};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_incref=handle=>{if(handle>4){emval_handles.get(handle).refcount+=1}};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_new_u8string=v=>Emval.toHandle(UTF8ToString(v));var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var _abort=()=>{abort("")};var warnOnce=text=>{if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var _emscripten_check_blocking_allowed=()=>{};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var _emscripten_exit_with_live_runtime=()=>{runtimeKeepalivePush();throw"unwind"};var _emscripten_get_now;_emscripten_get_now=()=>performance.timeOrigin+performance.now();var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};var printCharBuffers=[null,[],[]];var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0}PThread.init();embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");handleAllocatorInit();init_emval();var proxiedFunctionTable=[_proc_exit,exitOnMainThread,pthreadCreateProxied,_fd_write];var wasmImports={e:___assert_fail,s:___cxa_throw,D:___emscripten_init_main_thread_js,m:___emscripten_thread_cleanup,A:___pthread_create_js,v:__embind_register_bigint,J:__embind_register_bool,u:__embind_register_class,t:__embind_register_class_constructor,i:__embind_register_class_function,I:__embind_register_emval,o:__embind_register_float,c:__embind_register_integer,b:__embind_register_memory_view,p:__embind_register_std_string,j:__embind_register_std_wstring,K:__embind_register_void,x:__emscripten_notify_mailbox_postmessage,E:__emscripten_receive_on_main_thread_js,C:__emscripten_thread_mailbox_await,G:__emscripten_thread_set_strongref,h:__emval_call_method,d:__emval_decref,g:__emval_get_method_caller,L:__emval_incref,q:__emval_new_cstring,H:__emval_new_object,B:__emval_new_u8string,k:__emval_run_destructors,r:__emval_set_property,M:__emval_take_value,l:_abort,n:_emscripten_check_blocking_allowed,F:_emscripten_exit_with_live_runtime,f:_emscripten_get_now,w:_emscripten_resize_heap,z:_exit,y:_fd_write,a:wasmMemory||Module["wasmMemory"]};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["N"])();var _free=a0=>(_free=wasmExports["O"])(a0);var _malloc=a0=>(_malloc=wasmExports["P"])(a0);var _pthread_self=Module["_pthread_self"]=()=>(_pthread_self=Module["_pthread_self"]=wasmExports["Q"])();var __emscripten_tls_init=Module["__emscripten_tls_init"]=()=>(__emscripten_tls_init=Module["__emscripten_tls_init"]=wasmExports["R"])();var ___getTypeName=a0=>(___getTypeName=wasmExports["S"])(a0);var __embind_initialize_bindings=Module["__embind_initialize_bindings"]=()=>(__embind_initialize_bindings=Module["__embind_initialize_bindings"]=wasmExports["T"])();var ___errno_location=()=>(___errno_location=wasmExports["__errno_location"])();var __emscripten_thread_init=Module["__emscripten_thread_init"]=(a0,a1,a2,a3,a4,a5)=>(__emscripten_thread_init=Module["__emscripten_thread_init"]=wasmExports["U"])(a0,a1,a2,a3,a4,a5);var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=()=>(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=wasmExports["W"])();var _emscripten_main_runtime_thread_id=()=>(_emscripten_main_runtime_thread_id=wasmExports["emscripten_main_runtime_thread_id"])();var _emscripten_main_thread_process_queued_calls=()=>(_emscripten_main_thread_process_queued_calls=wasmExports["emscripten_main_thread_process_queued_calls"])();var __emscripten_run_on_main_thread_js=(a0,a1,a2,a3)=>(__emscripten_run_on_main_thread_js=wasmExports["X"])(a0,a1,a2,a3);var __emscripten_thread_free_data=a0=>(__emscripten_thread_free_data=wasmExports["Y"])(a0);var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=a0=>(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=wasmExports["Z"])(a0);var __emscripten_check_mailbox=()=>(__emscripten_check_mailbox=wasmExports["_"])();var ___get_temp_ret=()=>(___get_temp_ret=wasmExports["__get_temp_ret"])();var ___set_temp_ret=a0=>(___set_temp_ret=wasmExports["__set_temp_ret"])(a0);var _emscripten_stack_set_limits=(a0,a1)=>(_emscripten_stack_set_limits=wasmExports["$"])(a0,a1);var stackSave=()=>(stackSave=wasmExports["aa"])();var stackRestore=a0=>(stackRestore=wasmExports["ba"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["ca"])(a0);var ___cxa_increment_exception_refcount=a0=>(___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["da"])(a0);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["ea"])(a0,a1,a2,a3,a4);var ___start_em_js=Module["___start_em_js"]=143500;var ___stop_em_js=Module["___stop_em_js"]=143557;Module["wasmMemory"]=wasmMemory;Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["ExitStatus"]=ExitStatus;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return moduleArg.ready +} +); +})(); +; +export default Module; \ No newline at end of file diff --git a/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.wasm b/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.wasm new file mode 100644 index 0000000..a9d3d4d Binary files /dev/null and b/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.wasm differ diff --git a/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.worker.js b/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.worker.js new file mode 100644 index 0000000..8cd9920 --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-simd-mt-worker.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:f=>(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f),postMessage:msg=>parentPort.postMessage(msg),performance:global.performance||{now:Date.now}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=(...args)=>{postMessage({cmd:"callHandler",handler:handler,args:args})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./decoder-pro-simd-mt-worker.js")).then(exports=>exports.default(Module))}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){Module["__embind_initialize_bindings"]();initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err(`worker.js received unknown command ${e.data.cmd}`);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/public/js/jessibuca-pro/decoder-pro-simd-mt.js b/public/js/jessibuca-pro/decoder-pro-simd-mt.js new file mode 100644 index 0000000..c48d9eb --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-simd-mt.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd-mt-worker.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL?JESSIBUCA_PRO_SIMD_MT_WORKER_WASM_URL:e};var s,a,o,d=Object.assign({},n),l=(e,t)=>{throw t},c="object"==typeof window,u="function"==typeof importScripts,h="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,f=n.ENVIRONMENT_IS_PTHREAD||!1,p="";function m(e){return n.locateFile?n.locateFile(e,p):p+e}if(h){const{createRequire:e}=await import("module");var _=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href),g=_("fs"),y=_("path");let t;p=u?y.dirname(p)+"/":_("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href)),s=(e,t)=>(e=te(e)?new URL(e):y.normalize(e),g.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=te(e)?new URL(e):y.normalize(e),g.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),l=(e,t)=>{throw process.exitCode=e,t},n.inspect=()=>"[Emscripten Module object]";try{t=_("worker_threads")}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}global.Worker=t.Worker}else(c||u)&&(u?p=self.location.href:"undefined"!=typeof document&&document.currentScript&&(p=document.currentScript.src),r&&(p=r),p=0!==p.indexOf("blob:")?p.substr(0,p.replace(/[?#].*/,"").lastIndexOf("/")+1):"",h||(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},u&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)}));h&&"undefined"==typeof performance&&(global.performance=_("perf_hooks").performance);var v=console.log.bind(console),b=console.error.bind(console);h&&(v=function(){for(var e=arguments.length,t=new Array(e),r=0;re.startsWith(Q),te=e=>e.startsWith("file://");function re(e){if(e==J&&w)return new Uint8Array(w);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function ie(e){if(!w&&(c||u)){if("function"==typeof fetch&&!te(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>re(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>re(e)))}function ne(e,t,r){return ie(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{x(`failed to asynchronously prepare wasm: ${e}`),Z(e)}))}function se(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||ee(t)||te(t)||h||"function"!=typeof fetch?ne(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return x(`wasm streaming compile failed: ${e}`),x("falling back to ArrayBuffer instantiation"),ne(t,r,i)}))))}function ae(){var e={a:hi};function t(e,t){return fi=e.exports,Ie(fi.R),Te=fi.V,W(fi.N),E=t,X(),fi}if(K(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){x(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return se(w,J,e,(function(e){t(e.instance,e.module)})).catch(i),{}}function oe(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}n.locateFile?ee(J="decoder-pro-simd-mt-worker.wasm")||(J=m(J)):J=new URL("decoder-pro-simd-mt-worker.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href).href;var de=e=>{e.terminate(),e.onmessage=e=>{}},le=e=>{var t=Ae.pthreads[e];delete Ae.pthreads[e],de(t),wi(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(t),1),t.pthread_ptr=0},ce=e=>{Ae.pthreads[e].postMessage({cmd:"cancel"})},ue=e=>{var t=Ae.pthreads[e];Ae.returnWorkerToPool(t)},he=e=>{var t=Ae.getNewWorker();if(!t)return 6;Ae.runningWorkers.push(t),Ae.pthreads[e.pthread_ptr]=t,t.pthread_ptr=e.pthread_ptr;var r={cmd:"run",start_routine:e.startRoutine,arg:e.arg,pthread_ptr:e.pthread_ptr};return h&&t.unref(),t.postMessage(r,e.transferList),0},fe=0,pe=()=>Pe||fe>0,me="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,_e=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&me)return me.decode(e.buffer instanceof SharedArrayBuffer?e.slice(t,n):e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},ge=(e,t)=>e?_e(T,e,t):"",ye=e=>{var t=xi(),r=e();return Bi(t),r},ve=function(e,t){var r=arguments.length-2,i=arguments;return ye((()=>{for(var n=r,s=Ui(8*n),a=s>>3,o=0;o{if(B=e,f)throw Ue(e),"unwind";be(e)},Se=we,Ee=e=>{if(e instanceof oe||"unwind"==e)return B;l(1,e)},Ae={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init(){f?Ae.initWorker():Ae.initMainThread()},initMainThread(){for(var e=8;e--;)Ae.allocateUnusedWorker();V((()=>{K(),Ae.loadWasmModuleToAllWorkers((()=>X()))}))},initWorker(){Pe=!1},setExitStatus:e=>{B=e},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:()=>{for(var e of Ae.runningWorkers)de(e);for(var e of Ae.unusedWorkers)de(e);Ae.unusedWorkers=[],Ae.runningWorkers=[],Ae.pthreads=[]},returnWorkerToPool:e=>{var t=e.pthread_ptr;delete Ae.pthreads[t],Ae.unusedWorkers.push(e),Ae.runningWorkers.splice(Ae.runningWorkers.indexOf(e),1),e.pthread_ptr=0,wi(t)},receiveObjectTransfer(e){},threadInitTLS(){Ae.tlsInitFunctions.forEach((e=>e()))},loadWasmModuleToWorker:e=>new Promise((t=>{e.onmessage=r=>{var i=r.data,s=i.cmd;if(i.targetThread&&i.targetThread!=_i()){var a=Ae.pthreads[i.targetThread];a?a.postMessage(i,i.transferList):x(`Internal error! Worker sent a message "${s}" to target pthread ${i.targetThread}, but that thread no longer exists!`)}else"checkMailbox"===s?Fr():"spawnThread"===s?he(i):"cleanupThread"===s?ue(i.thread):"killThread"===s?le(i.thread):"cancelThread"===s?ce(i.thread):"loaded"===s?(e.loaded=!0,h&&!e.pthread_ptr&&e.unref(),t(e)):"alert"===s?alert(`Thread ${i.threadId}: ${i.text}`):"setimmediate"===i.target?e.postMessage(i):"callHandler"===s?n[i.handler](...i.args):s&&x(`worker sent an unknown command ${s}`)},e.onerror=e=>{throw x(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},h&&(e.on("message",(t=>e.onmessage({data:t}))),e.on("error",(t=>e.onerror(t))));var r=[];for(var i of["onExit","onAbort","print","printErr"])n.hasOwnProperty(i)&&r.push(i);e.postMessage({cmd:"load",handlers:r,urlOrBlob:n.mainScriptUrlOrBlob,wasmMemory:S,wasmModule:E})})),loadWasmModuleToAllWorkers(e){if(f)return e();Promise.all(Ae.unusedWorkers.map(Ae.loadWasmModuleToWorker)).then(e)},allocateUnusedWorker(){var e;if(n.locateFile){var t=m("decoder-pro-simd-mt-worker.worker.js");e=new Worker(t,{type:"module"})}else e=new Worker(new URL("decoder-pro-simd-mt-worker.worker.js","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href),{type:"module"});Ae.unusedWorkers.push(e)},getNewWorker:()=>(0==Ae.unusedWorkers.length&&(Ae.allocateUnusedWorker(),Ae.loadWasmModuleToWorker(Ae.unusedWorkers[0])),Ae.unusedWorkers.pop())};n.PThread=Ae;var xe=e=>{for(;e.length>0;)e.shift()(n)},Be=()=>{var e=_i(),t=P[e+52>>2],r=P[e+56>>2];Ai(t,t-r),Bi(t)};function Ue(e){if(f)return ve(1,0,e);Se(e)}n.establishStackSpace=Be;var Te,ke=[],Ce=e=>{var t=ke[e];return t||(e>=ke.length&&(ke.length=e+1),ke[e]=t=Te.get(e)),t},De=(e,t)=>{!function(e){pe()?Ae.setExitStatus(e):Si(e)}(Ce(e)(t))};n.invokeEntryPoint=De;var Pe=n.noExitRuntime||!0,Ie=e=>{Ae.tlsInitFunctions.push(e)},Fe=(e,t,r,i)=>{Z(`Assertion failed: ${ge(e)}, at: `+[t?ge(t):"unknown filename",r,i?ge(i):"unknown function"])};function Le(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){P[this.ptr+4>>2]=e},this.get_type=function(){return P[this.ptr+4>>2]},this.set_destructor=function(e){P[this.ptr+8>>2]=e},this.get_destructor=function(){return P[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,U[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=U[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,U[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=U[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){P[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return P[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Ti(this.get_type()))return P[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}var Me=(e,t,r)=>{throw new Le(e).init(t,r),e},Re=e=>{yi(e,!u,1,!c,65536,!1),Ae.threadInitTLS()},ze=e=>{f?postMessage({cmd:"cleanupThread",thread:e}):ue(e)};function Ne(e,t,r,i){return f?ve(2,1,e,t,r,i):He(e,t,r,i)}var Oe,$e,Ge,He=(e,t,r,i)=>{if("undefined"==typeof SharedArrayBuffer)return x("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var n=[];if(f&&0===n.length)return Ne(e,t,r,i);var s={startRoutine:r,pthread_ptr:e,arg:i,transferList:n};return f?(s.cmd="spawnThread",postMessage(s,n),0):he(s)},Ve=(e,t,r,i,n)=>{},We=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Oe=e},je=e=>{for(var t="",r=e;T[r];)t+=Oe[T[r++]];return t},qe={},Ye={},Ke={},Xe=e=>{throw new $e(e)},Ze=e=>{throw new Ge(e)},Je=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&Ze("Mismatched type converter count");for(var n=0;n{Ye.hasOwnProperty(e)?n[t]=Ye[e]:(s.push(e),qe.hasOwnProperty(e)||(qe[e]=[]),qe[e].push((()=>{n[t]=Ye[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function Qe(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||Xe(`type "${i}" must have a positive integer typeid pointer`),Ye.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;Xe(`Cannot register type '${i}' twice`)}if(Ye[e]=t,delete Ke[e],qe.hasOwnProperty(e)){var n=qe[e];delete qe[e],n.forEach((e=>e()))}}function et(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Qe(e,t,r)}var tt,rt=8,it=(e,t,r,i)=>{et(e,{name:t=je(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:rt,readValueFromPointer:function(e){return this.fromWireType(T[e])},destructorFunction:null})},nt=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),st=e=>{Xe(e.$$.ptrType.registeredClass.name+" instance already deleted")},at=!1,ot=e=>{},dt=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},lt=e=>{e.count.value-=1,0===e.count.value&&dt(e)},ct=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=ct(e,t,r.baseClass);return null===i?null:r.downcast(i)},ut={},ht=()=>Object.keys(yt).length,ft=()=>{var e=[];for(var t in yt)yt.hasOwnProperty(t)&&e.push(yt[t]);return e},pt=[],mt=()=>{for(;pt.length;){var e=pt.pop();e.$$.deleteScheduled=!1,e.delete()}},_t=e=>{tt=e,pt.length&&tt&&tt(mt)},gt=()=>{n.getInheritedInstanceCount=ht,n.getLiveInheritedInstances=ft,n.flushPendingDeletes=mt,n.setDelayFunction=_t},yt={},vt=(e,t)=>{for(void 0===t&&Xe("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},bt=(e,t)=>(t=vt(e,t),yt[t]),wt=(e,t)=>(t.ptrType&&t.ptr||Ze("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&Ze("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Et(Object.create(e,{$$:{value:t}})));function St(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=bt(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?wt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):wt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=ut[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=ct(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?wt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):wt(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Et=e=>"undefined"==typeof FinalizationRegistry?(Et=e=>e,e):(at=new FinalizationRegistry((e=>{lt(e.$$)})),Et=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};at.register(e,r,e)}return e},ot=e=>at.unregister(e),Et(e)),At=()=>{Object.assign(xt.prototype,{isAliasOf(e){if(!(this instanceof xt))return!1;if(!(e instanceof xt))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||st(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Et(Object.create(Object.getPrototypeOf(this),{$$:{value:nt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||st(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),ot(this),lt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||st(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Xe("Object already scheduled for deletion"),pt.push(this),1===pt.length&&tt&&tt(mt),this.$$.deleteScheduled=!0,this}})};function xt(){}var Bt=(e,t)=>Object.defineProperty(t,"name",{value:e}),Ut=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Xe(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},Tt=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&Xe(`Cannot register public name '${e}' twice`),Ut(n,e,e),n.hasOwnProperty(r)&&Xe(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))},kt=48,Ct=57,Dt=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=kt&&t<=Ct?`_${e}`:e};function Pt(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var It=(e,t,r)=>{for(;t!==r;)t.upcast||Xe(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Ft(e,t){if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return It(t.$$.ptr,r,this.registeredClass)}function Lt(e,t){var r;if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&Xe(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=It(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Xe("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:Xe(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,lr.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:Xe("Unsupporting sharing policy")}return r}function Mt(e,t){if(null===t)return this.isReference&&Xe(`null is not a valid ${this.name}`),0;t.$$||Xe(`Cannot pass "${hr(t)}" as a ${this.name}`),t.$$.ptr||Xe(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&Xe(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return It(t.$$.ptr,r,this.registeredClass)}function Rt(e){return this.fromWireType(P[e>>2])}var zt=()=>{Object.assign(Nt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:rt,readValueFromPointer:Rt,deleteObject(e){null!==e&&e.delete()},fromWireType:St})};function Nt(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Lt:i?(this.toWireType=Ft,this.destructorFunction=null):(this.toWireType=Mt,this.destructorFunction=null)}var Ot,$t=(e,t,r)=>{n.hasOwnProperty(e)||Ze("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},Gt=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},Ht=(e,t,r)=>e.includes("j")?Gt(e,t,r):Ce(t).apply(null,r),Vt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),Ht(e,t,r)}},Wt=(e,t)=>{var r=(e=je(e)).includes("j")?Vt(e,t):Ce(t);return"function"!=typeof r&&Xe(`unknown function pointer with signature ${e}: ${t}`),r},jt=(e,t)=>{var r=Bt(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},qt=e=>{var t=gi(e),r=je(t);return pi(t),r},Yt=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||Ye[t]||(Ke[t]?Ke[t].forEach(e):(r.push(t),i[t]=!0))})),new Ot(`${e}: `+r.map(qt).join([", "]))},Kt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=je(c),s=Wt(n,s),o&&(o=Wt(a,o)),l&&(l=Wt(d,l)),h=Wt(u,h);var f=Dt(c);Tt(f,(function(){Yt(`Cannot construct ${c} due to unbound types`,[i])})),Je([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:xt.prototype;var a=Bt(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new $e("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new $e(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new $e(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Pt(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new Nt(c,u,!0,!1,!1),m=new Nt(c+"*",u,!1,!1,!1),_=new Nt(c+" const*",u,!1,!0,!1);return ut[e]={pointerType:m,constPointerType:_},$t(f,a),[p,m,_]}))},Xt=(e,t)=>{for(var r=[],i=0;i>2]);return r},Zt=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Jt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=Bt(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function Qt(e,t,r,i,n,s){var a=t.length;a<2&&Xe("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=Xt(t,r);n=Wt(i,n),Je([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new $e(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{Yt(`Cannot construct ${e.name} due to unbound types`,a)},Je([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=Qt(r,i,null,n,s),[]))),[]}))},tr=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},rr=(e,t,r,i,n,s,a,o,d)=>{var l=Xt(r,i);t=je(t),t=tr(t),s=Wt(n,s),Je([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){Yt(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(Ut(c,t,i),c[t].overloadTable[r-2]=n),Je([],l,(function(n){var o=Qt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function ir(){Object.assign(nr.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function nr(){this.allocated=[void 0],this.freelist=[]}var sr=new nr,ar=e=>{e>=sr.reserved&&0==--sr.get(e).refcount&&sr.free(e)},or=()=>{for(var e=0,t=sr.reserved;t{sr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),sr.reserved=sr.allocated.length,n.count_emval_handles=or},lr={toValue:e=>(e||Xe("Cannot use deleted val. handle = "+e),sr.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return sr.allocate({refcount:1,value:e})}}};function cr(e){return this.fromWireType(D[e>>2])}var ur=(e,t)=>{et(e,{name:t=je(t),fromWireType:e=>{var t=lr.toValue(e);return ar(e),t},toWireType:(e,t)=>lr.toHandle(t),argPackAdvance:rt,readValueFromPointer:cr,destructorFunction:null})},hr=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},fr=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(I[e>>2])};case 8:return function(e){return this.fromWireType(F[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},pr=(e,t,r)=>{et(e,{name:t=je(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:rt,readValueFromPointer:fr(t,r),destructorFunction:null})},mr=(e,t,r)=>{switch(t){case 1:return r?e=>U[e>>0]:e=>T[e>>0];case 2:return r?e=>k[e>>1]:e=>C[e>>1];case 4:return r?e=>D[e>>2]:e=>P[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},_r=(e,t,r,i,n)=>{t=je(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");et(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:rt,readValueFromPointer:mr(t,r,0!==i),destructorFunction:null})},gr=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=P[e>>2],r=P[e+4>>2];return new i(U.buffer,r,t)}et(e,{name:r=je(r),fromWireType:n,argPackAdvance:rt,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},yr=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n},vr=(e,t,r)=>yr(e,T,t,r),br=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},wr=(e,t)=>{var r="std::string"===(t=je(t));et(e,{name:t,fromWireType(e){var t,i=P[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==T[o]){var d=ge(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)vr(t,a,i+1);else if(n)for(var o=0;o255&&(pi(a),Xe("String has UTF-16 code units that do not fit in 8 bits")),T[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&C[i];)++i;if((r=i<<1)-e>32&&Sr)return Sr.decode(T.slice(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=k[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},Ar=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return k[t>>1]=0,t-i},xr=e=>2*e.length,Br=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=D[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},Ur=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),D[t>>2]=a,(t+=4)+4>n)break}return D[t>>2]=0,t-i},Tr=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},kr=(e,t,r)=>{var i,n,s,a,o;r=je(r),2===t?(i=Er,n=Ar,a=xr,s=()=>C,o=1):4===t&&(i=Br,n=Ur,a=Tr,s=()=>P,o=2),et(e,{name:r,fromWireType:e=>{for(var r,n=P[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return pi(e),r},toWireType:(e,i)=>{"string"!=typeof i&&Xe(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=mi(4+s+t);return P[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(pi,d),d},argPackAdvance:rt,readValueFromPointer:cr,destructorFunction(e){pi(e)}})},Cr=(e,t)=>{et(e,{isVoid:!0,name:t=je(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},Dr=()=>{if(!pe())try{f?Si(B):Se(B)}catch(e){Ee(e)}},Pr=e=>{if(!L)try{e(),Dr()}catch(e){Ee(e)}},Ir=e=>{if("function"==typeof Atomics.waitAsync){Atomics.waitAsync(D,e>>2,e).value.then(Fr);var t=e+128;Atomics.store(D,t>>2,1)}};n.__emscripten_thread_mailbox_await=Ir;var Fr=()=>{var e=_i();e&&(Ir(e),Pr(Ei))};n.checkMailbox=Fr;var Lr,Mr=(e,t,r)=>{if(e==t)setTimeout((()=>Fr()));else if(f)postMessage({targetThread:e,cmd:"checkMailbox"});else{var i=Ae.pthreads[e];if(!i)return;i.postMessage({cmd:"checkMailbox"})}},Rr=[],zr=(e,t,r,i)=>{Rr.length=r;for(var n=i>>3,s=0;s{h&&Ae.pthreads[e].ref()},Or={},$r=e=>{var t=Or[e];return void 0===t?je(e):t},Gr=[],Hr=(e,t,r,i,n)=>(e=Gr[e])(t=lr.toValue(t),t[r=$r(r)],i,n),Vr=e=>{var t=Gr.length;return Gr.push(e),t},Wr=(e,t)=>{var r=Ye[e];return void 0===r&&Xe(t+" has unknown type "+qt(e)),r},jr=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},qr=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(P[t>>2]=lr.toHandle(i)),n},Yr=(e,t,r)=>{var i=jr(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return Vr(Bt(h,u))},Kr=e=>{e>4&&(sr.get(e).refcount+=1)},Xr=e=>lr.toHandle($r(e)),Zr=()=>lr.toHandle({}),Jr=e=>lr.toHandle(ge(e)),Qr=e=>{var t=lr.toValue(e);Zt(t),ar(e)},ei=(e,t,r)=>{e=lr.toValue(e),t=lr.toValue(t),r=lr.toValue(r),e[t]=r},ti=(e,t)=>{var r=(e=Wr(e,"_emval_take_value")).readValueFromPointer(t);return lr.toHandle(r)},ri=()=>{Z("")},ii=()=>{},ni=()=>{fe+=1},si=()=>{throw ni(),"unwind"};Lr=()=>performance.timeOrigin+performance.now();var ai=e=>{Z("OOM")},oi=e=>{T.length,ai()},di=[null,[],[]],li=(e,t)=>{var r=di[e];0===t||10===t?((1===e?A:x)(_e(r,0)),r.length=0):r.push(t)};function ci(e,t,r,i){if(f)return ve(3,1,e,t,r,i);for(var n=0,s=0;s>2],o=P[t+4>>2];t+=8;for(var d=0;d>2]=n,0}Ae.init(),We(),$e=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},Ge=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},At(),gt(),zt(),Ot=n.UnboundTypeError=jt(Error,"UnboundTypeError"),ir(),dr();var ui=[be,Ue,Ne,ci],hi={e:Fe,s:Me,D:Re,m:ze,A:He,v:Ve,J:it,u:Kt,t:er,i:rr,I:ur,o:pr,c:_r,b:gr,p:wr,j:kr,K:Cr,x:Mr,E:zr,C:Ir,G:Nr,h:Hr,d:ar,g:Yr,L:Kr,q:Xr,H:Zr,B:Jr,k:Qr,r:ei,M:ti,l:ri,n:ii,F:si,f:Lr,w:oi,z:Se,y:ci,a:S||n.wasmMemory},fi=ae(),pi=e=>(pi=fi.O)(e),mi=e=>(mi=fi.P)(e),_i=n._pthread_self=()=>(_i=n._pthread_self=fi.Q)();n.__emscripten_tls_init=()=>(n.__emscripten_tls_init=fi.R)();var gi=e=>(gi=fi.S)(e);n.__embind_initialize_bindings=()=>(n.__embind_initialize_bindings=fi.T)();var yi=n.__emscripten_thread_init=(e,t,r,i,s,a)=>(yi=n.__emscripten_thread_init=fi.U)(e,t,r,i,s,a);n.__emscripten_thread_crashed=()=>(n.__emscripten_thread_crashed=fi.W)();var vi,bi=(e,t,r,i)=>(bi=fi.X)(e,t,r,i),wi=e=>(wi=fi.Y)(e),Si=n.__emscripten_thread_exit=e=>(Si=n.__emscripten_thread_exit=fi.Z)(e),Ei=()=>(Ei=fi._)(),Ai=(e,t)=>(Ai=fi.$)(e,t),xi=()=>(xi=fi.aa)(),Bi=e=>(Bi=fi.ba)(e),Ui=e=>(Ui=fi.ca)(e),Ti=e=>(Ti=fi.da)(e);function ki(){if(!(q>0)){if(f)return t(n),G(),void startWorker(n);$(),q>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e())}function e(){vi||(vi=!0,n.calledRun=!0,L||(G(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),H()))}}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=fi.ea)(e,t,r,i,s),n.___start_em_js=143500,n.___stop_em_js=143557,n.wasmMemory=S,n.keepRuntimeAlive=pe,n.ExitStatus=oe,n.PThread=Ae,Y=function e(){vi||ki(),vi||(Y=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return ki(),e.ready}),a=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,s,a,o,d,l,c=Object.assign({},t),u="./this.program",h="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=f?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(o=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{l(),e=d.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(u=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof J))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),g=t.printErr||console.warn.bind(console);Object.assign(t,c),c=null,t.arguments&&t.arguments,t.thisProgram&&(u=t.thisProgram),t.quit&&t.quit;var y,v;t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&V("no native wasm support detected");var b=!1;function w(e,t){e||V(t)}var S,E,A,x,B,U,T,k,C,D,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&P)return P.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function F(e,t){return e?I(A,e,t):""}function L(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a);if(o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var R=[],z=[],N=[];var O=0,$=null;function G(e){O++,t.monitorRunDependencies&&t.monitorRunDependencies(O)}function H(e){if(O--,t.monitorRunDependencies&&t.monitorRunDependencies(O),0==O&&$){var r=$;$=null,r()}}function V(e){t.onAbort&&t.onAbort(e),g(e="Aborted("+e+")"),b=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var W,j,q,Y;function K(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){return e.startsWith("file://")}function Z(e){try{if(e==W&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Q(e){for(;e.length>0;)e.shift()(t)}function ee(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){T[this.ptr+4>>2]=e},this.get_type=function(){return T[this.ptr+4>>2]},this.set_destructor=function(e){T[this.ptr+8>>2]=e},this.get_destructor=function(){return T[this.ptr+8>>2]},this.set_refcount=function(e){U[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,E[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=E[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,E[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=E[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=U[this.ptr>>2];U[this.ptr>>2]=e+1},this.release_ref=function(){var e=U[this.ptr>>2];return U[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){T[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return T[this.ptr+16>>2]},this.get_exception_ptr=function(){if(jt(this.get_type()))return T[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?K(W="decoder-pro-audio.wasm")||(j=W,W=t.locateFile?t.locateFile(j,m):m+j):W=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd-mt.js",document.baseURI).href).toString();var te={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=te.isAbs(e),r="/"===e.substr(-1);return(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=te.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return te.normalize(e.join("/"))},join2:(e,t)=>te.normalize(e+"/"+t)};var re={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:oe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=te.isAbs(i)}return(t?"/":"")+(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=re.resolve(e).substr(1),t=re.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o0?r:M(e)+1,n=new Array(i),s=L(e,n,0,n.length);return t&&(n.length=s),n}var ne={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ne.ttys[e]={input:[],output:[],ops:t},oe.registerDevice(e,ne.stream_ops)},stream_ops:{open:function(e){var t=ne.ttys[e.node.rdev];if(!t)throw new oe.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new oe.ErrnoError(60);for(var s=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ie(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(I(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(g(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g(I(e.output,0)),e.output=[])}}};function se(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Wt(65536,e);return t?(function(e,t){A.fill(0,e,e+t)}(t,e),t):0}var ae={ops_table:null,mount:function(e){return ae.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(oe.isBlkdev(r)||oe.isFIFO(r))throw new oe.ErrnoError(63);ae.ops_table||(ae.ops_table={dir:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,lookup:ae.node_ops.lookup,mknod:ae.node_ops.mknod,rename:ae.node_ops.rename,unlink:ae.node_ops.unlink,rmdir:ae.node_ops.rmdir,readdir:ae.node_ops.readdir,symlink:ae.node_ops.symlink},stream:{llseek:ae.stream_ops.llseek}},file:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:{llseek:ae.stream_ops.llseek,read:ae.stream_ops.read,write:ae.stream_ops.write,allocate:ae.stream_ops.allocate,mmap:ae.stream_ops.mmap,msync:ae.stream_ops.msync}},link:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,readlink:ae.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:oe.chrdev_stream_ops}});var n=oe.createNode(e,t,r,i);return oe.isDir(n.mode)?(n.node_ops=ae.ops_table.dir.node,n.stream_ops=ae.ops_table.dir.stream,n.contents={}):oe.isFile(n.mode)?(n.node_ops=ae.ops_table.file.node,n.stream_ops=ae.ops_table.file.stream,n.usedBytes=0,n.contents=null):oe.isLink(n.mode)?(n.node_ops=ae.ops_table.link.node,n.stream_ops=ae.ops_table.link.stream):oe.isChrdev(n.mode)&&(n.node_ops=ae.ops_table.chrdev.node,n.stream_ops=ae.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=oe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,oe.isDir(e.mode)?t.size=4096:oe.isFile(e.mode)?t.size=e.usedBytes:oe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&ae.resizeFileStorage(e,t.size)},lookup:function(e,t){throw oe.genericErrors[44]},mknod:function(e,t,r,i){return ae.createNode(e,t,r,i)},rename:function(e,t,r){if(oe.isDir(e.mode)){var i;try{i=oe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new oe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=oe.lookupNode(e,t);for(var i in r.contents)throw new oe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=ae.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!oe.isLink(e.mode))throw new oe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=re.resolve(oe.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new oe.ErrnoError(32);for(var i=te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=oe.root,s="/",a=0;a40)throw new oe.ErrnoError(32)}}return{path:s,node:n}},getPath:e=>{for(var t;;){if(oe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%oe.nameTable.length},hashAddNode:e=>{var t=oe.hashName(e.parent.id,e.name);e.name_next=oe.nameTable[t],oe.nameTable[t]=e},hashRemoveNode:e=>{var t=oe.hashName(e.parent.id,e.name);if(oe.nameTable[t]===e)oe.nameTable[t]=e.name_next;else for(var r=oe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=oe.mayLookup(e);if(r)throw new oe.ErrnoError(r,e);for(var i=oe.hashName(e.id,t),n=oe.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return oe.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new oe.FSNode(e,t,r,i);return oe.hashAddNode(n),n},destroyNode:e=>{oe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=oe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>oe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=oe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{oe.lookupNode(e,t);return 20}catch(e){}return oe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=oe.lookupNode(e,t)}catch(e){return e.errno}var n=oe.nodePermissions(e,"wx");if(n)return n;if(r){if(!oe.isDir(i.mode))return 54;if(oe.isRoot(i)||oe.getPath(i)===oe.cwd())return 10}else if(oe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?oe.isLink(e.mode)?32:oe.isDir(e.mode)&&("r"!==oe.flagsToPermissionString(t)||512&t)?31:oe.nodePermissions(e,oe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!oe.streams[r])return r;throw new oe.ErrnoError(33)},getStream:e=>oe.streams[e],createStream:(e,t,r)=>{oe.FSStream||(oe.FSStream=function(){this.shared={}},oe.FSStream.prototype={},Object.defineProperties(oe.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new oe.FSStream,e);var i=oe.nextfd(t,r);return e.fd=i,oe.streams[i]=e,e},closeStream:e=>{oe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=oe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new oe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{oe.devices[e]={stream_ops:t}},getDevice:e=>oe.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),oe.syncFSRequests++,oe.syncFSRequests>1&&g("warning: "+oe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=oe.getMounts(oe.root.mount),i=0;function n(e){return oe.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&oe.root)throw new oe.ErrnoError(10);if(!n&&!s){var a=oe.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,oe.isMountpoint(i))throw new oe.ErrnoError(10);if(!oe.isDir(i.mode))throw new oe.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?oe.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount:e=>{var t=oe.lookupPath(e,{follow_mount:!1});if(!oe.isMountpoint(t.node))throw new oe.ErrnoError(28);var r=t.node,i=r.mounted,n=oe.getMounts(i);Object.keys(oe.nameTable).forEach((e=>{for(var t=oe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&oe.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=oe.lookupPath(e,{parent:!0}).node,n=te.basename(e);if(!n||"."===n||".."===n)throw new oe.ErrnoError(28);var s=oe.mayCreate(i,n);if(s)throw new oe.ErrnoError(s);if(!i.node_ops.mknod)throw new oe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,oe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,oe.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,oe.mknod(e,t,r)),symlink:(e,t)=>{if(!re.resolve(e))throw new oe.ErrnoError(44);var r=oe.lookupPath(t,{parent:!0}).node;if(!r)throw new oe.ErrnoError(44);var i=te.basename(t),n=oe.mayCreate(r,i);if(n)throw new oe.ErrnoError(n);if(!r.node_ops.symlink)throw new oe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=te.dirname(e),s=te.dirname(t),a=te.basename(e),o=te.basename(t);if(r=oe.lookupPath(e,{parent:!0}).node,i=oe.lookupPath(t,{parent:!0}).node,!r||!i)throw new oe.ErrnoError(44);if(r.mount!==i.mount)throw new oe.ErrnoError(75);var d,l=oe.lookupNode(r,a),c=re.relative(e,s);if("."!==c.charAt(0))throw new oe.ErrnoError(28);if("."!==(c=re.relative(t,n)).charAt(0))throw new oe.ErrnoError(55);try{d=oe.lookupNode(i,o)}catch(e){}if(l!==d){var u=oe.isDir(l.mode),h=oe.mayDelete(r,a,u);if(h)throw new oe.ErrnoError(h);if(h=d?oe.mayDelete(i,o,u):oe.mayCreate(i,o))throw new oe.ErrnoError(h);if(!r.node_ops.rename)throw new oe.ErrnoError(63);if(oe.isMountpoint(l)||d&&oe.isMountpoint(d))throw new oe.ErrnoError(10);if(i!==r&&(h=oe.nodePermissions(r,"w")))throw new oe.ErrnoError(h);oe.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{oe.hashAddNode(l)}}},rmdir:e=>{var t=oe.lookupPath(e,{parent:!0}).node,r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!0);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.rmdir)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.rmdir(t,r),oe.destroyNode(i)},readdir:e=>{var t=oe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new oe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=oe.lookupPath(e,{parent:!0}).node;if(!t)throw new oe.ErrnoError(44);var r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!1);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.unlink)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.unlink(t,r),oe.destroyNode(i)},readlink:e=>{var t=oe.lookupPath(e).node;if(!t)throw new oe.ErrnoError(44);if(!t.node_ops.readlink)throw new oe.ErrnoError(28);return re.resolve(oe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=oe.lookupPath(e,{follow:!t}).node;if(!r)throw new oe.ErrnoError(44);if(!r.node_ops.getattr)throw new oe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>oe.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=oe.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new oe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{oe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);oe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=oe.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new oe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{oe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=oe.getStream(e);if(!i)throw new oe.ErrnoError(8);oe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new oe.ErrnoError(28);var r;"string"==typeof e?r=oe.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new oe.ErrnoError(63);if(oe.isDir(r.mode))throw new oe.ErrnoError(31);if(!oe.isFile(r.mode))throw new oe.ErrnoError(28);var i=oe.nodePermissions(r,"w");if(i)throw new oe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);if(0==(2097155&r.flags))throw new oe.ErrnoError(28);oe.truncate(r.node,t)},utime:(e,t,r)=>{var i=oe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new oe.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?oe.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=te.normalize(e);try{n=oe.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new oe.ErrnoError(20)}else n=oe.mknod(e,i,0),s=!0;if(!n)throw new oe.ErrnoError(44);if(oe.isChrdev(n.mode)&&(r&=-513),65536&r&&!oe.isDir(n.mode))throw new oe.ErrnoError(54);if(!s){var a=oe.mayOpen(n,r);if(a)throw new oe.ErrnoError(a)}512&r&&!s&&oe.truncate(n,0),r&=-131713;var o=oe.createStream({node:n,path:oe.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!t.logReadFiles||1&r||(oe.readFiles||(oe.readFiles={}),e in oe.readFiles||(oe.readFiles[e]=1)),o},close:e=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{oe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new oe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new oe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(1==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.read)throw new oe.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.write)throw new oe.ErrnoError(28);e.seekable&&1024&e.flags&&oe.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(t<0||r<=0)throw new oe.ErrnoError(28);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(!oe.isFile(e.node.mode)&&!oe.isDir(e.node.mode))throw new oe.ErrnoError(43);if(!e.stream_ops.allocate)throw new oe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new oe.ErrnoError(2);if(1==(2097155&e.flags))throw new oe.ErrnoError(2);if(!e.stream_ops.mmap)throw new oe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new oe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=oe.open(e,t.flags),n=oe.stat(e),s=n.size,a=new Uint8Array(s);return oe.read(i,a,0,s,0),"utf8"===t.encoding?r=I(a,0):"binary"===t.encoding&&(r=a),oe.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=oe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),s=L(t,n,0,n.length);oe.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");oe.write(i,t,0,t.byteLength,void 0,r.canOwn)}oe.close(i)},cwd:()=>oe.currentPath,chdir:e=>{var t=oe.lookupPath(e,{follow:!0});if(null===t.node)throw new oe.ErrnoError(44);if(!oe.isDir(t.node.mode))throw new oe.ErrnoError(54);var r=oe.nodePermissions(t.node,"x");if(r)throw new oe.ErrnoError(r);oe.currentPath=t.path},createDefaultDirectories:()=>{oe.mkdir("/tmp"),oe.mkdir("/home"),oe.mkdir("/home/web_user")},createDefaultDevices:()=>{oe.mkdir("/dev"),oe.registerDevice(oe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),oe.mkdev("/dev/null",oe.makedev(1,3)),ne.register(oe.makedev(5,0),ne.default_tty_ops),ne.register(oe.makedev(6,0),ne.default_tty1_ops),oe.mkdev("/dev/tty",oe.makedev(5,0)),oe.mkdev("/dev/tty1",oe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>V("randomDevice")}();oe.createDevice("/dev","random",e),oe.createDevice("/dev","urandom",e),oe.mkdir("/dev/shm"),oe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{oe.mkdir("/proc");var e=oe.mkdir("/proc/self");oe.mkdir("/proc/self/fd"),oe.mount({mount:()=>{var t=oe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=oe.getStream(r);if(!i)throw new oe.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?oe.createDevice("/dev","stdin",t.stdin):oe.symlink("/dev/tty","/dev/stdin"),t.stdout?oe.createDevice("/dev","stdout",null,t.stdout):oe.symlink("/dev/tty","/dev/stdout"),t.stderr?oe.createDevice("/dev","stderr",null,t.stderr):oe.symlink("/dev/tty1","/dev/stderr"),oe.open("/dev/stdin",0),oe.open("/dev/stdout",1),oe.open("/dev/stderr",1)},ensureErrnoError:()=>{oe.ErrnoError||(oe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},oe.ErrnoError.prototype=new Error,oe.ErrnoError.prototype.constructor=oe.ErrnoError,[44].forEach((e=>{oe.genericErrors[e]=new oe.ErrnoError(e),oe.genericErrors[e].stack=""})))},staticInit:()=>{oe.ensureErrnoError(),oe.nameTable=new Array(4096),oe.mount(ae,{},"/"),oe.createDefaultDirectories(),oe.createDefaultDevices(),oe.createSpecialDirectories(),oe.filesystems={MEMFS:ae}},init:(e,r,i)=>{oe.init.initialized=!0,oe.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,oe.createStandardStreams()},quit:()=>{oe.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=oe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=oe.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=oe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=te.basename(e),i=oe.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:oe.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var a=te.join2(e,s);try{oe.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,n)=>{var s=te.join2("string"==typeof e?e:oe.getPath(e),t),a=oe.getMode(i,n);return oe.create(s,a)},createDataFile:(e,t,r,i,n,s)=>{var a=t;e&&(e="string"==typeof e?e:oe.getPath(e),a=t?te.join2(e,t):e);var o=oe.getMode(i,n),d=oe.create(a,o);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;c{var n=te.join2("string"==typeof e?e:oe.getPath(e),t),s=oe.getMode(!!r,!!i);oe.createDevice.major||(oe.createDevice.major=64);var a=oe.makedev(oe.createDevice.major++,0);return oe.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ie(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new oe.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ie(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=oe.createFile(e,t,o,i,n);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return oe.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(oe.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{oe.forceLoadFile(d);var s=se(t);if(!s)throw new oe.ErrnoError(48);return c(e,E,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,a,o,d,l,c)=>{var u=t?re.resolve(te.join2(e,t)):e;function h(r){function s(r){c&&c(),d||oe.createDataFile(e,t,r,i,n,l),a&&a(),H()}Browser.handledByPreloadPlugin(r,u,s,(()=>{o&&o(),H()}))||s(r)}G(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{w(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&H()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&G()}(r,(e=>h(e)),o):h(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(oe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([oe.DB_STORE_NAME],"readwrite"),s=i.objectStore(oe.DB_STORE_NAME),a=0,o=0,d=e.length;function l(){0==o?t():r()}e.forEach((e=>{var t=s.put(oe.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==d&&l()},t.onerror=()=>{o++,a+o==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([oe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=s.objectStore(oe.DB_STORE_NAME),o=0,d=0,l=e.length;function c(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{oe.analyzePath(e).exists&&oe.unlink(e),oe.createDataFile(te.dirname(e),te.basename(e),t.result,!0,!0,!0),++o+d==l&&c()},t.onerror=()=>{d++,o+d==l&&c()}})),s.onerror=r},n.onerror=r}},de={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(te.isAbs(t))return t;var i;if(-100===e)i=oe.cwd();else{var n=oe.getStream(e);if(!n)throw new oe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new oe.ErrnoError(44);return i}return te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&te.normalize(t)!==te.normalize(oe.getPath(e.node)))return-54;throw e}return U[r>>2]=i.dev,U[r+4>>2]=0,U[r+8>>2]=i.ino,U[r+12>>2]=i.mode,U[r+16>>2]=i.nlink,U[r+20>>2]=i.uid,U[r+24>>2]=i.gid,U[r+28>>2]=i.rdev,U[r+32>>2]=0,Y=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+40>>2]=Y[0],U[r+44>>2]=Y[1],U[r+48>>2]=4096,U[r+52>>2]=i.blocks,Y=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+56>>2]=Y[0],U[r+60>>2]=Y[1],U[r+64>>2]=0,Y=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+72>>2]=Y[0],U[r+76>>2]=Y[1],U[r+80>>2]=0,Y=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+88>>2]=Y[0],U[r+92>>2]=Y[1],U[r+96>>2]=0,Y=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+104>>2]=Y[0],U[r+108>>2]=Y[1],0},doMsync:function(e,t,r,i,n){var s=A.slice(e,e+r);oe.msync(t,s,n,r,i)},varargs:void 0,get:function(){return de.varargs+=4,U[de.varargs-4>>2]},getStr:function(e){return F(e)},getStreamFromFD:function(e){var t=oe.getStream(e);if(!t)throw new oe.ErrnoError(8);return t}};function le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ce=void 0;function ue(e){for(var t="",r=e;A[r];)t+=ce[A[r++]];return t}var he={},fe={},pe={};function me(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function _e(e,t){return e=me(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function ge(e,t){var r=_e(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ye=void 0;function ve(e){throw new ye(e)}var be=void 0;function we(e){throw new be(e)}function Se(e,t,r){function i(t){var i=r(t);i.length!==e.length&&we("Mismatched type converter count");for(var n=0;n{fe.hasOwnProperty(e)?n[t]=fe[e]:(s.push(e),he.hasOwnProperty(e)||(he[e]=[]),he[e].push((()=>{n[t]=fe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)}function Ee(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||ve('type "'+i+'" must have a positive integer typeid pointer'),fe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ve("Cannot register type '"+i+"' twice")}if(fe[e]=t,delete pe[e],he.hasOwnProperty(e)){var n=he[e];delete he[e],n.forEach((e=>e()))}}function Ae(e){if(!(this instanceof je))return!1;if(!(e instanceof je))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function xe(e){ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var Be=!1;function Ue(e){}function Te(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function ke(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=ke(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ce={};function De(){return Object.keys(Re).length}function Pe(){var e=[];for(var t in Re)Re.hasOwnProperty(t)&&e.push(Re[t]);return e}var Ie=[];function Fe(){for(;Ie.length;){var e=Ie.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function Me(e){Le=e,Ie.length&&Le&&Le(Fe)}var Re={};function ze(e,t){return t=function(e,t){for(void 0===t&&ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Re[t]}function Ne(e,t){return t.ptrType&&t.ptr||we("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&we("Both smartPtrType and smartPtr must be specified"),t.count={value:1},$e(Object.create(e,{$$:{value:t}}))}function Oe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ze(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Ne(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ne(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ce[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=ke(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}function $e(e){return"undefined"==typeof FinalizationRegistry?($e=e=>e,e):(Be=new FinalizationRegistry((e=>{Te(e.$$)})),$e=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};Be.register(e,r,e)}return e},Ue=e=>Be.unregister(e),$e(e))}function Ge(){if(this.$$.ptr||xe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=$e(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function He(){this.$$.ptr||xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ue(this),Te(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function We(){return this.$$.ptr||xe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ie.push(this),1===Ie.length&&Le&&Le(Fe),this.$$.deleteScheduled=!0,this}function je(){}function qe(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Ye(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Ke(e,t,r){for(;t!==r;)t.upcast||ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Xe(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:ve("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(U[e>>2])}function et(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function tt(e){this.rawDestructor&&this.rawDestructor(e)}function rt(e){null!==e&&e.delete()}function it(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var nt=[];function st(e){var t=nt[e];return t||(e>=nt.length&&(nt.length=e+1),nt[e]=t=D.get(e)),t}function at(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):st(r).apply(null,i)}function ot(e,t){var r,i,n,s=(e=ue(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),at(r,i,n)}):st(t);return"function"!=typeof s&&ve("unknown function pointer with signature "+e+": "+t),s}var dt=void 0;function lt(e){var t=Gt(e),r=ue(t);return Ot(t),r}function ct(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||fe[t]||(pe[t]?pe[t].forEach(e):(r.push(t),i[t]=!0))})),new dt(e+": "+r.map(lt).join([", "]))}function ut(e,t){for(var r=[],i=0;i>2]);return r}function ht(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ft(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=_e(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function pt(e,t,r,i,n){var s=t.length;s<2&&ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,d=1;d0?", ":"")+u),h+=(l?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",o)h+="runDestructors(destructors);\n";else for(d=a?1:2;d4&&0==--_t[e].refcount&&(_t[e]=void 0,mt.push(e))}function yt(){for(var e=0,t=5;t<_t.length;++t)void 0!==_t[t]&&++e;return e}function vt(){for(var e=5;e<_t.length;++e)if(void 0!==_t[e])return _t[e];return null}var bt={toValue:e=>(e||ve("Cannot use deleted val. handle = "+e),_t[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=mt.length?mt.pop():_t.length;return _t[t]={refcount:1,value:e},t}}};function wt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function St(e,t){switch(t){case 2:return function(e){return this.fromWireType(k[e>>2])};case 3:return function(e){return this.fromWireType(C[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Et(e,t,r){switch(t){case 0:return r?function(e){return E[e]}:function(e){return A[e]};case 1:return r?function(e){return x[e>>1]}:function(e){return B[e>>1]};case 2:return r?function(e){return U[e>>2]}:function(e){return T[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function xt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&B[i];)++i;if((r=i<<1)-e>32&&At)return At.decode(A.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=x[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function Bt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return x[t>>1]=0,t-i}function Ut(e){return 2*e.length}function Tt(e,t){for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function kt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(U[t>>2]=a,(t+=4)+4>n)break}return U[t>>2]=0,t-i}function Ct(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Dt={};var Pt=[];var It=[];var Ft={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"};for(var t in Ft)void 0===Ft[t]?delete e[t]:e[t]=Ft[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}var Mt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=oe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Rt=365,zt=146;Object.defineProperties(Mt.prototype,{read:{get:function(){return(this.mode&Rt)===Rt},set:function(e){e?this.mode|=Rt:this.mode&=-366}},write:{get:function(){return(this.mode&zt)===zt},set:function(e){e?this.mode|=zt:this.mode&=-147}},isFolder:{get:function(){return oe.isDir(this.mode)}},isDevice:{get:function(){return oe.isChrdev(this.mode)}}}),oe.FSNode=Mt,oe.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ce=e}(),ye=t.BindingError=ge(Error,"BindingError"),be=t.InternalError=ge(Error,"InternalError"),je.prototype.isAliasOf=Ae,je.prototype.clone=Ge,je.prototype.delete=He,je.prototype.isDeleted=Ve,je.prototype.deleteLater=We,t.getInheritedInstanceCount=De,t.getLiveInheritedInstances=Pe,t.flushPendingDeletes=Fe,t.setDelayFunction=Me,it.prototype.getPointee=et,it.prototype.destructor=tt,it.prototype.argPackAdvance=8,it.prototype.readValueFromPointer=Qe,it.prototype.deleteObject=rt,it.prototype.fromWireType=Oe,dt=t.UnboundTypeError=ge(Error,"UnboundTypeError"),t.count_emval_handles=yt,t.get_first_emval=vt;var Nt={q:function(e){return Vt(e+24)+24},p:function(e,t,r){throw new ee(e).init(t,r),e},C:function(e,t,r){de.varargs=r;try{var i=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:oe.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=de.get();return i.flags|=n,0;case 5:n=de.get();return x[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,U[$t()>>2]=s,-1}}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){de.varargs=i;try{t=de.getStr(t),t=de.calculateAt(e,t);var n=i?de.get():0;return oe.open(t,r,n).fd}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=E;else if(2===r)i=x;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=U}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(e,r,i,n,s,a,o,d,l,c,u,h,f){u=ue(u),a=ot(s,a),d&&(d=ot(o,d)),c&&(c=ot(l,c)),f=ot(h,f);var p=me(u);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&ve("Cannot register public name '"+e+"' twice"),qe(t,e,e),t.hasOwnProperty(i)&&ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){ct("Cannot construct "+u+" due to unbound types",[n])})),Se([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:je.prototype;var o=_e(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+u);if(void 0===h.constructor_body)throw new ye(u+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new ye("Tried to invoke ctor of "+u+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(h.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:o}});o.prototype=l;var h=new Ye(u,o,l,f,i,a,d,c),m=new it(u,h,!0,!1,!1),_=new it(u+"*",h,!1,!1,!1),g=new it(u+" const*",h,!1,!0,!1);return Ce[e]={pointerType:_,constPointerType:g},function(e,r,i){t.hasOwnProperty(e)||we("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,o),[m,_,g]}))},r:function(e,t,r,i,n,s){w(t>0);var a=ut(t,r);n=ot(i,n),Se([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ye("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{ct("Cannot construct "+e.name+" due to unbound types",a)},Se([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=pt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,a,o){var d=ut(r,i);t=ue(t),s=ot(n,s),Se([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){ct("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,c=l[t];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(qe(l,t,i),l[t].overloadTable[r-2]=n),Se([],d,(function(n){var o=pt(i,n,e,s,a);return void 0===l[t].overloadTable?(o.argCount=r-2,l[t]=o):l[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Ee(e,{name:t=ue(t),fromWireType:function(e){var t=bt.toValue(e);return gt(e),t},toWireType:function(e,t){return bt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},n:function(e,t,r){var i=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:St(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=ue(t);var s=le(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var d=t.includes("unsigned");Ee(e,{name:t,fromWireType:a,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Et(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=T,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}Ee(e,{name:r=ue(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=ue(t));Ee(e,{name:t,fromWireType:function(e){var t,i=T[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==A[o]){var d=F(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)L(t,A,a,i+1);else if(n)for(var o=0;o255&&(Ot(a),ve("String has UTF-16 code units that do not fit in 8 bits")),A[a+o]=d}else for(o=0;oB,o=1):4===t&&(i=Tt,n=kt,a=Ct,s=()=>T,o=2),Ee(e,{name:r,fromWireType:function(e){for(var r,n=T[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Ot(e),r},toWireType:function(e,i){"string"!=typeof i&&ve("Cannot pass non-string to C++ string type "+r);var s=a(i),d=Vt(4+s+t);return T[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(Ot,d),d},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Ot(e)}})},o:function(e,t){Ee(e,{isVoid:!0,name:t=ue(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=Pt[e])(t=bt.toValue(t),r=void 0===(s=Dt[n=r])?ue(n):s,null,i)},j:gt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),a=0;a>2],i="parameter "+a,n=void 0,void 0===(n=fe[r])&&ve(i+" has unknown type "+lt(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=It[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;l>2]=s,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(E[t>>0]=0)}(i,s),r+=i.length+1})),0},z:function(e,t){var r=Lt();T[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),T[t>>2]=i,0},l:function(e){try{var t=de.getStreamFromFD(e);return oe.close(t),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=de.getStreamFromFD(e),i=r.tty?2:oe.isDir(r.mode)?3:oe.isLink(r.mode)?7:4;return E[t>>0]=i,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.read(e,E,a,o,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(d=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*d:NaN;if(isNaN(s))return 61;var a=de.getStreamFromFD(e);return oe.llseek(a,s,i),Y=[a.position>>>0,(q=a.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[n>>2]=Y[0],U[n+4>>2]=Y[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}var o,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.write(e,E,a,o,i);if(d<0)return-1;n+=d}return n}(de.getStreamFromFD(e),t,r);return T[i>>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Nt};function r(e,r){var i,n,s=e.exports;t.asm=s,v=t.asm.F,i=v.buffer,S=i,t.HEAP8=E=new Int8Array(i),t.HEAP16=x=new Int16Array(i),t.HEAP32=U=new Int32Array(i),t.HEAPU8=A=new Uint8Array(i),t.HEAPU16=B=new Uint16Array(i),t.HEAPU32=T=new Uint32Array(i),t.HEAPF32=k=new Float32Array(i),t.HEAPF64=C=new Float64Array(i),D=t.asm.I,n=t.asm.G,z.unshift(n),H()}function n(e){r(e.instance)}function a(t){return function(){if(!y&&(h||f)){if("function"==typeof fetch&&!X(W))return fetch(W,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+W+"'";return e.arrayBuffer()})).catch((function(){return Z(W)}));if(s)return new Promise((function(e,t){s(W,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Z(W)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){g("failed to asynchronously prepare wasm: "+e),V(e)}))}if(G(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return g("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||K(W)||X(W)||p||"function"!=typeof fetch?a(n):fetch(W,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),a(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Ot=t._free=function(){return(Ot=t._free=t.asm.H).apply(null,arguments)},$t=t.___errno_location=function(){return($t=t.___errno_location=t.asm.J).apply(null,arguments)},Gt=t.___getTypeName=function(){return(Gt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Ht,Vt=t._malloc=function(){return(Vt=t._malloc=t.asm.M).apply(null,arguments)},Wt=t._emscripten_builtin_memalign=function(){return(Wt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},jt=t.___cxa_is_pointer_type=function(){return(jt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function qt(e){function i(){Ht||(Ht=!0,t.calledRun=!0,b||(t.noFSInit||oe.init.initialized||oe.init(),oe.ignorePermissions=!1,Q(z),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),N.unshift(e);var e;Q(N)}()))}O>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),R.unshift(e);var e;Q(R)}(),O>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},$=function e(){Ht||qt(),Ht||($=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return qt(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function c(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var u,h=function(e,t,r,i,n,s,a){var o=1/(t-r),d=1/(i-n),l=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*d,e[14]=(a+s)*l,e[15]=1,e};function f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),a=p(),d=p(),u=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,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)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,Vt=Gt;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===Bt}function qt(e){return e[0]>>4===ze}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Yt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Ht[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new $t(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Ht[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=nr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}function ar(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function or(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ht)||self.MediaSource.isTypeSupported(ft)||self.MediaSource.isTypeSupported(pt)||self.MediaSource.isTypeSupported(mt)||self.MediaSource.isTypeSupported(_t))&&(e=!0),e}function dr(e){return null==e}function lr(e){return!dr(e)}function cr(e){return"function"==typeof e}function ur(e){let t=null,r=31&e[0];return r!==Ge&&r!==He||(t=Me),t||(r=(126&e[0])>>1,r!==et&&r!==rt&&r!==nt||(t=Re)),t}function hr(){return"undefined"!=typeof WritableStream}function fr(e){e.close()}function pr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function mr(e){return e.ok&&e.status>=200&&e.status<=299}function _r(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(U)}function gr(e){return e[0]>>4===Ut&&e[1]===Bt}function yr(e){return!0===e||"true"===e}function vr(e){return!0!==e&&"true"!==e}function br(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var wr=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const Sr=Symbol(32),Er=Symbol(16),Ar=Symbol(8);class xr{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return wr(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(Sr)}readU16(){return this.read(Er)}readU8(){return this.read(Ar)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===Sr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Er){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ar){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}xr.U32=Sr,xr.U16=Er,xr.U8=Ar;class Br{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=Ur._ebsp2rbsp(e),r=new $t(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Ur.getProfileString(i),a=Ur.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,x=2*e,S=A/x}}let B=1;1===b&&1===w||(B=b/w);let U=0,T=0;if(0===o)U=1,T=2-m;else{U=3===o?1:2,T=(1===o?2:1)*(2-m)}let k=16*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*U,C-=(y+v)*T;let D=Math.ceil(k*B);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Ur.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:x,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Ur._ebsp2rbsp(e),n=new $t(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=Ur.getProfileString(s),d=Ur.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);B=n.readBool(),U=t,T=2*e,x=U/T}}let k=1;1===E&&1===A||(k=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),I=16*(g+1)*(2-y);P-=(v+b)*C,I-=(w+S)*D;let F=Math.ceil(P*k);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Ur.getChromaFormatString(c),frame_rate:{fixed:B,fps:x,fps_den:T,fps_num:U},sar_ratio:{width:E,height:A},codec_size:{width:P,height:I},present_size:{width:F,height:I}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function Cr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Dr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Ur.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e){return 31&e[0]}function Lr(e){return e===qe}function Mr(e){return!function(e){return e===Ge||e===He}(e)&&!Lr(e)}function Rr(e){return e===Ve}function zr(e){if(0===e.length)return!1;const t=Fr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Xe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Or{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const $r=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Gr=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Hr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Hr._ebsp2rbsp(e),r=new $t(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Hr._ebsp2rbsp(e),r=new $t(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(F=t[e-1],L=i[e-1]):255===e&&(F=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=$r(e),r=new $t(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=$r(e),r=new $t(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(F=t[e-1],L=i[e-1]):255===e&&(F=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();M=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=$r(e),r=new $t(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|et,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|rt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|nt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Xr(e){return(126&e[0])>>1}function Zr(e){return e===at}function Jr(e){return!function(e){return e>=32&&e<=40}(e)}function Qr(e){return e>=16&&e<=21}function ei(e){if(0===e.length)return!1;const t=Xr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ri{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ii(e){return parseInt(e)===e}function ni(e){if(!ii(e.length))return!1;for(var t=0;t255)return!1;return!0}function si(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ni(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ii(e.length)&&ni(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ai(e){return new Uint8Array(e)}function oi(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var di,li={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},ci=(di="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+di[15&i])}return t.join("")}}),ui={16:10,24:12,32:14},hi=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],fi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],pi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],mi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],_i=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],gi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],yi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],vi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],bi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],wi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],Si=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Ei=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ai=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],xi=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Bi=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Ui(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,d=n;d>16&255]<<24^fi[a>>8&255]<<16^fi[255&a]<<8^fi[a>>24&255]^hi[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^fi[a>>16&255]<<16^fi[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ai[a>>16&255]^xi[a>>8&255]^Bi[255&a]},Ti.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^_i[i[(n+1)%4]>>16&255]^gi[i[(n+2)%4]>>8&255]^yi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=ai(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(fi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(fi[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(fi[255&i[(n+3)%4]]^a);return o},Ti.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^bi[i[(n+3)%4]>>16&255]^wi[i[(n+2)%4]>>8&255]^Si[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=ai(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(pi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(pi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(pi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(pi[255&i[(n+1)%4]]^a);return o};var ki=function(e){if(!(this instanceof ki))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ti(e)};ki.prototype.encrypt=function(e){if((e=si(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ai(e.length),r=ai(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Ii.prototype.setBytes=function(e){if(16!=(e=si(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ii.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fi=function(e,t){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ii||(t=new Ii(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ti(e)};Fi.prototype.encrypt=function(e){for(var t=si(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],x=e[t+14],B=e[t+15],U=s[0],T=s[1],k=s[2],C=s[3];U=l(U,T,k,C,a,7,o[0]),C=l(C,U,T,k,d,12,o[1]),k=l(k,C,U,T,f,17,o[2]),T=l(T,k,C,U,p,22,o[3]),U=l(U,T,k,C,m,7,o[4]),C=l(C,U,T,k,_,12,o[5]),k=l(k,C,U,T,g,17,o[6]),T=l(T,k,C,U,y,22,o[7]),U=l(U,T,k,C,v,7,o[8]),C=l(C,U,T,k,b,12,o[9]),k=l(k,C,U,T,w,17,o[10]),T=l(T,k,C,U,S,22,o[11]),U=l(U,T,k,C,E,7,o[12]),C=l(C,U,T,k,A,12,o[13]),k=l(k,C,U,T,x,17,o[14]),U=c(U,T=l(T,k,C,U,B,22,o[15]),k,C,d,5,o[16]),C=c(C,U,T,k,g,9,o[17]),k=c(k,C,U,T,S,14,o[18]),T=c(T,k,C,U,a,20,o[19]),U=c(U,T,k,C,_,5,o[20]),C=c(C,U,T,k,w,9,o[21]),k=c(k,C,U,T,B,14,o[22]),T=c(T,k,C,U,m,20,o[23]),U=c(U,T,k,C,b,5,o[24]),C=c(C,U,T,k,x,9,o[25]),k=c(k,C,U,T,p,14,o[26]),T=c(T,k,C,U,v,20,o[27]),U=c(U,T,k,C,A,5,o[28]),C=c(C,U,T,k,f,9,o[29]),k=c(k,C,U,T,y,14,o[30]),U=u(U,T=c(T,k,C,U,E,20,o[31]),k,C,_,4,o[32]),C=u(C,U,T,k,v,11,o[33]),k=u(k,C,U,T,S,16,o[34]),T=u(T,k,C,U,x,23,o[35]),U=u(U,T,k,C,d,4,o[36]),C=u(C,U,T,k,m,11,o[37]),k=u(k,C,U,T,y,16,o[38]),T=u(T,k,C,U,w,23,o[39]),U=u(U,T,k,C,A,4,o[40]),C=u(C,U,T,k,a,11,o[41]),k=u(k,C,U,T,p,16,o[42]),T=u(T,k,C,U,g,23,o[43]),U=u(U,T,k,C,b,4,o[44]),C=u(C,U,T,k,E,11,o[45]),k=u(k,C,U,T,B,16,o[46]),U=h(U,T=u(T,k,C,U,f,23,o[47]),k,C,a,6,o[48]),C=h(C,U,T,k,y,10,o[49]),k=h(k,C,U,T,x,15,o[50]),T=h(T,k,C,U,_,21,o[51]),U=h(U,T,k,C,E,6,o[52]),C=h(C,U,T,k,p,10,o[53]),k=h(k,C,U,T,w,15,o[54]),T=h(T,k,C,U,d,21,o[55]),U=h(U,T,k,C,v,6,o[56]),C=h(C,U,T,k,B,10,o[57]),k=h(k,C,U,T,g,15,o[58]),T=h(T,k,C,U,A,21,o[59]),U=h(U,T,k,C,m,6,o[60]),C=h(C,U,T,k,S,10,o[61]),k=h(k,C,U,T,f,15,o[62]),T=h(T,k,C,U,b,21,o[63]),s[0]=s[0]+U|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ot((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Mi).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ot((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=Mi).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,x=u.high,B=u.low,U=h.high,T=h.low,k=f,C=p,D=m,P=_,I=g,F=y,L=v,M=b,R=w,z=S,N=E,O=A,$=x,G=B,H=U,V=T,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],ae=se.high,oe=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=R&N^~R&$,fe=z&O^~z&G,pe=k&D^k&I^D&I,me=C&P^C&F^P&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=$,V=G,$=N,G=O,N=R,O=z,R=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=M+ue|0)>>>0>>0?1:0)|0,L=I,M=F,I=D,F=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

>>0?1:0),y=s.low=y+F,s.high=g+I+(y>>>0>>0?1:0),b=a.low=b+M,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+R+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),B=u.low=B+G,u.high=x+$+(B>>>0>>0?1:0),T=h.low=T+V,h.high=U+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ot((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Mi).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var x=u[l[w]];x.high=f,x.low=p}var B=u[0],U=r[0];for(B.high=U.high,B.low=U.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,x,B,U,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,I=l.words,F=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],x=b=T[3],B=w=T[4],r=0;r<80;r+=1)U=s+e[t+D[r]]|0,U+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],U=(U=v(U|=0,I[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=U,U=S+e[t+P[r]]|0,U+=r<16?y(E,A,x)+C[0]:r<32?g(E,A,x)+C[1]:r<48?_(E,A,x)+C[2]:r<64?m(E,A,x)+C[3]:p(E,A,x)+C[4],U=(U=v(U|=0,F[r]))+B|0,S=B,B=x,x=v(A,10),A=E,E=U;U=T[1]+f+x|0,T[1]=T[2]+b+B|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=U},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ot((function(e,t){var r,i,n;e.exports=(i=(r=Mi).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ot((function(e,t){var r;e.exports=((r=Mi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(s+4+2,s+4+a);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function Ni(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ot((function(e,t){e.exports=Mi}));var Oi=Ot((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[a].grouping_type+"/0",(o=new l(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,B.dts=e.samples[t-1].dts+e.samples[t-1].duration):B.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),B.cts=e.samples[t].dts+a.sample_offsets[S]):B.cts=B.dts,o?(t==o.sample_numbers[E]-1?(B.is_sync=!0,E++):(B.is_sync=!1,B.degradation_priority=0),l&&l.entries[A].sample_delta+x==t+1&&(B.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta,A++)):B.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,B,B.number),B.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+x==t&&(B.subsamples=l.entries[A].subsamples,x+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,B,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function $i(e){return e.reduce(((e,t)=>256*e+t))}function Gi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Oi.Log,Oi.MP4BoxStream,Oi.DataStream,Oi.MultiBufferStream,Oi.MPEG4DescriptorParser,Oi.BoxParser,Oi.XMLSubtitlein4Parser,Oi.Textin4Parser,Oi.ISOFile,Oi.createFile;class Hi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Gi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2];const i=e.byteLength;let n=5;for(;ni)break;let a=e[n+4],o=!1;if(r?(a=a>>>1&63,o=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,o=1===a||5===a),o){const r=nn(e.slice(n+4+2,n+4+s),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+s}return e}class on{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=dn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=dn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=dn.findFirstStartCode}}}}function cn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=cn(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function fn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class pn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{cr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class mn{static init(){mn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in mn.types)mn.types.hasOwnProperty(e)&&(mn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mn.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,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.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 mn.box(mn.types.trak,mn.tkhd(e),mn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,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(e){return mn.box(mn.types.mdia,mn.mdhd(e),mn.hdlr(e),mn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?mn.constants.HDLR_AUDIO:mn.constants.HDLR_VIDEO,mn.box(mn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mn.box(mn.types.smhd,mn.constants.SMHD):mn.box(mn.types.vmhd,mn.constants.VMHD),mn.box(mn.types.minf,t,mn.dinf(),mn.stbl(e))}static dinf(){return mn.box(mn.types.dinf,mn.box(mn.types.dref,mn.constants.DREF))}static stbl(e){return mn.box(mn.types.stbl,mn.stsd(e),mn.box(mn.types.stts,mn.constants.STTS),mn.box(mn.types.stsc,mn.constants.STSC),mn.box(mn.types.stsz,mn.constants.STSZ),mn.box(mn.types.stco,mn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp3(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp4a(e)):"avc"===e.videoType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.avc1(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types.mp4a,i,mn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return mn.box(mn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.avc1,n,mn.box(mn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.hvc1,n,mn.box(mn.types.hvcC,t))}static mvex(e){return mn.box(mn.types.mvex,mn.trex(e))}static trex(e){let t=e.id,r=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 mn.box(mn.types.trex,r)}static moof(e,t){return mn.box(mn.types.moof,mn.mfhd(e.sequenceNumber),mn.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 mn.box(mn.types.mfhd,t)}static traf(e,t){let r=e.id,i=mn.box(mn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=mn.box(mn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=mn.sdtp(e),a=mn.trun(e,s.byteLength+16+16+8+16+8+8);return mn.box(mn.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,mn.box(mn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),mn.box(mn.types.trun,r)}static mdat(e){return mn.box(mn.types.mdat,e)}}mn.init();var _n,gn=Ot((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_n=gn)&&_n.__esModule&&Object.prototype.hasOwnProperty.call(_n,"default")&&_n.default;const yn=[44100,48e3,32e3,0],vn=[22050,24e3,16e3,0],bn=[11025,12e3,8e3,0],wn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Sn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],En=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function An(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=bn[a];break;case 2:d=vn[a];break;case 3:d=yn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Nn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}Date.now||(Date.now=function(){return(new Date).getTime()});const Gn=[];Gn.push(a({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(Gn).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s={},a=new AbortController,o=null,d=null,l=null,c=null,u=!1,h=null,f=null,S=!1,E=!1,U=!!yr(r),be=!1,we=null,Ve=null,Xe=null,at=[],ft=null,pt=null,mt=0,_t=0,Et=null,At=null,Ut=0,Nt=0,Ot=!1,$t=!1,Gt=!1,Ht=null,Yt=null,Jt=null,nr=!1,wr=!0,Sr=()=>{const e=_r();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(ii.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),cr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ii.delay,ts:0},[r]),fr(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ii.delay,ts:0},[t]),fr(e)}},error:function(e){ii.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?lt:ct});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const a=e.slice(5);t===Ie?(n=kr(a),i={codec:n.codec,description:a}):t===Fe&&(n=Wr(a),i={codec:n.codec,description:a}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth);try{s.decoder.configure(i),s.hasInit=!0}catch(e){ii.debug.log("worker","VideoDecoder configure error",e.code,e)}}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let Er=function(){if(nr=!0,ii.fetchStatus!==Ct||vr(ii._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){ii.debug.log("worker","abort catch",e)}}else a=null,ii.debug.log("worker",`abort() and not abortController.abort() _status is ${ii.fetchStatus} and _isChrome is ${ii._opt.isChrome}`)},Ar={init(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},destroy(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Ar.extractNALu$2(t)},getNaluDts(){let e=Ar.localDts;return Ar.localDts=Ar.localDts+40,e},getNaluAudioDts(){const e=ii._opt.sampleRate,t=ii._opt.audioBufferSize;return Ar.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e{const t=Fr(e);t===He||t===Ge?Ar.handleVideoH264Nalu(e):Mr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH264Nalu(i[0]);else if(zr(i)){const e=Fr(i[0]),t=Rr(e);Ar.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH264Nalu(e)}))}else if(Ar.streamType===Re)if(ii._opt.nakedFlowH265DemuxUseNew){const t=Ar.handleAddNaluStartCode(e),r=Ar.extractNALu(t);if(0===r.length)return void ii.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Xr(e);t===nt||t===rt||t===et?Ar.handleVideoH265Nalu(e):Jr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH265Nalu(i[0]);else if(ei(i)){const e=Xr(i[0]),t=Qr(e);Ar.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH265Nalu(e)}))}else Xr(e)===nt?Ar.extractH265PPS(e):Ar.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Lr(Fr(e))?Ar.extractH264SEI(e):Ar.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Zr(Xr(e))?Ar.extractH265SEI(e):Ar.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Fr(e);switch(t){case Ge:Ar.sps=e;break;case He:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.sps&&Ar.pps){const e=Cr({sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}if(Mr(t)){const r=Rr(t),i=Ar.getNaluDts(),n=Pr(e,r);Ar.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=Cr({sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}},handleVideoH264NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Ir(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Xr(e);switch(t){case et:Ar.vps=e;break;case rt:Ar.sps=e;break;case nt:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.vps&&Ar.sps&&Ar.pps){const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}if(Jr(t)){const r=Qr(t),i=Ar.getNaluDts(),n=Yr(e,r);Ar.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Ar.vps&&Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}},handleVideoH265NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Kr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){ii.calcNetworkDelay(t.ts),t.isIFrame&&ii.calcIframeIntervalTimestamp(t.ts),ii.decode(e,t)}},Tr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Tr.mp4Box=Oi.createFile(),Tr.mp4Box.onReady=Tr.onReady,Tr.mp4Box.onError=Tr.onError,Tr.mp4Box.onSamples=Tr.onSamples},initTransportDescarmber(){Tr.transportDescarmber=new Hi},_getSeqHeader(e){const t=Tr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Oi.DataStream(void 0,0,Oi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Tr.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ii.debug.log(Tr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Tr.videoTrackId=t.id;const e=Tr._getSeqHeader(t);e&&(ii.debug.log(Tr.LOG_NAME,"seqHeader"),ii.decodeVideo(e,0,!0,0)),Tr.mp4Box.setExtractionOptions(t.id)}if(r&&ii._opt.hasAudio){Tr.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Tr.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ii.debug.log(Tr.LOG_NAME,"aacADTSHeader"),ii.decodeAudio(n,0)}Tr.mp4Box.start()},onError(e){ii.debug.error(Tr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Tr.videoTrackId)for(const t of r){const r=t.data,i=t.is_sync,n=1e3*t.cts/t.timescale;t.duration,t.timescale,i&&ii.calcIframeIntervalTimestamp(n);let s=null;s=Tr.isHevc?Kr(r,i):Ir(r,i),ii.decode(s,{type:ae,ts:n,isIFrame:i,cts:0}),Tr.mp4Box.releaseUsedSamples(e,t.number)}else if(e===Tr.audioTrackId){if(ii._opt.hasAudio)for(const t of r){const r=t.data,i=1e3*t.cts/t.timescale;t.duration,t.timescale;const n=new Uint8Array(r.byteLength+2);n.set([175,1],0),n.set(r,2),ii.decode(n,{type:se,ts:i,isIFrame:!1,cts:0}),Tr.mp4Box.releaseUsedSamples(e,t.number)}}else ii.debug.warn(Tr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Tr.transportDescarmber&&(t=Tr.transportDescarmber.transport(t)),t.buffer.fileStart=Tr.offset,Tr.offset+=t.byteLength,Tr.mp4Box.appendBuffer(t.buffer)},destroy(){Tr.mp4Box&&(Tr.mp4Box.stop(),Tr.mp4Box.flush(),Tr.mp4Box.destroy(),Tr.mp4Box=null),Tr.transportDescarmber&&(Tr.transportDescarmber.destroy(),Tr.transportDescarmber=null),Tr.offset=0,Tr.videoTrackId=null,Tr.audioTrackId=null,Tr.isHevc=!1}},$r={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);$r.extractNALu(t)},destroy(){$r.lastBuffer=new Uint8Array(0),$r.parsedOffset=0,$r.firstStartCodeOffset=0,$r.secondStartCodeOffset=0,$r.state="init",$r.hasInitVideoCodec=!1,$r.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ii.debug.warn($r.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array($r.lastBuffer.length+e.length);for(t.set($r.lastBuffer,0),t.set(new Uint8Array(e),$r.lastBuffer.length),$r.lastBuffer=t;;){if("init"===$r.state){let e=!1;for(;$r.lastBuffer.length-$r.parsedOffset>=4;)if(0===$r.lastBuffer[$r.parsedOffset])if(0===$r.lastBuffer[$r.parsedOffset+1])if(1===$r.lastBuffer[$r.parsedOffset+2]){if(182===$r.lastBuffer[$r.parsedOffset+3]){$r.state="findFirstStartCode",$r.firstStartCodeOffset=$r.parsedOffset,$r.parsedOffset+=4,e=!0;break}$r.parsedOffset++}else $r.parsedOffset++;else $r.parsedOffset++;else $r.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===$r.state){let e=!1;for(;$r.lastBuffer.length-$r.parsedOffset>=4;)if(0===$r.lastBuffer[$r.parsedOffset])if(0===$r.lastBuffer[$r.parsedOffset+1])if(1===$r.lastBuffer[$r.parsedOffset+2]){if(182===$r.lastBuffer[$r.parsedOffset+3]){$r.state="findSecondStartCode",$r.secondStartCodeOffset=$r.parsedOffset,$r.parsedOffset+=4,e=!0;break}$r.parsedOffset++}else $r.parsedOffset++;else $r.parsedOffset++;else $r.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===$r.state){if(!($r.lastBuffer.length-$r.parsedOffset>0))break;{let e,t,r=192&$r.lastBuffer[$r.parsedOffset];e=0==r?$r.secondStartCodeOffset-14:$r.secondStartCodeOffset;let i=0==(192&$r.lastBuffer[$r.firstStartCodeOffset+4]);if(i){if($r.firstStartCodeOffset-14<0)return void ii.debug.warn($r.LOG_NAME,"firstStartCodeOffset -14 is",$r.firstStartCodeOffset-14);$r.hasInitVideoCodec||($r.hasInitVideoCodec=!0,ii.debug.log($r.LOG_NAME,"setCodec"),si.setCodec(Le,"")),t=$r.lastBuffer.subarray($r.firstStartCodeOffset-14,e)}else t=$r.lastBuffer.subarray($r.firstStartCodeOffset,e);let n=$r.getNaluDts();$r.hasInitVideoCodec?(postMessage({cmd:$,type:xe,value:t.byteLength}),postMessage({cmd:$,type:Be,value:n}),si.decode(t,i?1:0,n)):ii.debug.warn($r.LOG_NAME,"has not init video codec"),$r.lastBuffer=$r.lastBuffer.subarray(e),$r.firstStartCodeOffset=0==r?14:0,$r.parsedOffset=$r.firstStartCodeOffset+4,$r.state="findFirstStartCode"}}}},getNaluDts(){let e=$r.localDts;return $r.localDts=$r.localDts+40,e}},Gr={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new On,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){Gr.media_info_=null,Gr.pes_slice_queues_=null,Gr.section_slice_queues_=null,Gr.video_metadata_=null,Gr.audio_metadata_=null,Gr.aac_last_incomplete_data_=null,Gr.video_track_=null,Gr.audio_track_=null,Gr._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){Gr._remainingPacketData&&(e=fn(Gr._remainingPacketData,e),Gr._remainingPacketData=null);let t=e.buffer;const r=Gr.parseChunks(t);r?Gr._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!Gr.pmt_||Gr.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);Gr.last_pcr_=e}if(2==a||5+e===188){t+=188,204===Gr.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===Gr.current_pmt_pid_||null!=Gr.pmt_&&Gr.pmt_.pid_stream_type[s]===In){let r=188-c;Gr.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=Gr.pmt_&&null!=Gr.pmt_.pid_stream_type[s]){let r=188-c,i=Gr.pmt_.pid_stream_type[s];s!==Gr.pmt_.common_pids.h264&&s!==Gr.pmt_.common_pids.h265&&s!==Gr.pmt_.common_pids.adts_aac&&s!==Gr.pmt_.common_pids.loas_aac&&s!==Gr.pmt_.common_pids.ac3&&s!==Gr.pmt_.common_pids.eac3&&s!==Gr.pmt_.common_pids.opus&&s!==Gr.pmt_.common_pids.mp3&&!0!==Gr.pmt_.pes_private_data_pids[s]&&!0!==Gr.pmt_.timed_id3_pids[s]&&!0!==Gr.pmt_.synchronous_klv_pids[s]&&!0!==Gr.pmt_.asynchronous_klv_pids[s]||Gr.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===Gr.tsPacketSize&&(t+=16)}return Gr.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=Gr.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Gr.emitSectionSlices(s,i):Gr.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&Gr.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Gr.emitSectionSlices(s,i):s.total_length>=s.expected_length&&Gr.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ii.debug.warn(Gr.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=Gr.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?Gr.emitPESSlices(e,i):Gr.clearSlices(e,i)),Gr.pes_slice_queues_[i.pid]=new Mn,Gr.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==Gr.pes_slice_queues_[i.pid])return;let o=Gr.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?Gr.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ii.debug.warn(Gr.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case xn:case Bn:Gr.parseMP3Payload(c,r);break;case Un:Gr.pmt_.common_pids.opus===e.pid||Gr.pmt_.common_pids.ac3===e.pid||Gr.pmt_.common_pids.eac3===e.pid||(Gr.pmt_.asynchronous_klv_pids[e.pid]?Gr.parseAsynchronousKLVMetadataPayload(c,e.pid,i):Gr.pmt_.smpte2038_pids[e.pid]?Gr.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):Gr.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Tn:Gr.parseADTSAACPayload(c,r);break;case kn:Gr.parseLOASAACPayload(c,r);break;case Cn:case Dn:break;case Pn:Gr.pmt_.timed_id3_pids[e.pid]?Gr.parseTimedID3MetadataPayload(c,r,s,e.pid,i):Gr.pmt_.synchronous_klv_pids[e.pid]&&Gr.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Fn:Gr.parseH264Payload(c,r,s,e.random_access_indicator);break;case Ln:Gr.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Un){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);Gr.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ii.debug.error(Gr.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(Gr.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=Gr.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==Gr.pat_&&ii.debug.log(Gr.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),Gr.pat_=a,Gr.current_program_=d,Gr.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ii.debug.error(Gr.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=Gr._initPmt(),r.program_number=n,r.version_number=s,Gr.program_pmt_map_[n]=r;else if(r=Gr.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iGr.has_video_&&Gr.has_audio_?Gr.video_init_segment_dispatched_&&Gr.audio_init_segment_dispatched_:Gr.has_video_&&!Gr.has_audio_?Gr.video_init_segment_dispatched_:!(Gr.has_video_||!Gr.has_audio_)&&Gr.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=Gr.video_metadata_.details,t={type:"video"};t.id=Gr.video_track_.id,t.timescale=1e3,t.duration=Gr.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,Gr.video_metadata_.vps){let e=Gr.video_metadata_.vps.data.subarray(4),r=Gr.video_metadata_.sps.data.subarray(4),i=Gr.video_metadata_.pps.data.subarray(4);t.hvcc=qr({vps:e,sps:r,pps:i}),0==Gr.video_init_segment_dispatched_&&ii.debug.log(Gr.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ii.decodeVideo(t.hvcc,0,!0,0)}else{let e=Gr.video_metadata_.sps.data.subarray(4),r=Gr.video_metadata_.pps.data.subarray(4);t.avcc=Dr({sps:e,pps:r}),0==Gr.video_init_segment_dispatched_&&ii.debug.log(Gr.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ii.decodeVideo(t.avcc,0,!0,0)}Gr.video_init_segment_dispatched_=!0,Gr.video_metadata_changed_=!1;let n=Gr.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){Gr.isInitSegmentDispatched()&&Gr.video_track_.length&&Gr._preDoDecode()},dispatchAudioMediaSegment(){Gr.isInitSegmentDispatched()&&Gr.audio_track_.length&&Gr._preDoDecode()},dispatchAudioVideoMediaSegment(){Gr.isInitSegmentDispatched()&&(Gr.audio_track_.length||Gr.video_track_.length)&&Gr._preDoDecode()},parseADTSAACPayload(e,t){if(Gr.has_video_&&!Gr.video_init_segment_dispatched_)return;if(Gr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Gr.aac_last_incomplete_data_.byteLength);t.set(Gr.aac_last_incomplete_data_,0),t.set(e,Gr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Gr.timescale_),"aac"===Gr.audio_metadata_.codec){if(null==t&&null!=Gr.audio_last_sample_pts_)r=1024/Gr.audio_metadata_.sampling_frequency*1e3,i=Gr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Gr.TAG_NAME,"AAC: Unknown pts");if(Gr.aac_last_incomplete_data_&&Gr.audio_last_sample_pts_){r=1024/Gr.audio_metadata_.sampling_frequency*1e3;let e=Gr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Gr.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Gr.audio_init_segment_dispatched_?(Gr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Gr.dispatchAudioInitSegment(e)):Gr.detectAudioMetadataChange(e)&&(Gr.dispatchAudioMediaSegment(),Gr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:se};Gr.audio_track_.samples.push(s),Gr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Gr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Gr.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(Gr.has_video_&&!Gr.video_init_segment_dispatched_)return;if(Gr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Gr.aac_last_incomplete_data_.byteLength);t.set(Gr.aac_last_incomplete_data_,0),t.set(e,Gr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Gr.timescale_),"aac"===Gr.audio_metadata_.codec){if(null==t&&null!=Gr.audio_last_sample_pts_)r=1024/Gr.audio_metadata_.sampling_frequency*1e3,i=Gr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Gr.TAG_NAME,"AAC: Unknown pts");if(Gr.aac_last_incomplete_data_&&Gr.audio_last_sample_pts_){r=1024/Gr.audio_metadata_.sampling_frequency*1e3;let e=Gr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Gr.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Zt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(dr(this.loas_previous_frame)?void 0:this.loas_previous_frame));){Gr.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Gr.audio_init_segment_dispatched_?(Gr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Gr.dispatchAudioInitSegment(e)):Gr.detectAudioMetadataChange(e)&&(Gr.dispatchAudioMediaSegment(),Gr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:se};Gr.audio_track_.samples.push(s),Gr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Gr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Gr.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(Gr.has_video_&&!Gr.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==Gr.audio_init_segment_dispatched_?(Gr.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},Gr.dispatchAudioInitSegment(h)):Gr.detectAudioMetadataChange(h)&&(Gr.dispatchAudioMediaSegment(),Gr.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/Gr.timescale_,dts:t/Gr.timescale_,type:se};Gr.audio_track_.samples.push(f),Gr.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==Gr.audio_metadata_.codec)return ii.debug.log(Gr.TAG_NAME,`Audio: Audio Codecs changed from ${Gr.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===Gr.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==Gr.audio_metadata_.audio_object_type)return ii.debug.log(Gr.TAG_NAME,`AAC: AudioObjectType changed from ${Gr.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==Gr.audio_metadata_.sampling_freq_index)return ii.debug.log(Gr.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${Gr.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==Gr.audio_metadata_.channel_config)return ii.debug.log(Gr.TAG_NAME,`AAC: Channel configuration changed from ${Gr.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===Gr.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==Gr.audio_metadata_.sampling_frequency)return ii.debug.log(Gr.TAG_NAME,`AC3: Sampling Frequency changed from ${Gr.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==Gr.audio_metadata_.bit_stream_identification)return ii.debug.log(Gr.TAG_NAME,`AC3: Bit Stream Identification changed from ${Gr.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==Gr.audio_metadata_.bit_stream_mode)return ii.debug.log(Gr.TAG_NAME,`AC3: BitStream Mode changed from ${Gr.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==Gr.audio_metadata_.channel_mode)return ii.debug.log(Gr.TAG_NAME,`AC3: Channel Mode changed from ${Gr.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==Gr.audio_metadata_.low_frequency_effects_channel_on)return ii.debug.log(Gr.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${Gr.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===Gr.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==Gr.audio_metadata_.sample_rate)return ii.debug.log(Gr.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${Gr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Gr.audio_metadata_.channel_count)return ii.debug.log(Gr.TAG_NAME,`Opus: Channel count changed from ${Gr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===Gr.audio_metadata_.codec){const t=e.data;if(t.object_type!==Gr.audio_metadata_.object_type)return ii.debug.log(Gr.TAG_NAME,`MP3: AudioObjectType changed from ${Gr.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==Gr.audio_metadata_.sample_rate)return ii.debug.log(Gr.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${Gr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Gr.audio_metadata_.channel_count)return ii.debug.log(Gr.TAG_NAME,`MP3: Channel count changed from ${Gr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=Gr.audio_track_.id,t.timescale=1e3,t.duration=Gr.duration_,"aac"===Gr.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $n(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ii._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ii.decodeAudio(n,0)}else"ac-3"===Gr.audio_metadata_.codec||"ec-3"===Gr.audio_metadata_.codec||"opus"===Gr.audio_metadata_.codec||"mp3"===Gr.audio_metadata_.codec&&(t.audioSampleRate=Gr.audio_metadata_.sample_rate,t.channelCount=Gr.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==Gr.audio_init_segment_dispatched_&&ii.debug.log(Gr.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),Gr.audio_init_segment_dispatched_=!0,Gr.video_metadata_changed_=!1;let r=Gr.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new zn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/Gr.timescale_);s.pts=e}else s.nearest_pts=Gr.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/Gr.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ii.debug.log(Gr.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ii.debug.log(Gr.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ii.debug.log(Gr.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ii.debug.log(Gr.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=Gr.audio_last_sample_pts_?Math.floor(Gr.audio_last_sample_pts_):null!=Gr.last_pcr_?Math.floor(Gr.last_pcr_/300/Gr.timescale_):void 0,_preDoDecode(){const e=Gr.video_track_,t=Gr.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?Gr._doDecodeVideo({...e,payload:t}):e.type===se&&Gr._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Kr(t,e.isIFrame):Ir(t,e.isIFrame),e.isIFrame&&ii.calcIframeIntervalTimestamp(e.dts);let i=ii.cryptoPayload(r,e.isIFrame);ii.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;yr(ii._opt.m7sCryptoAudio)&&(r=ii.cryptoPayloadAudio(t)),ii.decode(r,{type:se,ts:e.dts,isIFrame:!1,cts:0})}},jr=null;br()&&(jr={TAG_NAME:"worker MediaSource",_resetInIt(){jr.isAvc=null,jr.isAAC=null,jr.videoInfo={},jr.videoMeta={},jr.audioMeta={},jr.sourceBuffer=null,jr.audioSourceBuffer=null,jr.hasInit=!1,jr.hasAudioInit=!1,jr.isAudioInitInfo=!1,jr.videoMimeType="",jr.audioMimeType="",jr.cacheTrack={},jr.cacheAudioTrack={},jr.timeInit=!1,jr.sequenceNumber=0,jr.audioSequenceNumber=0,jr.firstRenderTime=null,jr.firstAudioTime=null,jr.mediaSourceAppendBufferFull=!1,jr.mediaSourceAppendBufferError=!1,jr.mediaSourceAddSourceBufferError=!1,jr.mediaSourceBufferError=!1,jr.mediaSourceError=!1,jr.prevTimestamp=null,jr.decodeDiffTimestamp=null,jr.prevDts=null,jr.prevAudioDts=null,jr.prevPayloadBufferSize=0,jr.isWidthOrHeightChanged=!1,jr.prevTs=null,jr.prevAudioTs=null,jr.eventListenList=[],jr.pendingRemoveRanges=[],jr.pendingSegments=[],jr.pendingAudioRemoveRanges=[],jr.pendingAudioSegments=[],jr.supportVideoFrameCallbackHandle=null,jr.audioSourceBufferCheckTimeout=null,jr.audioSourceNoDataCheckTimeout=null,jr.hasPendingEos=!1,jr.$video={currentTime:0,readyState:0}},init(){jr.events=new pn,jr._resetInIt(),jr.mediaSource=new self.MediaSource,jr.isDecodeFirstIIframe=!!vr(ii._opt.checkFirstIFrame),jr._bindMediaSourceEvents()},destroy(){jr.stop(),jr._clearAudioSourceBufferCheckTimeout(),jr.eventListenList&&jr.eventListenList.length&&(jr.eventListenList.forEach((e=>e())),jr.eventListenList=[]),jr._resetInIt(),jr.mediaSource=null},getState:()=>jr.mediaSource&&jr.mediaSource.readyState,isStateOpen:()=>jr.getState()===yt,isStateClosed:()=>jr.getState()===vt,isStateEnded:()=>jr.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=jr.events,t=e(jr.mediaSource,wt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceOpen"),jr._onMediaSourceSourceOpen()})),r=e(jr.mediaSource,bt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceClose")})),i=e(jr.mediaSource,St,(()=>{ii.debug.log(jr.TAG_NAME,"sourceended")}));jr.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){jr.sourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),jr._initSourceBuffer()),jr.audioSourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),jr._initAudioSourceBuffer()),jr._hasPendingSegments()&&jr._doAppendSegments()},decodeVideo(e,t,r,i){if(ii.isDestroyed)ii.debug.warn(jr.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(vr(jr.hasInit))if(r&&e[1]===Bt){const i=15&e[0];if(i===Fe&&vr(or()))return void jr.emitError(De.mediaSourceH265NotSupport);jr.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),jr.hasInit=jr._decodeConfigurationRecord(e,t,r,i)}else ii.debug.warn(jr.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]}`);else if(!jr.isDecodeFirstIIframe&&r&&(jr.isDecodeFirstIIframe=!0),jr.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Fe&&(r=Vr(e));const i=jr.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ii.debug.warn(jr.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecWidth},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),jr.isWidthOrHeightChanged=!0,jr.emitError(De.mseWidthOrHeightChange))}if(jr.isWidthOrHeightChanged)return void ii.debug.warn(jr.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(gr(e))return void ii.debug.warn(jr.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength300&&(jr.firstAudioTime-=e,ii.debug.warn(jr.TAG_NAME,`video\n firstAudioTime is ${jr.firstRenderTime} and current time is ${jr.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${jr.firstAudioTime}`))}r=t-jr.firstAudioTime,r<0&&(ii.debug.warn(jr.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${jr.prevAudioTs},\n firstAudioTime is ${jr.firstAudioTime}`),r=null===jr.prevAudioDts?0:jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration),null!==jr.prevAudioTs&&r<=jr.prevAudioDts&&(ii.debug.warn(jr.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${jr.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${jr.prevAudioTs} ,\n and diff is ${t-jr.prevAudioTs}`),r=jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration)}ii.isPlayer?jr._decodeAudio(e,r,t):ii.isPlayback,jr.prevAudioTs=t,jr.prevAudioDts=r}else ii.debug.log(jr.TAG_NAME,"decodeAudio first frame is not iFrame")}},_checkTsIsMaxDiff:e=>jr.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Ie?s=kr(n):i===Fe&&(s=Wr(n)),jr.videoInfo.width=s.codecWidth,jr.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ii.debug.warn(jr.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),jr.emitError(De.mediaSourceDecoderConfigurationError),!1;const a={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=mn.generateInitSegment(a);jr.isAvc=i===Ie;let d=s.codec;return jr.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:jr.isAvc?ut:ht,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),jr._initSourceBuffer(),jr.appendBuffer(o.buffer),jr.sequenceNumber=0,jr.cacheTrack={},jr.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===$e,s=r===ze;if(vr(s||n))return ii.debug.warn(jr.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),jr.emitError(De.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(jt(e)){if(o=Kt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=An(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&vr(ar())?(d="mpeg",l="",c=new Uint8Array):c=mn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),vr(jr.isAudioInitInfo)&&(Jt=r===ze?i?16:8:0===i?8:16,postMessage({cmd:I,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Jt}),jr.isAudioInitInfo=!0),jr.audioMimeType=u,jr.isAAC=s,jr._initAudioSourceBuffer(),jr.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.sourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.videoMimeType){try{jr.sourceBuffer=jr.mediaSource.addSourceBuffer(jr.videoMimeType),ii.debug.log(jr.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.videoMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.sourceBuffer){const t=e(jr.sourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.sourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r)}}else ii.debug.log(jr.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.isAvc === null is ${null===jr.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.audioSourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.audioMimeType){try{jr.audioSourceBuffer=jr.mediaSource.addSourceBuffer(jr.audioMimeType),jr._clearAudioSourceBufferCheckTimeout(),ii.debug.log(jr.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.audioMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendAudioBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.audioSourceBuffer){const t=e(jr.audioSourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.audioSourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r),null===jr.audioSourceNoDataCheckTimeout&&(jr.audioSourceNoDataCheckTimeout=setTimeout((()=>{jr._clearAudioNoDataCheckTimeout(),jr.emitError(De.mediaSourceAudioNoDataTimeout)}),1e3))}}else ii.debug.log(jr.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.audioMimeType is ${jr.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ii.debug.warn(jr.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;jr.prevTimestamp||(jr.prevTimestamp=o,d=!0);const l=o-jr.prevTimestamp;if(jr.decodeDiffTimestamp=l,l>500&&!d&&ii.isPlayer&&ii.debug.warn(jr.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${jr.prevTimestamp}, diff time is ${l} ms`),jr.cacheTrack.id&&t>=jr.cacheTrack.dts){let e=8+jr.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheTrack.data,8),jr.cacheTrack.duration=t-jr.cacheTrack.dts;let i=mn.moof(jr.cacheTrack,jr.cacheTrack.dts);jr.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendBuffer(n.buffer)}else ii.debug.log(jr.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${jr.cacheTrack&&jr.cacheTrack.dts}`),jr.timeInit=!1,jr.cacheTrack={};jr.cacheTrack||(jr.cacheTrack={}),jr.cacheTrack.id=Pt,jr.cacheTrack.sequenceNumber=++jr.sequenceNumber,jr.cacheTrack.size=a,jr.cacheTrack.dts=t,jr.cacheTrack.cts=i,jr.cacheTrack.isKeyframe=r,jr.cacheTrack.data=s,jr.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},jr.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=jr.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(jr.cacheAudioTrack.id&&t>=jr.cacheAudioTrack.dts){let e=8+jr.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheAudioTrack.data,8),jr.cacheAudioTrack.duration=t-jr.cacheAudioTrack.dts;let i=mn.moof(jr.cacheAudioTrack,jr.cacheAudioTrack.dts);jr.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendAudioBuffer(n.buffer)}else jr.cacheAudioTrack={};jr.cacheAudioTrack||(jr.cacheAudioTrack={}),jr.cacheAudioTrack.id=It,jr.cacheAudioTrack.sequenceNumber=++jr.audioSequenceNumber,jr.cacheAudioTrack.size=n,jr.cacheAudioTrack.dts=t,jr.cacheAudioTrack.cts=0,jr.cacheAudioTrack.data=i,jr.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingSegments.push(e),jr.sourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`video has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},appendAudioBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendAudioBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingAudioSegments.push(e),jr.audioSourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getAudioSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`audio has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},getSourceBufferUpdating:()=>jr.sourceBuffer&&jr.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>jr.audioSourceBuffer&&jr.audioSourceBuffer.updating,stop(){jr.abortSourceBuffer(),jr.removeSourceBuffer(),jr.endOfStream()},clearUpAllSourceBuffer(){if(jr.sourceBuffer){const e=jr.sourceBuffer.buffered;for(let t=0;tjr.pendingSegments.length>0||jr.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>jr.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(jr.isStateClosed()||jr.isStateEnded())ii.debug.log(jr.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==jr.sourceBuffer){if(jr.needInitAudio()&&null===jr.audioSourceBuffer)return ii.debug.log(jr.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===jr.audioSourceBufferCheckTimeout&&(jr.audioSourceBufferCheckTimeout=setTimeout((()=>{jr._clearAudioSourceBufferCheckTimeout(),jr.emitError(De.mediaSourceAudioInitTimeout)}),1e3)));if(vr(jr.getSourceBufferUpdating())&&jr.pendingSegments.length>0){const e=jr.pendingSegments.shift();try{jr.sourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}if(vr(jr.getAudioSourceBufferUpdating())&&jr.pendingAudioSegments.length>0){const e=jr.pendingAudioSegments.shift();try{jr.audioSourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}}else ii.debug.log(jr.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=jr.$video.currentTime;if(jr.sourceBuffer){const t=jr.sourceBuffer.buffered;let r=!1;for(let i=0;i=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingRemoveRanges.push({start:n,end:t})}}else s=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingAudioRemoveRanges.push({start:n,end:t})}}else sjr.pendingRemoveRanges.length>0||jr.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ii._opt.hasAudio&&ii._opt.mseDecodeAudio,_doRemoveRanges(){if(jr.sourceBuffer&&vr(jr.getSourceBufferUpdating())){let e=jr.pendingRemoveRanges;for(;e.length&&vr(jr.getSourceBufferUpdating());){let t=e.shift();try{jr.sourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(jr.audioSourceBuffer&&vr(jr.getAudioSourceBufferUpdating())){let e=jr.pendingAudioRemoveRanges;for(;e.length&&vr(jr.getAudioSourceBufferUpdating());){let t=e.shift();try{jr.audioSourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(vr(ii._opt.mseAutoCleanupSourceBuffer))return!1;const e=jr.$video.currentTime;if(jr.sourceBuffer){let t=jr.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(jr.audioSourceBuffer){let t=jr.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){jr.audioSourceBufferCheckTimeout&&(clearTimeout(jr.audioSourceBufferCheckTimeout),jr.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){jr.audioSourceNoDataCheckTimeout&&(clearTimeout(jr.audioSourceNoDataCheckTimeout),jr.audioSourceNoDataCheckTimeout=null)},getHandle:()=>jr.mediaSource.handle,emitError(e){postMessage({cmd:ne,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ii={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:kt,_opt:Sr(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ii.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ii.getVideoBufferLength(),audioDemuxBufferDelay:ii.getAudioBufferLength(),streamBufferByteLength:ii.getStreamBufferLength(),netBuf:ii.networkDelay||0,pushLatestDelay:ii.pushLatestDelay||0,latestDelay:ii.delay,isStreamTsMoreThanLocal:be});postMessage({cmd:$,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ii._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===se)return ii.delay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp>e)return ii.preDelayTimestamp-e>1e3&&ii.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return ${ii.delay}`),ii.preDelayTimestamp=e,ii.delay;if(ii.firstTimestamp){if(e){const t=Date.now()-ii.startTimestamp,r=e-ii.firstTimestamp;t>=r?(be=!1,ii.delay=t-r):(be=!0,ii.delay=r-t)}}else ii.firstTimestamp=e,ii.startTimestamp=Date.now(),ii.delay=-1;return ii.preDelayTimestamp=e,ii.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===se)return ii.pushLatestDelay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp-e>1e3)return ii.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return -1`),-1;if(ii.firstTimestamp){let t=-1;if(e){const r=Date.now()-ii.startTimestamp,i=e-ii.firstTimestamp;r>=i?(be=!1,t=r-i):(be=!0,t=i-r)}return t}return-1},resetDelay:function(){ii.firstTimestamp=null,ii.startTimestamp=null,ii.delay=-1,ii.dropping=!1},resetAllDelay:function(){ii.resetDelay(),ii.preDelayTimestamp=null},doDecode:function(e){ii._opt.isEmitSEI&&e.type===ae&&ii.isWorkerFetch&&ii.findSei(e.payload,e.ts),ii.isPlayUseMSEAndDecoderInWorker()?e.type===se?ii._opt.mseDecodeAudio?jr.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&jr.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ii._opt.useWCS&&ii.useOffscreen()&&e.type===ae&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===ae&&gr(e.payload);if(vr(r))s&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n));else{const r=n.ts-t,a=n.type===se&&e.type===ae;(r<=20||a||s)&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n))}},init:function(){ii.debug.log("worker","init and opt is",JSON.stringify(ii._opt));const e=ii._opt.playType===v,t=ii._opt.playType===b;if(Ar.init(),ii.isPlayer=e,ii.isPlayback=t,ii.isPlayUseMSEAndDecoderInWorker()&&jr&&jr.init(),ii.isPlaybackCacheBeforeDecodeForFpsRender())ii.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ii.debug.log("worker","setInterval()");const t=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(ii.isPushDropping)return void ii.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ii.dropping){for(r=i.shift(),ii.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ii.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ii.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ii.getNotDroppingDelayTs()&&(ii.debug.log("worker","loop() is dropping = false, is iFrame"),ii.dropping=!1,ii.doDecode(r),ii.decodeNext(r))}else if(ii.isPlayback||ii.isPlayUseMSE()||0===ii._opt.videoBuffer)for(;i.length;)r=i.shift(),ii.doDecode(r);else if(r=i[0],-1===ii.getDelay(r.ts,r.type))ii.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ii.doDecode(r),ii.decodeNext(r);else if(ii.delay>t&&e)ii.hasIframeInBufferList()?(ii.debug.log("worker",`delay is ${ii.delay} > maxDelay ${t}, set dropping is true`),ii.resetAllDelay(),ii.dropping=!0,postMessage({cmd:H})):(i.shift(),ii.doDecode(r),ii.decodeNext(r));else for(;i.length;){if(r=i[0],!(ii.getDelay(r.ts,r.type)>ii._opt.videoBuffer)){ii.delay<0&&ii.debug.warn("worker",`loop() do not decode and delay is ${ii.delay}, bufferList is ${i.length}`);break}i.shift(),ii.doDecode(r)}}else-1!==ii.delay&&ii.debug.log("worker","loop() bufferList is empty and reset delay"),ii.resetAllDelay()};ii.stopId=setInterval((()=>{let e=(new Date).getTime();we||(we=e);const t=e-we;t>100&&ii.debug.warn("worker",`loop demux diff time is ${t}`),r(),we=(new Date).getTime()}),20)}if(vr(ii._opt.checkFirstIFrame)&&(U=!0),ii.isPlayUseMSEAndDecoderInWorker()&&jr){const e=jr.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ii.doDecode(e))};e();const t=Math.ceil(1e3/(ii.streamFps*ii._opt.playbackRate));ii.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ii.streamFps}, streamAudioFps is ${ii.streamAudioFps} ,streamVideoFps is ${ii.streamVideoFps} playbackRate is ${ii._opt.playbackRate}`),ii.stopId=setInterval(e,t)},close:function(){if(ii.debug.log("worker","close"),ii.isDestroyed=!0,Er(),!o||1!==o.readyState&&2!==o.readyState?o&&ii.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(nr=!0,o.close(1e3,"Client disconnecting")),o=null,ii.stopStreamRateAndStatsInterval(),ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null),ii.mp3Demuxer&&(ii.mp3Demuxer.destroy(),ii.mp3Demuxer=null),ii.writableStream&&vr(ii.writableStream.locked)&&ii.writableStream.close().catch((e=>{ii.debug.log("worker","close() and writableStream.close() error",e)})),ii.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){ii.debug.warn("worker","close() and audioDecoder.clear error",e)}if(si)try{si.clear&&si.clear(),si=null}catch(e){ii.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,we=null,be=!1,s&&(s.reset&&s.reset(),s=null),jr&&(jr.destroy(),jr=null),ii.firstTimestamp=null,ii.startTimestamp=null,ii.networkDelay=0,ii.streamFps=null,ii.streamAudioFps=null,ii.streamVideoFps=null,ii.delay=-1,ii.pushLatestDelay=-1,ii.preDelayTimestamp=null,ii.dropping=!1,ii.isPushDropping=!1,ii.isPlayer=!0,ii.isPlayback=!1,ii.isWorkerFetch=!1,ii._opt=Sr(),ii.webglObj&&(ii.webglObj.destroy(),ii.offscreenCanvas.removeEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost),ii.offscreenCanvas.removeEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored),ii.offscreenCanvas=null,ii.offscreenCanvasGL=null,ii.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,f=null,S=!1,E=!1,U=!1,Ot=!1,$t=!1,Gt=!1,Ht=null,Yt=null,at=[],mt=0,_t=0,Ve=null,Xe=null,Et=null,At=null,Jt=null,Ut=0,Nt=0,ft=null,pt=null,ii.fetchStatus=kt,wr=!0,Ar.destroy(),Tr.destroy(),$r.destroy(),Gr.destroy(),postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===se&&jt(e)){if(ii.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ii.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&gr(e)){if(ii.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ii.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ii._opt.isRecording)if(ii._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ii._opt.recordType===w)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===se&&ii._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ii.isPlayer&&Ut>0&&At>0&&t.type===ae){const e=t.ts-At,r=Ut+Ut/2;e>r&&ii.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${At},\n diff is ${e} and preTimestampDuration is ${Ut} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(ii.isPlayer&&At>0&&t.type===ae&&t.tsA&&(ii.debug.warn("worker",`pushBuffer,\n preTimestamp is ${At}, options.ts is ${t.ts},\n diff is ${At-t.ts} more than 3600000,\n and resetAllDelay`),ii.resetAllDelay(),At=null,Ut=0),ii.isPlayer&&At>0&&t.ts<=At&&t.type===ae&&(ii.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${At} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),ii._opt.isDropSameTimestampGop&&vr(t.isIFrame)&&U)){const e=ii.hasIframeInBufferList(),t=vr(ii.isPushDropping);return ii.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ii.dropBuffer$2():(ii.clearBuffer(!0),yr(ii._opt.checkFirstIFrame)&&yr(r)&&(ii.isPlayUseMSEAndDecoderInWorker()?jr.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}if(ii.isPlayer&&U){const e=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=ii.getDelayNotUpdateDelay(t.ts,t.type);ii.pushLatestDelay=r,r>e&&ii.delay0&&ii.hasIframeInBufferList()&&!1===ii.isPushDropping&&(ii.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${ii.delay} and has iIframe and next decoder.dropBuffer$2()`),ii.dropBuffer$2())}if(ii.isPlayer&&t.type===ae&&(At>0&&(Ut=t.ts-At),Nt=e.byteLength,At=t.ts),t.type===se?i.push({ts:t.ts,payload:e,decoder:{decode:ii.decodeAudio},type:se,isIFrame:!1}):t.type===ae&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:ii.decodeVideo},type:ae,isIFrame:t.isIFrame}),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&(dr(ii.streamVideoFps)||dr(ii.streamAudioFps))){let e=ii.streamVideoFps,t=ii.streamAudioFps;if(dr(ii.streamVideoFps)&&(e=pr(i,ae),e&&(ii.streamVideoFps=e,postMessage({cmd:V,value:ii.streamVideoFps}),ii.streamFps=t?e+t:e,vr(ii._opt.hasAudio)&&(ii.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),ii.streamAudioFps=0),ii.playbackCacheLoop())),dr(ii.streamAudioFps)&&(t=pr(i,se),t&&(ii.streamAudioFps=t,ii.streamFps=e?e+t:t,ii.playbackCacheLoop())),dr(ii.streamVideoFps)&&dr(ii.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));ii.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ii.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ii.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ii.streamVideoFps=25,postMessage({cmd:V,value:ii.streamVideoFps}),r?(ii.streamAudioFps=25,ii.streamFps=ii.streamVideoFps+ii.streamAudioFps):ii.streamFps=ii.streamVideoFps,ii.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ii.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ii._opt.videoBuffer+ii._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===se&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ii._opt.isNakedFlow?Ar.lastBuf&&(e=Ar.lastBuf.byteLength):ii._opt.isTs?Gr._remainingPacketData&&(e=Gr._remainingPacketData.byteLength):ii._opt.isFmp4&&Tr.mp4Box&&(e=Tr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){ii.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ii.isWorkerFetch=!0,t.isFlv?ii._opt.isFlv=!0:t.isFmp4?ii._opt.isFmp4=!0:t.isMpeg4?ii._opt.isMpeg4=!0:t.isNakedFlow?ii._opt.isNakedFlow=!0:t.isTs&&(ii._opt.isTs=!0),d=sr((e=>{postMessage({cmd:$,type:Ee,value:e})})),ii.startStreamRateAndStatsInterval(),t.isFmp4&&(Tr.listenMp4Box(),ii._opt.isFmp4Private&&Tr.initTransportDescarmber()),t.protocol===_?(c=new xr(ii.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(yr(nr))return ii.debug.log("worker","request abort and run res.body.cancel()"),ii.fetchStatus=kt,void e.body.cancel();if(!mr(e))return ii.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Er(),void postMessage({cmd:$,type:De.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:$,type:Ue}),hr())ii.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof e?(ii.fetchStatus=Ct,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ii.demuxFmp4(e):t.isMpeg4?ii.demuxMpeg4(e):t.isTs&&ii.demuxTs(e)):ii.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ii.debug.log("worker","writableStream close()"),ii.fetchStatus=Dt,c=null,Er(),postMessage({cmd:$,type:Se,value:g,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);c=null,e.name!==xt?(ii.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Er(),postMessage({cmd:$,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ii.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ii.debug.log("worker","fetchNext().then() and done is true"),ii.fetchStatus=Dt,c=null,Er(),void postMessage({cmd:$,type:Se,value:g,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof n?(ii.fetchStatus=Ct,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ii.demuxFmp4(n):t.isMpeg4&&ii.demuxMpeg4(n),i()):ii.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);c=null,e.name!==xt?(ii.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:$,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ii.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==xt?(ii.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:$,type:De.fetchError,value:e.toString()}),c=null):ii.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))):t.protocol===m&&(t.isFlv&&(c=new xr(ii.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{ii.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:$,type:Ue}),postMessage({cmd:$,type:Ce})},o.onclose=e=>{u?ii.debug.log("worker","fetchStream, WebsocketStream socket close and isSocketError is true , so return"):(ii.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ii.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),yr(nr)?ii.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:$,type:Se,value:y,msg:e.code})))},o.onerror=e=>{ii.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,postMessage({cmd:$,type:De.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ii.demuxFmp4(e.data):t.isMpeg4?ii.demuxMpeg4(e.data):ii._opt.isNakedFlow?ii.demuxNakedFlow(e.data):ii.demuxM7s(e.data)):ii.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case oe:if(a.byteLength>0){let e=a;yr(ii._opt.m7sCryptoAudio)&&(e=ii.cryptoPayloadAudio(a)),ii.decode(e,{type:se,ts:s})}else ii.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(ii._isEnhancedH265Header(e))ii._decodeEnhancedH265Video(a,s);else{a[0];let e=a[0]>>4===Tt;if(e&&gr(a)&&null===Ht){const e=15&a[0];Ht=e===Fe,Yt=tr(a,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`)}e&&ii.calcIframeIntervalTimestamp(s),ii.isPlayer&&ii.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=ii.cryptoPayload(a,e);ii.decode(i,{type:ae,ts:s,isIFrame:e,cts:t})}}else ii.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:ii.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===se?ii._opt.hasAudio&&(postMessage({cmd:$,type:Ae,value:e.byteLength}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()||(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ii._opt.hasVideo&&(postMessage({cmd:$,type:xe,value:e.byteLength}),postMessage({cmd:$,type:Be,value:t.ts}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ii._opt.isM7sCrypto?ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=zi(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`):ii._opt.isSm4Crypto?ii._opt.sm4CryptoKey&&t?r=an(e,ii._opt.sm4CryptoKey):ii._opt.sm4CryptoKey||ii.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ii._opt.isXorCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=hn(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isXorCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ii._opt.isM7sCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?e[0]>>4===ze&&(t=Ni(e,ii._opt.cryptoKey,ii._opt.cryptoIV)):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Jt=r===ze?i?16:8:0===i?8:16,ni&&ni.setCodec)if(jt(e)||r===Ne||r===Oe||r===$e){ii.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===ze?e.slice(2):new Uint8Array(0);ni.setCodec(r,ii._opt.sampleRate,i),r===ze&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==ze&&(r===$e?(ii.mp3Demuxer||(ii.mp3Demuxer=new ln(ii),ii.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),ii.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t))}else ii.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ii.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ii.isDestroyed)ii.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())jr.decodeAudio(e,t);else if(yr(r)&&yr(ii._opt.mseDecodeAudio))postMessage({cmd:O,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ii.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===$e?ii.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===ze?e.slice(2):e.slice(1),t)}else ii.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(si&&si.setCodec)if(gr(e))if(t===Ie||t===Fe){ii.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===Ie&&ii._opt.useSIMD){const e=kr(r);if(e.codecWidth>x||e.codecHeight>x)return postMessage({cmd:q}),void ii.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,si.setCodec(t,r),postMessage({cmd:M,code:t}),postMessage({cmd:R,buffer:i,codecId:t},[i.buffer])}else ii.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else ii.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else ii.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ii.isDestroyed)ii.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorker())jr.decodeVideo(e,t,i,n);else if(yr(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ii.delay},[e.buffer]);else if(S)if(!U&&i&&(U=!0),U){if(i&&gr(e)){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Fe&&(r=Vr(e)),r.codecWidth&&r.codecHeight&&h&&f&&(r.codecWidth!==h||r.codecHeight!==f)&&(ii.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${f},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),$t=!0,postMessage({cmd:W}))}if($t)return void ii.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Gt)return void ii.debug.warn("worker","decodeVideo: simd decode error, and return");if(gr(e))return void ii.debug.warn("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ii.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ii.isPlayer&&(ii.resetAllDelay(),yr(ii._opt.checkFirstIFrame)&&(ii.dropping=!0,postMessage({cmd:H}))),yr(ii._opt.checkFirstIFrame)&&vr(r)&&(U=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>yr(e.isIFrame)&&e.type===ae));if(ii.isAllIframeInBufferList())for(let t=0;t=ii.getNotDroppingDelayTs()){ii.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ii.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ii.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ii.resetAllDelay(),ii.getDelay(r.ts,r.type),ii.doDecode(r),ii.isPushDropping=!1,ii.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ii.delay} `)}else ii.isPushDropping=!1}0===i.length&&(ii.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case se:ii.decode(new Uint8Array(e,5),{type:se,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ii._isEnhancedH265Header(n))ii._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ii.calcIframeIntervalTimestamp(r),gr(i)&&null===Ht)){const e=15&i[0];Ht=e===Fe}ii.isPlayer&&ii.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ii.cryptoPayload(i,e);ii.decode(a,{type:ae,ts:r,isIFrame:e,cts:n})}}else ii.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Ar.dispatch(e)},demuxFmp4:function(e){Tr.dispatch(e)},demuxMpeg4:function(e){$r.dispatch(e)},demuxTs:function(e){Gr.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(s[0]);if(Ht=vr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Yt=tr(e,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`),ii.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(n===Mt){let r=e,n=0;const s=i===zt;s&&ii.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Kr(e.slice(8),s),r=ii.cryptoPayload(r,s),ii.decode(r,{type:ae,ts:t,isIFrame:s,cts:n}))}else if(n===Rt){const r=i===zt;r&&ii.calcIframeIntervalTimestamp(t);let n=Kr(e.slice(5),r);n=ii.cryptoPayload(n,r),ii.decode(n,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ft)===Ft},findSei:function(e,t){let r=4;lr(Yt)&&(r=Yt),Qt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===dt||r===ot)||vr(Ht)&&r===qe)&&postMessage({cmd:X,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(U&&e>0))return;null===Ve?(Ve=e,Xe=rr()):et?r-t:0;ii.networkDelay=i,i>ii._opt.networkDelay&&ii._opt.playType===v&&(ii.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Ve} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:$,type:ke,value:i}))},calcIframeIntervalTimestamp:function(e){null===Et?Et=e:Et=ii._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return ii.isPlayer&&ii._opt.useMSE&&yr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ii.isPlayUseMSE()&&ii._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ii.isPlayUseMSEAndDecoderInWorker()&&ii._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ii.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ii.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,ii.webglObj.destroy(),ii.webglObj=null,ii.offscreenCanvasGL=null,setTimeout((()=>{ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.offscreenCanvasGL&&ii.offscreenCanvasGL.getContextAttributes().stencil?(ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),Ot=!1):ii.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ii.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:k,w:t,h:r}),h=t,f=r,ii.useOffscreen()&&(ii.offscreenCanvas=new OffscreenCanvas(t,r),ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),ii.offscreenCanvas.addEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost,!1),ii.offscreenCanvas.addEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:I,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Jt}),_t=r},yuvData:function(t,r){if(ii.isDestroyed)return void ii.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*f*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ft=null,ii.useOffscreen())try{if(Ot)return;ii.webglObj.renderYUV(h,f,s);let e=ii.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ii.delay,ts:r},[e])}catch(e){ii.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:s,delay:ii.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ii.isDestroyed)return void ii.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ii._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(mt){if(!(s>=(r=d-mt)))return mt+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==_t&&(n[1]=Float32Array.of(...n[1],...a[1])));at[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==_t&&(at[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:at,ts:i},at.map((e=>e.buffer))),o=r,s-=r}for(mt=s;mt>=d;mt-=d)at[0]=a[0].slice(o,o+=d),2==_t&&(at[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:at,ts:i},at.map((e=>e.buffer)));mt&&(n[0]=a[0].slice(o),2==_t&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===ft&&(ft=rr());const t=rr(),r=ir(pt>0?2*pt:5e3,1e3,5e3),i=t-ft;i>r&&(ii.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${pt} and diff is ${i} and maxDiff is ${r}\n and replay`),Gt=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){o?o.readyState===Pe?o.send(e):ii.debug.error("worker","socket is not open"):ii.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])}};ii.debug=new Br(ii);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(ii));let si=null;e.VideoDecoder&&(si=new e.VideoDecoder(ii)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{ii._opt=Object.assign(ii._opt,JSON.parse(t.opt))}catch(e){}ii.init();break;case ue:ii.pushBuffer(t.buffer,t.options);break;case he:ii.decodeAudio(t.buffer,t.ts);break;case fe:ii.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ii.clearBuffer(t.needClear);break;case ge:ii.fetchStream(t.url,JSON.parse(t.opt));break;case pe:ii.debug.log("worker","close",JSON.stringify(t.options)),t.options&&vr(t.options.isVideoInited)&&(wr=t.options.isVideoInited),ii.close();break;case me:ii.debug.log("worker","updateConfig",t.key,t.value),ii._opt[t.key]=t.value,"playbackRate"===t.key&&(ii.playbackUpdatePlaybackRate(),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&ii.playbackCacheLoop());break;case ye:ii.sendWebsocketMessage(t.message);break;case ve:jr.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/public/js/jessibuca-pro/decoder-pro-simd.js b/public/js/jessibuca-pro/decoder-pro-simd.js new file mode 100644 index 0000000..d230868 --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro-simd.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),s=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href,async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t,i,n;(n=e).ready=new Promise(((e,r)=>{t=e,i=r})),(n=void 0!==n?n:{}).locateFile=function(e){return"decoder-pro-simd.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_SIMD_WASM_URL&&""!=JESSIBUCA_PRO_SIMD_WASM_URL?JESSIBUCA_PRO_SIMD_WASM_URL:e};var s,a,o,d=Object.assign({},n),l="object"==typeof window,c="function"==typeof importScripts,u="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,h="";function f(e){return n.locateFile?n.locateFile(e,h):h+e}if(u){const{createRequire:e}=await import("module");var p=e("undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href),m=p("fs"),_=p("path");h=c?_.dirname(h)+"/":p("url").fileURLToPath(new URL("./","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href)),s=(e,t)=>(e=Y(e)?new URL(e):_.normalize(e),m.readFileSync(e,t?void 0:"utf8")),o=e=>{var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),t},a=function(e,t,r){let i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];e=Y(e)?new URL(e):_.normalize(e),m.readFile(e,i?void 0:"utf8",((e,n)=>{e?r(e):t(i?n.buffer:n)}))},!n.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),n.inspect=()=>"[Emscripten Module object]"}else(l||c)&&(c?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),r&&(h=r),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(o=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),a=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var g,y,v=n.print||console.log.bind(console),b=n.printErr||console.error.bind(console);Object.assign(n,d),d=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(g=n.wasmBinary),"object"!=typeof WebAssembly&&V("no native wasm support detected");var w,S,E,A,B,x,U,T,k=!1;function C(){var e=y.buffer;n.HEAP8=w=new Int8Array(e),n.HEAP16=E=new Int16Array(e),n.HEAPU8=S=new Uint8Array(e),n.HEAPU16=A=new Uint16Array(e),n.HEAP32=B=new Int32Array(e),n.HEAPU32=x=new Uint32Array(e),n.HEAPF32=U=new Float32Array(e),n.HEAPF64=T=new Float64Array(e)}var D=[],P=[],I=[];function F(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)M(n.preRun.shift());ee(D)}function L(){ee(P)}function R(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)N(n.postRun.shift());ee(I)}function M(e){D.unshift(e)}function z(e){P.unshift(e)}function N(e){I.unshift(e)}var O=0,$=null;function G(e){O++,n.monitorRunDependencies&&n.monitorRunDependencies(O)}function H(e){if(O--,n.monitorRunDependencies&&n.monitorRunDependencies(O),0==O&&$){var t=$;$=null,t()}}function V(e){n.onAbort&&n.onAbort(e),b(e="Aborted("+e+")"),k=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw i(t),t}var W,j="data:application/octet-stream;base64,",q=e=>e.startsWith(j),Y=e=>e.startsWith("file://");function K(e){if(e==W&&g)return new Uint8Array(g);if(o)return o(e);throw"both async and sync fetching of the wasm failed"}function X(e){if(!g&&(l||c)){if("function"==typeof fetch&&!Y(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw"failed to load wasm binary file at '"+e+"'";return t.arrayBuffer()})).catch((()=>K(e)));if(a)return new Promise(((t,r)=>{a(e,(e=>t(new Uint8Array(e))),r)}))}return Promise.resolve().then((()=>K(e)))}function Z(e,t,r){return X(e).then((e=>WebAssembly.instantiate(e,t))).then((e=>e)).then(r,(e=>{b(`failed to asynchronously prepare wasm: ${e}`),V(e)}))}function J(e,t,r,i){return e||"function"!=typeof WebAssembly.instantiateStreaming||q(t)||Y(t)||u||"function"!=typeof fetch?Z(t,r,i):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,r).then(i,(function(e){return b(`wasm streaming compile failed: ${e}`),b("falling back to ArrayBuffer instantiation"),Z(t,r,i)}))))}function Q(){var e={a:Ar};function t(e,t){return Br=e.exports,y=Br.C,C(),rt=Br.G,z(Br.D),H(),Br}if(G(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){b(`Module.instantiateWasm callback failed with error: ${e}`),i(e)}return J(g,W,e,(function(e){t(e.instance)})).catch(i),{}}n.locateFile?q(W="decoder-pro-simd.wasm")||(W=f(W)):W=new URL("decoder-pro-simd.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href).href;var ee=e=>{for(;e.length>0;)e.shift()(n)};function te(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){x[this.ptr+4>>2]=e},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(e){x[this.ptr+8>>2]=e},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(e){e=e?1:0,w[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=w[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,w[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=w[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t)},this.set_adjusted_ptr=function(e){x[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){if(kr(this.get_type()))return x[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}n.noExitRuntime;var re,ie,ne,se=(e,t,r)=>{throw new te(e).init(t,r),e},ae=(e,t,r,i,n)=>{},oe=()=>{for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);re=e},de=e=>{for(var t="",r=e;S[r];)t+=re[S[r++]];return t},le={},ce={},ue={},he=e=>{throw new ie(e)},fe=e=>{throw new ne(e)},pe=(e,t,r)=>{function i(t){var i=r(t);i.length!==e.length&&fe("Mismatched type converter count");for(var n=0;n{ce.hasOwnProperty(e)?n[t]=ce[e]:(s.push(e),le.hasOwnProperty(e)||(le[e]=[]),le[e].push((()=>{n[t]=ce[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)};function me(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};var i=t.name;if(e||he(`type "${i}" must have a positive integer typeid pointer`),ce.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;he(`Cannot register type '${i}' twice`)}if(ce[e]=t,delete ue[e],le.hasOwnProperty(e)){var n=le[e];delete le[e],n.forEach((e=>e()))}}function _e(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");return me(e,t,r)}var ge,ye=8,ve=(e,t,r,i)=>{_e(e,{name:t=de(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:i},argPackAdvance:ye,readValueFromPointer:function(e){return this.fromWireType(S[e])},destructorFunction:null})},be=e=>({count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}),we=e=>{he(e.$$.ptrType.registeredClass.name+" instance already deleted")},Se=!1,Ee=e=>{},Ae=e=>{e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)},Be=e=>{e.count.value-=1,0===e.count.value&&Ae(e)},xe=(e,t,r)=>{if(t===r)return e;if(void 0===r.baseClass)return null;var i=xe(e,t,r.baseClass);return null===i?null:r.downcast(i)},Ue={},Te=()=>Object.keys(Fe).length,ke=()=>{var e=[];for(var t in Fe)Fe.hasOwnProperty(t)&&e.push(Fe[t]);return e},Ce=[],De=()=>{for(;Ce.length;){var e=Ce.pop();e.$$.deleteScheduled=!1,e.delete()}},Pe=e=>{ge=e,Ce.length&&ge&&ge(De)},Ie=()=>{n.getInheritedInstanceCount=Te,n.getLiveInheritedInstances=ke,n.flushPendingDeletes=De,n.setDelayFunction=Pe},Fe={},Le=(e,t)=>{for(void 0===t&&he("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t},Re=(e,t)=>(t=Le(e,t),Fe[t]),Me=(e,t)=>(t.ptrType&&t.ptr||fe("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&fe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ne(Object.create(e,{$$:{value:t}})));function ze(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=Re(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Me(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Me(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ue[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=xe(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Me(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}var Ne=e=>"undefined"==typeof FinalizationRegistry?(Ne=e=>e,e):(Se=new FinalizationRegistry((e=>{Be(e.$$)})),Ne=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};Se.register(e,r,e)}return e},Ee=e=>Se.unregister(e),Ne(e)),Oe=()=>{Object.assign($e.prototype,{isAliasOf(e){if(!(this instanceof $e))return!1;if(!(e instanceof $e))return!1;var t=this.$$.ptrType.registeredClass,r=this.$$.ptr;e.$$=e.$$;for(var i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n},clone(){if(this.$$.ptr||we(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=Ne(Object.create(Object.getPrototypeOf(this),{$$:{value:be(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e},delete(){this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ee(this),Be(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||we(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&he("Object already scheduled for deletion"),Ce.push(this),1===Ce.length&&ge&&ge(De),this.$$.deleteScheduled=!0,this}})};function $e(){}var Ge=(e,t)=>Object.defineProperty(t,"name",{value:e}),He=(e,t,r)=>{if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||he(`Function '${r}' called with an invalid number of arguments (${arguments.length}) - expects one of (${e[t].overloadTable})!`),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}},Ve=(e,t,r)=>{n.hasOwnProperty(e)?((void 0===r||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[r])&&he(`Cannot register public name '${e}' twice`),He(n,e,e),n.hasOwnProperty(r)&&he(`Cannot register multiple overloads of a function with the same number of arguments (${r})!`),n[e].overloadTable[r]=t):(n[e]=t,void 0!==r&&(n[e].numArguments=r))},We=48,je=57,qe=e=>{if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=We&&t<=je?`_${e}`:e};function Ye(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}var Ke=(e,t,r)=>{for(;t!==r;)t.upcast||he(`Expected null or instance of ${r.name}, got an instance of ${t.name}`),e=t.upcast(e),t=t.baseClass;return e};function Xe(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&t.$$.ptrType.isConst&&he(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&he("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:he(`Cannot convert argument of type ${t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,Tt.toHandle((()=>n.delete()))),null!==e&&e.push(this.rawDestructor,r)}break;default:he("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&he(`null is not a valid ${this.name}`),0;t.$$||he(`Cannot pass "${Pt(t)}" as a ${this.name}`),t.$$.ptr||he(`Cannot pass deleted object as a pointer of type ${this.name}`),t.$$.ptrType.isConst&&he(`Cannot convert argument of type ${t.$$.ptrType.name} to parameter type ${this.name}`);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(x[e>>2])}var et=()=>{Object.assign(tt.prototype,{getPointee(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e},destructor(e){this.rawDestructor&&this.rawDestructor(e)},argPackAdvance:ye,readValueFromPointer:Qe,deleteObject(e){null!==e&&e.delete()},fromWireType:ze})};function tt(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var rt,it,nt=(e,t,r)=>{n.hasOwnProperty(e)||fe("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==r?n[e].overloadTable[r]=t:(n[e]=t,n[e].argCount=r)},st=(e,t,r)=>{var i=n["dynCall_"+e];return r&&r.length?i.apply(null,[t].concat(r)):i.call(null,t)},at=[],ot=e=>{var t=at[e];return t||(e>=at.length&&(at.length=e+1),at[e]=t=rt.get(e)),t},dt=(e,t,r)=>e.includes("j")?st(e,t,r):ot(t).apply(null,r),lt=(e,t)=>{var r=[];return function(){return r.length=0,Object.assign(r,arguments),dt(e,t,r)}},ct=(e,t)=>{var r=(e=de(e)).includes("j")?lt(e,t):ot(t);return"function"!=typeof r&&he(`unknown function pointer with signature ${e}: ${t}`),r},ut=(e,t)=>{var r=Ge(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:`${this.name}: ${this.message}`},r},ht=e=>{var t=Tr(e),r=de(t);return xr(t),r},ft=(e,t)=>{var r=[],i={};throw t.forEach((function e(t){i[t]||ce[t]||(ue[t]?ue[t].forEach(e):(r.push(t),i[t]=!0))})),new it(`${e}: `+r.map(ht).join([", "]))},pt=(e,t,r,i,n,s,a,o,d,l,c,u,h)=>{c=de(c),s=ct(n,s),o&&(o=ct(a,o)),l&&(l=ct(d,l)),h=ct(u,h);var f=qe(c);Ve(f,(function(){ft(`Cannot construct ${c} due to unbound types`,[i])})),pe([e,t,r],i?[i]:[],(function(t){var r,n;t=t[0],n=i?(r=t.registeredClass).instancePrototype:$e.prototype;var a=Ge(c,(function(){if(Object.getPrototypeOf(this)!==d)throw new ie("Use 'new' to construct "+c);if(void 0===u.constructor_body)throw new ie(c+" has no accessible constructor");var e=u.constructor_body[arguments.length];if(void 0===e)throw new ie(`Tried to invoke ctor of ${c} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(u.constructor_body).toString()}) parameters instead!`);return e.apply(this,arguments)})),d=Object.create(n,{constructor:{value:a}});a.prototype=d;var u=new Ye(c,a,d,h,r,s,o,l);u.baseClass&&(void 0===u.baseClass.__derivedClasses&&(u.baseClass.__derivedClasses=[]),u.baseClass.__derivedClasses.push(u));var p=new tt(c,u,!0,!1,!1),m=new tt(c+"*",u,!1,!1,!1),_=new tt(c+" const*",u,!1,!0,!1);return Ue[e]={pointerType:m,constPointerType:_},nt(f,a),[p,m,_]}))},mt=(e,t)=>{for(var r=[],i=0;i>2]);return r},_t=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function gt(e,t){if(!(e instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof e} which is not a function`);var r=Ge(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function yt(e,t,r,i,n,s){var a=t.length;a<2&&he("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var o=null!==t[1]&&null!==r,d=!1,l=1;l0?", ":"")+h),f+=(c||s?"var rv = ":"")+"invoker(fn"+(h.length>0?", ":"")+h+");\n",d)f+="runDestructors(destructors);\n";else for(l=o?1:2;l{var a=mt(t,r);n=ct(i,n),pe([],[e],(function(e){var r=`constructor ${(e=e[0]).name}`;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ie(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.registeredClass.constructor_body[t-1]=()=>{ft(`Cannot construct ${e.name} due to unbound types`,a)},pe([],a,(i=>(i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=yt(r,i,null,n,s),[]))),[]}))},bt=e=>{const t=(e=e.trim()).indexOf("(");return-1!==t?e.substr(0,t):e},wt=(e,t,r,i,n,s,a,o,d)=>{var l=mt(r,i);t=de(t),t=bt(t),s=ct(n,s),pe([],[e],(function(e){var i=`${(e=e[0]).name}.${t}`;function n(){ft(`Cannot call ${i} due to unbound types`,l)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var c=e.registeredClass.instancePrototype,u=c[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,c[t]=n):(He(c,t,i),c[t].overloadTable[r-2]=n),pe([],l,(function(n){var o=yt(i,n,e,s,a,d);return void 0===c[t].overloadTable?(o.argCount=r-2,c[t]=o):c[t].overloadTable[r-2]=o,[]})),[]}))};function St(){Object.assign(Et.prototype,{get(e){return this.allocated[e]},has(e){return void 0!==this.allocated[e]},allocate(e){var t=this.freelist.pop()||this.allocated.length;return this.allocated[t]=e,t},free(e){this.allocated[e]=void 0,this.freelist.push(e)}})}function Et(){this.allocated=[void 0],this.freelist=[]}var At=new Et,Bt=e=>{e>=At.reserved&&0==--At.get(e).refcount&&At.free(e)},xt=()=>{for(var e=0,t=At.reserved;t{At.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),At.reserved=At.allocated.length,n.count_emval_handles=xt},Tt={toValue:e=>(e||he("Cannot use deleted val. handle = "+e),At.get(e).value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return At.allocate({refcount:1,value:e})}}};function kt(e){return this.fromWireType(B[e>>2])}var Ct,Dt=(e,t)=>{_e(e,{name:t=de(t),fromWireType:e=>{var t=Tt.toValue(e);return Bt(e),t},toWireType:(e,t)=>Tt.toHandle(t),argPackAdvance:ye,readValueFromPointer:kt,destructorFunction:null})},Pt=e=>{if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e},It=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(U[e>>2])};case 8:return function(e){return this.fromWireType(T[e>>3])};default:throw new TypeError(`invalid float width (${t}): ${e}`)}},Ft=(e,t,r)=>{_e(e,{name:t=de(t),fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:ye,readValueFromPointer:It(t,r),destructorFunction:null})},Lt=(e,t,r)=>{switch(t){case 1:return r?e=>w[e>>0]:e=>S[e>>0];case 2:return r?e=>E[e>>1]:e=>A[e>>1];case 4:return r?e=>B[e>>2]:e=>x[e>>2];default:throw new TypeError(`invalid integer width (${t}): ${e}`)}},Rt=(e,t,r,i,n)=>{t=de(t);var s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var o=t.includes("unsigned");_e(e,{name:t,fromWireType:s,toWireType:o?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:ye,readValueFromPointer:Lt(t,r,0!==i),destructorFunction:null})},Mt=(e,t,r)=>{var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=x[e>>2],r=x[e+4>>2];return new i(w.buffer,r,t)}_e(e,{name:r=de(r),fromWireType:n,argPackAdvance:ye,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},zt=(e,t,r,i)=>{if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n},Nt=(e,t,r)=>zt(e,S,t,r),Ot=e=>{for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t},$t="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,Gt=(e,t,r)=>{for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&$t)return $t.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s},Ht=(e,t)=>e?Gt(S,e,t):"",Vt=(e,t)=>{var r="std::string"===(t=de(t));_e(e,{name:t,fromWireType(e){var t,i=x[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==S[o]){var d=Ht(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)Nt(t,a,i+1);else if(n)for(var o=0;o255&&(xr(a),he("String has UTF-16 code units that do not fit in 8 bits")),S[a+o]=d}else for(o=0;o{for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&A[i];)++i;if((r=i<<1)-e>32&&Wt)return Wt.decode(S.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=E[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s},qt=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return E[t>>1]=0,t-i},Yt=e=>2*e.length,Kt=(e,t)=>{for(var r=0,i="";!(r>=t/4);){var n=B[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i},Xt=(e,t,r)=>{if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),B[t>>2]=a,(t+=4)+4>n)break}return B[t>>2]=0,t-i},Zt=e=>{for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t},Jt=(e,t,r)=>{var i,n,s,a,o;r=de(r),2===t?(i=jt,n=qt,a=Yt,s=()=>A,o=1):4===t&&(i=Kt,n=Xt,a=Zt,s=()=>x,o=2),_e(e,{name:r,fromWireType:e=>{for(var r,n=x[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return xr(e),r},toWireType:(e,i)=>{"string"!=typeof i&&he(`Cannot pass non-string to C++ string type ${r}`);var s=a(i),d=Ur(4+s+t);return x[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(xr,d),d},argPackAdvance:ye,readValueFromPointer:kt,destructorFunction(e){xr(e)}})},Qt=(e,t)=>{_e(e,{isVoid:!0,name:t=de(t),argPackAdvance:0,fromWireType:()=>{},toWireType:(e,t)=>{}})},er={},tr=e=>{var t=er[e];return void 0===t?de(e):t},rr=[],ir=(e,t,r,i,n)=>(e=rr[e])(t=Tt.toValue(t),t[r=tr(r)],i,n),nr=e=>{var t=rr.length;return rr.push(e),t},sr=(e,t)=>{var r=ce[e];return void 0===r&&he(t+" has unknown type "+ht(e)),r},ar=(e,t)=>{for(var r=new Array(e),i=0;i>2],"parameter "+i);return r},or=(e,t,r)=>{var i=[],n=e.toWireType(i,r);return i.length&&(x[t>>2]=Tt.toHandle(i)),n},dr=(e,t,r)=>{var i=ar(e,t),n=i.shift();e--;var s="return function (obj, func, destructorsRef, args) {\n",a=0,o=[];0===r&&o.push("obj");for(var d=["retType"],l=[n],c=0;ce.name)).join(", ")}) => ${n.name}>`;return nr(Ge(h,u))},lr=e=>{e>4&&(At.get(e).refcount+=1)},cr=e=>Tt.toHandle(tr(e)),ur=()=>Tt.toHandle({}),hr=e=>Tt.toHandle(Ht(e)),fr=e=>{var t=Tt.toValue(e);_t(t),Bt(e)},pr=(e,t,r)=>{e=Tt.toValue(e),t=Tt.toValue(t),r=Tt.toValue(r),e[t]=r},mr=(e,t)=>{var r=(e=sr(e,"_emval_take_value")).readValueFromPointer(t);return Tt.toHandle(r)},_r=()=>{V("")};Ct=()=>performance.now();var gr=(e,t,r)=>S.copyWithin(e,t,t+r),yr=e=>{V("OOM")},vr=e=>{S.length,yr()},br=[null,[],[]],wr=(e,t)=>{var r=br[e];0===t||10===t?((1===e?v:b)(Gt(r,0)),r.length=0):r.push(t)},Sr=(e,t,r,i)=>{for(var n=0,s=0;s>2],o=x[t+4>>2];t+=8;for(var d=0;d>2]=n,0};oe(),ie=n.BindingError=class extends Error{constructor(e){super(e),this.name="BindingError"}},ne=n.InternalError=class extends Error{constructor(e){super(e),this.name="InternalError"}},Oe(),Ie(),et(),it=n.UnboundTypeError=ut(Error,"UnboundTypeError"),St(),Ut();var Er,Ar={o:se,r:ae,x:ve,q:pt,p:vt,h:wt,w:Dt,k:Ft,b:Rt,a:Mt,l:Vt,i:Jt,y:Qt,g:ir,c:Bt,f:dr,z:lr,m:cr,B:ur,v:hr,e:fr,n:pr,A:mr,j:_r,d:Ct,u:gr,s:vr,t:Sr},Br=Q(),xr=e=>(xr=Br.E)(e),Ur=e=>(Ur=Br.F)(e),Tr=e=>(Tr=Br.H)(e),kr=e=>(kr=Br.I)(e);function Cr(){function e(){Er||(Er=!0,n.calledRun=!0,k||(L(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),R()))}O>0||(F(),O>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),e()}),1)):e()))}if(n.dynCall_jiji=(e,t,r,i,s)=>(n.dynCall_jiji=Br.J)(e,t,r,i,s),n.___start_em_js=143452,n.___stop_em_js=143509,$=function e(){Er||Cr(),Er||($=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return Cr(),e.ready}),a=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,s,a,o,d,l,c=Object.assign({},t),u="./this.program",h="object"==typeof window,f="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=f?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(o=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),o.readFileSync(e,t?void 0:"utf8")},a=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},s=(e,t,r)=>{l(),e=d.normalize(e),o.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(u=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof J))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},f&&(a=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),s=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),g=t.printErr||console.warn.bind(console);Object.assign(t,c),c=null,t.arguments&&t.arguments,t.thisProgram&&(u=t.thisProgram),t.quit&&t.quit;var y,v;t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&V("no native wasm support detected");var b=!1;function w(e,t){e||V(t)}var S,E,A,B,x,U,T,k,C,D,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function I(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&P)return P.decode(e.subarray(t,n));for(var s="";t>10,56320|1023&l)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function F(e,t){return e?I(A,e,t):""}function L(e,t,r,i){if(!(i>0))return 0;for(var n=r,s=r+i-1,a=0;a=55296&&o<=57343)o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a);if(o<=127){if(r>=s)break;t[r++]=o}else if(o<=2047){if(r+1>=s)break;t[r++]=192|o>>6,t[r++]=128|63&o}else if(o<=65535){if(r+2>=s)break;t[r++]=224|o>>12,t[r++]=128|o>>6&63,t[r++]=128|63&o}else{if(r+3>=s)break;t[r++]=240|o>>18,t[r++]=128|o>>12&63,t[r++]=128|o>>6&63,t[r++]=128|63&o}}return t[r]=0,r-n}function R(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var M=[],z=[],N=[];var O=0,$=null;function G(e){O++,t.monitorRunDependencies&&t.monitorRunDependencies(O)}function H(e){if(O--,t.monitorRunDependencies&&t.monitorRunDependencies(O),0==O&&$){var r=$;$=null,r()}}function V(e){t.onAbort&&t.onAbort(e),g(e="Aborted("+e+")"),b=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var W,j,q,Y;function K(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){return e.startsWith("file://")}function Z(e){try{if(e==W&&y)return new Uint8Array(y);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Q(e){for(;e.length>0;)e.shift()(t)}function ee(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){T[this.ptr+4>>2]=e},this.get_type=function(){return T[this.ptr+4>>2]},this.set_destructor=function(e){T[this.ptr+8>>2]=e},this.get_destructor=function(){return T[this.ptr+8>>2]},this.set_refcount=function(e){U[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,E[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=E[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,E[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=E[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=U[this.ptr>>2];U[this.ptr>>2]=e+1},this.release_ref=function(){var e=U[this.ptr>>2];return U[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){T[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return T[this.ptr+16>>2]},this.get_exception_ptr=function(){if(jt(this.get_type()))return T[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?K(W="decoder-pro-audio.wasm")||(j=W,W=t.locateFile?t.locateFile(j,m):m+j):W=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro-simd.js",document.baseURI).href).toString();var te={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=te.isAbs(e),r="/"===e.substr(-1);return(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=te.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return te.normalize(e.join("/"))},join2:(e,t)=>te.normalize(e+"/"+t)};var re={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:oe.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=te.isAbs(i)}return(t?"/":"")+(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=re.resolve(e).substr(1),t=re.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),s=Math.min(i.length,n.length),a=s,o=0;o0?r:R(e)+1,n=new Array(i),s=L(e,n,0,n.length);return t&&(n.length=s),n}var ne={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ne.ttys[e]={input:[],output:[],ops:t},oe.registerDevice(e,ne.stream_ops)},stream_ops:{open:function(e){var t=ne.ttys[e.node.rdev];if(!t)throw new oe.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new oe.ErrnoError(60);for(var s=0,a=0;a0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ie(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(I(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(g(I(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g(I(e.output,0)),e.output=[])}}};function se(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Wt(65536,e);return t?(function(e,t){A.fill(0,e,e+t)}(t,e),t):0}var ae={ops_table:null,mount:function(e){return ae.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(oe.isBlkdev(r)||oe.isFIFO(r))throw new oe.ErrnoError(63);ae.ops_table||(ae.ops_table={dir:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,lookup:ae.node_ops.lookup,mknod:ae.node_ops.mknod,rename:ae.node_ops.rename,unlink:ae.node_ops.unlink,rmdir:ae.node_ops.rmdir,readdir:ae.node_ops.readdir,symlink:ae.node_ops.symlink},stream:{llseek:ae.stream_ops.llseek}},file:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:{llseek:ae.stream_ops.llseek,read:ae.stream_ops.read,write:ae.stream_ops.write,allocate:ae.stream_ops.allocate,mmap:ae.stream_ops.mmap,msync:ae.stream_ops.msync}},link:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr,readlink:ae.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ae.node_ops.getattr,setattr:ae.node_ops.setattr},stream:oe.chrdev_stream_ops}});var n=oe.createNode(e,t,r,i);return oe.isDir(n.mode)?(n.node_ops=ae.ops_table.dir.node,n.stream_ops=ae.ops_table.dir.stream,n.contents={}):oe.isFile(n.mode)?(n.node_ops=ae.ops_table.file.node,n.stream_ops=ae.ops_table.file.stream,n.usedBytes=0,n.contents=null):oe.isLink(n.mode)?(n.node_ops=ae.ops_table.link.node,n.stream_ops=ae.ops_table.link.stream):oe.isChrdev(n.mode)&&(n.node_ops=ae.ops_table.chrdev.node,n.stream_ops=ae.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=oe.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,oe.isDir(e.mode)?t.size=4096:oe.isFile(e.mode)?t.size=e.usedBytes:oe.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&ae.resizeFileStorage(e,t.size)},lookup:function(e,t){throw oe.genericErrors[44]},mknod:function(e,t,r,i){return ae.createNode(e,t,r,i)},rename:function(e,t,r){if(oe.isDir(e.mode)){var i;try{i=oe.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new oe.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=oe.lookupNode(e,t);for(var i in r.contents)throw new oe.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=ae.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!oe.isLink(e.mode))throw new oe.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var s=e.node.contents;if(n>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,i);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),r);else for(var o=0;o0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=re.resolve(oe.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new oe.ErrnoError(32);for(var i=te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=oe.root,s="/",a=0;a40)throw new oe.ErrnoError(32)}}return{path:s,node:n}},getPath:e=>{for(var t;;){if(oe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%oe.nameTable.length},hashAddNode:e=>{var t=oe.hashName(e.parent.id,e.name);e.name_next=oe.nameTable[t],oe.nameTable[t]=e},hashRemoveNode:e=>{var t=oe.hashName(e.parent.id,e.name);if(oe.nameTable[t]===e)oe.nameTable[t]=e.name_next;else for(var r=oe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=oe.mayLookup(e);if(r)throw new oe.ErrnoError(r,e);for(var i=oe.hashName(e.id,t),n=oe.nameTable[i];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return oe.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new oe.FSNode(e,t,r,i);return oe.hashAddNode(n),n},destroyNode:e=>{oe.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=oe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>oe.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=oe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{oe.lookupNode(e,t);return 20}catch(e){}return oe.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=oe.lookupNode(e,t)}catch(e){return e.errno}var n=oe.nodePermissions(e,"wx");if(n)return n;if(r){if(!oe.isDir(i.mode))return 54;if(oe.isRoot(i)||oe.getPath(i)===oe.cwd())return 10}else if(oe.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?oe.isLink(e.mode)?32:oe.isDir(e.mode)&&("r"!==oe.flagsToPermissionString(t)||512&t)?31:oe.nodePermissions(e,oe.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!oe.streams[r])return r;throw new oe.ErrnoError(33)},getStream:e=>oe.streams[e],createStream:(e,t,r)=>{oe.FSStream||(oe.FSStream=function(){this.shared={}},oe.FSStream.prototype={},Object.defineProperties(oe.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new oe.FSStream,e);var i=oe.nextfd(t,r);return e.fd=i,oe.streams[i]=e,e},closeStream:e=>{oe.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=oe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new oe.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{oe.devices[e]={stream_ops:t}},getDevice:e=>oe.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),oe.syncFSRequests++,oe.syncFSRequests>1&&g("warning: "+oe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=oe.getMounts(oe.root.mount),i=0;function n(e){return oe.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:(e,t,r)=>{var i,n="/"===r,s=!r;if(n&&oe.root)throw new oe.ErrnoError(10);if(!n&&!s){var a=oe.lookupPath(r,{follow_mount:!1});if(r=a.path,i=a.node,oe.isMountpoint(i))throw new oe.ErrnoError(10);if(!oe.isDir(i.mode))throw new oe.ErrnoError(54)}var o={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(o);return d.mount=o,o.root=d,n?oe.root=d:i&&(i.mounted=o,i.mount&&i.mount.mounts.push(o)),d},unmount:e=>{var t=oe.lookupPath(e,{follow_mount:!1});if(!oe.isMountpoint(t.node))throw new oe.ErrnoError(28);var r=t.node,i=r.mounted,n=oe.getMounts(i);Object.keys(oe.nameTable).forEach((e=>{for(var t=oe.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&oe.destroyNode(t),t=r}})),r.mounted=null;var s=r.mount.mounts.indexOf(i);r.mount.mounts.splice(s,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=oe.lookupPath(e,{parent:!0}).node,n=te.basename(e);if(!n||"."===n||".."===n)throw new oe.ErrnoError(28);var s=oe.mayCreate(i,n);if(s)throw new oe.ErrnoError(s);if(!i.node_ops.mknod)throw new oe.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,oe.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,oe.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,oe.mknod(e,t,r)),symlink:(e,t)=>{if(!re.resolve(e))throw new oe.ErrnoError(44);var r=oe.lookupPath(t,{parent:!0}).node;if(!r)throw new oe.ErrnoError(44);var i=te.basename(t),n=oe.mayCreate(r,i);if(n)throw new oe.ErrnoError(n);if(!r.node_ops.symlink)throw new oe.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=te.dirname(e),s=te.dirname(t),a=te.basename(e),o=te.basename(t);if(r=oe.lookupPath(e,{parent:!0}).node,i=oe.lookupPath(t,{parent:!0}).node,!r||!i)throw new oe.ErrnoError(44);if(r.mount!==i.mount)throw new oe.ErrnoError(75);var d,l=oe.lookupNode(r,a),c=re.relative(e,s);if("."!==c.charAt(0))throw new oe.ErrnoError(28);if("."!==(c=re.relative(t,n)).charAt(0))throw new oe.ErrnoError(55);try{d=oe.lookupNode(i,o)}catch(e){}if(l!==d){var u=oe.isDir(l.mode),h=oe.mayDelete(r,a,u);if(h)throw new oe.ErrnoError(h);if(h=d?oe.mayDelete(i,o,u):oe.mayCreate(i,o))throw new oe.ErrnoError(h);if(!r.node_ops.rename)throw new oe.ErrnoError(63);if(oe.isMountpoint(l)||d&&oe.isMountpoint(d))throw new oe.ErrnoError(10);if(i!==r&&(h=oe.nodePermissions(r,"w")))throw new oe.ErrnoError(h);oe.hashRemoveNode(l);try{r.node_ops.rename(l,i,o)}catch(e){throw e}finally{oe.hashAddNode(l)}}},rmdir:e=>{var t=oe.lookupPath(e,{parent:!0}).node,r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!0);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.rmdir)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.rmdir(t,r),oe.destroyNode(i)},readdir:e=>{var t=oe.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new oe.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=oe.lookupPath(e,{parent:!0}).node;if(!t)throw new oe.ErrnoError(44);var r=te.basename(e),i=oe.lookupNode(t,r),n=oe.mayDelete(t,r,!1);if(n)throw new oe.ErrnoError(n);if(!t.node_ops.unlink)throw new oe.ErrnoError(63);if(oe.isMountpoint(i))throw new oe.ErrnoError(10);t.node_ops.unlink(t,r),oe.destroyNode(i)},readlink:e=>{var t=oe.lookupPath(e).node;if(!t)throw new oe.ErrnoError(44);if(!t.node_ops.readlink)throw new oe.ErrnoError(28);return re.resolve(oe.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=oe.lookupPath(e,{follow:!t}).node;if(!r)throw new oe.ErrnoError(44);if(!r.node_ops.getattr)throw new oe.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>oe.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=oe.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new oe.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{oe.chmod(e,t,!0)},fchmod:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);oe.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=oe.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new oe.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{oe.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=oe.getStream(e);if(!i)throw new oe.ErrnoError(8);oe.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new oe.ErrnoError(28);var r;"string"==typeof e?r=oe.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new oe.ErrnoError(63);if(oe.isDir(r.mode))throw new oe.ErrnoError(31);if(!oe.isFile(r.mode))throw new oe.ErrnoError(28);var i=oe.nodePermissions(r,"w");if(i)throw new oe.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=oe.getStream(e);if(!r)throw new oe.ErrnoError(8);if(0==(2097155&r.flags))throw new oe.ErrnoError(28);oe.truncate(r.node,t)},utime:(e,t,r)=>{var i=oe.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new oe.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?oe.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=te.normalize(e);try{n=oe.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var s=!1;if(64&r)if(n){if(128&r)throw new oe.ErrnoError(20)}else n=oe.mknod(e,i,0),s=!0;if(!n)throw new oe.ErrnoError(44);if(oe.isChrdev(n.mode)&&(r&=-513),65536&r&&!oe.isDir(n.mode))throw new oe.ErrnoError(54);if(!s){var a=oe.mayOpen(n,r);if(a)throw new oe.ErrnoError(a)}512&r&&!s&&oe.truncate(n,0),r&=-131713;var o=oe.createStream({node:n,path:oe.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!t.logReadFiles||1&r||(oe.readFiles||(oe.readFiles={}),e in oe.readFiles||(oe.readFiles[e]=1)),o},close:e=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{oe.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new oe.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new oe.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(1==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.read)throw new oe.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,r,i,n);return s||(e.position+=a),a},write:(e,t,r,i,n,s)=>{if(i<0||n<0)throw new oe.ErrnoError(28);if(oe.isClosed(e))throw new oe.ErrnoError(8);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(oe.isDir(e.node.mode))throw new oe.ErrnoError(31);if(!e.stream_ops.write)throw new oe.ErrnoError(28);e.seekable&&1024&e.flags&&oe.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new oe.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,r,i,n,s);return a||(e.position+=o),o},allocate:(e,t,r)=>{if(oe.isClosed(e))throw new oe.ErrnoError(8);if(t<0||r<=0)throw new oe.ErrnoError(28);if(0==(2097155&e.flags))throw new oe.ErrnoError(8);if(!oe.isFile(e.node.mode)&&!oe.isDir(e.node.mode))throw new oe.ErrnoError(43);if(!e.stream_ops.allocate)throw new oe.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new oe.ErrnoError(2);if(1==(2097155&e.flags))throw new oe.ErrnoError(2);if(!e.stream_ops.mmap)throw new oe.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new oe.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=oe.open(e,t.flags),n=oe.stat(e),s=n.size,a=new Uint8Array(s);return oe.read(i,a,0,s,0),"utf8"===t.encoding?r=I(a,0):"binary"===t.encoding&&(r=a),oe.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=oe.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(R(t)+1),s=L(t,n,0,n.length);oe.write(i,n,0,s,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");oe.write(i,t,0,t.byteLength,void 0,r.canOwn)}oe.close(i)},cwd:()=>oe.currentPath,chdir:e=>{var t=oe.lookupPath(e,{follow:!0});if(null===t.node)throw new oe.ErrnoError(44);if(!oe.isDir(t.node.mode))throw new oe.ErrnoError(54);var r=oe.nodePermissions(t.node,"x");if(r)throw new oe.ErrnoError(r);oe.currentPath=t.path},createDefaultDirectories:()=>{oe.mkdir("/tmp"),oe.mkdir("/home"),oe.mkdir("/home/web_user")},createDefaultDevices:()=>{oe.mkdir("/dev"),oe.registerDevice(oe.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),oe.mkdev("/dev/null",oe.makedev(1,3)),ne.register(oe.makedev(5,0),ne.default_tty_ops),ne.register(oe.makedev(6,0),ne.default_tty1_ops),oe.mkdev("/dev/tty",oe.makedev(5,0)),oe.mkdev("/dev/tty1",oe.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>V("randomDevice")}();oe.createDevice("/dev","random",e),oe.createDevice("/dev","urandom",e),oe.mkdir("/dev/shm"),oe.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{oe.mkdir("/proc");var e=oe.mkdir("/proc/self");oe.mkdir("/proc/self/fd"),oe.mount({mount:()=>{var t=oe.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=oe.getStream(r);if(!i)throw new oe.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?oe.createDevice("/dev","stdin",t.stdin):oe.symlink("/dev/tty","/dev/stdin"),t.stdout?oe.createDevice("/dev","stdout",null,t.stdout):oe.symlink("/dev/tty","/dev/stdout"),t.stderr?oe.createDevice("/dev","stderr",null,t.stderr):oe.symlink("/dev/tty1","/dev/stderr"),oe.open("/dev/stdin",0),oe.open("/dev/stdout",1),oe.open("/dev/stderr",1)},ensureErrnoError:()=>{oe.ErrnoError||(oe.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},oe.ErrnoError.prototype=new Error,oe.ErrnoError.prototype.constructor=oe.ErrnoError,[44].forEach((e=>{oe.genericErrors[e]=new oe.ErrnoError(e),oe.genericErrors[e].stack=""})))},staticInit:()=>{oe.ensureErrnoError(),oe.nameTable=new Array(4096),oe.mount(ae,{},"/"),oe.createDefaultDirectories(),oe.createDefaultDevices(),oe.createSpecialDirectories(),oe.filesystems={MEMFS:ae}},init:(e,r,i)=>{oe.init.initialized=!0,oe.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,oe.createStandardStreams()},quit:()=>{oe.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=oe.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=oe.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=oe.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=te.basename(e),i=oe.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:oe.getPath(e);for(var n=t.split("/").reverse();n.length;){var s=n.pop();if(s){var a=te.join2(e,s);try{oe.mkdir(a)}catch(e){}e=a}}return a},createFile:(e,t,r,i,n)=>{var s=te.join2("string"==typeof e?e:oe.getPath(e),t),a=oe.getMode(i,n);return oe.create(s,a)},createDataFile:(e,t,r,i,n,s)=>{var a=t;e&&(e="string"==typeof e?e:oe.getPath(e),a=t?te.join2(e,t):e);var o=oe.getMode(i,n),d=oe.create(a,o);if(r){if("string"==typeof r){for(var l=new Array(r.length),c=0,u=r.length;c{var n=te.join2("string"==typeof e?e:oe.getPath(e),t),s=oe.getMode(!!r,!!i);oe.createDevice.major||(oe.createDevice.major=64);var a=oe.makedev(oe.createDevice.major++,0);return oe.registerDevice(a,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,s)=>{for(var a=0,o=0;o{for(var a=0;a{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ie(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new oe.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function s(){this.lengthKnown=!1,this.chunks=[]}if(s.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=i);var o=this;o.setDataGetter((e=>{var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,i-1),void 0===o.chunks[e]&&(o.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ie(n.responseText||"",!0)})(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),!s&&i||(a=i=1,i=this.getter(0).length,a=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:r};var d=oe.createFile(e,t,o,i,n);o.contents?d.contents=o.contents:o.url&&(d.contents=null,d.url=o.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function c(e,t,r,i,n){var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,i);if(s.slice)for(var o=0;o{var t=d.stream_ops[e];l[e]=function(){return oe.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(oe.forceLoadFile(d),c(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{oe.forceLoadFile(d);var s=se(t);if(!s)throw new oe.ErrnoError(48);return c(e,E,s,t,r),{ptr:s,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,a,o,d,l,c)=>{var u=t?re.resolve(te.join2(e,t)):e;function h(r){function s(r){c&&c(),d||oe.createDataFile(e,t,r,i,n,l),a&&a(),H()}Browser.handledByPreloadPlugin(r,u,s,(()=>{o&&o(),H()}))||s(r)}G(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;s(e,(r=>{w(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&H()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&G()}(r,(e=>h(e)),o):h(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(oe.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([oe.DB_STORE_NAME],"readwrite"),s=i.objectStore(oe.DB_STORE_NAME),a=0,o=0,d=e.length;function l(){0==o?t():r()}e.forEach((e=>{var t=s.put(oe.analyzePath(e).object.contents,e);t.onsuccess=()=>{++a+o==d&&l()},t.onerror=()=>{o++,a+o==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=oe.indexedDB();try{var n=i.open(oe.DB_NAME(),oe.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var s=i.transaction([oe.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var a=s.objectStore(oe.DB_STORE_NAME),o=0,d=0,l=e.length;function c(){0==d?t():r()}e.forEach((e=>{var t=a.get(e);t.onsuccess=()=>{oe.analyzePath(e).exists&&oe.unlink(e),oe.createDataFile(te.dirname(e),te.basename(e),t.result,!0,!0,!0),++o+d==l&&c()},t.onerror=()=>{d++,o+d==l&&c()}})),s.onerror=r},n.onerror=r}},de={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(te.isAbs(t))return t;var i;if(-100===e)i=oe.cwd();else{var n=oe.getStream(e);if(!n)throw new oe.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new oe.ErrnoError(44);return i}return te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&te.normalize(t)!==te.normalize(oe.getPath(e.node)))return-54;throw e}return U[r>>2]=i.dev,U[r+4>>2]=0,U[r+8>>2]=i.ino,U[r+12>>2]=i.mode,U[r+16>>2]=i.nlink,U[r+20>>2]=i.uid,U[r+24>>2]=i.gid,U[r+28>>2]=i.rdev,U[r+32>>2]=0,Y=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+40>>2]=Y[0],U[r+44>>2]=Y[1],U[r+48>>2]=4096,U[r+52>>2]=i.blocks,Y=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+56>>2]=Y[0],U[r+60>>2]=Y[1],U[r+64>>2]=0,Y=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+72>>2]=Y[0],U[r+76>>2]=Y[1],U[r+80>>2]=0,Y=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+88>>2]=Y[0],U[r+92>>2]=Y[1],U[r+96>>2]=0,Y=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+104>>2]=Y[0],U[r+108>>2]=Y[1],0},doMsync:function(e,t,r,i,n){var s=A.slice(e,e+r);oe.msync(t,s,n,r,i)},varargs:void 0,get:function(){return de.varargs+=4,U[de.varargs-4>>2]},getStr:function(e){return F(e)},getStreamFromFD:function(e){var t=oe.getStream(e);if(!t)throw new oe.ErrnoError(8);return t}};function le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ce=void 0;function ue(e){for(var t="",r=e;A[r];)t+=ce[A[r++]];return t}var he={},fe={},pe={};function me(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function _e(e,t){return e=me(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function ge(e,t){var r=_e(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ye=void 0;function ve(e){throw new ye(e)}var be=void 0;function we(e){throw new be(e)}function Se(e,t,r){function i(t){var i=r(t);i.length!==e.length&&we("Mismatched type converter count");for(var n=0;n{fe.hasOwnProperty(e)?n[t]=fe[e]:(s.push(e),he.hasOwnProperty(e)||(he[e]=[]),he[e].push((()=>{n[t]=fe[e],++a===s.length&&i(n)})))})),0===s.length&&i(n)}function Ee(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||ve('type "'+i+'" must have a positive integer typeid pointer'),fe.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ve("Cannot register type '"+i+"' twice")}if(fe[e]=t,delete pe[e],he.hasOwnProperty(e)){var n=he[e];delete he[e],n.forEach((e=>e()))}}function Ae(e){if(!(this instanceof je))return!1;if(!(e instanceof je))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var xe=!1;function Ue(e){}function Te(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function ke(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=ke(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ce={};function De(){return Object.keys(Me).length}function Pe(){var e=[];for(var t in Me)Me.hasOwnProperty(t)&&e.push(Me[t]);return e}var Ie=[];function Fe(){for(;Ie.length;){var e=Ie.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function Re(e){Le=e,Ie.length&&Le&&Le(Fe)}var Me={};function ze(e,t){return t=function(e,t){for(void 0===t&&ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Me[t]}function Ne(e,t){return t.ptrType&&t.ptr||we("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&we("Both smartPtrType and smartPtr must be specified"),t.count={value:1},$e(Object.create(e,{$$:{value:t}}))}function Oe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ze(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Ne(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ne(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ce[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var d=ke(t,this.registeredClass,s.registeredClass);return null===d?n.call(this):this.isSmartPointer?Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d,smartPtrType:this,smartPtr:e}):Ne(s.registeredClass.instancePrototype,{ptrType:s,ptr:d})}function $e(e){return"undefined"==typeof FinalizationRegistry?($e=e=>e,e):(xe=new FinalizationRegistry((e=>{Te(e.$$)})),$e=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};xe.register(e,r,e)}return e},Ue=e=>xe.unregister(e),$e(e))}function Ge(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=$e(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function He(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ue(this),Te(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function We(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ie.push(this),1===Ie.length&&Le&&Le(Fe),this.$$.deleteScheduled=!0,this}function je(){}function qe(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Ye(e,t,r,i,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Ke(e,t,r){for(;t!==r;)t.upcast||ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Xe(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:ve("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(U[e>>2])}function et(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function tt(e){this.rawDestructor&&this.rawDestructor(e)}function rt(e){null!==e&&e.delete()}function it(e,t,r,i,n,s,a,o,d,l,c){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=c,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var nt=[];function st(e){var t=nt[e];return t||(e>=nt.length&&(nt.length=e+1),nt[e]=t=D.get(e)),t}function at(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):st(r).apply(null,i)}function ot(e,t){var r,i,n,s=(e=ue(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),at(r,i,n)}):st(t);return"function"!=typeof s&&ve("unknown function pointer with signature "+e+": "+t),s}var dt=void 0;function lt(e){var t=Gt(e),r=ue(t);return Ot(t),r}function ct(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||fe[t]||(pe[t]?pe[t].forEach(e):(r.push(t),i[t]=!0))})),new dt(e+": "+r.map(lt).join([", "]))}function ut(e,t){for(var r=[],i=0;i>2]);return r}function ht(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ft(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=_e(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function pt(e,t,r,i,n){var s=t.length;s<2&&ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==r,o=!1,d=1;d0?", ":"")+u),h+=(l?"var rv = ":"")+"invoker(fn"+(u.length>0?", ":"")+u+");\n",o)h+="runDestructors(destructors);\n";else for(d=a?1:2;d4&&0==--_t[e].refcount&&(_t[e]=void 0,mt.push(e))}function yt(){for(var e=0,t=5;t<_t.length;++t)void 0!==_t[t]&&++e;return e}function vt(){for(var e=5;e<_t.length;++e)if(void 0!==_t[e])return _t[e];return null}var bt={toValue:e=>(e||ve("Cannot use deleted val. handle = "+e),_t[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=mt.length?mt.pop():_t.length;return _t[t]={refcount:1,value:e},t}}};function wt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function St(e,t){switch(t){case 2:return function(e){return this.fromWireType(k[e>>2])};case 3:return function(e){return this.fromWireType(C[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Et(e,t,r){switch(t){case 0:return r?function(e){return E[e]}:function(e){return A[e]};case 1:return r?function(e){return B[e>>1]}:function(e){return x[e>>1]};case 2:return r?function(e){return U[e>>2]}:function(e){return T[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&At)return At.decode(A.subarray(e,r));for(var s="",a=0;!(a>=t/2);++a){var o=B[e+2*a>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function xt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,s=0;s>1]=a,t+=2}return B[t>>1]=0,t-i}function Ut(e){return 2*e.length}function Tt(e,t){for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var s=n-65536;i+=String.fromCharCode(55296|s>>10,56320|1023&s)}else i+=String.fromCharCode(n)}return i}function kt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(U[t>>2]=a,(t+=4)+4>n)break}return U[t>>2]=0,t-i}function Ct(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Dt={};var Pt=[];var It=[];var Ft={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:u||"./this.program"};for(var t in Ft)void 0===Ft[t]?delete e[t]:e[t]=Ft[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}var Rt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=oe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Mt=365,zt=146;Object.defineProperties(Rt.prototype,{read:{get:function(){return(this.mode&Mt)===Mt},set:function(e){e?this.mode|=Mt:this.mode&=-366}},write:{get:function(){return(this.mode&zt)===zt},set:function(e){e?this.mode|=zt:this.mode&=-147}},isFolder:{get:function(){return oe.isDir(this.mode)}},isDevice:{get:function(){return oe.isChrdev(this.mode)}}}),oe.FSNode=Rt,oe.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ce=e}(),ye=t.BindingError=ge(Error,"BindingError"),be=t.InternalError=ge(Error,"InternalError"),je.prototype.isAliasOf=Ae,je.prototype.clone=Ge,je.prototype.delete=He,je.prototype.isDeleted=Ve,je.prototype.deleteLater=We,t.getInheritedInstanceCount=De,t.getLiveInheritedInstances=Pe,t.flushPendingDeletes=Fe,t.setDelayFunction=Re,it.prototype.getPointee=et,it.prototype.destructor=tt,it.prototype.argPackAdvance=8,it.prototype.readValueFromPointer=Qe,it.prototype.deleteObject=rt,it.prototype.fromWireType=Oe,dt=t.UnboundTypeError=ge(Error,"UnboundTypeError"),t.count_emval_handles=yt,t.get_first_emval=vt;var Nt={q:function(e){return Vt(e+24)+24},p:function(e,t,r){throw new ee(e).init(t,r),e},C:function(e,t,r){de.varargs=r;try{var i=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:oe.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=de.get();return i.flags|=n,0;case 5:n=de.get();return B[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return s=28,U[$t()>>2]=s,-1}}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}var s},w:function(e,t,r,i){de.varargs=i;try{t=de.getStr(t),t=de.calculateAt(e,t);var n=i?de.get():0;return oe.open(t,r,n).fd}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var s=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=E;else if(2===r)i=B;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=U}return this.fromWireType(i[e>>s])},destructorFunction:null})},t:function(e,r,i,n,s,a,o,d,l,c,u,h,f){u=ue(u),a=ot(s,a),d&&(d=ot(o,d)),c&&(c=ot(l,c)),f=ot(h,f);var p=me(u);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&ve("Cannot register public name '"+e+"' twice"),qe(t,e,e),t.hasOwnProperty(i)&&ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){ct("Cannot construct "+u+" due to unbound types",[n])})),Se([e,r,i],n?[n]:[],(function(r){var i,s;r=r[0],s=n?(i=r.registeredClass).instancePrototype:je.prototype;var o=_e(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+u);if(void 0===h.constructor_body)throw new ye(u+" has no accessible constructor");var e=h.constructor_body[arguments.length];if(void 0===e)throw new ye("Tried to invoke ctor of "+u+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(h.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(s,{constructor:{value:o}});o.prototype=l;var h=new Ye(u,o,l,f,i,a,d,c),m=new it(u,h,!0,!1,!1),_=new it(u+"*",h,!1,!1,!1),g=new it(u+" const*",h,!1,!0,!1);return Ce[e]={pointerType:_,constPointerType:g},function(e,r,i){t.hasOwnProperty(e)||we("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,o),[m,_,g]}))},r:function(e,t,r,i,n,s){w(t>0);var a=ut(t,r);n=ot(i,n),Se([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ye("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{ct("Cannot construct "+e.name+" due to unbound types",a)},Se([],a,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=pt(r,i,null,n,s),[]})),[]}))},d:function(e,t,r,i,n,s,a,o){var d=ut(r,i);t=ue(t),s=ot(n,s),Se([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){ct("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),o&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,c=l[t];return void 0===c||void 0===c.overloadTable&&c.className!==e.name&&c.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(qe(l,t,i),l[t].overloadTable[r-2]=n),Se([],d,(function(n){var o=pt(i,n,e,s,a);return void 0===l[t].overloadTable?(o.argCount=r-2,l[t]=o):l[t].overloadTable[r-2]=o,[]})),[]}))},D:function(e,t){Ee(e,{name:t=ue(t),fromWireType:function(e){var t=bt.toValue(e);return gt(e),t},toWireType:function(e,t){return bt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},n:function(e,t,r){var i=le(r);Ee(e,{name:t=ue(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:St(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=ue(t);var s=le(r),a=e=>e;if(0===i){var o=32-8*r;a=e=>e<>>o}var d=t.includes("unsigned");Ee(e,{name:t,fromWireType:a,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Et(t,s,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=T,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}Ee(e,{name:r=ue(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=ue(t));Ee(e,{name:t,fromWireType:function(e){var t,i=T[e>>2],n=e+4;if(r)for(var s=n,a=0;a<=i;++a){var o=n+a;if(a==i||0==A[o]){var d=F(s,o-s);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),s=o+1}}else{var l=new Array(i);for(a=0;a>2]=i,r&&n)L(t,A,a,i+1);else if(n)for(var o=0;o255&&(Ot(a),ve("String has UTF-16 code units that do not fit in 8 bits")),A[a+o]=d}else for(o=0;ox,o=1):4===t&&(i=Tt,n=kt,a=Ct,s=()=>T,o=2),Ee(e,{name:r,fromWireType:function(e){for(var r,n=T[e>>2],a=s(),d=e+4,l=0;l<=n;++l){var c=e+4+l*t;if(l==n||0==a[c>>o]){var u=i(d,c-d);void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),d=c+t}}return Ot(e),r},toWireType:function(e,i){"string"!=typeof i&&ve("Cannot pass non-string to C++ string type "+r);var s=a(i),d=Vt(4+s+t);return T[d>>2]=s>>o,n(i,d+4,s+t),null!==e&&e.push(Ot,d),d},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Ot(e)}})},o:function(e,t){Ee(e,{isVoid:!0,name:t=ue(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,s;(e=Pt[e])(t=bt.toValue(t),r=void 0===(s=Dt[n=r])?ue(n):s,null,i)},j:gt,i:function(e,t){var r=function(e,t){for(var r,i,n,s=new Array(e),a=0;a>2],i="parameter "+a,n=void 0,void 0===(n=fe[r])&&ve(i+" has unknown type "+lt(r)),n);return s}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",s=It[n];if(void 0!==s)return s;for(var a=["retType"],o=[i],d="",l=0;l>2]=s,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(E[t>>0]=0)}(i,s),r+=i.length+1})),0},z:function(e,t){var r=Lt();T[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),T[t>>2]=i,0},l:function(e){try{var t=de.getStreamFromFD(e);return oe.close(t),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=de.getStreamFromFD(e),i=r.tty?2:oe.isDir(r.mode)?3:oe.isLink(r.mode)?7:4;return E[t>>0]=i,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.read(e,E,a,o,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var s=(d=r)+2097152>>>0<4194305-!!(o=t)?(o>>>0)+4294967296*d:NaN;if(isNaN(s))return 61;var a=de.getStreamFromFD(e);return oe.llseek(a,s,i),Y=[a.position>>>0,(q=a.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[n>>2]=Y[0],U[n+4>>2]=Y[1],a.getdents&&0===s&&0===i&&(a.getdents=null),0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}var o,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,s=0;s>2],o=T[t+4>>2];t+=8;var d=oe.write(e,E,a,o,i);if(d<0)return-1;n+=d}return n}(de.getStreamFromFD(e),t,r);return T[i>>2]=n,0}catch(e){if(void 0===oe||!(e instanceof oe.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Nt};function r(e,r){var i,n,s=e.exports;t.asm=s,v=t.asm.F,i=v.buffer,S=i,t.HEAP8=E=new Int8Array(i),t.HEAP16=B=new Int16Array(i),t.HEAP32=U=new Int32Array(i),t.HEAPU8=A=new Uint8Array(i),t.HEAPU16=x=new Uint16Array(i),t.HEAPU32=T=new Uint32Array(i),t.HEAPF32=k=new Float32Array(i),t.HEAPF64=C=new Float64Array(i),D=t.asm.I,n=t.asm.G,z.unshift(n),H()}function n(e){r(e.instance)}function a(t){return function(){if(!y&&(h||f)){if("function"==typeof fetch&&!X(W))return fetch(W,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+W+"'";return e.arrayBuffer()})).catch((function(){return Z(W)}));if(s)return new Promise((function(e,t){s(W,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Z(W)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){g("failed to asynchronously prepare wasm: "+e),V(e)}))}if(G(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return g("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||K(W)||X(W)||p||"function"!=typeof fetch?a(n):fetch(W,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),a(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Ot=t._free=function(){return(Ot=t._free=t.asm.H).apply(null,arguments)},$t=t.___errno_location=function(){return($t=t.___errno_location=t.asm.J).apply(null,arguments)},Gt=t.___getTypeName=function(){return(Gt=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Ht,Vt=t._malloc=function(){return(Vt=t._malloc=t.asm.M).apply(null,arguments)},Wt=t._emscripten_builtin_memalign=function(){return(Wt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},jt=t.___cxa_is_pointer_type=function(){return(jt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function qt(e){function i(){Ht||(Ht=!0,t.calledRun=!0,b||(t.noFSInit||oe.init.initialized||oe.init(),oe.ignorePermissions=!1,Q(z),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),N.unshift(e);var e;Q(N)}()))}O>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),M.unshift(e);var e;Q(M)}(),O>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},$=function e(){Ht||qt(),Ht||($=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return qt(),t.ready}})(),o=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function c(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var u,h=function(e,t,r,i,n,s,a){var o=1/(t-r),d=1/(i-n),l=1/(s-a);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*o,e[13]=(n+i)*d,e[14]=(a+s)*l,e[15]=1,e};function f(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}u=new d(3),d!=Float32Array&&(u[0]=0,u[1]=0,u[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),s=p(),a=p(),d=p(),u=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const s=l();h(s,-1,1,-1,1,.1,100);const p=l();c(p);const m=l();!function(e,t,r,i){var n,s,a,d,l,u,h,f,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,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)}}const Gt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=Gt,Vt=Gt;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===xt}function qt(e){return e[0]>>4===ze}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,s=0,a=null;if(i=n=t[0]>>>3,s=(7&t[0])<<1|t[1]>>>7,s<0||s>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let o=Yt[s],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(a=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?s>=6?(i=5,r=new Array(4),a=s-3):(i=2,r=new Array(2),a=s):-1!==l.indexOf("android")?(i=2,r=new Array(2),a=s):(i=5,a=s,r=new Array(4),s>=6?a=s-3:1===d&&(i=2,r=new Array(2),a=s)),r[0]=i<<3,r[0]|=(15&s)>>>1,r[1]=(15&s)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&a)>>>1,r[2]=(1&a)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:o,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,s=1&e[r+1],a=(192&e[r+2])>>>6,o=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let c=1===s?7:9,u=l-c;r+=c;let h=this.findNextSyncwordOffset(r+u);if(this.current_syncword_offset_=h,0!==i&&1!==i||0!==n)continue;let f=e.subarray(r,r+u);t={},t.audio_object_type=a+1,t.sampling_freq_index=o,t.sampling_frequency=Ht[o],t.channel_config=d,t.data=f}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let s=new $t(t.subarray(i+3,i+3+n)),a=null;if(s.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),s.destroy();continue}a=e}else{let e=s.readBool();if(e&&s.readBool()){console.error("audioMuxVersionA is Not Supported"),s.destroy();break}if(e&&this.getLATMValue(s),!s.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),s.destroy();break}if(0!==s.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),s.destroy();break}if(0!==s.readBits(4)){console.error("more than 2 numProgram Not Supported"),s.destroy();break}if(0!==s.readBits(3)){console.error("more than 2 numLayer Not Supported"),s.destroy();break}let t=e?this.getLATMValue(s):0,r=s.readBits(5);t-=5;let i=s.readBits(4);t-=4;let n=s.readBits(4);t-=4,s.readBits(3),t-=3,t>0&&s.readBits(t);let o=s.readBits(3);if(0!==o){console.error(`frameLengthType = ${o}. Only frameLengthType = 0 Supported`),s.destroy();break}s.readByte();let d=s.readBool();if(d)if(e)this.getLATMValue(s);else{let e=0;for(;;){e<<=8;let t=s.readBool();if(e+=s.readByte(),!t)break}console.log(e)}s.readBool()&&s.readByte(),a={},a.audio_object_type=r,a.sampling_freq_index=i,a.sampling_frequency=Ht[a.sampling_freq_index],a.channel_config=n,a.other_data_present=d}let o=0;for(;;){let e=s.readByte();if(o+=e,255!==e)break}let d=new Uint8Array(o);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,s=0;for(;s+t>>=8),s+=t,n){if(s+n>r)break;i.push(e.subarray(s,s+n)),s+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function sr(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const s=nr(),a=s-r;a>=1e3&&(e(t/a*1e3),r=s,t=0)}}function ar(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function or(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ht)||self.MediaSource.isTypeSupported(ft)||self.MediaSource.isTypeSupported(pt)||self.MediaSource.isTypeSupported(mt)||self.MediaSource.isTypeSupported(_t))&&(e=!0),e}function dr(e){return null==e}function lr(e){return!dr(e)}function cr(e){return"function"==typeof e}function ur(e){let t=null,r=31&e[0];return r!==Ge&&r!==He||(t=Re),t||(r=(126&e[0])>>1,r!==et&&r!==rt&&r!==nt||(t=Me)),t}function hr(){return"undefined"!=typeof WritableStream}function fr(e){e.close()}function pr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let s=n;s=1e3){e[s-1].ts-r.ts<1e3&&(i=s+1)}}}return i}function mr(e){return e.ok&&e.status>=200&&e.status<=299}function _r(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(U)}function gr(e){return e[0]>>4===Ut&&e[1]===xt}function yr(e){return!0===e||"true"===e}function vr(e){return!0!==e&&"true"!==e}function br(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var wr=function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{d(i.next(e))}catch(e){s(e)}}function o(e){try{d(i.throw(e))}catch(e){s(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}d((i=i.apply(e,t||[])).next())}))};const Sr=Symbol(32),Er=Symbol(16),Ar=Symbol(8);class Br{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return wr(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(Sr)}readU16(){return this.read(Er)}readU8(){return this.read(Ar)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===Sr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Er){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ar){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Br.U32=Sr,Br.U16=Er,Br.U8=Ar;class xr{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const s=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),s=1;s=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=Ur._ebsp2rbsp(e),r=new $t(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let s=Ur.getProfileString(i),a=Ur.getLevelString(n),o=1,d=420,l=[0,420,422,444],c=8;if((100===i||110===i||122===i||244===i||44===i||83===i||86===i||118===i||128===i||138===i||144===i)&&(o=r.readUEG(),3===o&&r.readBits(1),o<=3&&(d=l[o]),c=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==o?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,B=2*e,S=A/B}}let x=1;1===b&&1===w||(x=b/w);let U=0,T=0;if(0===o)U=1,T=2-m;else{U=3===o?1:2,T=(1===o?2:1)*(2-m)}let k=16*(f+1),C=16*(p+1)*(2-m);k-=(_+g)*U,C-=(y+v)*T;let D=Math.ceil(k*x);return r.destroy(),r=null,{profile_string:s,level_string:a,bit_depth:c,ref_frames:h,chroma_format:d,chroma_format_string:Ur.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:k,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Ur._ebsp2rbsp(e),n=new $t(i);n.readByte();let s=n.readByte();n.readByte();let a=n.readByte();n.readUEG();let o=Ur.getProfileString(s),d=Ur.getLevelString(a),l=1,c=420,u=[0,420,422,444],h=8,f=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(c=u[l]),h=n.readUEG()+8,f=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);x=n.readBool(),U=t,T=2*e,B=U/T}}let k=1;1===E&&1===A||(k=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),I=16*(g+1)*(2-y);P-=(v+b)*C,I-=(w+S)*D;let F=Math.ceil(P*k);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:s,level_idc:a,profile_string:o,level_string:d,chroma_format_idc:l,bit_depth:h,bit_depth_luma:h,bit_depth_chroma:f,ref_frames:m,chroma_format:c,chroma_format_string:Ur.getChromaFormatString(c),frame_rate:{fixed:x,fps:B,fps_den:T,fps_num:U},sar_ratio:{width:E,height:A},codec_size:{width:P,height:I},present_size:{width:F,height:I}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let s=0;s=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function Cr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Dr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const s=Ur.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let a=new Uint8Array(i);a[0]=1,a[1]=t[1],a[2]=t[2],a[3]=t[3],a[4]=255,a[5]=225;let o=t.byteLength;a[6]=o>>>8,a[7]=255&o;let d=8;a.set(t,8),d+=o,a[d]=1;let l=r.byteLength;a[d+1]=l>>>8,a[d+2]=255&l,a.set(r,d+3),d+=3+l,n&&(a[d]=252|s.chroma_format_idc,a[d+1]=248|s.bit_depth_luma-8,a[d+2]=248|s.bit_depth_chroma-8,a[d+3]=0,d+=4);const c=[23,0,0,0,0],u=new Uint8Array(c.length+a.byteLength);return u.set(c,0),u.set(a,c.length),u}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e){return 31&e[0]}function Lr(e){return e===qe}function Rr(e){return!function(e){return e===Ge||e===He}(e)&&!Lr(e)}function Mr(e){return e===Ve}function zr(e){if(0===e.length)return!1;const t=Fr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,i>=Xe||0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class Or{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const $r=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},Gr=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Hr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Hr._ebsp2rbsp(e),r=new $t(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Hr._ebsp2rbsp(e),r=new $t(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(F=t[e-1],L=i[e-1]):255===e&&(F=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(M=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();R=n;let s=!0,a=1;n||(s=r.readBool());let o=!1;if(s?r.readUEG():o=r.readBool(),o||(a=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=$r(e),r=new $t(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),a=(e=>{let t=$r(e),r=new $t(t);r.readByte(),r.readByte();let i=0,n=0,s=0,a=0;r.readBits(4);let o=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),c=r.readBits(5),u=r.readByte(),h=r.readByte(),f=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=o;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(F=t[e-1],L=i[e-1]):255===e&&(F=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),s+=r.readUEG(),a+=r.readUEG()),r.readBool()&&(M=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=o;n++){let n=r.readBool();R=n;let s=!1,a=1;n||(s=r.readBool());let o=!1;if(s?r.readSEG():o=r.readBool(),o||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=$r(e),r=new $t(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),s=1;return n&&i?s=0:n?s=3:i&&(s=2),{parallelismType:s}})(r);n=Object.assign(n,s,a,o);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|et,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|rt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|nt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const c=[28,0,0,0,0],u=new Uint8Array(c.length+l.byteLength);return u.set(c,0),u.set(l,c.length),u}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Xr(e){return(126&e[0])>>1}function Zr(e){return e===at}function Jr(e){return!function(e){return e>=32&&e<=40}(e)}function Qr(e){return e>=16&&e<=21}function ei(e){if(0===e.length)return!1;const t=Xr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,s=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=s,0===n&&(t={type:i,data:e.subarray(r,s)})}return t}}class ri{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ii(e){return parseInt(e)===e}function ni(e){if(!ii(e.length))return!1;for(var t=0;t255)return!1;return!0}function si(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ni(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ii(e.length)&&ni(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function ai(e){return new Uint8Array(e)}function oi(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var di,li={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},ci=(di="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+di[15&i])}return t.join("")}}),ui={16:10,24:12,32:14},hi=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],fi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],pi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],mi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],_i=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],gi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],yi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],vi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],bi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],wi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],Si=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Ei=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ai=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Bi=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],xi=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Ui(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=s[t],this._Kd[e-r][t%4]=s[t];for(var a,o=0,d=n;d>16&255]<<24^fi[a>>8&255]<<16^fi[255&a]<<8^fi[a>>24&255]^hi[o]<<24,o+=1,8!=n)for(t=1;t>8&255]<<8^fi[a>>16&255]<<16^fi[a>>24&255]<<24;for(t=n/2+1;t>2,c=d%4,this._Ke[l][c]=s[t],this._Kd[e-l][c]=s[t++],d++}for(var l=1;l>24&255]^Ai[a>>16&255]^Bi[a>>8&255]^xi[255&a]},Ti.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var s=1;s>24&255]^_i[i[(n+1)%4]>>16&255]^gi[i[(n+2)%4]>>8&255]^yi[255&i[(n+3)%4]]^this._Ke[s][n];i=r.slice()}var a,o=ai(16);for(n=0;n<4;n++)a=this._Ke[t][n],o[4*n]=255&(fi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(fi[i[(n+1)%4]>>16&255]^a>>16),o[4*n+2]=255&(fi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(fi[255&i[(n+3)%4]]^a);return o},Ti.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var s=1;s>24&255]^bi[i[(n+3)%4]>>16&255]^wi[i[(n+2)%4]>>8&255]^Si[255&i[(n+1)%4]]^this._Kd[s][n];i=r.slice()}var a,o=ai(16);for(n=0;n<4;n++)a=this._Kd[t][n],o[4*n]=255&(pi[i[n]>>24&255]^a>>24),o[4*n+1]=255&(pi[i[(n+3)%4]>>16&255]^a>>16),o[4*n+2]=255&(pi[i[(n+2)%4]>>8&255]^a>>8),o[4*n+3]=255&(pi[255&i[(n+1)%4]]^a);return o};var ki=function(e){if(!(this instanceof ki))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new Ti(e)};ki.prototype.encrypt=function(e){if((e=si(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=ai(e.length),r=ai(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Ii.prototype.setBytes=function(e){if(16!=(e=si(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Ii.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Fi=function(e,t){if(!(this instanceof Fi))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Ii||(t=new Ii(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new Ti(e)};Fi.prototype.encrypt=function(e){for(var t=si(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-s%4*8&255;t[i+s>>>2]|=a<<24-(i+s)%4*8}else for(var o=0;o>>2]=r[o>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((s>>>4).toString(16)),i.push((15&s).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},h=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},f=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(h.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return h.parse(unescape(encodeURIComponent(e)))}},p=o.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=f.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,s=i.sigBytes,a=this.blockSize,o=s/(4*a),d=(o=t?e.ceil(o):e.max((0|o)-this._minBufferSize,0))*a,c=e.min(4*d,s);if(d){for(var u=0;u>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],s=0;s>>2]>>>16-s%4*8&65535);i.push(String.fromCharCode(a))}return i.join("")},parse:function(e){for(var r=e.length,i=[],s=0;s>>1]|=n(e.charCodeAt(s)<<16-s%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],s=0,a=0;a>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,o=0;o<4&&s+.75*o>>6*(3-o)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var s=0;s>>6-a%4*2;n[s>>>2]|=o<<24-s%4*8,s++}return t.create(n,s)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var s=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(r[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|r[a+2>>>2]>>>24-(a+2)%4*8&255,d=0;d<4&&a+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;s.length%4;)s.push(l);return s.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,s=this._reverseMap;if(!s){s=this._reverseMap=[];for(var a=0;a>>24)|4278255360&(n<<24|n>>>8)}var s=this._hash.words,a=e[t+0],d=e[t+1],f=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],x=e[t+15],U=s[0],T=s[1],k=s[2],C=s[3];U=l(U,T,k,C,a,7,o[0]),C=l(C,U,T,k,d,12,o[1]),k=l(k,C,U,T,f,17,o[2]),T=l(T,k,C,U,p,22,o[3]),U=l(U,T,k,C,m,7,o[4]),C=l(C,U,T,k,_,12,o[5]),k=l(k,C,U,T,g,17,o[6]),T=l(T,k,C,U,y,22,o[7]),U=l(U,T,k,C,v,7,o[8]),C=l(C,U,T,k,b,12,o[9]),k=l(k,C,U,T,w,17,o[10]),T=l(T,k,C,U,S,22,o[11]),U=l(U,T,k,C,E,7,o[12]),C=l(C,U,T,k,A,12,o[13]),k=l(k,C,U,T,B,17,o[14]),U=c(U,T=l(T,k,C,U,x,22,o[15]),k,C,d,5,o[16]),C=c(C,U,T,k,g,9,o[17]),k=c(k,C,U,T,S,14,o[18]),T=c(T,k,C,U,a,20,o[19]),U=c(U,T,k,C,_,5,o[20]),C=c(C,U,T,k,w,9,o[21]),k=c(k,C,U,T,x,14,o[22]),T=c(T,k,C,U,m,20,o[23]),U=c(U,T,k,C,b,5,o[24]),C=c(C,U,T,k,B,9,o[25]),k=c(k,C,U,T,p,14,o[26]),T=c(T,k,C,U,v,20,o[27]),U=c(U,T,k,C,A,5,o[28]),C=c(C,U,T,k,f,9,o[29]),k=c(k,C,U,T,y,14,o[30]),U=u(U,T=c(T,k,C,U,E,20,o[31]),k,C,_,4,o[32]),C=u(C,U,T,k,v,11,o[33]),k=u(k,C,U,T,S,16,o[34]),T=u(T,k,C,U,B,23,o[35]),U=u(U,T,k,C,d,4,o[36]),C=u(C,U,T,k,m,11,o[37]),k=u(k,C,U,T,y,16,o[38]),T=u(T,k,C,U,w,23,o[39]),U=u(U,T,k,C,A,4,o[40]),C=u(C,U,T,k,a,11,o[41]),k=u(k,C,U,T,p,16,o[42]),T=u(T,k,C,U,g,23,o[43]),U=u(U,T,k,C,b,4,o[44]),C=u(C,U,T,k,E,11,o[45]),k=u(k,C,U,T,x,16,o[46]),U=h(U,T=u(T,k,C,U,f,23,o[47]),k,C,a,6,o[48]),C=h(C,U,T,k,y,10,o[49]),k=h(k,C,U,T,B,15,o[50]),T=h(T,k,C,U,_,21,o[51]),U=h(U,T,k,C,E,6,o[52]),C=h(C,U,T,k,p,10,o[53]),k=h(k,C,U,T,w,15,o[54]),T=h(T,k,C,U,d,21,o[55]),U=h(U,T,k,C,v,6,o[56]),C=h(C,U,T,k,x,10,o[57]),k=h(k,C,U,T,g,15,o[58]),T=h(T,k,C,U,A,21,o[59]),U=h(U,T,k,C,m,6,o[60]),C=h(C,U,T,k,S,10,o[61]),k=h(k,C,U,T,f,15,o[62]),T=h(T,k,C,U,b,21,o[63]),s[0]=s[0]+U|0,s[1]=s[1]+T|0,s[2]=s[2]+k|0,s[3]=s[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var s=e.floor(i/4294967296),a=i;r[15+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),r[14+(n+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),t.sigBytes=4*(r.length+1),this._process();for(var o=this._hash,d=o.words,l=0;l<4;l++){var c=d[l];d[l]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return o},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,s,a){var o=e+(t&r|~t&i)+n+a;return(o<>>32-s)+t}function c(e,t,r,i,n,s,a){var o=e+(t&i|r&~i)+n+a;return(o<>>32-s)+t}function u(e,t,r,i,n,s,a){var o=e+(t^r^i)+n+a;return(o<>>32-s)+t}function h(e,t,r,i,n,s,a){var o=e+(r^(t|~i))+n+a;return(o<>>32-s)+t}t.MD5=s._createHelper(d),t.HmacMD5=s._createHmacHelper(d)}(Math),r.MD5)})),Ot((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Ri).lib,n=i.WordArray,s=i.Hasher,a=r.algo,o=[],d=a.SHA1=s.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],d=r[4],l=0;l<80;l++){if(l<16)o[l]=0|e[t+l];else{var c=o[l-3]^o[l-8]^o[l-14]^o[l-16];o[l]=c<<1|c>>>31}var u=(i<<5|i>>>27)+d+o[l];u+=l<20?1518500249+(n&s|~n&a):l<40?1859775393+(n^s^a):l<60?(n&s|n&a|s&a)-1894007588:(n^s^a)-899497514,d=a,a=s,s=n<<30|n>>>2,n=i,i=u}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=s._createHelper(d),r.HmacSHA1=s._createHmacHelper(d),l.SHA1)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(o[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],c=a.SHA256=s.extend({_doReset:function(){this._hash=new n.init(o.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=0;f<64;f++){if(f<16)l[f]=0|e[t+f];else{var p=l[f-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[f-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[f]=m+l[f-7]+g+l[f-16]}var y=i&n^i&s^n&s,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=h+((o<<26|o>>>6)^(o<<21|o>>>11)^(o<<7|o>>>25))+(o&c^~o&u)+d[f]+l[f];h=u,u=c,c=o,o=a+b|0,a=s,s=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+s|0,r[3]=r[3]+a|0,r[4]=r[4]+o|0,r[5]=r[5]+c|0,r[6]=r[6]+u|0,r[7]=r[7]+h|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=s._createHelper(c),t.HmacSHA256=s._createHmacHelper(c)}(Math),r.SHA256)})),Ot((function(e,t){var r,i,n,s,a,o;e.exports=(i=(r=o=Ri).lib.WordArray,n=r.algo,s=n.SHA256,a=n.SHA224=s.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=s._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=s._createHelper(a),r.HmacSHA224=s._createHmacHelper(a),o.SHA224)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,s=i.WordArray,a=e.algo;function o(){return n.create.apply(n,arguments)}var d=[o(1116352408,3609767458),o(1899447441,602891725),o(3049323471,3964484399),o(3921009573,2173295548),o(961987163,4081628472),o(1508970993,3053834265),o(2453635748,2937671579),o(2870763221,3664609560),o(3624381080,2734883394),o(310598401,1164996542),o(607225278,1323610764),o(1426881987,3590304994),o(1925078388,4068182383),o(2162078206,991336113),o(2614888103,633803317),o(3248222580,3479774868),o(3835390401,2666613458),o(4022224774,944711139),o(264347078,2341262773),o(604807628,2007800933),o(770255983,1495990901),o(1249150122,1856431235),o(1555081692,3175218132),o(1996064986,2198950837),o(2554220882,3999719339),o(2821834349,766784016),o(2952996808,2566594879),o(3210313671,3203337956),o(3336571891,1034457026),o(3584528711,2466948901),o(113926993,3758326383),o(338241895,168717936),o(666307205,1188179964),o(773529912,1546045734),o(1294757372,1522805485),o(1396182291,2643833823),o(1695183700,2343527390),o(1986661051,1014477480),o(2177026350,1206759142),o(2456956037,344077627),o(2730485921,1290863460),o(2820302411,3158454273),o(3259730800,3505952657),o(3345764771,106217008),o(3516065817,3606008344),o(3600352804,1432725776),o(4094571909,1467031594),o(275423344,851169720),o(430227734,3100823752),o(506948616,1363258195),o(659060556,3750685593),o(883997877,3785050280),o(958139571,3318307427),o(1322822218,3812723403),o(1537002063,2003034995),o(1747873779,3602036899),o(1955562222,1575990012),o(2024104815,1125592928),o(2227730452,2716904306),o(2361852424,442776044),o(2428436474,593698344),o(2756734187,3733110249),o(3204031479,2999351573),o(3329325298,3815920427),o(3391569614,3928383900),o(3515267271,566280711),o(3940187606,3454069534),o(4118630271,4000239992),o(116418474,1914138554),o(174292421,2731055270),o(289380356,3203993006),o(460393269,320620315),o(685471733,587496836),o(852142971,1086792851),o(1017036298,365543100),o(1126000580,2618297676),o(1288033470,3409855158),o(1501505948,4234509866),o(1607167915,987167468),o(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=o()}();var c=a.SHA512=t.extend({_doReset:function(){this._hash=new s.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],s=r[2],a=r[3],o=r[4],c=r[5],u=r[6],h=r[7],f=i.high,p=i.low,m=n.high,_=n.low,g=s.high,y=s.low,v=a.high,b=a.low,w=o.high,S=o.low,E=c.high,A=c.low,B=u.high,x=u.low,U=h.high,T=h.low,k=f,C=p,D=m,P=_,I=g,F=y,L=v,R=b,M=w,z=S,N=E,O=A,$=B,G=x,H=U,V=T,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),se=l[W-7],ae=se.high,oe=se.low,de=l[W-16],le=de.high,ce=de.low;q=(q=(q=J+ae+((j=Q+oe)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ce)>>>0>>0?1:0),Y.high=q,Y.low=j}var ue,he=M&N^~M&$,fe=z&O^~z&G,pe=k&D^k&I^D&I,me=C&P^C&F^P&F,_e=(k>>>28|C<<4)^(k<<30|C>>>2)^(k<<25|C>>>7),ge=(C>>>28|k<<4)^(C<<30|k>>>2)^(C<<25|k>>>7),ye=(M>>>14|z<<18)^(M>>>18|z<<14)^(M<<23|z>>>9),ve=(z>>>14|M<<18)^(z>>>18|M<<14)^(z<<23|M>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ue=V+ve)>>>0>>0?1:0),Ae=ge+me;H=$,V=G,$=N,G=O,N=M,O=z,M=L+(Ee=(Ee=(Ee=Ee+he+((ue+=fe)>>>0>>0?1:0))+we+((ue+=Se)>>>0>>0?1:0))+q+((ue+=j)>>>0>>0?1:0))+((z=R+ue|0)>>>0>>0?1:0)|0,L=I,R=F,I=D,F=P,D=k,P=C,k=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ue+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=f+k+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

>>0?1:0),y=s.low=y+F,s.high=g+I+(y>>>0>>0?1:0),b=a.low=b+R,a.high=v+L+(b>>>0>>0?1:0),S=o.low=S+z,o.high=w+M+(S>>>0>>0?1:0),A=c.low=A+O,c.high=E+N+(A>>>0>>0?1:0),x=u.low=x+G,u.high=B+$+(x>>>0>>0?1:0),T=h.low=T+V,h.high=U+H+(T>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(c),e.HmacSHA512=t._createHmacHelper(c)}(),r.SHA512)})),Ot((function(e,t){var r,i,n,s,a,o,d,l;e.exports=(i=(r=l=Ri).x64,n=i.Word,s=i.WordArray,a=r.algo,o=a.SHA512,d=a.SHA384=o.extend({_doReset:function(){this._hash=new s.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=o._createHelper(d),r.HmacSHA384=o._createHmacHelper(d),l.SHA384)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.x64.Word,o=t.algo,d=[],l=[],c=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,s=0;s<24;s++){for(var o=0,u=0,h=0;h<7;h++){if(1&n){var f=(1<>>24)|4278255360&(s<<24|s>>>8),a=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),(T=r[n]).high^=a,T.low^=s}for(var o=0;o<24;o++){for(var h=0;h<5;h++){for(var f=0,p=0,m=0;m<5;m++)f^=(T=r[h+5*m]).high,p^=T.low;var _=u[h];_.high=f,_.low=p}for(h=0;h<5;h++){var g=u[(h+4)%5],y=u[(h+1)%5],v=y.high,b=y.low;for(f=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(T=r[h+5*m]).high^=f,T.low^=p}for(var w=1;w<25;w++){var S=(T=r[w]).high,E=T.low,A=d[w];A<32?(f=S<>>32-A,p=E<>>32-A):(f=E<>>64-A,p=S<>>64-A);var B=u[l[w]];B.high=f,B.low=p}var x=u[0],U=r[0];for(x.high=U.high,x.low=U.low,h=0;h<5;h++)for(m=0;m<5;m++){var T=r[w=h+5*m],k=u[w],C=u[(h+1)%5+5*m],D=u[(h+2)%5+5*m];T.high=k.high^~C.high&D.high,T.low=k.low^~C.low&D.low}T=r[0];var P=c[o];T.high^=P.high,T.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,s=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/s)*s>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var a=this._state,o=this.cfg.outputLength/8,d=o/8,l=[],c=0;c>>24)|4278255360&(h<<24|h>>>8),f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8),l.push(f),l.push(h)}return new n.init(l,o)},clone:function(){for(var e=s.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=s._createHelper(h),t.HmacSHA3=s._createHmacHelper(h)}(Math),r.SHA3)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(e){var t=r,i=t.lib,n=i.WordArray,s=i.Hasher,a=t.algo,o=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),c=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),u=n.create([0,1518500249,1859775393,2400959708,2840853838]),h=n.create([1352829926,1548603684,1836072691,2053994217,0]),f=a.RIPEMD160=s.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var s,a,f,b,w,S,E,A,B,x,U,T=this._hash.words,k=u.words,C=h.words,D=o.words,P=d.words,I=l.words,F=c.words;for(S=s=T[0],E=a=T[1],A=f=T[2],B=b=T[3],x=w=T[4],r=0;r<80;r+=1)U=s+e[t+D[r]]|0,U+=r<16?p(a,f,b)+k[0]:r<32?m(a,f,b)+k[1]:r<48?_(a,f,b)+k[2]:r<64?g(a,f,b)+k[3]:y(a,f,b)+k[4],U=(U=v(U|=0,I[r]))+w|0,s=w,w=b,b=v(f,10),f=a,a=U,U=S+e[t+P[r]]|0,U+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],U=(U=v(U|=0,F[r]))+x|0,S=x,x=B,B=v(A,10),A=E,E=U;U=T[1]+f+B|0,T[1]=T[2]+b+x|0,T[2]=T[3]+w+S|0,T[3]=T[4]+s+E|0,T[4]=T[0]+a+A|0,T[0]=U},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,s=n.words,a=0;a<5;a++){var o=s[a];s[a]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8)}return n},clone:function(){var e=s.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=s._createHelper(f),t.HmacRIPEMD160=s._createHmacHelper(f)}(),r.RIPEMD160)})),Ot((function(e,t){var r,i,n;e.exports=(i=(r=Ri).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var s=this._oKey=t.clone(),a=this._iKey=t.clone(),o=s.words,d=a.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=c.extend({cfg:c.cfg.extend({mode:f,padding:p}),reset:function(){var e;c.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?s.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=s.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),s=n.finalize(t),a=n.cfg;return m.create({ciphertext:s,key:r,iv:a.iv,algorithm:e,mode:a.mode,padding:a.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=s.random(8)),n)a=l.create({keySize:t+r,hasher:n}).compute(e,i);else var a=l.create({keySize:t+r}).compute(e,i);var o=s.create(a.words.slice(t),4*r);return a.sigBytes=4*t,m.create({key:a,iv:o,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var s=g.encrypt.call(this,e,t,n.key,i);return s.mixIn(n),s},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ot((function(e,t){var r;e.exports=((r=Ri).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,s=this._iv;s?(n=s.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var a=0;a>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,s=this._iv,a=this._counter;s&&(a=this._counter=s.slice(0),this._iv=void 0),i(a);var o=a.slice(0);r.encryptBlock(o,0);for(var d=0;d>>2]|=n<<24-s%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ot((function(e,t){var r;e.exports=((r=Ri).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ot((function(e,t){var r;e.exports=((r=Ri).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ot((function(e,t){var r;e.exports=((r=Ri).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ot((function(e,t){var r;e.exports=((r=Ri).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],s=[],a=[],o=[],d=[],l=[],c=[],u=[],h=[],f=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,s[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;a[r]=y<<24|y>>>8,o[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,c[p]=y<<24|y>>>8,u[p]=y<<16|y>>>16,h[p]=y<<8|y>>>24,f[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),s=this._keySchedule=[],a=0;a6&&a%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[a/r|0]<<24),s[a]=s[a-r]^l);for(var o=this._invKeySchedule=[],d=0;d>>24]]^u[n[l>>>16&255]]^h[n[l>>>8&255]]^f[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,a,o,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,c,u,h,f,s),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,s,a,o){for(var d=this._nRounds,l=e[t]^r[0],c=e[t+1]^r[1],u=e[t+2]^r[2],h=e[t+3]^r[3],f=4,p=1;p>>24]^n[c>>>16&255]^s[u>>>8&255]^a[255&h]^r[f++],_=i[c>>>24]^n[u>>>16&255]^s[h>>>8&255]^a[255&l]^r[f++],g=i[u>>>24]^n[h>>>16&255]^s[l>>>8&255]^a[255&c]^r[f++],y=i[h>>>24]^n[l>>>16&255]^s[c>>>8&255]^a[255&u]^r[f++];l=m,c=_,u=g,h=y}m=(o[l>>>24]<<24|o[c>>>16&255]<<16|o[u>>>8&255]<<8|o[255&h])^r[f++],_=(o[c>>>24]<<24|o[u>>>16&255]<<16|o[h>>>8&255]<<8|o[255&l])^r[f++],g=(o[u>>>24]<<24|o[h>>>16&255]<<16|o[l>>>8&255]<<8|o[255&c])^r[f++],y=(o[h>>>24]<<24|o[l>>>16&255]<<16|o[c>>>8&255]<<8|o[255&u])^r[f++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,s=e.algo,a=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],o=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],c=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],u=s.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=a[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],s=0;s<16;s++){var l=n[s]=[],c=d[s];for(r=0;r<24;r++)l[r/6|0]|=t[(o[r]-1+c)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(o[r+24]-1+c)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var u=this._invSubKeys=[];for(r=0;r<16;r++)u[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],h.call(this,4,252645135),h.call(this,16,65535),f.call(this,2,858993459),f.call(this,8,16711935),h.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],s=this._lBlock,a=this._rBlock,o=0,d=0;d<8;d++)o|=l[d][((a^n[d])&c[d])>>>0];this._lBlock=a,this._rBlock=s^o}var u=this._lBlock;this._lBlock=this._rBlock,this._rBlock=u,h.call(this,1,1431655765),f.call(this,8,16711935),f.call(this,2,858993459),h.call(this,16,65535),h.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function h(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=u.createEncryptor(i.create(t)),this._des2=u.createEncryptor(i.create(r)),this._des3=u.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var s=0;n<256;n++){var a=n%r,o=t[a>>>2]>>>24-a%4*8&255;s=(s+i[n]+o)%256;var d=i[n];i[n]=i[s],i[s]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=s.call(this)},keySize:8,ivSize:0});function s(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var s=e[t];e[t]=e[r],e[r]=s,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var a=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)s.call(this)}});e.RC4Drop=t._createHelper(a)}(),r.RC4)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(n[0]^=l,n[1]^=u,n[2]^=c,n[3]^=h,n[4]^=l,n[5]^=u,n[6]^=c,n[7]^=h,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.Rabbit=t._createHelper(o)}(),r.Rabbit)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],s=[],a=[],o=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var s=t.words,a=s[0],o=s[1],l=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),u=l>>>16|4294901760&c,h=c<<16|65535&l;for(i[0]^=l,i[1]^=u,i[2]^=c,i[3]^=h,i[4]^=l,i[5]^=u,i[6]^=c,i[7]^=h,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)s[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16,d=((n*n>>>17)+n*o>>>15)+o*o,l=((4294901760&i)*i|0)+((65535&i)*i|0);a[r]=d^l}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}e.RabbitLegacy=t._createHelper(o)}(),r.RabbitLegacy)})),Ot((function(e,t){var r;e.exports=(r=Ri,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,s=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],a=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var o={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,s=255&t,a=e.sbox[0][r]+e.sbox[1][i];return a^=e.sbox[2][n],a+=e.sbox[3][s],a}function l(e,t,r){let i,s=t,a=r;for(let t=0;t1;--t)s^=e.pbox[t],a=d(e,s)^a,i=s,s=a,a=i;return i=s,s=a,a=i,a^=e.pbox[1],s^=e.pbox[0],{left:s,right:a}}function u(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=a[t][r]}let i=0;for(let a=0;a=r&&(i=0);let o=0,d=0,c=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=e.slice(s+4+2,s+4+a);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const o=n.decrypt(i);n=null,e.set(o,s+4+2)}s=s+4+a}return e}function Ni(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const s=n.decrypt(i);return n=null,e.set(s,32),e}Ot((function(e,t){e.exports=Ri}));var Oi=Ot((function(e,t){var r,n,s,a=(r=new Date,n=4,s={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+a.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},s);a.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+a.getDurationString(e.start(i))+","+a.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=a;var o=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};o.prototype.getPosition=function(){return this.position},o.prototype.getEndPosition=function(){return this.buffer.byteLength},o.prototype.getLength=function(){return this.buffer.byteLength},o.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},o.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},o.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},o.prototype.readUint8=function(){return this.readAnyInt(1,!1)},o.prototype.readUint16=function(){return this.readAnyInt(2,!1)},o.prototype.readUint24=function(){return this.readAnyInt(3,!1)},o.prototype.readUint32=function(){return this.readAnyInt(4,!1)},o.prototype.readUint64=function(){return this.readAnyInt(8,!1)},o.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var s=new Uint8Array(e,t,n),a=new Uint8Array(r,i,n);s.set(a)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var s=t[n];t[n]=t[i],t[i]=s}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var c=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(c.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,a.debug("MultiBufferStream","Stream ready for parsing"),!0):(a.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(a.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){a.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},c.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},c.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}a.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,s)}}t&&(a.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},c.prototype.logBufferLevel=function(e){var t,r,i,n,s,o=[],d="";for(i=0,n=0,t=0;t0&&(d+=s.end-1+"]");var l=e?a.info:a.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},c.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},c.prototype.findPosition=function(e,t,r){var i,n=null,s=-1;for(i=!0===e?0:this.bufferIndex;i=t?(a.debug("MultiBufferStream","Found position in existing buffer #"+s),s):-1},c.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=u;var h={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){h.FullBox.prototype=new h.Box,h.ContainerBox.prototype=new h.Box,h.SampleEntry.prototype=new h.Box,h.TrackGroupTypeBox.prototype=new h.FullBox,h.BASIC_BOXES.forEach((function(e){h.createBoxCtor(e)})),h.FULL_BOXES.forEach((function(e){h.createFullBoxCtor(e)})),h.CONTAINER_BOXES.forEach((function(e){h.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){h.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){h.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){h.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){h.FullBox.call(this,e,t)},createBoxCtor:function(e,t){h.boxCodes.push(e),h[e+"Box"]=function(t){h.Box.call(this,e,t)},h[e+"Box"].prototype=new h.Box,t&&(h[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){h[e+"Box"]=function(t){h.FullBox.call(this,e,t)},h[e+"Box"].prototype=new h.FullBox,h[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(a.error("BoxParser","Box of type '"+c+"' has a size "+l+" greater than its container size "+r),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):0!==l&&o+l>e.getEndPosition()?(e.seek(o),a.info("BoxParser","Not enough data in stream to parse the entire '"+c+"' box"),{code:h.ERR_NOT_ENOUGH_DATA,type:c,size:l,hdr_size:d,start:o}):t?{code:h.OK,type:c,size:l,hdr_size:d,start:o}:(h[c+"Box"]?i=new h[c+"Box"](l):"uuid"!==c?(a.warn("BoxParser","Unknown box type: '"+c+"'"),(i=new h.Box(c,l)).has_unparsed_data=!0):h.UUIDBoxes[s]?i=new h.UUIDBoxes[s](l):(a.warn("BoxParser","Unknown uuid type: '"+s+"'"),(i=new h.Box(c,l)).uuid=s,i.has_unparsed_data=!0),i.hdr_size=d,i.start=o,i.write===h.Box.prototype.write&&"mdat"!==i.type&&(a.info("BoxParser","'"+u+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(a.warn("BoxParser","Parsing of box '"+u+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(a.error("BoxParser","Parsing of box '"+u+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:h.OK,box:i,size:i.size})},h.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},h.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},h.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},h.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},h.SAMPLE_ENTRY_TYPE_VISUAL="Visual",h.SAMPLE_ENTRY_TYPE_AUDIO="Audio",h.SAMPLE_ENTRY_TYPE_HINT="Hint",h.SAMPLE_ENTRY_TYPE_METADATA="Metadata",h.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",h.SAMPLE_ENTRY_TYPE_SYSTEM="System",h.SAMPLE_ENTRY_TYPE_TEXT="Text",h.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},h.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},h.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},h.SampleEntry.prototype.parseFooter=function(e){h.ContainerBox.prototype.parse.call(this,e)},h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_HINT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),h.createMediaSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),h.createSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_TEXT,"enct"),h.createEncryptedSampleEntryCtor(h.SAMPLE_ENTRY_TYPE_METADATA,"encm"),h.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),h.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),h.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),h.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)a.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void a.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else a.error("av1C reserved_1 parsing problem");else a.error("av1C version "+this.version+" not supported")})),h.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),h.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),h.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),h.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),h.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),h.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),h.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),h.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),h.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|s>>4&15,i.acmod=s>>1&7,i.lfeon=1&s,i.num_dep_sub=a>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&a)<<8|e.readUint8())}})),h.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),h.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),h.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),h.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),h.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var s=e.readUint8();for(t=0;t>7,a.nalu_type=63&n;var o=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),h.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),a.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),h.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?a.property_index=(127&s)<<8|e.readUint8():a.property_index=127&s}}})),h.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:a.warn("BoxParser","Unknown leva assignement type")}}})),h.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),h.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),f.prototype.toString=function(){return"("+this.x+","+this.y+")"},h.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new f(e.readUint16(),e.readUint16()),this.display_primaries[1]=new f(e.readUint16(),e.readUint16()),this.display_primaries[2]=new f(e.readUint16(),e.readUint16()),this.white_point=new f(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),h.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),h.createFullBoxCtor("mehd",(function(e){1&this.flags&&(a.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),h.createFullBoxCtor("meta",(function(e){this.boxes=[],h.ContainerBox.prototype.parse.call(this,e)})),h.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),h.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),h.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),h.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),h.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),h.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),h.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),h.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),h.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),h.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),h.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),h.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)a.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=h.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),h.createSampleGroupCtor("stsa",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),h.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),h.createSampleGroupCtor("tsas",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("tscl",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createSampleGroupCtor("vipr",(function(e){a.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),h.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),h.createFullBoxCtor("senc"),h.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),a.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),h.SingleItemTypeReferenceBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.SingleItemTypeReferenceBox.prototype=new h.Box,h.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=h.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),h.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),h.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&h.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),h.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),h.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),h.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),h.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),h.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),h.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},h.createTrackGroupCtor("msrc"),h.TrackReferenceTypeBox=function(e,t,r,i){h.Box.call(this,e,t),this.hdr_size=r,this.start=i},h.TrackReferenceTypeBox.prototype=new h.Box,h.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},h.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&h.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&h.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),h.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),h.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),h.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),h.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=h.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),h.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),h.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=h.parseHex16(e)})),h.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),h.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),h.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var a=i.extract_bits(1);this.ptl_sublayer_present_mask|=a<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=h.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,s="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(s="."+h.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+s,n=!0);t+=s}return t},h.vvc1SampleEntry.prototype.getCodec=h.vvi1SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],s=0;for(s|=this.vvcC.ptl_frame_only_constraint<<7,s|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(s),s&&(i=e),s=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var a="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",o=0,d=0;for(e=0;e<=i;++e)for(o=o<<8|n[e],d+=8;d>=5;){r+=a[o>>d-5&31],o&=(1<<(d-=5))-1}d&&(r+=a[31&(o<<=5-d)])}}t+=r}return t},h.mp4aSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+h.decimalToHex(t)+(r?"."+r:"")}return e},h.stxtSampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},h.vp08SampleEntry.prototype.getCodec=h.vp09SampleEntry.prototype.getCodec=function(){var e=h.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},h.av01SampleEntry.prototype.getCodec=function(){var e,t=h.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},h.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),a.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},h.FullBox.prototype.writeHeader=function(e){this.size+=4,h.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},h.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},h.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},h.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&h.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&h.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&h.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&h.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&h.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},h.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},h.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},h.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&h.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&h.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&h.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&h.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&h.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&h.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof h.Box||t[r]instanceof h.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||h.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},h.boxEqual=function(e,t){if(!h.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=h.parseOneBox(this.stream,false)).code===h.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&a.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(a.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(a.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(a.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(a.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,s,a={},o=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(a.hasMoov=!0,a.duration=this.moov.mvhd.duration,a.timescale=this.moov.mvhd.timescale,a.isFragmented=null!=this.moov.mvex,a.isFragmented&&this.moov.mvex.mehd&&(a.fragment_duration=this.moov.mvex.mehd.fragment_duration),a.isProgressive=this.isProgressive,a.hasIOD=null!=this.moov.iods,a.brands=[],a.brands.push(this.ftyp.major_brand),a.brands=a.brands.concat(this.ftyp.compatible_brands),a.created=new Date(o+1e3*this.moov.mvhd.creation_time),a.modified=new Date(o+1e3*this.moov.mvhd.modification_time),a.tracks=[],a.audioTracks=[],a.videoTracks=[],a.subtitleTracks=[],a.metadataTracks=[],a.hintTracks=[],a.otherTracks=[],e=0;e0?a.mime+='video/mp4; codecs="':a.audioTracks&&a.audioTracks.length>0?a.mime+='audio/mp4; codecs="':a.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(a.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),a.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(a.debug("ISOFile","Sending samples on track #"+s.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(s.id,s.user,s.samples),s.samples=[],s!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return s=r.samples[l].offset+r.samples[l].alreadyRead,a.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+a.getDurationString(e,o)+" and offset: "+s),{offset:s,time:e/o}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,s=this.moov,o={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){a=d;break}switch(a){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),s.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var u=new h.avcCBox;u.parse(new o(t.avcDecoderConfigRecord)),s.addBox(u)}else if(t.hevcDecoderConfigRecord){var f=new h.hvcCBox;f.parse(new o(t.hevcDecoderConfigRecord)),s.addBox(f)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),s.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)s.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&s.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){s.addBox(e)})),n.add("dinf").add("dref").addEntry((new h["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(s),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},h.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},s=this.getTrackById(e);if(null!==s){n.number=s.samples.length,n.track_id=s.tkhd.track_id,n.timescale=s.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=s.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,s.samples.push(n),s.samples_size+=n.size,s.samples_duration+=n.duration,void 0===s.first_dts&&(s.first_dts=i.dts),this.processSamples();var a=this.createSingleSampleMoof(n);return this.addBox(a),a.computeSize(),a.trafs[0].truns[0].data_offset=a.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new h.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",h.TRUN_FLAGS_DATA_OFFSET|h.TRUN_FLAGS_DURATION|h.TRUN_FLAGS_SIZE|h.TRUN_FLAGS_FLAGS|h.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,s;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[a].grouping_type+"/0",(o=new l(n[a].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=o))}else for(a=0;a=2&&(d=i[a].grouping_type+"/0",o=new l(i[a].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=o))},g.setSampleGroupProperties=function(e,t,r,i){var n,s;for(n in t.sample_groups=[],i){var a;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)a=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(s=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,a&&s>=0&&(t.sample_groups[n].description=a.entries[s])):a&&a.version>=2&&a.default_group_description_index>0&&(t.sample_groups[n].description=a.entries[a.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=s.sample_counts[b]),t>0?(e.samples[t-1].duration=s.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,a?(t>=w&&(S++,w<0&&(w=0),w+=a.sample_counts[S]),x.cts=e.samples[t].dts+a.sample_offsets[S]):x.cts=x.dts,o?(t==o.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=h?h.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(c.length>0||u.length>0)&&g.setSampleGroupProperties(e,x,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,s,a,o,d,l,c,u,f,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(u,c,c.sbgps,u.mdia.minf.stbl.sgpds,c.sgpds),t=0;t0?p.dts=u.samples[u.samples.length-2].dts+u.samples[u.samples.length-2].duration:(c.tfdt?p.dts=c.tfdt.baseMediaDecodeTime:p.dts=0,u.first_traf_merged=!0),p.cts=p.dts,_.flags&h.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=a,_.flags&h.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&h.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(c.tfhd.flags&h.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(c.tfhd.flags&h.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&h.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?c.tfhd.base_data_offset:v||0===t?l.start:o,p.offset=0===t&&0===r?b?w+_.data_offset:w:o,o=p.offset+p.size,(c.sbgps.length>0||c.sgpds.length>0||u.mdia.minf.stbl.sbgps.length>0||u.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(u,p,p.number_in_traf,c.sample_groups_info)}}if(c.subs){u.has_fragment_subsamples=!0;var S=c.first_sample_index;for(t=0;t-1))return null;var s=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=s)return a.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===s)return null;a.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+s+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,s),i.alreadyRead+=s,r.usedBytes+=s,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=s.ipro.protections[s.iinf.item_infos[e].protection_index-1]),s.iinf.item_infos[e].item_type?r.type=s.iinf.item_infos[e].item_type:r.type="mime",r.content_type=s.iinf.item_infos[e].content_type,r.content_encoding=s.iinf.item_infos[e].content_encoding;if(s.grpl)for(e=0;e0&&h.property_index-1-1))return null;var o=(t=this.stream.buffers[s]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=o))return a.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+o+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,o),n.alreadyRead+=o,r.alreadyRead+=o,t.usedBytes+=o,this.stream.logBufferLevel(),null;a.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},h.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},h.FullBox.prototype.printHeader=function(e){this.size+=4,h.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},h.Box.prototype.print=function(e){this.printHeader(e)},h.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},h.tkhdBox.prototype.print=function(e){h.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function $i(e){return e.reduce(((e,t)=>256*e+t))}function Gi(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Oi.Log,Oi.MP4BoxStream,Oi.DataStream,Oi.MultiBufferStream,Oi.MPEG4DescriptorParser,Oi.BoxParser,Oi.XMLSubtitlein4Parser,Oi.Textin4Parser,Oi.ISOFile,Oi.createFile;class Hi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],Gi(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:s=[],output:a="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof s&&(s=qi(s)),16!==s.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(u,u+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2];const i=e.byteLength;let n=5;for(;ni)break;let a=e[n+4],o=!1;if(r?(a=a>>>1&63,o=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,o=1===a||5===a),o){const r=nn(e.slice(n+4+2,n+4+s),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+s}return e}class on{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var s=arguments.length,a=new Array(s),o=0;o1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=dn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=dn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=dn.findFirstStartCode}}}}function cn(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let s=5;for(;sn)break;let o=e[s+4],d=!1;if(i?(o=o>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,d=1===o||5===o),d){const i=cn(e.slice(s+4,s+4+a),t,r);e.set(i,s+4)}s=s+4+a}return e}function fn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class pn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{cr(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class mn{static init(){mn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in mn.types)mn.types.hasOwnProperty(e)&&(mn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mn.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,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.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 mn.box(mn.types.trak,mn.tkhd(e),mn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,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(e){return mn.box(mn.types.mdia,mn.mdhd(e),mn.hdlr(e),mn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?mn.constants.HDLR_AUDIO:mn.constants.HDLR_VIDEO,mn.box(mn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mn.box(mn.types.smhd,mn.constants.SMHD):mn.box(mn.types.vmhd,mn.constants.VMHD),mn.box(mn.types.minf,t,mn.dinf(),mn.stbl(e))}static dinf(){return mn.box(mn.types.dinf,mn.box(mn.types.dref,mn.constants.DREF))}static stbl(e){return mn.box(mn.types.stbl,mn.stsd(e),mn.box(mn.types.stts,mn.constants.STTS),mn.box(mn.types.stsc,mn.constants.STSC),mn.box(mn.types.stsz,mn.constants.STSZ),mn.box(mn.types.stco,mn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp3(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp4a(e)):"avc"===e.videoType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.avc1(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types.mp4a,i,mn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return mn.box(mn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.avc1,n,mn.box(mn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.hvc1,n,mn.box(mn.types.hvcC,t))}static mvex(e){return mn.box(mn.types.mvex,mn.trex(e))}static trex(e){let t=e.id,r=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 mn.box(mn.types.trex,r)}static moof(e,t){return mn.box(mn.types.moof,mn.mfhd(e.sequenceNumber),mn.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 mn.box(mn.types.mfhd,t)}static traf(e,t){let r=e.id,i=mn.box(mn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=mn.box(mn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),s=mn.sdtp(e),a=mn.trun(e,s.byteLength+16+16+8+16+8+8);return mn.box(mn.types.traf,i,n,a,s)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,mn.box(mn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,s=e.flags,a=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s.isLeading<<2|s.dependsOn,s.isDependedOn<<6|s.hasRedundancy<<4|s.isNonSync,0,0,a>>>24&255,a>>>16&255,a>>>8&255,255&a],12),mn.box(mn.types.trun,r)}static mdat(e){return mn.box(mn.types.mdat,e)}}mn.init();var _n,gn=Ot((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_n=gn)&&_n.__esModule&&Object.prototype.hasOwnProperty.call(_n,"default")&&_n.default;const yn=[44100,48e3,32e3,0],vn=[22050,24e3,16e3,0],bn=[11025,12e3,8e3,0],wn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Sn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],En=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function An(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,s=(240&t[2])>>>4,a=(12&t[2])>>>2,o=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=bn[a];break;case 2:d=vn[a];break;case 3:d=yn[a]}switch(n){case 1:s=e[n]&&t=6?(i=5,t=new Array(4),a=n-3):(i=2,t=new Array(2),a=n):-1!==o.indexOf("android")?(i=2,t=new Array(2),a=n):(i=5,a=n,t=new Array(4),n>=6?a=n-3:1===s&&(i=2,t=new Array(2),a=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&s)<<3,5===i&&(t[1]|=(15&a)>>>1,t[2]=(1&a)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Nn[n],this.sampling_index=n,this.channel_count=s,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}Date.now||(Date.now=function(){return(new Date).getTime()});const Gn=[];Gn.push(a({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}}),s({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}})),Promise.all(Gn).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],s={},a=new AbortController,o=null,d=null,l=null,c=null,u=!1,h=null,f=null,S=!1,E=!1,U=!!yr(r),be=!1,we=null,Ve=null,Xe=null,at=[],ft=null,pt=null,mt=0,_t=0,Et=null,At=null,Ut=0,Nt=0,Ot=!1,$t=!1,Gt=!1,Ht=null,Yt=null,Jt=null,nr=!1,wr=!0,Sr=()=>{const e=_r();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration}};"VideoEncoder"in self&&(s={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(s.isEmitInfo||(ii.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:k,w:e.codedWidth,h:e.codedHeight}),s.isEmitInfo=!0,s.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),s.offscreenCanvasCtx=s.offscreenCanvas.getContext("2d")),cr(e.createImageBitmap))e.createImageBitmap().then((t=>{s.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ii.delay,ts:0},[r]),fr(e)}));else{s.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=s.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ii.delay,ts:0},[t]),fr(e)}},error:function(e){ii.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(s.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?lt:ct});s.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:R,code:t});const r=new Uint8Array(e);postMessage({cmd:M,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const a=e.slice(5);t===Ie?(n=kr(a),i={codec:n.codec,description:a}):t===Fe&&(n=Wr(a),i={codec:n.codec,description:a}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth);try{s.decoder.configure(i),s.hasInit=!0}catch(e){ii.debug.log("worker","VideoDecoder configure error",e.code,e)}}},reset(){s.hasInit=!1,s.isEmitInfo=!1,s.offscreenCanvas=null,s.offscreenCanvasCtx=null}});let Er=function(){if(nr=!0,ii.fetchStatus!==Ct||vr(ii._opt.isChrome)){if(a)try{a.abort(),a=null}catch(e){ii.debug.log("worker","abort catch",e)}}else a=null,ii.debug.log("worker",`abort() and not abortController.abort() _status is ${ii.fetchStatus} and _isChrome is ${ii._opt.isChrome}`)},Ar={init(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},destroy(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Ar.extractNALu$2(t)},getNaluDts(){let e=Ar.localDts;return Ar.localDts=Ar.localDts+40,e},getNaluAudioDts(){const e=ii._opt.sampleRate,t=ii._opt.audioBufferSize;return Ar.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,s=0,a=[];for(;i1)for(let e=0;e{const t=Fr(e);t===He||t===Ge?Ar.handleVideoH264Nalu(e):Rr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH264Nalu(i[0]);else if(zr(i)){const e=Fr(i[0]),t=Mr(e);Ar.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH264Nalu(e)}))}else if(Ar.streamType===Me)if(ii._opt.nakedFlowH265DemuxUseNew){const t=Ar.handleAddNaluStartCode(e),r=Ar.extractNALu(t);if(0===r.length)return void ii.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Xr(e);t===nt||t===rt||t===et?Ar.handleVideoH265Nalu(e):Jr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH265Nalu(i[0]);else if(ei(i)){const e=Xr(i[0]),t=Qr(e);Ar.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH265Nalu(e)}))}else Xr(e)===nt?Ar.extractH265PPS(e):Ar.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Lr(Fr(e))?Ar.extractH264SEI(e):Ar.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Zr(Xr(e))?Ar.extractH265SEI(e):Ar.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Fr(e);switch(t){case Ge:Ar.sps=e;break;case He:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.sps&&Ar.pps){const e=Cr({sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}if(Rr(t)){const r=Mr(t),i=Ar.getNaluDts(),n=Pr(e,r);Ar.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=Cr({sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}},handleVideoH264NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Ir(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Xr(e);switch(t){case et:Ar.vps=e;break;case rt:Ar.sps=e;break;case nt:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.vps&&Ar.sps&&Ar.pps){const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:ae,ts:t,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}if(Jr(t)){const r=Qr(t),i=Ar.getNaluDts(),n=Yr(e,r);Ar.doDecode(n,{type:ae,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Ar.vps&&Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:ae,ts:0,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}},handleVideoH265NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Kr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:ae,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){ii.calcNetworkDelay(t.ts),t.isIFrame&&ii.calcIframeIntervalTimestamp(t.ts),ii.decode(e,t)}},Tr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){Tr.mp4Box=Oi.createFile(),Tr.mp4Box.onReady=Tr.onReady,Tr.mp4Box.onError=Tr.onError,Tr.mp4Box.onSamples=Tr.onSamples},initTransportDescarmber(){Tr.transportDescarmber=new Hi},_getSeqHeader(e){const t=Tr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Oi.DataStream(void 0,0,Oi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(Tr.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ii.debug.log(Tr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){Tr.videoTrackId=t.id;const e=Tr._getSeqHeader(t);e&&(ii.debug.log(Tr.LOG_NAME,"seqHeader"),ii.decodeVideo(e,0,!0,0)),Tr.mp4Box.setExtractionOptions(t.id)}if(r&&ii._opt.hasAudio){Tr.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");Tr.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ii.debug.log(Tr.LOG_NAME,"aacADTSHeader"),ii.decodeAudio(n,0)}Tr.mp4Box.start()},onError(e){ii.debug.error(Tr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===Tr.videoTrackId)for(const t of r){const r=t.data,i=t.is_sync,n=1e3*t.cts/t.timescale;t.duration,t.timescale,i&&ii.calcIframeIntervalTimestamp(n);let s=null;s=Tr.isHevc?Kr(r,i):Ir(r,i),ii.decode(s,{type:ae,ts:n,isIFrame:i,cts:0}),Tr.mp4Box.releaseUsedSamples(e,t.number)}else if(e===Tr.audioTrackId){if(ii._opt.hasAudio)for(const t of r){const r=t.data,i=1e3*t.cts/t.timescale;t.duration,t.timescale;const n=new Uint8Array(r.byteLength+2);n.set([175,1],0),n.set(r,2),ii.decode(n,{type:se,ts:i,isIFrame:!1,cts:0}),Tr.mp4Box.releaseUsedSamples(e,t.number)}}else ii.debug.warn(Tr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);Tr.transportDescarmber&&(t=Tr.transportDescarmber.transport(t)),t.buffer.fileStart=Tr.offset,Tr.offset+=t.byteLength,Tr.mp4Box.appendBuffer(t.buffer)},destroy(){Tr.mp4Box&&(Tr.mp4Box.stop(),Tr.mp4Box.flush(),Tr.mp4Box.destroy(),Tr.mp4Box=null),Tr.transportDescarmber&&(Tr.transportDescarmber.destroy(),Tr.transportDescarmber=null),Tr.offset=0,Tr.videoTrackId=null,Tr.audioTrackId=null,Tr.isHevc=!1}},$r={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);$r.extractNALu(t)},destroy(){$r.lastBuffer=new Uint8Array(0),$r.parsedOffset=0,$r.firstStartCodeOffset=0,$r.secondStartCodeOffset=0,$r.state="init",$r.hasInitVideoCodec=!1,$r.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ii.debug.warn($r.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array($r.lastBuffer.length+e.length);for(t.set($r.lastBuffer,0),t.set(new Uint8Array(e),$r.lastBuffer.length),$r.lastBuffer=t;;){if("init"===$r.state){let e=!1;for(;$r.lastBuffer.length-$r.parsedOffset>=4;)if(0===$r.lastBuffer[$r.parsedOffset])if(0===$r.lastBuffer[$r.parsedOffset+1])if(1===$r.lastBuffer[$r.parsedOffset+2]){if(182===$r.lastBuffer[$r.parsedOffset+3]){$r.state="findFirstStartCode",$r.firstStartCodeOffset=$r.parsedOffset,$r.parsedOffset+=4,e=!0;break}$r.parsedOffset++}else $r.parsedOffset++;else $r.parsedOffset++;else $r.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===$r.state){let e=!1;for(;$r.lastBuffer.length-$r.parsedOffset>=4;)if(0===$r.lastBuffer[$r.parsedOffset])if(0===$r.lastBuffer[$r.parsedOffset+1])if(1===$r.lastBuffer[$r.parsedOffset+2]){if(182===$r.lastBuffer[$r.parsedOffset+3]){$r.state="findSecondStartCode",$r.secondStartCodeOffset=$r.parsedOffset,$r.parsedOffset+=4,e=!0;break}$r.parsedOffset++}else $r.parsedOffset++;else $r.parsedOffset++;else $r.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===$r.state){if(!($r.lastBuffer.length-$r.parsedOffset>0))break;{let e,t,r=192&$r.lastBuffer[$r.parsedOffset];e=0==r?$r.secondStartCodeOffset-14:$r.secondStartCodeOffset;let i=0==(192&$r.lastBuffer[$r.firstStartCodeOffset+4]);if(i){if($r.firstStartCodeOffset-14<0)return void ii.debug.warn($r.LOG_NAME,"firstStartCodeOffset -14 is",$r.firstStartCodeOffset-14);$r.hasInitVideoCodec||($r.hasInitVideoCodec=!0,ii.debug.log($r.LOG_NAME,"setCodec"),si.setCodec(Le,"")),t=$r.lastBuffer.subarray($r.firstStartCodeOffset-14,e)}else t=$r.lastBuffer.subarray($r.firstStartCodeOffset,e);let n=$r.getNaluDts();$r.hasInitVideoCodec?(postMessage({cmd:$,type:Be,value:t.byteLength}),postMessage({cmd:$,type:xe,value:n}),si.decode(t,i?1:0,n)):ii.debug.warn($r.LOG_NAME,"has not init video codec"),$r.lastBuffer=$r.lastBuffer.subarray(e),$r.firstStartCodeOffset=0==r?14:0,$r.parsedOffset=$r.firstStartCodeOffset+4,$r.state="findFirstStartCode"}}}},getNaluDts(){let e=$r.localDts;return $r.localDts=$r.localDts+40,e}},Gr={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new On,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){Gr.media_info_=null,Gr.pes_slice_queues_=null,Gr.section_slice_queues_=null,Gr.video_metadata_=null,Gr.audio_metadata_=null,Gr.aac_last_incomplete_data_=null,Gr.video_track_=null,Gr.audio_track_=null,Gr._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){Gr._remainingPacketData&&(e=fn(Gr._remainingPacketData,e),Gr._remainingPacketData=null);let t=e.buffer;const r=Gr.parseChunks(t);r?Gr._remainingPacketData=e.subarray(r):e.length>>6;r[1];let s=(31&r[1])<<8|r[2],a=(48&r[3])>>>4,o=15&r[3],d=!(!Gr.pmt_||Gr.pmt_.pcr_pid!==s),l={},c=4;if(2==a||3==a){let e=r[4];if(e>0&&(d||3==a)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);Gr.last_pcr_=e}if(2==a||5+e===188){t+=188,204===Gr.tsPacketSize&&(t+=16);continue}c=5+e}if(1==a||3==a)if(0===s||s===Gr.current_pmt_pid_||null!=Gr.pmt_&&Gr.pmt_.pid_stream_type[s]===In){let r=188-c;Gr.handleSectionSlice(e,t+c,r,{pid:s,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}else if(null!=Gr.pmt_&&null!=Gr.pmt_.pid_stream_type[s]){let r=188-c,i=Gr.pmt_.pid_stream_type[s];s!==Gr.pmt_.common_pids.h264&&s!==Gr.pmt_.common_pids.h265&&s!==Gr.pmt_.common_pids.adts_aac&&s!==Gr.pmt_.common_pids.loas_aac&&s!==Gr.pmt_.common_pids.ac3&&s!==Gr.pmt_.common_pids.eac3&&s!==Gr.pmt_.common_pids.opus&&s!==Gr.pmt_.common_pids.mp3&&!0!==Gr.pmt_.pes_private_data_pids[s]&&!0!==Gr.pmt_.timed_id3_pids[s]&&!0!==Gr.pmt_.synchronous_klv_pids[s]&&!0!==Gr.pmt_.asynchronous_klv_pids[s]||Gr.handlePESSlice(e,t+c,r,{pid:s,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:o,random_access_indicator:l.random_access_indicator})}t+=188,204===Gr.tsPacketSize&&(t+=16)}return Gr.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=Gr.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let a=n[0];if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t+1,Math.min(r,a));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Gr.emitSectionSlices(s,i):Gr.clearSlices(s,i)}for(let o=1+a;o=s.expected_length&&Gr.clearSlices(s,i),o+=d.byteLength}}else if(null!=s&&0!==s.total_length){let n=new Uint8Array(e,t,Math.min(r,s.expected_length-s.total_length));s.slices.push(n),s.total_length+=n.byteLength,s.total_length===s.expected_length?Gr.emitSectionSlices(s,i):s.total_length>=s.expected_length&&Gr.clearSlices(s,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),s=n[0]<<16|n[1]<<8|n[2];n[3];let a=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==s)return void ii.debug.warn(Gr.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${s}`);let e=Gr.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?Gr.emitPESSlices(e,i):Gr.clearSlices(e,i)),Gr.pes_slice_queues_[i.pid]=new Rn,Gr.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==Gr.pes_slice_queues_[i.pid])return;let o=Gr.pes_slice_queues_[i.pid];o.slices.push(n),i.payload_unit_start_indicator&&(o.expected_length=0===a?0:a+6),o.total_length+=n.byteLength,o.expected_length>0&&o.expected_length===o.total_length?Gr.emitPESSlices(o,i):o.expected_length>0&&o.expected_length>>6,o=t[8];2!==a&&3!==a||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s=3===a?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+o;if(0!==n){if(n<3+o)return void ii.debug.warn(Gr.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-o}else d=t.byteLength-l;let c=t.subarray(l,l+d);switch(e.stream_type){case Bn:case xn:Gr.parseMP3Payload(c,r);break;case Un:Gr.pmt_.common_pids.opus===e.pid||Gr.pmt_.common_pids.ac3===e.pid||Gr.pmt_.common_pids.eac3===e.pid||(Gr.pmt_.asynchronous_klv_pids[e.pid]?Gr.parseAsynchronousKLVMetadataPayload(c,e.pid,i):Gr.pmt_.smpte2038_pids[e.pid]?Gr.parseSMPTE2038MetadataPayload(c,r,s,e.pid,i):Gr.parsePESPrivateDataPayload(c,r,s,e.pid,i));break;case Tn:Gr.parseADTSAACPayload(c,r);break;case kn:Gr.parseLOASAACPayload(c,r);break;case Cn:case Dn:break;case Pn:Gr.pmt_.timed_id3_pids[e.pid]?Gr.parseTimedID3MetadataPayload(c,r,s,e.pid,i):Gr.pmt_.synchronous_klv_pids[e.pid]&&Gr.parseSynchronousKLVMetadataPayload(c,r,s,e.pid,i);break;case Fn:Gr.parseH264Payload(c,r,s,e.random_access_indicator);break;case Ln:Gr.parseH265Payload(c,r,s,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Un){let r,s=6;r=0!==n?n:t.byteLength-s;let a=t.subarray(s,s+r);Gr.parsePESPrivateDataPayload(a,void 0,void 0,e.pid,i)}}else ii.debug.error(Gr.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e(Gr.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],s=e[6];e[7];let a=null;if(1===n&&0===s)a={version_number:0,network_pid:0,program_pmt_pid:{}},a.version_number=i;else if(a=Gr.pat_,null==a)return;let o=r-5-4,d=-1,l=-1;for(let t=8;t<8+o;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?a.network_pid=i:(a.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===s&&(null==Gr.pat_&&ii.debug.log(Gr.TAG_NAME,`Parsed first PAT: ${JSON.stringify(a)}`),Gr.pat_=a,Gr.current_program_=d,Gr.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ii.debug.error(Gr.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],s=(62&e[5])>>>1,a=1&e[5],o=e[6];if(e[7],1===a&&0===o)r=Gr._initPmt(),r.program_number=n,r.version_number=s,Gr.program_pmt_map_[n]=r;else if(r=Gr.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,c=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;iGr.has_video_&&Gr.has_audio_?Gr.video_init_segment_dispatched_&&Gr.audio_init_segment_dispatched_:Gr.has_video_&&!Gr.has_audio_?Gr.video_init_segment_dispatched_:!(Gr.has_video_||!Gr.has_audio_)&&Gr.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=Gr.video_metadata_.details,t={type:"video"};t.id=Gr.video_track_.id,t.timescale=1e3,t.duration=Gr.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,Gr.video_metadata_.vps){let e=Gr.video_metadata_.vps.data.subarray(4),r=Gr.video_metadata_.sps.data.subarray(4),i=Gr.video_metadata_.pps.data.subarray(4);t.hvcc=qr({vps:e,sps:r,pps:i}),0==Gr.video_init_segment_dispatched_&&ii.debug.log(Gr.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ii.decodeVideo(t.hvcc,0,!0,0)}else{let e=Gr.video_metadata_.sps.data.subarray(4),r=Gr.video_metadata_.pps.data.subarray(4);t.avcc=Dr({sps:e,pps:r}),0==Gr.video_init_segment_dispatched_&&ii.debug.log(Gr.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ii.decodeVideo(t.avcc,0,!0,0)}Gr.video_init_segment_dispatched_=!0,Gr.video_metadata_changed_=!1;let n=Gr.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){Gr.isInitSegmentDispatched()&&Gr.video_track_.length&&Gr._preDoDecode()},dispatchAudioMediaSegment(){Gr.isInitSegmentDispatched()&&Gr.audio_track_.length&&Gr._preDoDecode()},dispatchAudioVideoMediaSegment(){Gr.isInitSegmentDispatched()&&(Gr.audio_track_.length||Gr.video_track_.length)&&Gr._preDoDecode()},parseADTSAACPayload(e,t){if(Gr.has_video_&&!Gr.video_init_segment_dispatched_)return;if(Gr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Gr.aac_last_incomplete_data_.byteLength);t.set(Gr.aac_last_incomplete_data_,0),t.set(e,Gr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Gr.timescale_),"aac"===Gr.audio_metadata_.codec){if(null==t&&null!=Gr.audio_last_sample_pts_)r=1024/Gr.audio_metadata_.sampling_frequency*1e3,i=Gr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Gr.TAG_NAME,"AAC: Unknown pts");if(Gr.aac_last_incomplete_data_&&Gr.audio_last_sample_pts_){r=1024/Gr.audio_metadata_.sampling_frequency*1e3;let e=Gr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Gr.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Xt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame());){r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Gr.audio_init_segment_dispatched_?(Gr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Gr.dispatchAudioInitSegment(e)):Gr.detectAudioMetadataChange(e)&&(Gr.dispatchAudioMediaSegment(),Gr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:se};Gr.audio_track_.samples.push(s),Gr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Gr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Gr.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if(Gr.has_video_&&!Gr.video_init_segment_dispatched_)return;if(Gr.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+Gr.aac_last_incomplete_data_.byteLength);t.set(Gr.aac_last_incomplete_data_,0),t.set(e,Gr.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/Gr.timescale_),"aac"===Gr.audio_metadata_.codec){if(null==t&&null!=Gr.audio_last_sample_pts_)r=1024/Gr.audio_metadata_.sampling_frequency*1e3,i=Gr.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn(Gr.TAG_NAME,"AAC: Unknown pts");if(Gr.aac_last_incomplete_data_&&Gr.audio_last_sample_pts_){r=1024/Gr.audio_metadata_.sampling_frequency*1e3;let e=Gr.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn(Gr.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,s=new Zt(e),a=null,o=i;for(;null!=(a=s.readNextAACFrame(dr(this.loas_previous_frame)?void 0:this.loas_previous_frame));){Gr.loas_previous_frame=a,r=1024/a.sampling_frequency*1e3;const e={codec:"aac",data:a};0==Gr.audio_init_segment_dispatched_?(Gr.audio_metadata_={codec:"aac",audio_object_type:a.audio_object_type,sampling_freq_index:a.sampling_freq_index,sampling_frequency:a.sampling_frequency,channel_config:a.channel_config},Gr.dispatchAudioInitSegment(e)):Gr.detectAudioMetadataChange(e)&&(Gr.dispatchAudioMediaSegment(),Gr.dispatchAudioInitSegment(e)),n=o;let t=Math.floor(o);const i=new Uint8Array(a.data.length+2);i.set([175,1],0),i.set(a.data,2);let s={payload:i,length:i.byteLength,pts:t,dts:t,type:se};Gr.audio_track_.samples.push(s),Gr.audio_track_.length+=i.byteLength,o+=r}s.hasIncompleteData()&&(Gr.aac_last_incomplete_data_=s.getIncompleteData()),n&&(Gr.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if(Gr.has_video_&&!Gr.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],s=e[1]>>>3&3,a=(6&e[1])>>1;e[2];let o=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,c=34;switch(s){case 0:l=n[o];break;case 2:l=i[o];break;case 3:l=r[o]}switch(a){case 1:c=34;break;case 2:c=33;break;case 3:c=32}const u={};u.object_type=c,u.sample_rate=l,u.channel_count=d,u.data=e;const h={codec:"mp3",data:u};0==Gr.audio_init_segment_dispatched_?(Gr.audio_metadata_={codec:"mp3",object_type:c,sample_rate:l,channel_count:d},Gr.dispatchAudioInitSegment(h)):Gr.detectAudioMetadataChange(h)&&(Gr.dispatchAudioMediaSegment(),Gr.dispatchAudioInitSegment(h));let f={payload:e,length:e.byteLength,pts:t/Gr.timescale_,dts:t/Gr.timescale_,type:se};Gr.audio_track_.samples.push(f),Gr.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==Gr.audio_metadata_.codec)return ii.debug.log(Gr.TAG_NAME,`Audio: Audio Codecs changed from ${Gr.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===Gr.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==Gr.audio_metadata_.audio_object_type)return ii.debug.log(Gr.TAG_NAME,`AAC: AudioObjectType changed from ${Gr.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==Gr.audio_metadata_.sampling_freq_index)return ii.debug.log(Gr.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${Gr.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==Gr.audio_metadata_.channel_config)return ii.debug.log(Gr.TAG_NAME,`AAC: Channel configuration changed from ${Gr.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===Gr.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==Gr.audio_metadata_.sampling_frequency)return ii.debug.log(Gr.TAG_NAME,`AC3: Sampling Frequency changed from ${Gr.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==Gr.audio_metadata_.bit_stream_identification)return ii.debug.log(Gr.TAG_NAME,`AC3: Bit Stream Identification changed from ${Gr.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==Gr.audio_metadata_.bit_stream_mode)return ii.debug.log(Gr.TAG_NAME,`AC3: BitStream Mode changed from ${Gr.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==Gr.audio_metadata_.channel_mode)return ii.debug.log(Gr.TAG_NAME,`AC3: Channel Mode changed from ${Gr.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==Gr.audio_metadata_.low_frequency_effects_channel_on)return ii.debug.log(Gr.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${Gr.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===Gr.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==Gr.audio_metadata_.sample_rate)return ii.debug.log(Gr.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${Gr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Gr.audio_metadata_.channel_count)return ii.debug.log(Gr.TAG_NAME,`Opus: Channel count changed from ${Gr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===Gr.audio_metadata_.codec){const t=e.data;if(t.object_type!==Gr.audio_metadata_.object_type)return ii.debug.log(Gr.TAG_NAME,`MP3: AudioObjectType changed from ${Gr.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==Gr.audio_metadata_.sample_rate)return ii.debug.log(Gr.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${Gr.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==Gr.audio_metadata_.channel_count)return ii.debug.log(Gr.TAG_NAME,`MP3: Channel count changed from ${Gr.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=Gr.audio_track_.id,t.timescale=1e3,t.duration=Gr.duration_,"aac"===Gr.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new $n(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ii._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ii.decodeAudio(n,0)}else"ac-3"===Gr.audio_metadata_.codec||"ec-3"===Gr.audio_metadata_.codec||"opus"===Gr.audio_metadata_.codec||"mp3"===Gr.audio_metadata_.codec&&(t.audioSampleRate=Gr.audio_metadata_.sample_rate,t.channelCount=Gr.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==Gr.audio_init_segment_dispatched_&&ii.debug.log(Gr.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),Gr.audio_init_segment_dispatched_=!0,Gr.video_metadata_changed_=!1;let r=Gr.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let s=new zn;if(s.pid=i,s.stream_id=n,s.len=e.byteLength,s.data=e,null!=t){let e=Math.floor(t/Gr.timescale_);s.pts=e}else s.nearest_pts=Gr.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/Gr.timescale_);s.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ii.debug.log(Gr.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ii.debug.log(Gr.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ii.debug.log(Gr.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ii.debug.log(Gr.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=Gr.audio_last_sample_pts_?Math.floor(Gr.audio_last_sample_pts_):null!=Gr.last_pcr_?Math.floor(Gr.last_pcr_/300/Gr.timescale_):void 0,_preDoDecode(){const e=Gr.video_track_,t=Gr.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===ae?Gr._doDecodeVideo({...e,payload:t}):e.type===se&&Gr._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Kr(t,e.isIFrame):Ir(t,e.isIFrame),e.isIFrame&&ii.calcIframeIntervalTimestamp(e.dts);let i=ii.cryptoPayload(r,e.isIFrame);ii.decode(i,{type:ae,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;yr(ii._opt.m7sCryptoAudio)&&(r=ii.cryptoPayloadAudio(t)),ii.decode(r,{type:se,ts:e.dts,isIFrame:!1,cts:0})}},jr=null;br()&&(jr={TAG_NAME:"worker MediaSource",_resetInIt(){jr.isAvc=null,jr.isAAC=null,jr.videoInfo={},jr.videoMeta={},jr.audioMeta={},jr.sourceBuffer=null,jr.audioSourceBuffer=null,jr.hasInit=!1,jr.hasAudioInit=!1,jr.isAudioInitInfo=!1,jr.videoMimeType="",jr.audioMimeType="",jr.cacheTrack={},jr.cacheAudioTrack={},jr.timeInit=!1,jr.sequenceNumber=0,jr.audioSequenceNumber=0,jr.firstRenderTime=null,jr.firstAudioTime=null,jr.mediaSourceAppendBufferFull=!1,jr.mediaSourceAppendBufferError=!1,jr.mediaSourceAddSourceBufferError=!1,jr.mediaSourceBufferError=!1,jr.mediaSourceError=!1,jr.prevTimestamp=null,jr.decodeDiffTimestamp=null,jr.prevDts=null,jr.prevAudioDts=null,jr.prevPayloadBufferSize=0,jr.isWidthOrHeightChanged=!1,jr.prevTs=null,jr.prevAudioTs=null,jr.eventListenList=[],jr.pendingRemoveRanges=[],jr.pendingSegments=[],jr.pendingAudioRemoveRanges=[],jr.pendingAudioSegments=[],jr.supportVideoFrameCallbackHandle=null,jr.audioSourceBufferCheckTimeout=null,jr.audioSourceNoDataCheckTimeout=null,jr.hasPendingEos=!1,jr.$video={currentTime:0,readyState:0}},init(){jr.events=new pn,jr._resetInIt(),jr.mediaSource=new self.MediaSource,jr.isDecodeFirstIIframe=!!vr(ii._opt.checkFirstIFrame),jr._bindMediaSourceEvents()},destroy(){jr.stop(),jr._clearAudioSourceBufferCheckTimeout(),jr.eventListenList&&jr.eventListenList.length&&(jr.eventListenList.forEach((e=>e())),jr.eventListenList=[]),jr._resetInIt(),jr.mediaSource=null},getState:()=>jr.mediaSource&&jr.mediaSource.readyState,isStateOpen:()=>jr.getState()===yt,isStateClosed:()=>jr.getState()===vt,isStateEnded:()=>jr.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=jr.events,t=e(jr.mediaSource,wt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceOpen"),jr._onMediaSourceSourceOpen()})),r=e(jr.mediaSource,bt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceClose")})),i=e(jr.mediaSource,St,(()=>{ii.debug.log(jr.TAG_NAME,"sourceended")}));jr.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){jr.sourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),jr._initSourceBuffer()),jr.audioSourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),jr._initAudioSourceBuffer()),jr._hasPendingSegments()&&jr._doAppendSegments()},decodeVideo(e,t,r,i){if(ii.isDestroyed)ii.debug.warn(jr.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(vr(jr.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Fe&&vr(or()))return void jr.emitError(De.mediaSourceH265NotSupport);jr.videoInfo.codec=i,postMessage({cmd:R,code:i});const n=new Uint8Array(e);postMessage({cmd:M,buffer:n,codecId:i},[n.buffer]),jr.hasInit=jr._decodeConfigurationRecord(e,t,r,i)}else ii.debug.warn(jr.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]}`);else if(!jr.isDecodeFirstIIframe&&r&&(jr.isDecodeFirstIIframe=!0),jr.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Fe&&(r=Vr(e));const i=jr.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ii.debug.warn(jr.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecWidth},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),jr.isWidthOrHeightChanged=!0,jr.emitError(De.mseWidthOrHeightChange))}if(jr.isWidthOrHeightChanged)return void ii.debug.warn(jr.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(gr(e))return void ii.debug.warn(jr.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength300&&(jr.firstAudioTime-=e,ii.debug.warn(jr.TAG_NAME,`video\n firstAudioTime is ${jr.firstRenderTime} and current time is ${jr.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${jr.firstAudioTime}`))}r=t-jr.firstAudioTime,r<0&&(ii.debug.warn(jr.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${jr.prevAudioTs},\n firstAudioTime is ${jr.firstAudioTime}`),r=null===jr.prevAudioDts?0:jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration),null!==jr.prevAudioTs&&r<=jr.prevAudioDts&&(ii.debug.warn(jr.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${jr.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${jr.prevAudioTs} ,\n and diff is ${t-jr.prevAudioTs}`),r=jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration)}ii.isPlayer?jr._decodeAudio(e,r,t):ii.isPlayback,jr.prevAudioTs=t,jr.prevAudioDts=r}else ii.debug.log(jr.TAG_NAME,"decodeAudio first frame is not iFrame")}},_checkTsIsMaxDiff:e=>jr.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),s={};if(i===Ie?s=kr(n):i===Fe&&(s=Wr(n)),jr.videoInfo.width=s.codecWidth,jr.videoInfo.height=s.codecHeight,0===s.codecWidth&&0===s.codecHeight)return ii.debug.warn(jr.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(s)),jr.emitError(De.mediaSourceDecoderConfigurationError),!1;const a={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:s.codecWidth,codecHeight:s.codecHeight,videoType:s.videoType},o=mn.generateInitSegment(a);jr.isAvc=i===Ie;let d=s.codec;return jr.videoMimeType=d?`video/mp4; codecs="${s.codec}"`:jr.isAvc?ut:ht,postMessage({cmd:k,w:s.codecWidth,h:s.codecHeight}),jr._initSourceBuffer(),jr.appendBuffer(o.buffer),jr.sequenceNumber=0,jr.cacheTrack={},jr.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===$e,s=r===ze;if(vr(s||n))return ii.debug.warn(jr.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),jr.emitError(De.mediaSourceAudioG711NotSupport),!1;const a={id:It,type:"audio",timescale:1e3};let o={};if(jt(e)){if(o=Kt(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!n)return!1;if(o=An(e),!o)return!1;a.audioSampleRate=o.samplingRate,a.channelCount=o.channelCount,a.refSampleDuration=1152/a.audioSampleRate*a.timescale}a.codec=o.codec,a.duration=0;let d="mp4",l=o.codec,c=null;n&&vr(ar())?(d="mpeg",l="",c=new Uint8Array):c=mn.generateInitSegment(a);let u=`${a.type}/${d}`;return l&&l.length>0&&(u+=`;codecs=${l}`),vr(jr.isAudioInitInfo)&&(Jt=r===ze?i?16:8:0===i?8:16,postMessage({cmd:I,code:r}),postMessage({cmd:P,sampleRate:a.audioSampleRate,channels:a.channelCount,depth:Jt}),jr.isAudioInitInfo=!0),jr.audioMimeType=u,jr.isAAC=s,jr._initAudioSourceBuffer(),jr.appendAudioBuffer(c.buffer),!0},_initSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.sourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.videoMimeType){try{jr.sourceBuffer=jr.mediaSource.addSourceBuffer(jr.videoMimeType),ii.debug.log(jr.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.videoMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.sourceBuffer){const t=e(jr.sourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.sourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r)}}else ii.debug.log(jr.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.isAvc === null is ${null===jr.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.audioSourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.audioMimeType){try{jr.audioSourceBuffer=jr.mediaSource.addSourceBuffer(jr.audioMimeType),jr._clearAudioSourceBufferCheckTimeout(),ii.debug.log(jr.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.audioMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendAudioBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.audioSourceBuffer){const t=e(jr.audioSourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.audioSourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r),null===jr.audioSourceNoDataCheckTimeout&&(jr.audioSourceNoDataCheckTimeout=setTimeout((()=>{jr._clearAudioNoDataCheckTimeout(),jr.emitError(De.mediaSourceAudioNoDataTimeout)}),1e3))}}else ii.debug.log(jr.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.audioMimeType is ${jr.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let s=e.slice(5),a=s.byteLength;if(0===a)return void ii.debug.warn(jr.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let o=(new Date).getTime(),d=!1;jr.prevTimestamp||(jr.prevTimestamp=o,d=!0);const l=o-jr.prevTimestamp;if(jr.decodeDiffTimestamp=l,l>500&&!d&&ii.isPlayer&&ii.debug.warn(jr.TAG_NAME,`_decodeVideo now time is ${o} and prev time is ${jr.prevTimestamp}, diff time is ${l} ms`),jr.cacheTrack.id&&t>=jr.cacheTrack.dts){let e=8+jr.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheTrack.data,8),jr.cacheTrack.duration=t-jr.cacheTrack.dts;let i=mn.moof(jr.cacheTrack,jr.cacheTrack.dts);jr.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendBuffer(n.buffer)}else ii.debug.log(jr.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${jr.cacheTrack&&jr.cacheTrack.dts}`),jr.timeInit=!1,jr.cacheTrack={};jr.cacheTrack||(jr.cacheTrack={}),jr.cacheTrack.id=Pt,jr.cacheTrack.sequenceNumber=++jr.sequenceNumber,jr.cacheTrack.size=a,jr.cacheTrack.dts=t,jr.cacheTrack.cts=i,jr.cacheTrack.isKeyframe=r,jr.cacheTrack.data=s,jr.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},jr.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=jr.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(jr.cacheAudioTrack.id&&t>=jr.cacheAudioTrack.dts){let e=8+jr.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheAudioTrack.data,8),jr.cacheAudioTrack.duration=t-jr.cacheAudioTrack.dts;let i=mn.moof(jr.cacheAudioTrack,jr.cacheAudioTrack.dts);jr.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendAudioBuffer(n.buffer)}else jr.cacheAudioTrack={};jr.cacheAudioTrack||(jr.cacheAudioTrack={}),jr.cacheAudioTrack.id=It,jr.cacheAudioTrack.sequenceNumber=++jr.audioSequenceNumber,jr.cacheAudioTrack.size=n,jr.cacheAudioTrack.dts=t,jr.cacheAudioTrack.cts=0,jr.cacheAudioTrack.data=i,jr.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingSegments.push(e),jr.sourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`video has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},appendAudioBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendAudioBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingAudioSegments.push(e),jr.audioSourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getAudioSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`audio has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},getSourceBufferUpdating:()=>jr.sourceBuffer&&jr.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>jr.audioSourceBuffer&&jr.audioSourceBuffer.updating,stop(){jr.abortSourceBuffer(),jr.removeSourceBuffer(),jr.endOfStream()},clearUpAllSourceBuffer(){if(jr.sourceBuffer){const e=jr.sourceBuffer.buffered;for(let t=0;tjr.pendingSegments.length>0||jr.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>jr.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(jr.isStateClosed()||jr.isStateEnded())ii.debug.log(jr.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==jr.sourceBuffer){if(jr.needInitAudio()&&null===jr.audioSourceBuffer)return ii.debug.log(jr.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===jr.audioSourceBufferCheckTimeout&&(jr.audioSourceBufferCheckTimeout=setTimeout((()=>{jr._clearAudioSourceBufferCheckTimeout(),jr.emitError(De.mediaSourceAudioInitTimeout)}),1e3)));if(vr(jr.getSourceBufferUpdating())&&jr.pendingSegments.length>0){const e=jr.pendingSegments.shift();try{jr.sourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}if(vr(jr.getAudioSourceBufferUpdating())&&jr.pendingAudioSegments.length>0){const e=jr.pendingAudioSegments.shift();try{jr.audioSourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}}else ii.debug.log(jr.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=jr.$video.currentTime;if(jr.sourceBuffer){const t=jr.sourceBuffer.buffered;let r=!1;for(let i=0;i=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingRemoveRanges.push({start:n,end:t})}}else s=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingAudioRemoveRanges.push({start:n,end:t})}}else sjr.pendingRemoveRanges.length>0||jr.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ii._opt.hasAudio&&ii._opt.mseDecodeAudio,_doRemoveRanges(){if(jr.sourceBuffer&&vr(jr.getSourceBufferUpdating())){let e=jr.pendingRemoveRanges;for(;e.length&&vr(jr.getSourceBufferUpdating());){let t=e.shift();try{jr.sourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(jr.audioSourceBuffer&&vr(jr.getAudioSourceBufferUpdating())){let e=jr.pendingAudioRemoveRanges;for(;e.length&&vr(jr.getAudioSourceBufferUpdating());){let t=e.shift();try{jr.audioSourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(vr(ii._opt.mseAutoCleanupSourceBuffer))return!1;const e=jr.$video.currentTime;if(jr.sourceBuffer){let t=jr.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(jr.audioSourceBuffer){let t=jr.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){jr.audioSourceBufferCheckTimeout&&(clearTimeout(jr.audioSourceBufferCheckTimeout),jr.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){jr.audioSourceNoDataCheckTimeout&&(clearTimeout(jr.audioSourceNoDataCheckTimeout),jr.audioSourceNoDataCheckTimeout=null)},getHandle:()=>jr.mediaSource.handle,emitError(e){postMessage({cmd:ne,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ii={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:kt,_opt:Sr(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ii.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ii.getVideoBufferLength(),audioDemuxBufferDelay:ii.getAudioBufferLength(),streamBufferByteLength:ii.getStreamBufferLength(),netBuf:ii.networkDelay||0,pushLatestDelay:ii.pushLatestDelay||0,latestDelay:ii.delay,isStreamTsMoreThanLocal:be});postMessage({cmd:$,type:Te,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ii._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===se)return ii.delay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp>e)return ii.preDelayTimestamp-e>1e3&&ii.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return ${ii.delay}`),ii.preDelayTimestamp=e,ii.delay;if(ii.firstTimestamp){if(e){const t=Date.now()-ii.startTimestamp,r=e-ii.firstTimestamp;t>=r?(be=!1,ii.delay=t-r):(be=!0,ii.delay=r-t)}}else ii.firstTimestamp=e,ii.startTimestamp=Date.now(),ii.delay=-1;return ii.preDelayTimestamp=e,ii.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===se)return ii.pushLatestDelay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp-e>1e3)return ii.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return -1`),-1;if(ii.firstTimestamp){let t=-1;if(e){const r=Date.now()-ii.startTimestamp,i=e-ii.firstTimestamp;r>=i?(be=!1,t=r-i):(be=!0,t=i-r)}return t}return-1},resetDelay:function(){ii.firstTimestamp=null,ii.startTimestamp=null,ii.delay=-1,ii.dropping=!1},resetAllDelay:function(){ii.resetDelay(),ii.preDelayTimestamp=null},doDecode:function(e){ii._opt.isEmitSEI&&e.type===ae&&ii.isWorkerFetch&&ii.findSei(e.payload,e.ts),ii.isPlayUseMSEAndDecoderInWorker()?e.type===se?ii._opt.mseDecodeAudio?jr.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===ae&&jr.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ii._opt.useWCS&&ii.useOffscreen()&&e.type===ae&&s.decode?s.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],s=e.type===ae&&gr(e.payload);if(vr(r))s&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n));else{const r=n.ts-t,a=n.type===se&&e.type===ae;(r<=20||a||s)&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${a} and isVideoSqeHeader is ${s}`),i.shift(),ii.doDecode(n))}},init:function(){ii.debug.log("worker","init and opt is",JSON.stringify(ii._opt));const e=ii._opt.playType===v,t=ii._opt.playType===b;if(Ar.init(),ii.isPlayer=e,ii.isPlayback=t,ii.isPlayUseMSEAndDecoderInWorker()&&jr&&jr.init(),ii.isPlaybackCacheBeforeDecodeForFpsRender())ii.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ii.debug.log("worker","setInterval()");const t=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(ii.isPushDropping)return void ii.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ii.dropping){for(r=i.shift(),ii.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ii.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ii.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ii.getNotDroppingDelayTs()&&(ii.debug.log("worker","loop() is dropping = false, is iFrame"),ii.dropping=!1,ii.doDecode(r),ii.decodeNext(r))}else if(ii.isPlayback||ii.isPlayUseMSE()||0===ii._opt.videoBuffer)for(;i.length;)r=i.shift(),ii.doDecode(r);else if(r=i[0],-1===ii.getDelay(r.ts,r.type))ii.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ii.doDecode(r),ii.decodeNext(r);else if(ii.delay>t&&e)ii.hasIframeInBufferList()?(ii.debug.log("worker",`delay is ${ii.delay} > maxDelay ${t}, set dropping is true`),ii.resetAllDelay(),ii.dropping=!0,postMessage({cmd:H})):(i.shift(),ii.doDecode(r),ii.decodeNext(r));else for(;i.length;){if(r=i[0],!(ii.getDelay(r.ts,r.type)>ii._opt.videoBuffer)){ii.delay<0&&ii.debug.warn("worker",`loop() do not decode and delay is ${ii.delay}, bufferList is ${i.length}`);break}i.shift(),ii.doDecode(r)}}else-1!==ii.delay&&ii.debug.log("worker","loop() bufferList is empty and reset delay"),ii.resetAllDelay()};ii.stopId=setInterval((()=>{let e=(new Date).getTime();we||(we=e);const t=e-we;t>100&&ii.debug.warn("worker",`loop demux diff time is ${t}`),r(),we=(new Date).getTime()}),20)}if(vr(ii._opt.checkFirstIFrame)&&(U=!0),ii.isPlayUseMSEAndDecoderInWorker()&&jr){const e=jr.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ii.doDecode(e))};e();const t=Math.ceil(1e3/(ii.streamFps*ii._opt.playbackRate));ii.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ii.streamFps}, streamAudioFps is ${ii.streamAudioFps} ,streamVideoFps is ${ii.streamVideoFps} playbackRate is ${ii._opt.playbackRate}`),ii.stopId=setInterval(e,t)},close:function(){if(ii.debug.log("worker","close"),ii.isDestroyed=!0,Er(),!o||1!==o.readyState&&2!==o.readyState?o&&ii.debug.log("worker",`close() and socket.readyState is ${o.readyState}`):(nr=!0,o.close(1e3,"Client disconnecting")),o=null,ii.stopStreamRateAndStatsInterval(),ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null),ii.mp3Demuxer&&(ii.mp3Demuxer.destroy(),ii.mp3Demuxer=null),ii.writableStream&&vr(ii.writableStream.locked)&&ii.writableStream.close().catch((e=>{ii.debug.log("worker","close() and writableStream.close() error",e)})),ii.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){ii.debug.warn("worker","close() and audioDecoder.clear error",e)}if(si)try{si.clear&&si.clear(),si=null}catch(e){ii.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,we=null,be=!1,s&&(s.reset&&s.reset(),s=null),jr&&(jr.destroy(),jr=null),ii.firstTimestamp=null,ii.startTimestamp=null,ii.networkDelay=0,ii.streamFps=null,ii.streamAudioFps=null,ii.streamVideoFps=null,ii.delay=-1,ii.pushLatestDelay=-1,ii.preDelayTimestamp=null,ii.dropping=!1,ii.isPushDropping=!1,ii.isPlayer=!0,ii.isPlayback=!1,ii.isWorkerFetch=!1,ii._opt=Sr(),ii.webglObj&&(ii.webglObj.destroy(),ii.offscreenCanvas.removeEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost),ii.offscreenCanvas.removeEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored),ii.offscreenCanvas=null,ii.offscreenCanvasGL=null,ii.offscreenCanvasCtx=null),i=[],n=[],c&&(c.buffer=null,c=null),h=null,f=null,S=!1,E=!1,U=!1,Ot=!1,$t=!1,Gt=!1,Ht=null,Yt=null,at=[],mt=0,_t=0,Ve=null,Xe=null,Et=null,At=null,Jt=null,Ut=0,Nt=0,ft=null,pt=null,ii.fetchStatus=kt,wr=!0,Ar.destroy(),Tr.destroy(),$r.destroy(),Gr.destroy(),postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===se&&jt(e)){if(ii.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ii.decodeAudio(e,t.ts)}else if(t.type===ae&&t.isIFrame&&gr(e)){if(ii.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ii.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ii._opt.isRecording)if(ii._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ii._opt.recordType===w)if(t.type===ae){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===se&&ii._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:F,buffer:i,ts:t.ts},[i.buffer])}if(ii.isPlayer&&Ut>0&&At>0&&t.type===ae){const e=t.ts-At,r=Ut+Ut/2;e>r&&ii.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${At},\n diff is ${e} and preTimestampDuration is ${Ut} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(ii.isPlayer&&At>0&&t.type===ae&&t.tsA&&(ii.debug.warn("worker",`pushBuffer,\n preTimestamp is ${At}, options.ts is ${t.ts},\n diff is ${At-t.ts} more than 3600000,\n and resetAllDelay`),ii.resetAllDelay(),At=null,Ut=0),ii.isPlayer&&At>0&&t.ts<=At&&t.type===ae&&(ii.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${At} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),ii._opt.isDropSameTimestampGop&&vr(t.isIFrame)&&U)){const e=ii.hasIframeInBufferList(),t=vr(ii.isPushDropping);return ii.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ii.dropBuffer$2():(ii.clearBuffer(!0),yr(ii._opt.checkFirstIFrame)&&yr(r)&&(ii.isPlayUseMSEAndDecoderInWorker()?jr.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}if(ii.isPlayer&&U){const e=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=ii.getDelayNotUpdateDelay(t.ts,t.type);ii.pushLatestDelay=r,r>e&&ii.delay0&&ii.hasIframeInBufferList()&&!1===ii.isPushDropping&&(ii.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${ii.delay} and has iIframe and next decoder.dropBuffer$2()`),ii.dropBuffer$2())}if(ii.isPlayer&&t.type===ae&&(At>0&&(Ut=t.ts-At),Nt=e.byteLength,At=t.ts),t.type===se?i.push({ts:t.ts,payload:e,decoder:{decode:ii.decodeAudio},type:se,isIFrame:!1}):t.type===ae&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:ii.decodeVideo},type:ae,isIFrame:t.isIFrame}),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&(dr(ii.streamVideoFps)||dr(ii.streamAudioFps))){let e=ii.streamVideoFps,t=ii.streamAudioFps;if(dr(ii.streamVideoFps)&&(e=pr(i,ae),e&&(ii.streamVideoFps=e,postMessage({cmd:V,value:ii.streamVideoFps}),ii.streamFps=t?e+t:e,vr(ii._opt.hasAudio)&&(ii.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),ii.streamAudioFps=0),ii.playbackCacheLoop())),dr(ii.streamAudioFps)&&(t=pr(i,se),t&&(ii.streamAudioFps=t,ii.streamFps=e?e+t:t,ii.playbackCacheLoop())),dr(ii.streamVideoFps)&&dr(ii.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));ii.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ii.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ii.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ii.streamVideoFps=25,postMessage({cmd:V,value:ii.streamVideoFps}),r?(ii.streamAudioFps=25,ii.streamFps=ii.streamVideoFps+ii.streamAudioFps):ii.streamFps=ii.streamVideoFps,ii.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===ae&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===ae&&e.isIFrame)),isAllIframeInBufferList(){const e=ii.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===ae&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ii._opt.videoBuffer+ii._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===se&&(e+=1)})),e},getStreamBufferLength(){let e=0;return c&&c.buffer&&(e=c.buffer.byteLength),ii._opt.isNakedFlow?Ar.lastBuf&&(e=Ar.lastBuf.byteLength):ii._opt.isTs?Gr._remainingPacketData&&(e=Gr._remainingPacketData.byteLength):ii._opt.isFmp4&&Tr.mp4Box&&(e=Tr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){ii.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ii.isWorkerFetch=!0,t.isFlv?ii._opt.isFlv=!0:t.isFmp4?ii._opt.isFmp4=!0:t.isMpeg4?ii._opt.isMpeg4=!0:t.isNakedFlow?ii._opt.isNakedFlow=!0:t.isTs&&(ii._opt.isTs=!0),d=sr((e=>{postMessage({cmd:$,type:Ee,value:e})})),ii.startStreamRateAndStatsInterval(),t.isFmp4&&(Tr.listenMp4Box(),ii._opt.isFmp4Private&&Tr.initTransportDescarmber()),t.protocol===_?(c=new Br(ii.demuxFlv()),fetch(e,{signal:a.signal}).then((e=>{if(yr(nr))return ii.debug.log("worker","request abort and run res.body.cancel()"),ii.fetchStatus=kt,void e.body.cancel();if(!mr(e))return ii.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Er(),void postMessage({cmd:$,type:De.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:$,type:Ue}),hr())ii.writableStream=new WritableStream({write:e=>a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof e?(ii.fetchStatus=Ct,d(e.byteLength),t.isFlv?c.write(e):t.isFmp4?ii.demuxFmp4(e):t.isMpeg4?ii.demuxMpeg4(e):t.isTs&&ii.demuxTs(e)):ii.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ii.debug.log("worker","writableStream close()"),ii.fetchStatus=Dt,c=null,Er(),postMessage({cmd:$,type:Se,value:g,msg:"fetch done"})},abort:e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);c=null,e.name!==Bt?(ii.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Er(),postMessage({cmd:$,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ii.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ii.debug.log("worker","fetchNext().then() and done is true"),ii.fetchStatus=Dt,c=null,Er(),void postMessage({cmd:$,type:Se,value:g,msg:"fetch done"})):a&&a.signal&&a.signal.aborted?(ii.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof n?(ii.fetchStatus=Ct,d(n.byteLength),t.isFlv?c.write(n):t.isFmp4?ii.demuxFmp4(n):t.isMpeg4&&ii.demuxMpeg4(n),i()):ii.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(a&&a.signal&&a.signal.aborted)return ii.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);c=null,e.name!==Bt?(ii.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:$,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{a&&a.signal&&a.signal.aborted?ii.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ii.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:$,type:De.fetchError,value:e.toString()}),c=null):ii.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))):t.protocol===m&&(t.isFlv&&(c=new Br(ii.demuxFlv())),o=new WebSocket(e),o.binaryType="arraybuffer",o.onopen=()=>{ii.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:$,type:Ue}),postMessage({cmd:$,type:Ce})},o.onclose=e=>{u?ii.debug.log("worker","fetchStream, WebsocketStream socket close and isSocketError is true , so return"):(ii.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ii.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),yr(nr)?ii.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(c=null,postMessage({cmd:$,type:Se,value:y,msg:e.code})))},o.onerror=e=>{ii.debug.error("worker","fetchStream, WebsocketStream socket error",e),u=!0,c=null,postMessage({cmd:$,type:De.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},o.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?c.write(e.data):t.isFmp4?ii.demuxFmp4(e.data):t.isMpeg4?ii.demuxMpeg4(e.data):ii._opt.isNakedFlow?ii.demuxNakedFlow(e.data):ii.demuxM7s(e.data)):ii.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let s=r[0];const a=(yield n).slice();switch(i){case oe:if(a.byteLength>0){let e=a;yr(ii._opt.m7sCryptoAudio)&&(e=ii.cryptoPayloadAudio(a)),ii.decode(e,{type:se,ts:s})}else ii.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${a.byteLength} and return`);break;case de:if(a.byteLength>=6){const e=a[0];if(ii._isEnhancedH265Header(e))ii._decodeEnhancedH265Video(a,s);else{a[0];let e=a[0]>>4===Tt;if(e&&gr(a)&&null===Ht){const e=15&a[0];Ht=e===Fe,Yt=tr(a,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`)}e&&ii.calcIframeIntervalTimestamp(s),ii.isPlayer&&ii.calcNetworkDelay(s),r[0]=a[4],r[1]=a[3],r[2]=a[2],r[3]=0;let t=r[0],i=ii.cryptoPayload(a,e);ii.decode(i,{type:ae,ts:s,isIFrame:e,cts:t})}}else ii.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${a.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:a},[a.buffer]);break;default:ii.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===se?ii._opt.hasAudio&&(postMessage({cmd:$,type:Ae,value:e.byteLength}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()||(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===ae&&ii._opt.hasVideo&&(postMessage({cmd:$,type:Be,value:e.byteLength}),postMessage({cmd:$,type:xe,value:t.ts}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ii._opt.isM7sCrypto?ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=zi(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`):ii._opt.isSm4Crypto?ii._opt.sm4CryptoKey&&t?r=an(e,ii._opt.sm4CryptoKey):ii._opt.sm4CryptoKey||ii.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ii._opt.isXorCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=hn(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isXorCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ii._opt.isM7sCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?e[0]>>4===ze&&(t=Ni(e,ii._opt.cryptoKey,ii._opt.cryptoIV)):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Jt=r===ze?i?16:8:0===i?8:16,ni&&ni.setCodec)if(jt(e)||r===Ne||r===Oe||r===$e){ii.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===ze?e.slice(2):new Uint8Array(0);ni.setCodec(r,ii._opt.sampleRate,i),r===ze&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==ze&&(r===$e?(ii.mp3Demuxer||(ii.mp3Demuxer=new ln(ii),ii.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),ii.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t))}else ii.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ii.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ii.isDestroyed)ii.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())jr.decodeAudio(e,t);else if(yr(r)&&yr(ii._opt.mseDecodeAudio))postMessage({cmd:O,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ii.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===$e?ii.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===ze?e.slice(2):e.slice(1),t)}else ii.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(si&&si.setCodec)if(gr(e))if(t===Ie||t===Fe){ii.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===Ie&&ii._opt.useSIMD){const e=kr(r);if(e.codecWidth>B||e.codecHeight>B)return postMessage({cmd:q}),void ii.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,si.setCodec(t,r),postMessage({cmd:R,code:t}),postMessage({cmd:M,buffer:i,codecId:t},[i.buffer])}else ii.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else ii.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else ii.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ii.isDestroyed)ii.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorker())jr.decodeVideo(e,t,i,n);else if(yr(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ii.delay},[e.buffer]);else if(S)if(!U&&i&&(U=!0),U){if(i&&gr(e)){const t=15&e[0];let r={};t===Ie?r=kr(e.slice(5)):t===Fe&&(r=Vr(e)),r.codecWidth&&r.codecHeight&&h&&f&&(r.codecWidth!==h||r.codecHeight!==f)&&(ii.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${h}, old height is ${f},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),$t=!0,postMessage({cmd:W}))}if($t)return void ii.debug.warn("worker","decodeVideo: video width or height is changed, and return");if(Gt)return void ii.debug.warn("worker","decodeVideo: simd decode error, and return");if(gr(e))return void ii.debug.warn("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ii.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ii.isPlayer&&(ii.resetAllDelay(),yr(ii._opt.checkFirstIFrame)&&(ii.dropping=!0,postMessage({cmd:H}))),yr(ii._opt.checkFirstIFrame)&&vr(r)&&(U=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>yr(e.isIFrame)&&e.type===ae));if(ii.isAllIframeInBufferList())for(let t=0;t=ii.getNotDroppingDelayTs()){ii.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ii.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ii.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ii.resetAllDelay(),ii.getDelay(r.ts,r.type),ii.doDecode(r),ii.isPushDropping=!1,ii.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ii.delay} `)}else ii.isPushDropping=!1}0===i.length&&(ii.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),s=new Uint32Array(n);switch(i){case se:ii.decode(new Uint8Array(e,5),{type:se,ts:r});break;case ae:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ii._isEnhancedH265Header(n))ii._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ii.calcIframeIntervalTimestamp(r),gr(i)&&null===Ht)){const e=15&i[0];Ht=e===Fe}ii.isPlayer&&ii.calcNetworkDelay(r),s[0]=i[4],s[1]=i[3],s[2]=i[2],s[3]=0;let n=s[0],a=ii.cryptoPayload(i,e);ii.decode(a,{type:ae,ts:r,isIFrame:e,cts:n})}}else ii.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Ar.dispatch(e)},demuxFmp4:function(e){Tr.dispatch(e)},demuxMpeg4:function(e){$r.dispatch(e)},demuxTs:function(e){Gr.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,s=e.slice(1,5),a=new ArrayBuffer(4),o=new Uint32Array(a),d="a"==String.fromCharCode(s[0]);if(Ht=vr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Yt=tr(e,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`),ii.decode(i,{type:ae,ts:t,isIFrame:!0,cts:0})}}}else if(n===Rt){let r=e,n=0;const s=i===zt;s&&ii.calcIframeIntervalTimestamp(t),d||(o[0]=e[4],o[1]=e[3],o[2]=e[2],o[3]=0,n=o[0],r=Kr(e.slice(8),s),r=ii.cryptoPayload(r,s),ii.decode(r,{type:ae,ts:t,isIFrame:s,cts:n}))}else if(n===Mt){const r=i===zt;r&&ii.calcIframeIntervalTimestamp(t);let n=Kr(e.slice(5),r);n=ii.cryptoPayload(n,r),ii.decode(n,{type:ae,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&Ft)===Ft},findSei:function(e,t){let r=4;lr(Yt)&&(r=Yt),Qt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===dt||r===ot)||vr(Ht)&&r===qe)&&postMessage({cmd:X,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(U&&e>0))return;null===Ve?(Ve=e,Xe=rr()):et?r-t:0;ii.networkDelay=i,i>ii._opt.networkDelay&&ii._opt.playType===v&&(ii.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Ve} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:$,type:ke,value:i}))},calcIframeIntervalTimestamp:function(e){null===Et?Et=e:Et=ii._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return ii.isPlayer&&ii._opt.useMSE&&yr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ii.isPlayUseMSE()&&ii._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ii.isPlayUseMSEAndDecoderInWorker()&&ii._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ii.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ii.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,ii.webglObj.destroy(),ii.webglObj=null,ii.offscreenCanvasGL=null,setTimeout((()=>{ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.offscreenCanvasGL&&ii.offscreenCanvasGL.getContextAttributes().stencil?(ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),Ot=!1):ii.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ii.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:R,code:e}),postMessage({cmd:k,w:t,h:r}),h=t,f=r,ii.useOffscreen()&&(ii.offscreenCanvas=new OffscreenCanvas(t,r),ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),ii.offscreenCanvas.addEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost,!1),ii.offscreenCanvas.addEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:I,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Jt}),_t=r},yuvData:function(t,r){if(ii.isDestroyed)return void ii.debug.log("worker","yuvData, decoder is destroyed and return");const i=h*f*3/2;let n=e.HEAPU8.subarray(t,t+i),s=new Uint8Array(n);if(ft=null,ii.useOffscreen())try{if(Ot)return;ii.webglObj.renderYUV(h,f,s);let e=ii.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ii.delay,ts:r},[e])}catch(e){ii.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:s,delay:ii.delay,ts:r},[s.buffer])},pcmData:function(e,r,i){if(ii.isDestroyed)return void ii.debug.log("worker","pcmData, decoder is destroyed and return");let s=r,a=[],o=0,d=ii._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;a[r]=t.HEAPF32.subarray(i,i+s)}if(mt){if(!(s>=(r=d-mt)))return mt+=s,n[0]=Float32Array.of(...n[0],...a[0]),void(2==_t&&(n[1]=Float32Array.of(...n[1],...a[1])));at[0]=Float32Array.of(...n[0],...a[0].subarray(0,r)),2==_t&&(at[1]=Float32Array.of(...n[1],...a[1].subarray(0,r))),postMessage({cmd:D,buffer:at,ts:i},at.map((e=>e.buffer))),o=r,s-=r}for(mt=s;mt>=d;mt-=d)at[0]=a[0].slice(o,o+=d),2==_t&&(at[1]=a[1].slice(o-d,o)),postMessage({cmd:D,buffer:at,ts:i},at.map((e=>e.buffer)));mt&&(n[0]=a[0].slice(o),2==_t&&(n[1]=a[1].slice(o))),a=[]},errorInfo:function(e){null===ft&&(ft=rr());const t=rr(),r=ir(pt>0?2*pt:5e3,1e3,5e3),i=t-ft;i>r&&(ii.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${pt} and diff is ${i} and maxDiff is ${r}\n and replay`),Gt=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){o?o.readyState===Pe?o.send(e):ii.debug.error("worker","socket is not open"):ii.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])}};ii.debug=new xr(ii);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(ii));let si=null;e.VideoDecoder&&(si=new e.VideoDecoder(ii)),postMessage({cmd:T}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ce:try{ii._opt=Object.assign(ii._opt,JSON.parse(t.opt))}catch(e){}ii.init();break;case ue:ii.pushBuffer(t.buffer,t.options);break;case he:ii.decodeAudio(t.buffer,t.ts);break;case fe:ii.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ii.clearBuffer(t.needClear);break;case ge:ii.fetchStream(t.url,JSON.parse(t.opt));break;case pe:ii.debug.log("worker","close",JSON.stringify(t.options)),t.options&&vr(t.options.isVideoInited)&&(wr=t.options.isVideoInited),ii.close();break;case me:ii.debug.log("worker","updateConfig",t.key,t.value),ii._opt[t.key]=t.value,"playbackRate"===t.key&&(ii.playbackUpdatePlaybackRate(),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&ii.playbackCacheLoop());break;case ye:ii.sendWebsocketMessage(t.message);break;case ve:jr.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/public/js/jessibuca-pro/decoder-pro-simd.wasm b/public/js/jessibuca-pro/decoder-pro-simd.wasm new file mode 100644 index 0000000..4e43c94 Binary files /dev/null and b/public/js/jessibuca-pro/decoder-pro-simd.wasm differ diff --git a/public/js/jessibuca-pro/decoder-pro.js b/public/js/jessibuca-pro/decoder-pro.js new file mode 100644 index 0000000..e18dd55 --- /dev/null +++ b/public/js/jessibuca-pro/decoder-pro.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).crypto$1)}(this,(function(e){"use strict";function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),o=(r="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href,function(e){var t,i;(e=void 0!==(e=e||{})?e:{}).ready=new Promise((function(e,r){t=e,i=r})),(e=void 0!==e?e:{}).locateFile=function(e){return"decoder-pro.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_WASM_URL&&""!=JESSIBUCA_PRO_WASM_URL?JESSIBUCA_PRO_WASM_URL:e};var n,o,s,a,d,l,u=Object.assign({},e),c="./this.program",f="object"==typeof window,h="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=h?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(a=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),a.readFileSync(e,t?void 0:"utf8")},s=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=(e,t,r)=>{l(),e=d.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof J))throw e})),process.on("unhandledRejection",(function(e){throw e})),e.inspect=function(){return"[Emscripten Module object]"}):(f||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),r&&(m=r),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _,g,y=e.print||console.log.bind(console),v=e.printErr||console.warn.bind(console);Object.assign(e,u),u=null,e.arguments&&e.arguments,e.thisProgram&&(c=e.thisProgram),e.quit&&e.quit,e.wasmBinary&&(_=e.wasmBinary),e.noExitRuntime,"object"!=typeof WebAssembly&&Y("no native wasm support detected");var b=!1;function w(e,t){e||Y(t)}var S,E,A,B,x,U,k,T,C,D,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&P)return P.decode(e.subarray(t,n));for(var o="";t>10,56320|1023&l)}}else o+=String.fromCharCode((31&s)<<6|a)}else o+=String.fromCharCode(s)}return o}function I(e,t){return e?F(A,e,t):""}function L(e,t,r,i){if(!(i>0))return 0;for(var n=r,o=r+i-1,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),a<=127){if(r>=o)break;t[r++]=a}else if(a<=2047){if(r+1>=o)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=o)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=o)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}e.INITIAL_MEMORY;var R,z,N,O,G=[],$=[],H=[],V=0,W=null;function j(t){V++,e.monitorRunDependencies&&e.monitorRunDependencies(V)}function q(t){if(V--,e.monitorRunDependencies&&e.monitorRunDependencies(V),0==V&&W){var r=W;W=null,r()}}function Y(t){e.onAbort&&e.onAbort(t),v(t="Aborted("+t+")"),b=!0,t+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(t);throw i(r),r}function K(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){return e.startsWith("file://")}function Z(e){try{if(e==R&&_)return new Uint8Array(_);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){Y(e)}}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Q(t){for(;t.length>0;)t.shift()(e)}function ee(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){k[this.ptr+4>>2]=e},this.get_type=function(){return k[this.ptr+4>>2]},this.set_destructor=function(e){k[this.ptr+8>>2]=e},this.get_destructor=function(){return k[this.ptr+8>>2]},this.set_refcount=function(e){U[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,E[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=E[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,E[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=E[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=U[this.ptr>>2];U[this.ptr>>2]=e+1},this.release_ref=function(){var e=U[this.ptr>>2];return U[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){k[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return k[this.ptr+16>>2]},this.get_exception_ptr=function(){if(jt(this.get_type()))return k[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}e.locateFile?K(R="decoder-pro.wasm")||(z=R,R=e.locateFile?e.locateFile(z,m):m+z):R=new URL("decoder-pro.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href).toString();var te={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=te.isAbs(e),r="/"===e.substr(-1);return(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=te.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return te.normalize(e.join("/"))},join2:(e,t)=>te.normalize(e+"/"+t)},re={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ae.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=te.isAbs(i)}return(t?"/":"")+(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=re.resolve(e).substr(1),t=re.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),o=Math.min(i.length,n.length),s=o,a=0;a0?r:M(e)+1,n=new Array(i),o=L(e,n,0,n.length);return t&&(n.length=o),n}var ne={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ne.ttys[e]={input:[],output:[],ops:t},ae.registerDevice(e,ne.stream_ops)},stream_ops:{open:function(e){var t=ne.ttys[e.node.rdev];if(!t)throw new ae.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ae.ErrnoError(60);for(var o=0,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ie(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(y(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(y(F(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(v(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(v(F(e.output,0)),e.output=[])}}};function oe(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Wt(65536,e);return t?(function(e,t){A.fill(0,e,e+t)}(t,e),t):0}var se={ops_table:null,mount:function(e){return se.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ae.isBlkdev(r)||ae.isFIFO(r))throw new ae.ErrnoError(63);se.ops_table||(se.ops_table={dir:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,lookup:se.node_ops.lookup,mknod:se.node_ops.mknod,rename:se.node_ops.rename,unlink:se.node_ops.unlink,rmdir:se.node_ops.rmdir,readdir:se.node_ops.readdir,symlink:se.node_ops.symlink},stream:{llseek:se.stream_ops.llseek}},file:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:{llseek:se.stream_ops.llseek,read:se.stream_ops.read,write:se.stream_ops.write,allocate:se.stream_ops.allocate,mmap:se.stream_ops.mmap,msync:se.stream_ops.msync}},link:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,readlink:se.node_ops.readlink},stream:{}},chrdev:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:ae.chrdev_stream_ops}});var n=ae.createNode(e,t,r,i);return ae.isDir(n.mode)?(n.node_ops=se.ops_table.dir.node,n.stream_ops=se.ops_table.dir.stream,n.contents={}):ae.isFile(n.mode)?(n.node_ops=se.ops_table.file.node,n.stream_ops=se.ops_table.file.stream,n.usedBytes=0,n.contents=null):ae.isLink(n.mode)?(n.node_ops=se.ops_table.link.node,n.stream_ops=se.ops_table.link.stream):ae.isChrdev(n.mode)&&(n.node_ops=se.ops_table.chrdev.node,n.stream_ops=se.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=ae.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ae.isDir(e.mode)?t.size=4096:ae.isFile(e.mode)?t.size=e.usedBytes:ae.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&se.resizeFileStorage(e,t.size)},lookup:function(e,t){throw ae.genericErrors[44]},mknod:function(e,t,r,i){return se.createNode(e,t,r,i)},rename:function(e,t,r){if(ae.isDir(e.mode)){var i;try{i=ae.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ae.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=ae.lookupNode(e,t);for(var i in r.contents)throw new ae.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=se.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!ae.isLink(e.mode))throw new ae.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var o=e.node.contents;if(n>=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-n,i);if(s>8&&o.subarray)t.set(o.subarray(n,n+s),r);else for(var a=0;a0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=re.resolve(ae.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new ae.ErrnoError(32);for(var i=te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=ae.root,o="/",s=0;s40)throw new ae.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var t;;){if(ae.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%ae.nameTable.length},hashAddNode:e=>{var t=ae.hashName(e.parent.id,e.name);e.name_next=ae.nameTable[t],ae.nameTable[t]=e},hashRemoveNode:e=>{var t=ae.hashName(e.parent.id,e.name);if(ae.nameTable[t]===e)ae.nameTable[t]=e.name_next;else for(var r=ae.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=ae.mayLookup(e);if(r)throw new ae.ErrnoError(r,e);for(var i=ae.hashName(e.id,t),n=ae.nameTable[i];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===t)return n}return ae.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new ae.FSNode(e,t,r,i);return ae.hashAddNode(n),n},destroyNode:e=>{ae.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=ae.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ae.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=ae.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{return ae.lookupNode(e,t),20}catch(e){}return ae.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=ae.lookupNode(e,t)}catch(e){return e.errno}var n=ae.nodePermissions(e,"wx");if(n)return n;if(r){if(!ae.isDir(i.mode))return 54;if(ae.isRoot(i)||ae.getPath(i)===ae.cwd())return 10}else if(ae.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ae.isLink(e.mode)?32:ae.isDir(e.mode)&&("r"!==ae.flagsToPermissionString(t)||512&t)?31:ae.nodePermissions(e,ae.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ae.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!ae.streams[r])return r;throw new ae.ErrnoError(33)},getStream:e=>ae.streams[e],createStream:(e,t,r)=>{ae.FSStream||(ae.FSStream=function(){this.shared={}},ae.FSStream.prototype={},Object.defineProperties(ae.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new ae.FSStream,e);var i=ae.nextfd(t,r);return e.fd=i,ae.streams[i]=e,e},closeStream:e=>{ae.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=ae.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new ae.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{ae.devices[e]={stream_ops:t}},getDevice:e=>ae.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),ae.syncFSRequests++,ae.syncFSRequests>1&&v("warning: "+ae.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ae.getMounts(ae.root.mount),i=0;function n(e){return ae.syncFSRequests--,t(e)}function o(e){if(e)return o.errored?void 0:(o.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return o(null);t.type.syncfs(t,e,o)}))},mount:(e,t,r)=>{var i,n="/"===r,o=!r;if(n&&ae.root)throw new ae.ErrnoError(10);if(!n&&!o){var s=ae.lookupPath(r,{follow_mount:!1});if(r=s.path,i=s.node,ae.isMountpoint(i))throw new ae.ErrnoError(10);if(!ae.isDir(i.mode))throw new ae.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?ae.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=ae.lookupPath(e,{follow_mount:!1});if(!ae.isMountpoint(t.node))throw new ae.ErrnoError(28);var r=t.node,i=r.mounted,n=ae.getMounts(i);Object.keys(ae.nameTable).forEach((e=>{for(var t=ae.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ae.destroyNode(t),t=r}})),r.mounted=null;var o=r.mount.mounts.indexOf(i);r.mount.mounts.splice(o,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=ae.lookupPath(e,{parent:!0}).node,n=te.basename(e);if(!n||"."===n||".."===n)throw new ae.ErrnoError(28);var o=ae.mayCreate(i,n);if(o)throw new ae.ErrnoError(o);if(!i.node_ops.mknod)throw new ae.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ae.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ae.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ae.mknod(e,t,r)),symlink:(e,t)=>{if(!re.resolve(e))throw new ae.ErrnoError(44);var r=ae.lookupPath(t,{parent:!0}).node;if(!r)throw new ae.ErrnoError(44);var i=te.basename(t),n=ae.mayCreate(r,i);if(n)throw new ae.ErrnoError(n);if(!r.node_ops.symlink)throw new ae.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=te.dirname(e),o=te.dirname(t),s=te.basename(e),a=te.basename(t);if(r=ae.lookupPath(e,{parent:!0}).node,i=ae.lookupPath(t,{parent:!0}).node,!r||!i)throw new ae.ErrnoError(44);if(r.mount!==i.mount)throw new ae.ErrnoError(75);var d,l=ae.lookupNode(r,s),u=re.relative(e,o);if("."!==u.charAt(0))throw new ae.ErrnoError(28);if("."!==(u=re.relative(t,n)).charAt(0))throw new ae.ErrnoError(55);try{d=ae.lookupNode(i,a)}catch(e){}if(l!==d){var c=ae.isDir(l.mode),f=ae.mayDelete(r,s,c);if(f)throw new ae.ErrnoError(f);if(f=d?ae.mayDelete(i,a,c):ae.mayCreate(i,a))throw new ae.ErrnoError(f);if(!r.node_ops.rename)throw new ae.ErrnoError(63);if(ae.isMountpoint(l)||d&&ae.isMountpoint(d))throw new ae.ErrnoError(10);if(i!==r&&(f=ae.nodePermissions(r,"w")))throw new ae.ErrnoError(f);ae.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{ae.hashAddNode(l)}}},rmdir:e=>{var t=ae.lookupPath(e,{parent:!0}).node,r=te.basename(e),i=ae.lookupNode(t,r),n=ae.mayDelete(t,r,!0);if(n)throw new ae.ErrnoError(n);if(!t.node_ops.rmdir)throw new ae.ErrnoError(63);if(ae.isMountpoint(i))throw new ae.ErrnoError(10);t.node_ops.rmdir(t,r),ae.destroyNode(i)},readdir:e=>{var t=ae.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ae.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=ae.lookupPath(e,{parent:!0}).node;if(!t)throw new ae.ErrnoError(44);var r=te.basename(e),i=ae.lookupNode(t,r),n=ae.mayDelete(t,r,!1);if(n)throw new ae.ErrnoError(n);if(!t.node_ops.unlink)throw new ae.ErrnoError(63);if(ae.isMountpoint(i))throw new ae.ErrnoError(10);t.node_ops.unlink(t,r),ae.destroyNode(i)},readlink:e=>{var t=ae.lookupPath(e).node;if(!t)throw new ae.ErrnoError(44);if(!t.node_ops.readlink)throw new ae.ErrnoError(28);return re.resolve(ae.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=ae.lookupPath(e,{follow:!t}).node;if(!r)throw new ae.ErrnoError(44);if(!r.node_ops.getattr)throw new ae.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ae.stat(e,!0),chmod:(e,t,r)=>{var i;if(!(i="string"==typeof e?ae.lookupPath(e,{follow:!r}).node:e).node_ops.setattr)throw new ae.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{ae.chmod(e,t,!0)},fchmod:(e,t)=>{var r=ae.getStream(e);if(!r)throw new ae.ErrnoError(8);ae.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;if(!(n="string"==typeof e?ae.lookupPath(e,{follow:!i}).node:e).node_ops.setattr)throw new ae.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{ae.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=ae.getStream(e);if(!i)throw new ae.ErrnoError(8);ae.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new ae.ErrnoError(28);var r;if(!(r="string"==typeof e?ae.lookupPath(e,{follow:!0}).node:e).node_ops.setattr)throw new ae.ErrnoError(63);if(ae.isDir(r.mode))throw new ae.ErrnoError(31);if(!ae.isFile(r.mode))throw new ae.ErrnoError(28);var i=ae.nodePermissions(r,"w");if(i)throw new ae.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=ae.getStream(e);if(!r)throw new ae.ErrnoError(8);if(0==(2097155&r.flags))throw new ae.ErrnoError(28);ae.truncate(r.node,t)},utime:(e,t,r)=>{var i=ae.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(t,r,i)=>{if(""===t)throw new ae.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?ae.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof t)n=t;else{t=te.normalize(t);try{n=ae.lookupPath(t,{follow:!(131072&r)}).node}catch(e){}}var o=!1;if(64&r)if(n){if(128&r)throw new ae.ErrnoError(20)}else n=ae.mknod(t,i,0),o=!0;if(!n)throw new ae.ErrnoError(44);if(ae.isChrdev(n.mode)&&(r&=-513),65536&r&&!ae.isDir(n.mode))throw new ae.ErrnoError(54);if(!o){var s=ae.mayOpen(n,r);if(s)throw new ae.ErrnoError(s)}512&r&&!o&&ae.truncate(n,0),r&=-131713;var a=ae.createStream({node:n,path:ae.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!e.logReadFiles||1&r||(ae.readFiles||(ae.readFiles={}),t in ae.readFiles||(ae.readFiles[t]=1)),a},close:e=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ae.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ae.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ae.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(1==(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.read)throw new ae.ErrnoError(28);var o=void 0!==n;if(o){if(!e.seekable)throw new ae.ErrnoError(70)}else n=e.position;var s=e.stream_ops.read(e,t,r,i,n);return o||(e.position+=s),s},write:(e,t,r,i,n,o)=>{if(i<0||n<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(0==(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.write)throw new ae.ErrnoError(28);e.seekable&&1024&e.flags&&ae.llseek(e,0,2);var s=void 0!==n;if(s){if(!e.seekable)throw new ae.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,o);return s||(e.position+=a),a},allocate:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(t<0||r<=0)throw new ae.ErrnoError(28);if(0==(2097155&e.flags))throw new ae.ErrnoError(8);if(!ae.isFile(e.node.mode)&&!ae.isDir(e.node.mode))throw new ae.ErrnoError(43);if(!e.stream_ops.allocate)throw new ae.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ae.ErrnoError(2);if(1==(2097155&e.flags))throw new ae.ErrnoError(2);if(!e.stream_ops.mmap)throw new ae.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new ae.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=ae.open(e,t.flags),n=ae.stat(e),o=n.size,s=new Uint8Array(o);return ae.read(i,s,0,o,0),"utf8"===t.encoding?r=F(s,0):"binary"===t.encoding&&(r=s),ae.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ae.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),o=L(t,n,0,n.length);ae.write(i,n,0,o,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ae.write(i,t,0,t.byteLength,void 0,r.canOwn)}ae.close(i)},cwd:()=>ae.currentPath,chdir:e=>{var t=ae.lookupPath(e,{follow:!0});if(null===t.node)throw new ae.ErrnoError(44);if(!ae.isDir(t.node.mode))throw new ae.ErrnoError(54);var r=ae.nodePermissions(t.node,"x");if(r)throw new ae.ErrnoError(r);ae.currentPath=t.path},createDefaultDirectories:()=>{ae.mkdir("/tmp"),ae.mkdir("/home"),ae.mkdir("/home/web_user")},createDefaultDevices:()=>{ae.mkdir("/dev"),ae.registerDevice(ae.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ae.mkdev("/dev/null",ae.makedev(1,3)),ne.register(ae.makedev(5,0),ne.default_tty_ops),ne.register(ae.makedev(6,0),ne.default_tty1_ops),ae.mkdev("/dev/tty",ae.makedev(5,0)),ae.mkdev("/dev/tty1",ae.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>Y("randomDevice")}();ae.createDevice("/dev","random",e),ae.createDevice("/dev","urandom",e),ae.mkdir("/dev/shm"),ae.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ae.mkdir("/proc");var e=ae.mkdir("/proc/self");ae.mkdir("/proc/self/fd"),ae.mount({mount:()=>{var t=ae.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=ae.getStream(r);if(!i)throw new ae.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?ae.createDevice("/dev","stdin",e.stdin):ae.symlink("/dev/tty","/dev/stdin"),e.stdout?ae.createDevice("/dev","stdout",null,e.stdout):ae.symlink("/dev/tty","/dev/stdout"),e.stderr?ae.createDevice("/dev","stderr",null,e.stderr):ae.symlink("/dev/tty1","/dev/stderr"),ae.open("/dev/stdin",0),ae.open("/dev/stdout",1),ae.open("/dev/stderr",1)},ensureErrnoError:()=>{ae.ErrnoError||(ae.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ae.ErrnoError.prototype=new Error,ae.ErrnoError.prototype.constructor=ae.ErrnoError,[44].forEach((e=>{ae.genericErrors[e]=new ae.ErrnoError(e),ae.genericErrors[e].stack=""})))},staticInit:()=>{ae.ensureErrnoError(),ae.nameTable=new Array(4096),ae.mount(se,{},"/"),ae.createDefaultDirectories(),ae.createDefaultDevices(),ae.createSpecialDirectories(),ae.filesystems={MEMFS:se}},init:(t,r,i)=>{ae.init.initialized=!0,ae.ensureErrnoError(),e.stdin=t||e.stdin,e.stdout=r||e.stdout,e.stderr=i||e.stderr,ae.createStandardStreams()},quit:()=>{ae.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=ae.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=ae.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=ae.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=te.basename(e),i=ae.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:ae.getPath(e);for(var n=t.split("/").reverse();n.length;){var o=n.pop();if(o){var s=te.join2(e,o);try{ae.mkdir(s)}catch(e){}e=s}}return s},createFile:(e,t,r,i,n)=>{var o=te.join2("string"==typeof e?e:ae.getPath(e),t),s=ae.getMode(i,n);return ae.create(o,s)},createDataFile:(e,t,r,i,n,o)=>{var s=t;e&&(e="string"==typeof e?e:ae.getPath(e),s=t?te.join2(e,t):e);var a=ae.getMode(i,n),d=ae.create(s,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,c=r.length;u{var n=te.join2("string"==typeof e?e:ae.getPath(e),t),o=ae.getMode(!!r,!!i);ae.createDevice.major||(ae.createDevice.major=64);var s=ae.makedev(ae.createDevice.major++,0);return ae.registerDevice(s,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,o)=>{for(var s=0,a=0;a{for(var s=0;s{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ie(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new ae.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function o(){this.lengthKnown=!1,this.chunks=[]}if(o.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},o.prototype.setDataGetter=function(e){this.getter=e},o.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,o=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,s=1048576;n||(s=i);var a=this;a.setDataGetter((e=>{var t=e*s,n=(e+1)*s-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==s&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ie(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!o&&i||(s=i=1,i=this.getter(0).length,s=i,y("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=s,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new o;Object.defineProperties(s,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:s}}else a={isDevice:!1,url:r};var d=ae.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,n){var o=e.node.contents;if(n>=o.length)return 0;var s=Math.min(o.length-n,i);if(o.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return ae.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ae.forceLoadFile(d),u(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ae.forceLoadFile(d);var o=oe(t);if(!o)throw new ae.ErrnoError(48);return u(e,E,o,t,r),{ptr:o,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,s,a,d,l,u)=>{var c=t?re.resolve(te.join2(e,t)):e;function f(r){function o(r){u&&u(),d||ae.createDataFile(e,t,r,i,n,l),s&&s(),q()}Browser.handledByPreloadPlugin(r,c,o,(()=>{a&&a(),q()}))||o(r)}j(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;o(e,(r=>{w(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&q()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&j()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ae.indexedDB();try{var n=i.open(ae.DB_NAME(),ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{y("creating db"),n.result.createObjectStore(ae.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([ae.DB_STORE_NAME],"readwrite"),o=i.objectStore(ae.DB_STORE_NAME),s=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=o.put(ae.analyzePath(e).object.contents,e);t.onsuccess=()=>{++s+a==d&&l()},t.onerror=()=>{a++,s+a==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ae.indexedDB();try{var n=i.open(ae.DB_NAME(),ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var o=i.transaction([ae.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var s=o.objectStore(ae.DB_STORE_NAME),a=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=s.get(e);t.onsuccess=()=>{ae.analyzePath(e).exists&&ae.unlink(e),ae.createDataFile(te.dirname(e),te.basename(e),t.result,!0,!0,!0),++a+d==l&&u()},t.onerror=()=>{d++,a+d==l&&u()}})),o.onerror=r},n.onerror=r}},de={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(te.isAbs(t))return t;var i;if(-100===e)i=ae.cwd();else{var n=ae.getStream(e);if(!n)throw new ae.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new ae.ErrnoError(44);return i}return te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&te.normalize(t)!==te.normalize(ae.getPath(e.node)))return-54;throw e}return U[r>>2]=i.dev,U[r+4>>2]=0,U[r+8>>2]=i.ino,U[r+12>>2]=i.mode,U[r+16>>2]=i.nlink,U[r+20>>2]=i.uid,U[r+24>>2]=i.gid,U[r+28>>2]=i.rdev,U[r+32>>2]=0,O=[i.size>>>0,(N=i.size,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+40>>2]=O[0],U[r+44>>2]=O[1],U[r+48>>2]=4096,U[r+52>>2]=i.blocks,O=[Math.floor(i.atime.getTime()/1e3)>>>0,(N=Math.floor(i.atime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+56>>2]=O[0],U[r+60>>2]=O[1],U[r+64>>2]=0,O=[Math.floor(i.mtime.getTime()/1e3)>>>0,(N=Math.floor(i.mtime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+72>>2]=O[0],U[r+76>>2]=O[1],U[r+80>>2]=0,O=[Math.floor(i.ctime.getTime()/1e3)>>>0,(N=Math.floor(i.ctime.getTime()/1e3),+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+88>>2]=O[0],U[r+92>>2]=O[1],U[r+96>>2]=0,O=[i.ino>>>0,(N=i.ino,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[r+104>>2]=O[0],U[r+108>>2]=O[1],0},doMsync:function(e,t,r,i,n){var o=A.slice(e,e+r);ae.msync(t,o,n,r,i)},varargs:void 0,get:function(){return de.varargs+=4,U[de.varargs-4>>2]},getStr:function(e){return I(e)},getStreamFromFD:function(e){var t=ae.getStream(e);if(!t)throw new ae.ErrnoError(8);return t}};function le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ue=void 0;function ce(e){for(var t="",r=e;A[r];)t+=ue[A[r++]];return t}var fe={},he={},pe={};function me(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function _e(e,t){return e=me(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function ge(e,t){var r=_e(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ye=void 0;function ve(e){throw new ye(e)}var be=void 0;function we(e){throw new be(e)}function Se(e,t,r){function i(t){var i=r(t);i.length!==e.length&&we("Mismatched type converter count");for(var n=0;n{he.hasOwnProperty(e)?n[t]=he[e]:(o.push(e),fe.hasOwnProperty(e)||(fe[e]=[]),fe[e].push((()=>{n[t]=he[e],++s===o.length&&i(n)})))})),0===o.length&&i(n)}function Ee(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||ve('type "'+i+'" must have a positive integer typeid pointer'),he.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ve("Cannot register type '"+i+"' twice")}if(he[e]=t,delete pe[e],fe.hasOwnProperty(e)){var n=fe[e];delete fe[e],n.forEach((e=>e()))}}function Ae(e){if(!(this instanceof je))return!1;if(!(e instanceof je))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var xe=!1;function Ue(e){}function ke(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Te(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Te(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ce={};function De(){return Object.keys(Re).length}function Pe(){var e=[];for(var t in Re)Re.hasOwnProperty(t)&&e.push(Re[t]);return e}var Fe=[];function Ie(){for(;Fe.length;){var e=Fe.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function Me(e){Le=e,Fe.length&&Le&&Le(Ie)}var Re={};function ze(e,t){return t=function(e,t){for(void 0===t&&ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Re[t]}function Ne(e,t){return t.ptrType&&t.ptr||we("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&we("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ge(Object.create(e,{$$:{value:t}}))}function Oe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ze(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Ne(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ne(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var o,s=this.registeredClass.getActualType(t),a=Ce[s];if(!a)return n.call(this);o=this.isConst?a.constPointerType:a.pointerType;var d=Te(t,this.registeredClass,o.registeredClass);return null===d?n.call(this):this.isSmartPointer?Ne(o.registeredClass.instancePrototype,{ptrType:o,ptr:d,smartPtrType:this,smartPtr:e}):Ne(o.registeredClass.instancePrototype,{ptrType:o,ptr:d})}function Ge(e){return"undefined"==typeof FinalizationRegistry?(Ge=e=>e,e):(xe=new FinalizationRegistry((e=>{ke(e.$$)})),Ge=e=>{var t=e.$$;if(t.smartPtr){var r={$$:t};xe.register(e,r,e)}return e},Ue=e=>xe.unregister(e),Ge(e))}function $e(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Ge(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function He(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ue(this),ke(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function We(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Fe.push(this),1===Fe.length&&Le&&Le(Ie),this.$$.deleteScheduled=!0,this}function je(){}function qe(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Ye(e,t,r,i,n,o,s,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=o,this.upcast=s,this.downcast=a,this.pureVirtualFunctions=[]}function Ke(e,t,r){for(;t!==r;)t.upcast||ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Xe(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:ve("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(U[e>>2])}function et(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function tt(e){this.rawDestructor&&this.rawDestructor(e)}function rt(e){null!==e&&e.delete()}function it(e,t,r,i,n,o,s,a,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var nt=[];function ot(e){var t=nt[e];return t||(e>=nt.length&&(nt.length=e+1),nt[e]=t=D.get(e)),t}function st(t,r,i){return t.includes("j")?function(t,r,i){var n=e["dynCall_"+t];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(t,r,i):ot(r).apply(null,i)}function at(e,t){var r,i,n,o=(e=ce(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),st(r,i,n)}):ot(t);return"function"!=typeof o&&ve("unknown function pointer with signature "+e+": "+t),o}var dt=void 0;function lt(e){var t=Ht(e),r=ce(t);return Ot(t),r}function ut(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||he[t]||(pe[t]?pe[t].forEach(e):(r.push(t),i[t]=!0))})),new dt(e+": "+r.map(lt).join([", "]))}function ct(e,t){for(var r=[],i=0;i>2]);return r}function ft(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ht(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=_e(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function pt(e,t,r,i,n){var o=t.length;o<2&&ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=null!==t[1]&&null!==r,a=!1,d=1;d0?", ":"")+c),f+=(l?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(d=s?1:2;d4&&0==--_t[e].refcount&&(_t[e]=void 0,mt.push(e))}function yt(){for(var e=0,t=5;t<_t.length;++t)void 0!==_t[t]&&++e;return e}function vt(){for(var e=5;e<_t.length;++e)if(void 0!==_t[e])return _t[e];return null}var bt={toValue:e=>(e||ve("Cannot use deleted val. handle = "+e),_t[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=mt.length?mt.pop():_t.length;return _t[t]={refcount:1,value:e},t}}};function wt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function St(e,t){switch(t){case 2:return function(e){return this.fromWireType(T[e>>2])};case 3:return function(e){return this.fromWireType(C[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Et(e,t,r){switch(t){case 0:return r?function(e){return E[e]}:function(e){return A[e]};case 1:return r?function(e){return B[e>>1]}:function(e){return x[e>>1]};case 2:return r?function(e){return U[e>>2]}:function(e){return k[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&At)return At.decode(A.subarray(e,r));for(var o="",s=0;!(s>=t/2);++s){var a=B[e+2*s>>1];if(0==a)break;o+=String.fromCharCode(a)}return o}function xt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,o=0;o>1]=s,t+=2}return B[t>>1]=0,t-i}function Ut(e){return 2*e.length}function kt(e,t){for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var o=n-65536;i+=String.fromCharCode(55296|o>>10,56320|1023&o)}else i+=String.fromCharCode(n)}return i}function Tt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,o=0;o=55296&&s<=57343&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o)),U[t>>2]=s,(t+=4)+4>n)break}return U[t>>2]=0,t-i}function Ct(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Dt={},Pt=[],Ft=[],It={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in It)void 0===It[t]?delete e[t]:e[t]=It[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}var Mt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ae.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Rt=365,zt=146;Object.defineProperties(Mt.prototype,{read:{get:function(){return(this.mode&Rt)===Rt},set:function(e){e?this.mode|=Rt:this.mode&=-366}},write:{get:function(){return(this.mode&zt)===zt},set:function(e){e?this.mode|=zt:this.mode&=-147}},isFolder:{get:function(){return ae.isDir(this.mode)}},isDevice:{get:function(){return ae.isChrdev(this.mode)}}}),ae.FSNode=Mt,ae.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ue=e}(),ye=e.BindingError=ge(Error,"BindingError"),be=e.InternalError=ge(Error,"InternalError"),je.prototype.isAliasOf=Ae,je.prototype.clone=$e,je.prototype.delete=He,je.prototype.isDeleted=Ve,je.prototype.deleteLater=We,e.getInheritedInstanceCount=De,e.getLiveInheritedInstances=Pe,e.flushPendingDeletes=Ie,e.setDelayFunction=Me,it.prototype.getPointee=et,it.prototype.destructor=tt,it.prototype.argPackAdvance=8,it.prototype.readValueFromPointer=Qe,it.prototype.deleteObject=rt,it.prototype.fromWireType=Oe,dt=e.UnboundTypeError=ge(Error,"UnboundTypeError"),e.count_emval_handles=yt,e.get_first_emval=vt;var Nt={p:function(e){return Gt(e+24)+24},o:function(e,t,r){throw new ee(e).init(t,r),e},C:function(e,t,r){de.varargs=r;try{var i=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:ae.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=de.get();return i.flags|=n,0;case 5:return n=de.get(),B[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return o=28,U[$t()>>2]=o,-1}}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return-e.errno}var o},w:function(e,t,r,i){de.varargs=i;try{t=de.getStr(t),t=de.calculateAt(e,t);var n=i?de.get():0;return ae.open(t,r,n).fd}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return-e.errno}},t:function(e,t,r,i,n){},E:function(e,t,r,i,n){var o=le(r);Ee(e,{name:t=ce(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=E;else if(2===r)i=B;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=U}return this.fromWireType(i[e>>o])},destructorFunction:null})},s:function(t,r,i,n,o,s,a,d,l,u,c,f,h){c=ce(c),s=at(o,s),d&&(d=at(a,d)),u&&(u=at(l,u)),h=at(f,h);var p=me(c);!function(t,r,i){e.hasOwnProperty(t)?((void 0===i||void 0!==e[t].overloadTable&&void 0!==e[t].overloadTable[i])&&ve("Cannot register public name '"+t+"' twice"),qe(e,t,t),e.hasOwnProperty(i)&&ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),e[t].overloadTable[i]=r):(e[t]=r,void 0!==i&&(e[t].numArguments=i))}(p,(function(){ut("Cannot construct "+c+" due to unbound types",[n])})),Se([t,r,i],n?[n]:[],(function(r){var i,o;r=r[0],o=n?(i=r.registeredClass).instancePrototype:je.prototype;var a=_e(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new ye(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new ye("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(o,{constructor:{value:a}});a.prototype=l;var f=new Ye(c,a,l,h,i,s,d,u),m=new it(c,f,!0,!1,!1),_=new it(c+"*",f,!1,!1,!1),g=new it(c+" const*",f,!1,!0,!1);return Ce[t]={pointerType:_,constPointerType:g},function(t,r,i){e.hasOwnProperty(t)||we("Replacing nonexistant public symbol"),void 0!==e[t].overloadTable&&void 0!==i?e[t].overloadTable[i]=r:(e[t]=r,e[t].argCount=i)}(p,a),[m,_,g]}))},q:function(e,t,r,i,n,o){w(t>0);var s=ct(t,r);n=at(i,n),Se([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ye("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{ut("Cannot construct "+e.name+" due to unbound types",s)},Se([],s,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=pt(r,i,null,n,o),[]})),[]}))},d:function(e,t,r,i,n,o,s,a){var d=ct(r,i);t=ce(t),o=at(n,o),Se([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){ut("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(qe(l,t,i),l[t].overloadTable[r-2]=n),Se([],d,(function(n){var a=pt(i,n,e,o,s);return void 0===l[t].overloadTable?(a.argCount=r-2,l[t]=a):l[t].overloadTable[r-2]=a,[]})),[]}))},D:function(e,t){Ee(e,{name:t=ce(t),fromWireType:function(e){var t=bt.toValue(e);return gt(e),t},toWireType:function(e,t){return bt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},l:function(e,t,r){var i=le(r);Ee(e,{name:t=ce(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:St(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=ce(t);var o=le(r),s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var d=t.includes("unsigned");Ee(e,{name:t,fromWireType:s,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Et(t,o,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=k,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}Ee(e,{name:r=ce(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},k:function(e,t){var r="std::string"===(t=ce(t));Ee(e,{name:t,fromWireType:function(e){var t,i=k[e>>2],n=e+4;if(r)for(var o=n,s=0;s<=i;++s){var a=n+s;if(s==i||0==A[a]){var d=I(o,a-o);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),o=a+1}}else{var l=new Array(i);for(s=0;s>2]=i,r&&n)L(t,A,s,i+1);else if(n)for(var a=0;a255&&(Ot(s),ve("String has UTF-16 code units that do not fit in 8 bits")),A[s+a]=d}else for(a=0;ax,a=1):4===t&&(i=kt,n=Tt,s=Ct,o=()=>k,a=2),Ee(e,{name:r,fromWireType:function(e){for(var r,n=k[e>>2],s=o(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==s[u>>a]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Ot(e),r},toWireType:function(e,i){"string"!=typeof i&&ve("Cannot pass non-string to C++ string type "+r);var o=s(i),d=Gt(4+o+t);return k[d>>2]=o>>a,n(i,d+4,o+t),null!==e&&e.push(Ot,d),d},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Ot(e)}})},n:function(e,t){Ee(e,{isVoid:!0,name:t=ce(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},e:function(){return Date.now()},i:function(e,t,r,i){var n,o;(e=Pt[e])(t=bt.toValue(t),r=void 0===(o=Dt[n=r])?ce(n):o,null,i)},g:gt,m:function(e,t){var r=function(e,t){for(var r,i,n,o=new Array(e),s=0;s>2],i="parameter "+s,n=void 0,void 0===(n=he[r])&&ve(i+" has unknown type "+lt(r)),n);return o}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",o=Ft[n];if(void 0!==o)return o;for(var s=["retType"],a=[i],d="",l=0;l>2]=o,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(E[t>>0]=0)}(i,o),r+=i.length+1})),0},z:function(e,t){var r=Lt();k[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),k[t>>2]=i,0},j:function(e){try{var t=de.getStreamFromFD(e);return ae.close(t),0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=de.getStreamFromFD(e),i=r.tty?2:ae.isDir(r.mode)?3:ae.isLink(r.mode)?7:4;return E[t>>0]=i,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=k[t+4>>2];t+=8;var d=ae.read(e,E,s,a,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},r:function(e,t,r,i,n){try{var o=(d=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*d:NaN;if(isNaN(o))return 61;var s=de.getStreamFromFD(e);return ae.llseek(s,o,i),O=[s.position>>>0,(N=s.position,+Math.abs(N)>=1?N>0?(0|Math.min(+Math.floor(N/4294967296),4294967295))>>>0:~~+Math.ceil((N-+(~~N>>>0))/4294967296)>>>0:0)],U[n>>2]=O[0],U[n+4>>2]=O[1],s.getdents&&0===o&&0===i&&(s.getdents=null),0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}var a,d},h:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=k[t+4>>2];t+=8;var d=ae.write(e,E,s,a,i);if(d<0)return-1;n+=d}return n}(de.getStreamFromFD(e),t,r);return k[i>>2]=n,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},u:function(e){}};!function(){var t={a:Nt};function r(t,r){var i,n,o=t.exports;e.asm=o,g=e.asm.F,i=g.buffer,S=i,e.HEAP8=E=new Int8Array(i),e.HEAP16=B=new Int16Array(i),e.HEAP32=U=new Int32Array(i),e.HEAPU8=A=new Uint8Array(i),e.HEAPU16=x=new Uint16Array(i),e.HEAPU32=k=new Uint32Array(i),e.HEAPF32=T=new Float32Array(i),e.HEAPF64=C=new Float64Array(i),D=e.asm.J,n=e.asm.G,$.unshift(n),q()}function n(e){r(e.instance)}function s(e){return function(){if(!_&&(f||h)){if("function"==typeof fetch&&!X(R))return fetch(R,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+R+"'";return e.arrayBuffer()})).catch((function(){return Z(R)}));if(o)return new Promise((function(e,t){o(R,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Z(R)}))}().then((function(e){return WebAssembly.instantiate(e,t)})).then((function(e){return e})).then(e,(function(e){v("failed to asynchronously prepare wasm: "+e),Y(e)}))}if(j(),e.instantiateWasm)try{return e.instantiateWasm(t,r)}catch(e){return v("Module.instantiateWasm callback failed with error: "+e),!1}(_||"function"!=typeof WebAssembly.instantiateStreaming||K(R)||X(R)||p||"function"!=typeof fetch?s(n):fetch(R,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,t).then(n,(function(e){return v("wasm streaming compile failed: "+e),v("falling back to ArrayBuffer instantiation"),s(n)}))}))).catch(i)}(),e.___wasm_call_ctors=function(){return(e.___wasm_call_ctors=e.asm.G).apply(null,arguments)};var Ot=e._free=function(){return(Ot=e._free=e.asm.H).apply(null,arguments)},Gt=e._malloc=function(){return(Gt=e._malloc=e.asm.I).apply(null,arguments)},$t=e.___errno_location=function(){return($t=e.___errno_location=e.asm.K).apply(null,arguments)},Ht=e.___getTypeName=function(){return(Ht=e.___getTypeName=e.asm.L).apply(null,arguments)};e.___embind_register_native_and_builtin_types=function(){return(e.___embind_register_native_and_builtin_types=e.asm.M).apply(null,arguments)};var Vt,Wt=e._emscripten_builtin_memalign=function(){return(Wt=e._emscripten_builtin_memalign=e.asm.N).apply(null,arguments)},jt=e.___cxa_is_pointer_type=function(){return(jt=e.___cxa_is_pointer_type=e.asm.O).apply(null,arguments)};function qt(r){function i(){Vt||(Vt=!0,e.calledRun=!0,b||(e.noFSInit||ae.init.initialized||ae.init(),ae.ignorePermissions=!1,Q($),t(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),function(){if(e.postRun)for("function"==typeof e.postRun&&(e.postRun=[e.postRun]);e.postRun.length;)t=e.postRun.shift(),H.unshift(t);var t;Q(H)}()))}V>0||(function(){if(e.preRun)for("function"==typeof e.preRun&&(e.preRun=[e.preRun]);e.preRun.length;)t=e.preRun.shift(),G.unshift(t);var t;Q(G)}(),V>0||(e.setStatus?(e.setStatus("Running..."),setTimeout((function(){setTimeout((function(){e.setStatus("")}),1),i()}),1)):i()))}if(e.dynCall_jiji=function(){return(e.dynCall_jiji=e.asm.P).apply(null,arguments)},e._ff_h264_cabac_tables=74748,W=function e(){Vt||qt(),Vt||(W=e)},e.preInit)for("function"==typeof e.preInit&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return qt(),e.ready}),s=(()=>{var e="undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href;return function(t){var r,i;(t=void 0!==(t=t||{})?t:{}).ready=new Promise((function(e,t){r=e,i=t})),(t=void 0!==t?t:{}).locateFile=function(e){return"decoder-pro-audio.wasm"==e&&"undefined"!=typeof JESSIBUCA_PRO_AUDIO_WASM_URL&&""!=JESSIBUCA_PRO_AUDIO_WASM_URL?JESSIBUCA_PRO_AUDIO_WASM_URL:e};var n,o,s,a,d,l,u=Object.assign({},t),c="./this.program",f="object"==typeof window,h="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,m="";p?(m=h?require("path").dirname(m)+"/":__dirname+"/",l=()=>{d||(a=require("fs"),d=require("path"))},n=function(e,t){return l(),e=d.normalize(e),a.readFileSync(e,t?void 0:"utf8")},s=e=>{var t=n(e,!0);return t.buffer||(t=new Uint8Array(t)),t},o=(e,t,r)=>{l(),e=d.normalize(e),a.readFile(e,(function(e,i){e?r(e):t(i.buffer)}))},process.argv.length>1&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof J))throw e})),process.on("unhandledRejection",(function(e){throw e})),t.inspect=function(){return"[Emscripten Module object]"}):(f||h)&&(h?m=self.location.href:"undefined"!=typeof document&&document.currentScript&&(m=document.currentScript.src),e&&(m=e),m=0!==m.indexOf("blob:")?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",n=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},h&&(s=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),o=(e,t,r)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):r()},i.onerror=r,i.send(null)});var _=t.print||console.log.bind(console),g=t.printErr||console.warn.bind(console);Object.assign(t,u),u=null,t.arguments&&t.arguments,t.thisProgram&&(c=t.thisProgram),t.quit&&t.quit;var y,v;t.wasmBinary&&(y=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&V("no native wasm support detected");var b=!1;function w(e,t){e||V(t)}var S,E,A,B,x,U,k,T,C,D,P="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function F(e,t,r){for(var i=t+r,n=t;e[n]&&!(n>=i);)++n;if(n-t>16&&e.buffer&&P)return P.decode(e.subarray(t,n));for(var o="";t>10,56320|1023&l)}}else o+=String.fromCharCode((31&s)<<6|a)}else o+=String.fromCharCode(s)}return o}function I(e,t){return e?F(A,e,t):""}function L(e,t,r,i){if(!(i>0))return 0;for(var n=r,o=r+i-1,s=0;s=55296&&a<=57343)a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s);if(a<=127){if(r>=o)break;t[r++]=a}else if(a<=2047){if(r+1>=o)break;t[r++]=192|a>>6,t[r++]=128|63&a}else if(a<=65535){if(r+2>=o)break;t[r++]=224|a>>12,t[r++]=128|a>>6&63,t[r++]=128|63&a}else{if(r+3>=o)break;t[r++]=240|a>>18,t[r++]=128|a>>12&63,t[r++]=128|a>>6&63,t[r++]=128|63&a}}return t[r]=0,r-n}function M(e){for(var t=0,r=0;r=55296&&i<=57343?(t+=4,++r):t+=3}return t}t.INITIAL_MEMORY;var R=[],z=[],N=[];var O=0,G=null;function $(e){O++,t.monitorRunDependencies&&t.monitorRunDependencies(O)}function H(e){if(O--,t.monitorRunDependencies&&t.monitorRunDependencies(O),0==O&&G){var r=G;G=null,r()}}function V(e){t.onAbort&&t.onAbort(e),g(e="Aborted("+e+")"),b=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw i(r),r}var W,j,q,Y;function K(e){return e.startsWith("data:application/octet-stream;base64,")}function X(e){return e.startsWith("file://")}function Z(e){try{if(e==W&&y)return new Uint8Array(y);if(s)return s(e);throw"both async and sync fetching of the wasm failed"}catch(e){V(e)}}function J(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Q(e){for(;e.length>0;)e.shift()(t)}function ee(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(e){k[this.ptr+4>>2]=e},this.get_type=function(){return k[this.ptr+4>>2]},this.set_destructor=function(e){k[this.ptr+8>>2]=e},this.get_destructor=function(){return k[this.ptr+8>>2]},this.set_refcount=function(e){U[this.ptr>>2]=e},this.set_caught=function(e){e=e?1:0,E[this.ptr+12>>0]=e},this.get_caught=function(){return 0!=E[this.ptr+12>>0]},this.set_rethrown=function(e){e=e?1:0,E[this.ptr+13>>0]=e},this.get_rethrown=function(){return 0!=E[this.ptr+13>>0]},this.init=function(e,t){this.set_adjusted_ptr(0),this.set_type(e),this.set_destructor(t),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var e=U[this.ptr>>2];U[this.ptr>>2]=e+1},this.release_ref=function(){var e=U[this.ptr>>2];return U[this.ptr>>2]=e-1,1===e},this.set_adjusted_ptr=function(e){k[this.ptr+16>>2]=e},this.get_adjusted_ptr=function(){return k[this.ptr+16>>2]},this.get_exception_ptr=function(){if(jt(this.get_type()))return k[this.excPtr>>2];var e=this.get_adjusted_ptr();return 0!==e?e:this.excPtr}}t.locateFile?K(W="decoder-pro-audio.wasm")||(j=W,W=t.locateFile?t.locateFile(j,m):m+j):W=new URL("decoder-pro-audio.wasm","undefined"==typeof document&&"undefined"==typeof location?new(require("url").URL)("file:"+__filename).href:"undefined"==typeof document?location.href:document.currentScript&&document.currentScript.src||new URL("decoder-pro.js",document.baseURI).href).toString();var te={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,t)=>{for(var r=0,i=e.length-1;i>=0;i--){var n=e[i];"."===n?e.splice(i,1):".."===n?(e.splice(i,1),r++):r&&(e.splice(i,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:e=>{var t=te.isAbs(e),r="/"===e.substr(-1);return(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=te.splitPath(e),r=t[0],i=t[1];return r||i?(i&&(i=i.substr(0,i.length-1)),r+i):"."},basename:e=>{if("/"===e)return"/";var t=(e=(e=te.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},join:function(){var e=Array.prototype.slice.call(arguments,0);return te.normalize(e.join("/"))},join2:(e,t)=>te.normalize(e+"/"+t)};var re={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var i=r>=0?arguments[r]:ae.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";e=i+"/"+e,t=te.isAbs(i)}return(t?"/":"")+(e=te.normalizeArray(e.split("/").filter((e=>!!e)),!t).join("/"))||"."},relative:(e,t)=>{function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=re.resolve(e).substr(1),t=re.resolve(t).substr(1);for(var i=r(e.split("/")),n=r(t.split("/")),o=Math.min(i.length,n.length),s=o,a=0;a0?r:M(e)+1,n=new Array(i),o=L(e,n,0,n.length);return t&&(n.length=o),n}var ne={ttys:[],init:function(){},shutdown:function(){},register:function(e,t){ne.ttys[e]={input:[],output:[],ops:t},ae.registerDevice(e,ne.stream_ops)},stream_ops:{open:function(e){var t=ne.ttys[e.node.rdev];if(!t)throw new ae.ErrnoError(43);e.tty=t,e.seekable=!1},close:function(e){e.tty.ops.flush(e.tty)},flush:function(e){e.tty.ops.flush(e.tty)},read:function(e,t,r,i,n){if(!e.tty||!e.tty.ops.get_char)throw new ae.ErrnoError(60);for(var o=0,s=0;s0?r.slice(0,i).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=ie(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(_(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(_(F(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(g(F(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(g(F(e.output,0)),e.output=[])}}};function oe(e){e=function(e,t){return Math.ceil(e/t)*t}(e,65536);var t=Wt(65536,e);return t?(function(e,t){A.fill(0,e,e+t)}(t,e),t):0}var se={ops_table:null,mount:function(e){return se.createNode(null,"/",16895,0)},createNode:function(e,t,r,i){if(ae.isBlkdev(r)||ae.isFIFO(r))throw new ae.ErrnoError(63);se.ops_table||(se.ops_table={dir:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,lookup:se.node_ops.lookup,mknod:se.node_ops.mknod,rename:se.node_ops.rename,unlink:se.node_ops.unlink,rmdir:se.node_ops.rmdir,readdir:se.node_ops.readdir,symlink:se.node_ops.symlink},stream:{llseek:se.stream_ops.llseek}},file:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:{llseek:se.stream_ops.llseek,read:se.stream_ops.read,write:se.stream_ops.write,allocate:se.stream_ops.allocate,mmap:se.stream_ops.mmap,msync:se.stream_ops.msync}},link:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr,readlink:se.node_ops.readlink},stream:{}},chrdev:{node:{getattr:se.node_ops.getattr,setattr:se.node_ops.setattr},stream:ae.chrdev_stream_ops}});var n=ae.createNode(e,t,r,i);return ae.isDir(n.mode)?(n.node_ops=se.ops_table.dir.node,n.stream_ops=se.ops_table.dir.stream,n.contents={}):ae.isFile(n.mode)?(n.node_ops=se.ops_table.file.node,n.stream_ops=se.ops_table.file.stream,n.usedBytes=0,n.contents=null):ae.isLink(n.mode)?(n.node_ops=se.ops_table.link.node,n.stream_ops=se.ops_table.link.stream):ae.isChrdev(n.mode)&&(n.node_ops=se.ops_table.chrdev.node,n.stream_ops=se.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n,e.timestamp=n.timestamp),n},getFileDataAsTypedArray:function(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage:function(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t)if(0==t)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr:function(e){var t={};return t.dev=ae.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,ae.isDir(e.mode)?t.size=4096:ae.isFile(e.mode)?t.size=e.usedBytes:ae.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr:function(e,t){void 0!==t.mode&&(e.mode=t.mode),void 0!==t.timestamp&&(e.timestamp=t.timestamp),void 0!==t.size&&se.resizeFileStorage(e,t.size)},lookup:function(e,t){throw ae.genericErrors[44]},mknod:function(e,t,r,i){return se.createNode(e,t,r,i)},rename:function(e,t,r){if(ae.isDir(e.mode)){var i;try{i=ae.lookupNode(t,r)}catch(e){}if(i)for(var n in i.contents)throw new ae.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=r,t.contents[r]=e,t.timestamp=e.parent.timestamp,e.parent=t},unlink:function(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir:function(e,t){var r=ae.lookupNode(e,t);for(var i in r.contents)throw new ae.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir:function(e){var t=[".",".."];for(var r in e.contents)e.contents.hasOwnProperty(r)&&t.push(r);return t},symlink:function(e,t,r){var i=se.createNode(e,t,41471,0);return i.link=r,i},readlink:function(e){if(!ae.isLink(e.mode))throw new ae.ErrnoError(28);return e.link}},stream_ops:{read:function(e,t,r,i,n){var o=e.node.contents;if(n>=e.node.usedBytes)return 0;var s=Math.min(e.node.usedBytes-n,i);if(s>8&&o.subarray)t.set(o.subarray(n,n+s),r);else for(var a=0;a0||r+t1&&void 0!==arguments[1]?arguments[1]:{};if(!(e=re.resolve(ae.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};if(t=Object.assign(r,t),t.recurse_count>8)throw new ae.ErrnoError(32);for(var i=te.normalizeArray(e.split("/").filter((e=>!!e)),!1),n=ae.root,o="/",s=0;s40)throw new ae.ErrnoError(32)}}return{path:o,node:n}},getPath:e=>{for(var t;;){if(ae.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:(e,t)=>{for(var r=0,i=0;i>>0)%ae.nameTable.length},hashAddNode:e=>{var t=ae.hashName(e.parent.id,e.name);e.name_next=ae.nameTable[t],ae.nameTable[t]=e},hashRemoveNode:e=>{var t=ae.hashName(e.parent.id,e.name);if(ae.nameTable[t]===e)ae.nameTable[t]=e.name_next;else for(var r=ae.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:(e,t)=>{var r=ae.mayLookup(e);if(r)throw new ae.ErrnoError(r,e);for(var i=ae.hashName(e.id,t),n=ae.nameTable[i];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===t)return n}return ae.lookup(e,t)},createNode:(e,t,r,i)=>{var n=new ae.FSNode(e,t,r,i);return ae.hashAddNode(n),n},destroyNode:e=>{ae.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>49152==(49152&e),flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:e=>{var t=ae.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:e=>{var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:(e,t)=>ae.ignorePermissions||(!t.includes("r")||292&e.mode)&&(!t.includes("w")||146&e.mode)&&(!t.includes("x")||73&e.mode)?0:2,mayLookup:e=>{var t=ae.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:(e,t)=>{try{ae.lookupNode(e,t);return 20}catch(e){}return ae.nodePermissions(e,"wx")},mayDelete:(e,t,r)=>{var i;try{i=ae.lookupNode(e,t)}catch(e){return e.errno}var n=ae.nodePermissions(e,"wx");if(n)return n;if(r){if(!ae.isDir(i.mode))return 54;if(ae.isRoot(i)||ae.getPath(i)===ae.cwd())return 10}else if(ae.isDir(i.mode))return 31;return 0},mayOpen:(e,t)=>e?ae.isLink(e.mode)?32:ae.isDir(e.mode)&&("r"!==ae.flagsToPermissionString(t)||512&t)?31:ae.nodePermissions(e,ae.flagsToPermissionString(t)):44,MAX_OPEN_FDS:4096,nextfd:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ae.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!ae.streams[r])return r;throw new ae.ErrnoError(33)},getStream:e=>ae.streams[e],createStream:(e,t,r)=>{ae.FSStream||(ae.FSStream=function(){this.shared={}},ae.FSStream.prototype={},Object.defineProperties(ae.FSStream.prototype,{object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(e){this.shared.flags=e}},position:{get:function(){return this.shared.position},set:function(e){this.shared.position=e}}})),e=Object.assign(new ae.FSStream,e);var i=ae.nextfd(t,r);return e.fd=i,ae.streams[i]=e,e},closeStream:e=>{ae.streams[e]=null},chrdev_stream_ops:{open:e=>{var t=ae.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:()=>{throw new ae.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,t)=>e<<8|t,registerDevice:(e,t)=>{ae.devices[e]={stream_ops:t}},getDevice:e=>ae.devices[e],getMounts:e=>{for(var t=[],r=[e];r.length;){var i=r.pop();t.push(i),r.push.apply(r,i.mounts)}return t},syncfs:(e,t)=>{"function"==typeof e&&(t=e,e=!1),ae.syncFSRequests++,ae.syncFSRequests>1&&g("warning: "+ae.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=ae.getMounts(ae.root.mount),i=0;function n(e){return ae.syncFSRequests--,t(e)}function o(e){if(e)return o.errored?void 0:(o.errored=!0,n(e));++i>=r.length&&n(null)}r.forEach((t=>{if(!t.type.syncfs)return o(null);t.type.syncfs(t,e,o)}))},mount:(e,t,r)=>{var i,n="/"===r,o=!r;if(n&&ae.root)throw new ae.ErrnoError(10);if(!n&&!o){var s=ae.lookupPath(r,{follow_mount:!1});if(r=s.path,i=s.node,ae.isMountpoint(i))throw new ae.ErrnoError(10);if(!ae.isDir(i.mode))throw new ae.ErrnoError(54)}var a={type:e,opts:t,mountpoint:r,mounts:[]},d=e.mount(a);return d.mount=a,a.root=d,n?ae.root=d:i&&(i.mounted=a,i.mount&&i.mount.mounts.push(a)),d},unmount:e=>{var t=ae.lookupPath(e,{follow_mount:!1});if(!ae.isMountpoint(t.node))throw new ae.ErrnoError(28);var r=t.node,i=r.mounted,n=ae.getMounts(i);Object.keys(ae.nameTable).forEach((e=>{for(var t=ae.nameTable[e];t;){var r=t.name_next;n.includes(t.mount)&&ae.destroyNode(t),t=r}})),r.mounted=null;var o=r.mount.mounts.indexOf(i);r.mount.mounts.splice(o,1)},lookup:(e,t)=>e.node_ops.lookup(e,t),mknod:(e,t,r)=>{var i=ae.lookupPath(e,{parent:!0}).node,n=te.basename(e);if(!n||"."===n||".."===n)throw new ae.ErrnoError(28);var o=ae.mayCreate(i,n);if(o)throw new ae.ErrnoError(o);if(!i.node_ops.mknod)throw new ae.ErrnoError(63);return i.node_ops.mknod(i,n,t,r)},create:(e,t)=>(t=void 0!==t?t:438,t&=4095,t|=32768,ae.mknod(e,t,0)),mkdir:(e,t)=>(t=void 0!==t?t:511,t&=1023,t|=16384,ae.mknod(e,t,0)),mkdirTree:(e,t)=>{for(var r=e.split("/"),i="",n=0;n(void 0===r&&(r=t,t=438),t|=8192,ae.mknod(e,t,r)),symlink:(e,t)=>{if(!re.resolve(e))throw new ae.ErrnoError(44);var r=ae.lookupPath(t,{parent:!0}).node;if(!r)throw new ae.ErrnoError(44);var i=te.basename(t),n=ae.mayCreate(r,i);if(n)throw new ae.ErrnoError(n);if(!r.node_ops.symlink)throw new ae.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename:(e,t)=>{var r,i,n=te.dirname(e),o=te.dirname(t),s=te.basename(e),a=te.basename(t);if(r=ae.lookupPath(e,{parent:!0}).node,i=ae.lookupPath(t,{parent:!0}).node,!r||!i)throw new ae.ErrnoError(44);if(r.mount!==i.mount)throw new ae.ErrnoError(75);var d,l=ae.lookupNode(r,s),u=re.relative(e,o);if("."!==u.charAt(0))throw new ae.ErrnoError(28);if("."!==(u=re.relative(t,n)).charAt(0))throw new ae.ErrnoError(55);try{d=ae.lookupNode(i,a)}catch(e){}if(l!==d){var c=ae.isDir(l.mode),f=ae.mayDelete(r,s,c);if(f)throw new ae.ErrnoError(f);if(f=d?ae.mayDelete(i,a,c):ae.mayCreate(i,a))throw new ae.ErrnoError(f);if(!r.node_ops.rename)throw new ae.ErrnoError(63);if(ae.isMountpoint(l)||d&&ae.isMountpoint(d))throw new ae.ErrnoError(10);if(i!==r&&(f=ae.nodePermissions(r,"w")))throw new ae.ErrnoError(f);ae.hashRemoveNode(l);try{r.node_ops.rename(l,i,a)}catch(e){throw e}finally{ae.hashAddNode(l)}}},rmdir:e=>{var t=ae.lookupPath(e,{parent:!0}).node,r=te.basename(e),i=ae.lookupNode(t,r),n=ae.mayDelete(t,r,!0);if(n)throw new ae.ErrnoError(n);if(!t.node_ops.rmdir)throw new ae.ErrnoError(63);if(ae.isMountpoint(i))throw new ae.ErrnoError(10);t.node_ops.rmdir(t,r),ae.destroyNode(i)},readdir:e=>{var t=ae.lookupPath(e,{follow:!0}).node;if(!t.node_ops.readdir)throw new ae.ErrnoError(54);return t.node_ops.readdir(t)},unlink:e=>{var t=ae.lookupPath(e,{parent:!0}).node;if(!t)throw new ae.ErrnoError(44);var r=te.basename(e),i=ae.lookupNode(t,r),n=ae.mayDelete(t,r,!1);if(n)throw new ae.ErrnoError(n);if(!t.node_ops.unlink)throw new ae.ErrnoError(63);if(ae.isMountpoint(i))throw new ae.ErrnoError(10);t.node_ops.unlink(t,r),ae.destroyNode(i)},readlink:e=>{var t=ae.lookupPath(e).node;if(!t)throw new ae.ErrnoError(44);if(!t.node_ops.readlink)throw new ae.ErrnoError(28);return re.resolve(ae.getPath(t.parent),t.node_ops.readlink(t))},stat:(e,t)=>{var r=ae.lookupPath(e,{follow:!t}).node;if(!r)throw new ae.ErrnoError(44);if(!r.node_ops.getattr)throw new ae.ErrnoError(63);return r.node_ops.getattr(r)},lstat:e=>ae.stat(e,!0),chmod:(e,t,r)=>{var i;"string"==typeof e?i=ae.lookupPath(e,{follow:!r}).node:i=e;if(!i.node_ops.setattr)throw new ae.ErrnoError(63);i.node_ops.setattr(i,{mode:4095&t|-4096&i.mode,timestamp:Date.now()})},lchmod:(e,t)=>{ae.chmod(e,t,!0)},fchmod:(e,t)=>{var r=ae.getStream(e);if(!r)throw new ae.ErrnoError(8);ae.chmod(r.node,t)},chown:(e,t,r,i)=>{var n;"string"==typeof e?n=ae.lookupPath(e,{follow:!i}).node:n=e;if(!n.node_ops.setattr)throw new ae.ErrnoError(63);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:(e,t,r)=>{ae.chown(e,t,r,!0)},fchown:(e,t,r)=>{var i=ae.getStream(e);if(!i)throw new ae.ErrnoError(8);ae.chown(i.node,t,r)},truncate:(e,t)=>{if(t<0)throw new ae.ErrnoError(28);var r;"string"==typeof e?r=ae.lookupPath(e,{follow:!0}).node:r=e;if(!r.node_ops.setattr)throw new ae.ErrnoError(63);if(ae.isDir(r.mode))throw new ae.ErrnoError(31);if(!ae.isFile(r.mode))throw new ae.ErrnoError(28);var i=ae.nodePermissions(r,"w");if(i)throw new ae.ErrnoError(i);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate:(e,t)=>{var r=ae.getStream(e);if(!r)throw new ae.ErrnoError(8);if(0==(2097155&r.flags))throw new ae.ErrnoError(28);ae.truncate(r.node,t)},utime:(e,t,r)=>{var i=ae.lookupPath(e,{follow:!0}).node;i.node_ops.setattr(i,{timestamp:Math.max(t,r)})},open:(e,r,i)=>{if(""===e)throw new ae.ErrnoError(44);var n;if(i=void 0===i?438:i,i=64&(r="string"==typeof r?ae.modeStringToFlags(r):r)?4095&i|32768:0,"object"==typeof e)n=e;else{e=te.normalize(e);try{n=ae.lookupPath(e,{follow:!(131072&r)}).node}catch(e){}}var o=!1;if(64&r)if(n){if(128&r)throw new ae.ErrnoError(20)}else n=ae.mknod(e,i,0),o=!0;if(!n)throw new ae.ErrnoError(44);if(ae.isChrdev(n.mode)&&(r&=-513),65536&r&&!ae.isDir(n.mode))throw new ae.ErrnoError(54);if(!o){var s=ae.mayOpen(n,r);if(s)throw new ae.ErrnoError(s)}512&r&&!o&&ae.truncate(n,0),r&=-131713;var a=ae.createStream({node:n,path:ae.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return a.stream_ops.open&&a.stream_ops.open(a),!t.logReadFiles||1&r||(ae.readFiles||(ae.readFiles={}),e in ae.readFiles||(ae.readFiles[e]=1)),a},close:e=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ae.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ae.ErrnoError(70);if(0!=r&&1!=r&&2!=r)throw new ae.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read:(e,t,r,i,n)=>{if(i<0||n<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(1==(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.read)throw new ae.ErrnoError(28);var o=void 0!==n;if(o){if(!e.seekable)throw new ae.ErrnoError(70)}else n=e.position;var s=e.stream_ops.read(e,t,r,i,n);return o||(e.position+=s),s},write:(e,t,r,i,n,o)=>{if(i<0||n<0)throw new ae.ErrnoError(28);if(ae.isClosed(e))throw new ae.ErrnoError(8);if(0==(2097155&e.flags))throw new ae.ErrnoError(8);if(ae.isDir(e.node.mode))throw new ae.ErrnoError(31);if(!e.stream_ops.write)throw new ae.ErrnoError(28);e.seekable&&1024&e.flags&&ae.llseek(e,0,2);var s=void 0!==n;if(s){if(!e.seekable)throw new ae.ErrnoError(70)}else n=e.position;var a=e.stream_ops.write(e,t,r,i,n,o);return s||(e.position+=a),a},allocate:(e,t,r)=>{if(ae.isClosed(e))throw new ae.ErrnoError(8);if(t<0||r<=0)throw new ae.ErrnoError(28);if(0==(2097155&e.flags))throw new ae.ErrnoError(8);if(!ae.isFile(e.node.mode)&&!ae.isDir(e.node.mode))throw new ae.ErrnoError(43);if(!e.stream_ops.allocate)throw new ae.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap:(e,t,r,i,n)=>{if(0!=(2&i)&&0==(2&n)&&2!=(2097155&e.flags))throw new ae.ErrnoError(2);if(1==(2097155&e.flags))throw new ae.ErrnoError(2);if(!e.stream_ops.mmap)throw new ae.ErrnoError(43);return e.stream_ops.mmap(e,t,r,i,n)},msync:(e,t,r,i,n)=>e&&e.stream_ops.msync?e.stream_ops.msync(e,t,r,i,n):0,munmap:e=>0,ioctl:(e,t,r)=>{if(!e.stream_ops.ioctl)throw new ae.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var r,i=ae.open(e,t.flags),n=ae.stat(e),o=n.size,s=new Uint8Array(o);return ae.read(i,s,0,o,0),"utf8"===t.encoding?r=F(s,0):"binary"===t.encoding&&(r=s),ae.close(i),r},writeFile:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};r.flags=r.flags||577;var i=ae.open(e,r.flags,r.mode);if("string"==typeof t){var n=new Uint8Array(M(t)+1),o=L(t,n,0,n.length);ae.write(i,n,0,o,void 0,r.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");ae.write(i,t,0,t.byteLength,void 0,r.canOwn)}ae.close(i)},cwd:()=>ae.currentPath,chdir:e=>{var t=ae.lookupPath(e,{follow:!0});if(null===t.node)throw new ae.ErrnoError(44);if(!ae.isDir(t.node.mode))throw new ae.ErrnoError(54);var r=ae.nodePermissions(t.node,"x");if(r)throw new ae.ErrnoError(r);ae.currentPath=t.path},createDefaultDirectories:()=>{ae.mkdir("/tmp"),ae.mkdir("/home"),ae.mkdir("/home/web_user")},createDefaultDevices:()=>{ae.mkdir("/dev"),ae.registerDevice(ae.makedev(1,3),{read:()=>0,write:(e,t,r,i,n)=>i}),ae.mkdev("/dev/null",ae.makedev(1,3)),ne.register(ae.makedev(5,0),ne.default_tty_ops),ne.register(ae.makedev(6,0),ne.default_tty1_ops),ae.mkdev("/dev/tty",ae.makedev(5,0)),ae.mkdev("/dev/tty1",ae.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return()=>(crypto.getRandomValues(e),e[0])}if(p)try{var t=require("crypto");return()=>t.randomBytes(1)[0]}catch(e){}return()=>V("randomDevice")}();ae.createDevice("/dev","random",e),ae.createDevice("/dev","urandom",e),ae.mkdir("/dev/shm"),ae.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{ae.mkdir("/proc");var e=ae.mkdir("/proc/self");ae.mkdir("/proc/self/fd"),ae.mount({mount:()=>{var t=ae.createNode(e,"fd",16895,73);return t.node_ops={lookup:(e,t)=>{var r=+t,i=ae.getStream(r);if(!i)throw new ae.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>i.path}};return n.parent=n,n}},t}},{},"/proc/self/fd")},createStandardStreams:()=>{t.stdin?ae.createDevice("/dev","stdin",t.stdin):ae.symlink("/dev/tty","/dev/stdin"),t.stdout?ae.createDevice("/dev","stdout",null,t.stdout):ae.symlink("/dev/tty","/dev/stdout"),t.stderr?ae.createDevice("/dev","stderr",null,t.stderr):ae.symlink("/dev/tty1","/dev/stderr"),ae.open("/dev/stdin",0),ae.open("/dev/stdout",1),ae.open("/dev/stderr",1)},ensureErrnoError:()=>{ae.ErrnoError||(ae.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},ae.ErrnoError.prototype=new Error,ae.ErrnoError.prototype.constructor=ae.ErrnoError,[44].forEach((e=>{ae.genericErrors[e]=new ae.ErrnoError(e),ae.genericErrors[e].stack=""})))},staticInit:()=>{ae.ensureErrnoError(),ae.nameTable=new Array(4096),ae.mount(se,{},"/"),ae.createDefaultDirectories(),ae.createDefaultDevices(),ae.createSpecialDirectories(),ae.filesystems={MEMFS:se}},init:(e,r,i)=>{ae.init.initialized=!0,ae.ensureErrnoError(),t.stdin=e||t.stdin,t.stdout=r||t.stdout,t.stderr=i||t.stderr,ae.createStandardStreams()},quit:()=>{ae.init.initialized=!1;for(var e=0;e{var r=0;return e&&(r|=365),t&&(r|=146),r},findObject:(e,t)=>{var r=ae.analyzePath(e,t);return r.exists?r.object:null},analyzePath:(e,t)=>{try{e=(i=ae.lookupPath(e,{follow:!t})).path}catch(e){}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var i=ae.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=i.path,r.parentObject=i.node,r.name=te.basename(e),i=ae.lookupPath(e,{follow:!t}),r.exists=!0,r.path=i.path,r.object=i.node,r.name=i.node.name,r.isRoot="/"===i.path}catch(e){r.error=e.errno}return r},createPath:(e,t,r,i)=>{e="string"==typeof e?e:ae.getPath(e);for(var n=t.split("/").reverse();n.length;){var o=n.pop();if(o){var s=te.join2(e,o);try{ae.mkdir(s)}catch(e){}e=s}}return s},createFile:(e,t,r,i,n)=>{var o=te.join2("string"==typeof e?e:ae.getPath(e),t),s=ae.getMode(i,n);return ae.create(o,s)},createDataFile:(e,t,r,i,n,o)=>{var s=t;e&&(e="string"==typeof e?e:ae.getPath(e),s=t?te.join2(e,t):e);var a=ae.getMode(i,n),d=ae.create(s,a);if(r){if("string"==typeof r){for(var l=new Array(r.length),u=0,c=r.length;u{var n=te.join2("string"==typeof e?e:ae.getPath(e),t),o=ae.getMode(!!r,!!i);ae.createDevice.major||(ae.createDevice.major=64);var s=ae.makedev(ae.createDevice.major++,0);return ae.registerDevice(s,{open:e=>{e.seekable=!1},close:e=>{i&&i.buffer&&i.buffer.length&&i(10)},read:(e,t,i,n,o)=>{for(var s=0,a=0;a{for(var s=0;s{if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!n)throw new Error("Cannot load without read() or XMLHttpRequest.");try{e.contents=ie(n(e.url),!0),e.usedBytes=e.contents.length}catch(e){throw new ae.ErrnoError(29)}},createLazyFile:(e,t,r,i,n)=>{function o(){this.lengthKnown=!1,this.chunks=[]}if(o.prototype.get=function(e){if(!(e>this.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},o.prototype.setDataGetter=function(e){this.getter=e},o.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,i=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,o=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,s=1048576;n||(s=i);var a=this;a.setDataGetter((e=>{var t=e*s,n=(e+1)*s-1;if(n=Math.min(n,i-1),void 0===a.chunks[e]&&(a.chunks[e]=((e,t)=>{if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>i-1)throw new Error("only "+i+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),i!==s&&n.setRequestHeader("Range","bytes="+e+"-"+t),n.responseType="arraybuffer",n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):ie(n.responseText||"",!0)})(t,n)),void 0===a.chunks[e])throw new Error("doXHR failed!");return a.chunks[e]})),!o&&i||(s=i=1,i=this.getter(0).length,s=i,_("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=i,this._chunkSize=s,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!h)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var s=new o;Object.defineProperties(s,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var a={isDevice:!1,contents:s}}else a={isDevice:!1,url:r};var d=ae.createFile(e,t,a,i,n);a.contents?d.contents=a.contents:a.url&&(d.contents=null,d.url=a.url),Object.defineProperties(d,{usedBytes:{get:function(){return this.contents.length}}});var l={};function u(e,t,r,i,n){var o=e.node.contents;if(n>=o.length)return 0;var s=Math.min(o.length-n,i);if(o.slice)for(var a=0;a{var t=d.stream_ops[e];l[e]=function(){return ae.forceLoadFile(d),t.apply(null,arguments)}})),l.read=(e,t,r,i,n)=>(ae.forceLoadFile(d),u(e,t,r,i,n)),l.mmap=(e,t,r,i,n)=>{ae.forceLoadFile(d);var o=oe(t);if(!o)throw new ae.ErrnoError(48);return u(e,E,o,t,r),{ptr:o,allocated:!0}},d.stream_ops=l,d},createPreloadedFile:(e,t,r,i,n,s,a,d,l,u)=>{var c=t?re.resolve(te.join2(e,t)):e;function f(r){function o(r){u&&u(),d||ae.createDataFile(e,t,r,i,n,l),s&&s(),H()}Browser.handledByPreloadPlugin(r,c,o,(()=>{a&&a(),H()}))||o(r)}$(),"string"==typeof r?function(e,t,r,i){var n=i?"":"al "+e;o(e,(r=>{w(r,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(r)),n&&H()}),(t=>{if(!r)throw'Loading data file "'+e+'" failed.';r()})),n&&$()}(r,(e=>f(e)),a):f(r)},indexedDB:()=>window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB,DB_NAME:()=>"EM_FS_"+window.location.pathname,DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ae.indexedDB();try{var n=i.open(ae.DB_NAME(),ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=()=>{_("creating db"),n.result.createObjectStore(ae.DB_STORE_NAME)},n.onsuccess=()=>{var i=n.result.transaction([ae.DB_STORE_NAME],"readwrite"),o=i.objectStore(ae.DB_STORE_NAME),s=0,a=0,d=e.length;function l(){0==a?t():r()}e.forEach((e=>{var t=o.put(ae.analyzePath(e).object.contents,e);t.onsuccess=()=>{++s+a==d&&l()},t.onerror=()=>{a++,s+a==d&&l()}})),i.onerror=r},n.onerror=r},loadFilesFromDB:(e,t,r)=>{t=t||(()=>{}),r=r||(()=>{});var i=ae.indexedDB();try{var n=i.open(ae.DB_NAME(),ae.DB_VERSION)}catch(e){return r(e)}n.onupgradeneeded=r,n.onsuccess=()=>{var i=n.result;try{var o=i.transaction([ae.DB_STORE_NAME],"readonly")}catch(e){return void r(e)}var s=o.objectStore(ae.DB_STORE_NAME),a=0,d=0,l=e.length;function u(){0==d?t():r()}e.forEach((e=>{var t=s.get(e);t.onsuccess=()=>{ae.analyzePath(e).exists&&ae.unlink(e),ae.createDataFile(te.dirname(e),te.basename(e),t.result,!0,!0,!0),++a+d==l&&u()},t.onerror=()=>{d++,a+d==l&&u()}})),o.onerror=r},n.onerror=r}},de={DEFAULT_POLLMASK:5,calculateAt:function(e,t,r){if(te.isAbs(t))return t;var i;if(-100===e)i=ae.cwd();else{var n=ae.getStream(e);if(!n)throw new ae.ErrnoError(8);i=n.path}if(0==t.length){if(!r)throw new ae.ErrnoError(44);return i}return te.join2(i,t)},doStat:function(e,t,r){try{var i=e(t)}catch(e){if(e&&e.node&&te.normalize(t)!==te.normalize(ae.getPath(e.node)))return-54;throw e}return U[r>>2]=i.dev,U[r+4>>2]=0,U[r+8>>2]=i.ino,U[r+12>>2]=i.mode,U[r+16>>2]=i.nlink,U[r+20>>2]=i.uid,U[r+24>>2]=i.gid,U[r+28>>2]=i.rdev,U[r+32>>2]=0,Y=[i.size>>>0,(q=i.size,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+40>>2]=Y[0],U[r+44>>2]=Y[1],U[r+48>>2]=4096,U[r+52>>2]=i.blocks,Y=[Math.floor(i.atime.getTime()/1e3)>>>0,(q=Math.floor(i.atime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+56>>2]=Y[0],U[r+60>>2]=Y[1],U[r+64>>2]=0,Y=[Math.floor(i.mtime.getTime()/1e3)>>>0,(q=Math.floor(i.mtime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+72>>2]=Y[0],U[r+76>>2]=Y[1],U[r+80>>2]=0,Y=[Math.floor(i.ctime.getTime()/1e3)>>>0,(q=Math.floor(i.ctime.getTime()/1e3),+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+88>>2]=Y[0],U[r+92>>2]=Y[1],U[r+96>>2]=0,Y=[i.ino>>>0,(q=i.ino,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[r+104>>2]=Y[0],U[r+108>>2]=Y[1],0},doMsync:function(e,t,r,i,n){var o=A.slice(e,e+r);ae.msync(t,o,n,r,i)},varargs:void 0,get:function(){return de.varargs+=4,U[de.varargs-4>>2]},getStr:function(e){return I(e)},getStreamFromFD:function(e){var t=ae.getStream(e);if(!t)throw new ae.ErrnoError(8);return t}};function le(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}var ue=void 0;function ce(e){for(var t="",r=e;A[r];)t+=ue[A[r++]];return t}var fe={},he={},pe={};function me(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=48&&t<=57?"_"+e:e}function _e(e,t){return e=me(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function ge(e,t){var r=_e(t,(function(e){this.name=t,this.message=e;var r=new Error(e).stack;void 0!==r&&(this.stack=this.toString()+"\n"+r.replace(/^Error(:[^\n]*)?\n/,""))}));return r.prototype=Object.create(e.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},r}var ye=void 0;function ve(e){throw new ye(e)}var be=void 0;function we(e){throw new be(e)}function Se(e,t,r){function i(t){var i=r(t);i.length!==e.length&&we("Mismatched type converter count");for(var n=0;n{he.hasOwnProperty(e)?n[t]=he[e]:(o.push(e),fe.hasOwnProperty(e)||(fe[e]=[]),fe[e].push((()=>{n[t]=he[e],++s===o.length&&i(n)})))})),0===o.length&&i(n)}function Ee(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||ve('type "'+i+'" must have a positive integer typeid pointer'),he.hasOwnProperty(e)){if(r.ignoreDuplicateRegistrations)return;ve("Cannot register type '"+i+"' twice")}if(he[e]=t,delete pe[e],fe.hasOwnProperty(e)){var n=fe[e];delete fe[e],n.forEach((e=>e()))}}function Ae(e){if(!(this instanceof je))return!1;if(!(e instanceof je))return!1;for(var t=this.$$.ptrType.registeredClass,r=this.$$.ptr,i=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)r=t.upcast(r),t=t.baseClass;for(;i.baseClass;)n=i.upcast(n),i=i.baseClass;return t===i&&r===n}function Be(e){ve(e.$$.ptrType.registeredClass.name+" instance already deleted")}var xe=!1;function Ue(e){}function ke(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function Te(e,t,r){if(t===r)return e;if(void 0===r.baseClass)return null;var i=Te(e,t,r.baseClass);return null===i?null:r.downcast(i)}var Ce={};function De(){return Object.keys(Re).length}function Pe(){var e=[];for(var t in Re)Re.hasOwnProperty(t)&&e.push(Re[t]);return e}var Fe=[];function Ie(){for(;Fe.length;){var e=Fe.pop();e.$$.deleteScheduled=!1,e.delete()}}var Le=void 0;function Me(e){Le=e,Fe.length&&Le&&Le(Ie)}var Re={};function ze(e,t){return t=function(e,t){for(void 0===t&&ve("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Re[t]}function Ne(e,t){return t.ptrType&&t.ptr||we("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!==!!t.smartPtr&&we("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Ge(Object.create(e,{$$:{value:t}}))}function Oe(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var r=ze(this.registeredClass,t);if(void 0!==r){if(0===r.$$.count.value)return r.$$.ptr=t,r.$$.smartPtr=e,r.clone();var i=r.clone();return this.destructor(e),i}function n(){return this.isSmartPointer?Ne(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Ne(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var o,s=this.registeredClass.getActualType(t),a=Ce[s];if(!a)return n.call(this);o=this.isConst?a.constPointerType:a.pointerType;var d=Te(t,this.registeredClass,o.registeredClass);return null===d?n.call(this):this.isSmartPointer?Ne(o.registeredClass.instancePrototype,{ptrType:o,ptr:d,smartPtrType:this,smartPtr:e}):Ne(o.registeredClass.instancePrototype,{ptrType:o,ptr:d})}function Ge(e){return"undefined"==typeof FinalizationRegistry?(Ge=e=>e,e):(xe=new FinalizationRegistry((e=>{ke(e.$$)})),Ge=e=>{var t=e.$$;if(!!t.smartPtr){var r={$$:t};xe.register(e,r,e)}return e},Ue=e=>xe.unregister(e),Ge(e))}function $e(){if(this.$$.ptr||Be(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e,t=Ge(Object.create(Object.getPrototypeOf(this),{$$:{value:(e=this.$$,{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType})}}));return t.$$.count.value+=1,t.$$.deleteScheduled=!1,t}function He(){this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Ue(this),ke(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function We(){return this.$$.ptr||Be(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&ve("Object already scheduled for deletion"),Fe.push(this),1===Fe.length&&Le&&Le(Ie),this.$$.deleteScheduled=!0,this}function je(){}function qe(e,t,r){if(void 0===e[t].overloadTable){var i=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||ve("Function '"+r+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[i.argCount]=i}}function Ye(e,t,r,i,n,o,s,a){this.name=e,this.constructor=t,this.instancePrototype=r,this.rawDestructor=i,this.baseClass=n,this.getActualType=o,this.upcast=s,this.downcast=a,this.pureVirtualFunctions=[]}function Ke(e,t,r){for(;t!==r;)t.upcast||ve("Expected null or instance of "+r.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Xe(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Ze(e,t){var r;if(null===t)return this.isReference&&ve("null is not a valid "+this.name),this.isSmartPointer?(r=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,r),r):0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;if(r=Ke(t.$$.ptr,i,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?r=t.$$.smartPtr:ve("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:r=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)r=t.$$.smartPtr;else{var n=t.clone();r=this.rawShare(r,bt.toHandle((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,r)}break;default:ve("Unsupporting sharing policy")}return r}function Je(e,t){if(null===t)return this.isReference&&ve("null is not a valid "+this.name),0;t.$$||ve('Cannot pass "'+wt(t)+'" as a '+this.name),t.$$.ptr||ve("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&ve("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;return Ke(t.$$.ptr,r,this.registeredClass)}function Qe(e){return this.fromWireType(U[e>>2])}function et(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function tt(e){this.rawDestructor&&this.rawDestructor(e)}function rt(e){null!==e&&e.delete()}function it(e,t,r,i,n,o,s,a,d,l,u){this.name=e,this.registeredClass=t,this.isReference=r,this.isConst=i,this.isSmartPointer=n,this.pointeeType=o,this.sharingPolicy=s,this.rawGetPointee=a,this.rawConstructor=d,this.rawShare=l,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=Ze:i?(this.toWireType=Xe,this.destructorFunction=null):(this.toWireType=Je,this.destructorFunction=null)}var nt=[];function ot(e){var t=nt[e];return t||(e>=nt.length&&(nt.length=e+1),nt[e]=t=D.get(e)),t}function st(e,r,i){return e.includes("j")?function(e,r,i){var n=t["dynCall_"+e];return i&&i.length?n.apply(null,[r].concat(i)):n.call(null,r)}(e,r,i):ot(r).apply(null,i)}function at(e,t){var r,i,n,o=(e=ce(e)).includes("j")?(r=e,i=t,n=[],function(){return n.length=0,Object.assign(n,arguments),st(r,i,n)}):ot(t);return"function"!=typeof o&&ve("unknown function pointer with signature "+e+": "+t),o}var dt=void 0;function lt(e){var t=$t(e),r=ce(t);return Ot(t),r}function ut(e,t){var r=[],i={};throw t.forEach((function e(t){i[t]||he[t]||(pe[t]?pe[t].forEach(e):(r.push(t),i[t]=!0))})),new dt(e+": "+r.map(lt).join([", "]))}function ct(e,t){for(var r=[],i=0;i>2]);return r}function ft(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function ht(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var r=_e(e.name||"unknownFunctionName",(function(){}));r.prototype=e.prototype;var i=new r,n=e.apply(i,t);return n instanceof Object?n:i}function pt(e,t,r,i,n){var o=t.length;o<2&&ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var s=null!==t[1]&&null!==r,a=!1,d=1;d0?", ":"")+c),f+=(l?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",a)f+="runDestructors(destructors);\n";else for(d=s?1:2;d4&&0==--_t[e].refcount&&(_t[e]=void 0,mt.push(e))}function yt(){for(var e=0,t=5;t<_t.length;++t)void 0!==_t[t]&&++e;return e}function vt(){for(var e=5;e<_t.length;++e)if(void 0!==_t[e])return _t[e];return null}var bt={toValue:e=>(e||ve("Cannot use deleted val. handle = "+e),_t[e].value),toHandle:e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=mt.length?mt.pop():_t.length;return _t[t]={refcount:1,value:e},t}}};function wt(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function St(e,t){switch(t){case 2:return function(e){return this.fromWireType(T[e>>2])};case 3:return function(e){return this.fromWireType(C[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Et(e,t,r){switch(t){case 0:return r?function(e){return E[e]}:function(e){return A[e]};case 1:return r?function(e){return B[e>>1]}:function(e){return x[e>>1]};case 2:return r?function(e){return U[e>>2]}:function(e){return k[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var At="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Bt(e,t){for(var r=e,i=r>>1,n=i+t/2;!(i>=n)&&x[i];)++i;if((r=i<<1)-e>32&&At)return At.decode(A.subarray(e,r));for(var o="",s=0;!(s>=t/2);++s){var a=B[e+2*s>>1];if(0==a)break;o+=String.fromCharCode(a)}return o}function xt(e,t,r){if(void 0===r&&(r=2147483647),r<2)return 0;for(var i=t,n=(r-=2)<2*e.length?r/2:e.length,o=0;o>1]=s,t+=2}return B[t>>1]=0,t-i}function Ut(e){return 2*e.length}function kt(e,t){for(var r=0,i="";!(r>=t/4);){var n=U[e+4*r>>2];if(0==n)break;if(++r,n>=65536){var o=n-65536;i+=String.fromCharCode(55296|o>>10,56320|1023&o)}else i+=String.fromCharCode(n)}return i}function Tt(e,t,r){if(void 0===r&&(r=2147483647),r<4)return 0;for(var i=t,n=i+r-4,o=0;o=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++o);if(U[t>>2]=s,(t+=4)+4>n)break}return U[t>>2]=0,t-i}function Ct(e){for(var t=0,r=0;r=55296&&i<=57343&&++r,t+=4}return t}var Dt={};var Pt=[];var Ft=[];var It={};function Lt(){if(!Lt.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:c||"./this.program"};for(var t in It)void 0===It[t]?delete e[t]:e[t]=It[t];var r=[];for(var t in e)r.push(t+"="+e[t]);Lt.strings=r}return Lt.strings}var Mt=function(e,t,r,i){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=ae.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=i},Rt=365,zt=146;Object.defineProperties(Mt.prototype,{read:{get:function(){return(this.mode&Rt)===Rt},set:function(e){e?this.mode|=Rt:this.mode&=-366}},write:{get:function(){return(this.mode&zt)===zt},set:function(e){e?this.mode|=zt:this.mode&=-147}},isFolder:{get:function(){return ae.isDir(this.mode)}},isDevice:{get:function(){return ae.isChrdev(this.mode)}}}),ae.FSNode=Mt,ae.staticInit(),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);ue=e}(),ye=t.BindingError=ge(Error,"BindingError"),be=t.InternalError=ge(Error,"InternalError"),je.prototype.isAliasOf=Ae,je.prototype.clone=$e,je.prototype.delete=He,je.prototype.isDeleted=Ve,je.prototype.deleteLater=We,t.getInheritedInstanceCount=De,t.getLiveInheritedInstances=Pe,t.flushPendingDeletes=Ie,t.setDelayFunction=Me,it.prototype.getPointee=et,it.prototype.destructor=tt,it.prototype.argPackAdvance=8,it.prototype.readValueFromPointer=Qe,it.prototype.deleteObject=rt,it.prototype.fromWireType=Oe,dt=t.UnboundTypeError=ge(Error,"UnboundTypeError"),t.count_emval_handles=yt,t.get_first_emval=vt;var Nt={q:function(e){return Vt(e+24)+24},p:function(e,t,r){throw new ee(e).init(t,r),e},C:function(e,t,r){de.varargs=r;try{var i=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:ae.createStream(i,n).fd;case 1:case 2:case 6:case 7:return 0;case 3:return i.flags;case 4:var n=de.get();return i.flags|=n,0;case 5:n=de.get();return B[n+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return o=28,U[Gt()>>2]=o,-1}}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return-e.errno}var o},w:function(e,t,r,i){de.varargs=i;try{t=de.getStr(t),t=de.calculateAt(e,t);var n=i?de.get():0;return ae.open(t,r,n).fd}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return-e.errno}},u:function(e,t,r,i,n){},E:function(e,t,r,i,n){var o=le(r);Ee(e,{name:t=ce(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:n},argPackAdvance:8,readValueFromPointer:function(e){var i;if(1===r)i=E;else if(2===r)i=B;else{if(4!==r)throw new TypeError("Unknown boolean type size: "+t);i=U}return this.fromWireType(i[e>>o])},destructorFunction:null})},t:function(e,r,i,n,o,s,a,d,l,u,c,f,h){c=ce(c),s=at(o,s),d&&(d=at(a,d)),u&&(u=at(l,u)),h=at(f,h);var p=me(c);!function(e,r,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].overloadTable&&void 0!==t[e].overloadTable[i])&&ve("Cannot register public name '"+e+"' twice"),qe(t,e,e),t.hasOwnProperty(i)&&ve("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].overloadTable[i]=r):(t[e]=r,void 0!==i&&(t[e].numArguments=i))}(p,(function(){ut("Cannot construct "+c+" due to unbound types",[n])})),Se([e,r,i],n?[n]:[],(function(r){var i,o;r=r[0],o=n?(i=r.registeredClass).instancePrototype:je.prototype;var a=_e(p,(function(){if(Object.getPrototypeOf(this)!==l)throw new ye("Use 'new' to construct "+c);if(void 0===f.constructor_body)throw new ye(c+" has no accessible constructor");var e=f.constructor_body[arguments.length];if(void 0===e)throw new ye("Tried to invoke ctor of "+c+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(f.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(o,{constructor:{value:a}});a.prototype=l;var f=new Ye(c,a,l,h,i,s,d,u),m=new it(c,f,!0,!1,!1),_=new it(c+"*",f,!1,!1,!1),g=new it(c+" const*",f,!1,!0,!1);return Ce[e]={pointerType:_,constPointerType:g},function(e,r,i){t.hasOwnProperty(e)||we("Replacing nonexistant public symbol"),void 0!==t[e].overloadTable&&void 0!==i?t[e].overloadTable[i]=r:(t[e]=r,t[e].argCount=i)}(p,a),[m,_,g]}))},r:function(e,t,r,i,n,o){w(t>0);var s=ct(t,r);n=at(i,n),Se([],[e],(function(e){var r="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new ye("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=()=>{ut("Cannot construct "+e.name+" due to unbound types",s)},Se([],s,(function(i){return i.splice(1,0,null),e.registeredClass.constructor_body[t-1]=pt(r,i,null,n,o),[]})),[]}))},d:function(e,t,r,i,n,o,s,a){var d=ct(r,i);t=ce(t),o=at(n,o),Se([],[e],(function(e){var i=(e=e[0]).name+"."+t;function n(){ut("Cannot call "+i+" due to unbound types",d)}t.startsWith("@@")&&(t=Symbol[t.substring(2)]),a&&e.registeredClass.pureVirtualFunctions.push(t);var l=e.registeredClass.instancePrototype,u=l[t];return void 0===u||void 0===u.overloadTable&&u.className!==e.name&&u.argCount===r-2?(n.argCount=r-2,n.className=e.name,l[t]=n):(qe(l,t,i),l[t].overloadTable[r-2]=n),Se([],d,(function(n){var a=pt(i,n,e,o,s);return void 0===l[t].overloadTable?(a.argCount=r-2,l[t]=a):l[t].overloadTable[r-2]=a,[]})),[]}))},D:function(e,t){Ee(e,{name:t=ce(t),fromWireType:function(e){var t=bt.toValue(e);return gt(e),t},toWireType:function(e,t){return bt.toHandle(t)},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:null})},n:function(e,t,r){var i=le(r);Ee(e,{name:t=ce(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:St(t,i),destructorFunction:null})},c:function(e,t,r,i,n){t=ce(t);var o=le(r),s=e=>e;if(0===i){var a=32-8*r;s=e=>e<>>a}var d=t.includes("unsigned");Ee(e,{name:t,fromWireType:s,toWireType:d?function(e,t){return this.name,t>>>0}:function(e,t){return this.name,t},argPackAdvance:8,readValueFromPointer:Et(t,o,0!==i),destructorFunction:null})},b:function(e,t,r){var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=k,r=t[e>>=2],n=t[e+1];return new i(S,n,r)}Ee(e,{name:r=ce(r),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},m:function(e,t){var r="std::string"===(t=ce(t));Ee(e,{name:t,fromWireType:function(e){var t,i=k[e>>2],n=e+4;if(r)for(var o=n,s=0;s<=i;++s){var a=n+s;if(s==i||0==A[a]){var d=I(o,a-o);void 0===t?t=d:(t+=String.fromCharCode(0),t+=d),o=a+1}}else{var l=new Array(i);for(s=0;s>2]=i,r&&n)L(t,A,s,i+1);else if(n)for(var a=0;a255&&(Ot(s),ve("String has UTF-16 code units that do not fit in 8 bits")),A[s+a]=d}else for(a=0;ax,a=1):4===t&&(i=kt,n=Tt,s=Ct,o=()=>k,a=2),Ee(e,{name:r,fromWireType:function(e){for(var r,n=k[e>>2],s=o(),d=e+4,l=0;l<=n;++l){var u=e+4+l*t;if(l==n||0==s[u>>a]){var c=i(d,u-d);void 0===r?r=c:(r+=String.fromCharCode(0),r+=c),d=u+t}}return Ot(e),r},toWireType:function(e,i){"string"!=typeof i&&ve("Cannot pass non-string to C++ string type "+r);var o=s(i),d=Vt(4+o+t);return k[d>>2]=o>>a,n(i,d+4,o+t),null!==e&&e.push(Ot,d),d},argPackAdvance:8,readValueFromPointer:Qe,destructorFunction:function(e){Ot(e)}})},o:function(e,t){Ee(e,{isVoid:!0,name:t=ce(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},f:function(){return Date.now()},g:function(e,t,r,i){var n,o;(e=Pt[e])(t=bt.toValue(t),r=void 0===(o=Dt[n=r])?ce(n):o,null,i)},j:gt,i:function(e,t){var r=function(e,t){for(var r,i,n,o=new Array(e),s=0;s>2],i="parameter "+s,n=void 0,void 0===(n=he[r])&&ve(i+" has unknown type "+lt(r)),n);return o}(e,t),i=r[0],n=i.name+"_$"+r.slice(1).map((function(e){return e.name})).join("_")+"$",o=Ft[n];if(void 0!==o)return o;for(var s=["retType"],a=[i],d="",l=0;l>2]=o,function(e,t,r){for(var i=0;i>0]=e.charCodeAt(i);r||(E[t>>0]=0)}(i,o),r+=i.length+1})),0},z:function(e,t){var r=Lt();k[e>>2]=r.length;var i=0;return r.forEach((function(e){i+=e.length+1})),k[t>>2]=i,0},l:function(e){try{var t=de.getStreamFromFD(e);return ae.close(t),0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},x:function(e,t){try{var r=de.getStreamFromFD(e),i=r.tty?2:ae.isDir(r.mode)?3:ae.isLink(r.mode)?7:4;return E[t>>0]=i,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},B:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=k[t+4>>2];t+=8;var d=ae.read(e,E,s,a,i);if(d<0)return-1;if(n+=d,d>2]=n,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},s:function(e,t,r,i,n){try{var o=(d=r)+2097152>>>0<4194305-!!(a=t)?(a>>>0)+4294967296*d:NaN;if(isNaN(o))return 61;var s=de.getStreamFromFD(e);return ae.llseek(s,o,i),Y=[s.position>>>0,(q=s.position,+Math.abs(q)>=1?q>0?(0|Math.min(+Math.floor(q/4294967296),4294967295))>>>0:~~+Math.ceil((q-+(~~q>>>0))/4294967296)>>>0:0)],U[n>>2]=Y[0],U[n+4>>2]=Y[1],s.getdents&&0===o&&0===i&&(s.getdents=null),0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}var a,d},k:function(e,t,r,i){try{var n=function(e,t,r,i){for(var n=0,o=0;o>2],a=k[t+4>>2];t+=8;var d=ae.write(e,E,s,a,i);if(d<0)return-1;n+=d}return n}(de.getStreamFromFD(e),t,r);return k[i>>2]=n,0}catch(e){if(void 0===ae||!(e instanceof ae.ErrnoError))throw e;return e.errno}},e:function(e){}};!function(){var e={a:Nt};function r(e,r){var i,n,o=e.exports;t.asm=o,v=t.asm.F,i=v.buffer,S=i,t.HEAP8=E=new Int8Array(i),t.HEAP16=B=new Int16Array(i),t.HEAP32=U=new Int32Array(i),t.HEAPU8=A=new Uint8Array(i),t.HEAPU16=x=new Uint16Array(i),t.HEAPU32=k=new Uint32Array(i),t.HEAPF32=T=new Float32Array(i),t.HEAPF64=C=new Float64Array(i),D=t.asm.I,n=t.asm.G,z.unshift(n),H()}function n(e){r(e.instance)}function s(t){return function(){if(!y&&(f||h)){if("function"==typeof fetch&&!X(W))return fetch(W,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+W+"'";return e.arrayBuffer()})).catch((function(){return Z(W)}));if(o)return new Promise((function(e,t){o(W,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return Z(W)}))}().then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){g("failed to asynchronously prepare wasm: "+e),V(e)}))}if($(),t.instantiateWasm)try{return t.instantiateWasm(e,r)}catch(e){return g("Module.instantiateWasm callback failed with error: "+e),!1}(y||"function"!=typeof WebAssembly.instantiateStreaming||K(W)||X(W)||p||"function"!=typeof fetch?s(n):fetch(W,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){return g("wasm streaming compile failed: "+e),g("falling back to ArrayBuffer instantiation"),s(n)}))}))).catch(i)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.G).apply(null,arguments)};var Ot=t._free=function(){return(Ot=t._free=t.asm.H).apply(null,arguments)},Gt=t.___errno_location=function(){return(Gt=t.___errno_location=t.asm.J).apply(null,arguments)},$t=t.___getTypeName=function(){return($t=t.___getTypeName=t.asm.K).apply(null,arguments)};t.___embind_register_native_and_builtin_types=function(){return(t.___embind_register_native_and_builtin_types=t.asm.L).apply(null,arguments)};var Ht,Vt=t._malloc=function(){return(Vt=t._malloc=t.asm.M).apply(null,arguments)},Wt=t._emscripten_builtin_memalign=function(){return(Wt=t._emscripten_builtin_memalign=t.asm.N).apply(null,arguments)},jt=t.___cxa_is_pointer_type=function(){return(jt=t.___cxa_is_pointer_type=t.asm.O).apply(null,arguments)};function qt(e){function i(){Ht||(Ht=!0,t.calledRun=!0,b||(t.noFSInit||ae.init.initialized||ae.init(),ae.ignorePermissions=!1,Q(z),r(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),function(){if(t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;)e=t.postRun.shift(),N.unshift(e);var e;Q(N)}()))}O>0||(!function(){if(t.preRun)for("function"==typeof t.preRun&&(t.preRun=[t.preRun]);t.preRun.length;)e=t.preRun.shift(),R.unshift(e);var e;Q(R)}(),O>0||(t.setStatus?(t.setStatus("Running..."),setTimeout((function(){setTimeout((function(){t.setStatus("")}),1),i()}),1)):i()))}if(t.dynCall_viiijj=function(){return(t.dynCall_viiijj=t.asm.P).apply(null,arguments)},t.dynCall_jij=function(){return(t.dynCall_jij=t.asm.Q).apply(null,arguments)},t.dynCall_jii=function(){return(t.dynCall_jii=t.asm.R).apply(null,arguments)},t.dynCall_jiji=function(){return(t.dynCall_jiji=t.asm.S).apply(null,arguments)},G=function e(){Ht||qt(),Ht||(G=e)},t.preInit)for("function"==typeof t.preInit&&(t.preInit=[t.preInit]);t.preInit.length>0;)t.preInit.pop()();return qt(),t.ready}})(),a=1e-6,d="undefined"!=typeof Float32Array?Float32Array:Array;function l(){var e=new d(16);return d!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function u(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var c,f=function(e,t,r,i,n,o,s){var a=1/(t-r),d=1/(i-n),l=1/(o-s);return e[0]=-2*a,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*d,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+r)*a,e[13]=(n+i)*d,e[14]=(s+o)*l,e[15]=1,e};function h(e,t,r){var i=new d(3);return i[0]=e,i[1]=t,i[2]=r,i}c=new d(3),d!=Float32Array&&(c[0]=0,c[1]=0,c[2]=0);var p=(e,t)=>{t&&e.pixelStorei(e.UNPACK_ALIGNMENT,1);const r=function(){const t=m(e.VERTEX_SHADER,"\n attribute vec4 aVertexPosition;\n attribute vec2 aTexturePosition;\n uniform mat4 uModelMatrix;\n uniform mat4 uViewMatrix;\n uniform mat4 uProjectionMatrix;\n varying lowp vec2 vTexturePosition;\n void main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n vTexturePosition = aTexturePosition;\n }\n "),r=m(e.FRAGMENT_SHADER,"\n precision highp float;\n varying highp vec2 vTexturePosition;\n uniform int isyuv;\n uniform sampler2D rgbaTexture;\n uniform sampler2D yTexture;\n uniform sampler2D uTexture;\n uniform sampler2D vTexture;\n\n const mat4 YUV2RGB = mat4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n\n void main(void) {\n\n if (isyuv>0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=e.createProgram();if(e.attachShader(i,t),e.attachShader(i,r),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))return console.log("Unable to initialize the shader program: "+e.getProgramInfoLog(i)),null;return i}();let i={program:r,attribLocations:{vertexPosition:e.getAttribLocation(r,"aVertexPosition"),texturePosition:e.getAttribLocation(r,"aTexturePosition")},uniformLocations:{projectionMatrix:e.getUniformLocation(r,"uProjectionMatrix"),modelMatrix:e.getUniformLocation(r,"uModelMatrix"),viewMatrix:e.getUniformLocation(r,"uViewMatrix"),rgbatexture:e.getUniformLocation(r,"rgbaTexture"),ytexture:e.getUniformLocation(r,"yTexture"),utexture:e.getUniformLocation(r,"uTexture"),vtexture:e.getUniformLocation(r,"vTexture"),isyuv:e.getUniformLocation(r,"isyuv")}},n=function(){const t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),e.STATIC_DRAW);var r=[];r=r.concat([0,1],[1,1],[1,0],[0,0]);const i=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,i),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW);const n=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{position:t,texPosition:i,indices:n}}(),o=p(),s=p(),d=p(),c=p();function p(){let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t}function m(t,r){const i=e.createShader(t);return e.shaderSource(i,r),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(console.log("An error occurred compiling the shaders: "+e.getShaderInfoLog(i)),e.deleteShader(i),null)}function _(t,r){e.viewport(0,0,t,r),e.clearColor(0,0,0,0),e.clearDepth(1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT);const o=l();f(o,-1,1,-1,1,.1,100);const p=l();u(p);const m=l();!function(e,t,r,i){var n,o,s,d,l,c,f,h,p,m,_=t[0],g=t[1],y=t[2],v=i[0],b=i[1],w=i[2],S=r[0],E=r[1],A=r[2];Math.abs(_-S)32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 r=e-this._current_word_bits_left;this._fillCurrentWord();let i=Math.min(r,this._current_word_bits_left),n=this._current_word>>>32-i;return this._current_word<<=i,this._current_word_bits_left-=i,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)}}const $t=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Ht=$t,Vt=$t;function Wt(e){let{profile:t,sampleRate:r,channel:i}=e;return new Uint8Array([175,0,t<<3|(14&r)>>1,(1&r)<<7|i<<3])}function jt(e){return qt(e)&&e[1]===xt}function qt(e){return e[0]>>4===ze}const Yt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];function Kt(e){let t=new Uint8Array(e),r=null,i=0,n=0,o=0,s=null;if(i=n=t[0]>>>3,o=(7&t[0])<<1|t[1]>>>7,o<0||o>=Yt.length)return void console.error("Flv: AAC invalid sampling frequency index!");let a=Yt[o],d=(120&t[1])>>>3;if(d<0||d>=8)return void console.log("Flv: AAC invalid channel configuration");5===i&&(s=(7&t[1])<<1|t[2]>>>7,t[2]);let l=self.navigator.userAgent.toLowerCase();return-1!==l.indexOf("firefox")?o>=6?(i=5,r=new Array(4),s=o-3):(i=2,r=new Array(2),s=o):-1!==l.indexOf("android")?(i=2,r=new Array(2),s=o):(i=5,s=o,r=new Array(4),o>=6?s=o-3:1===d&&(i=2,r=new Array(2),s=o)),r[0]=i<<3,r[0]|=(15&o)>>>1,r[1]=(15&o)<<7,r[1]|=(15&d)<<3,5===i&&(r[1]|=(15&s)>>>1,r[2]=(1&s)<<7,r[2]|=8,r[3]=0),{audioType:"aac",config:r,sampleRate:a,channelCount:d,objectType:i,codec:"mp4a.40."+i,originalCodec:"mp4a.40."+n}}class Xt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+7>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(4095===(r[t+0]<<8|r[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let r=this.current_syncword_offset_,i=(8&e[r+1])>>>3,n=(6&e[r+1])>>>1,o=1&e[r+1],s=(192&e[r+2])>>>6,a=(60&e[r+2])>>>2,d=(1&e[r+2])<<2|(192&e[r+3])>>>6,l=(3&e[r+3])<<11|e[r+4]<<3|(224&e[r+5])>>>5;if(e[r+6],r+l>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let u=1===o?7:9,c=l-u;r+=u;let f=this.findNextSyncwordOffset(r+c);if(this.current_syncword_offset_=f,0!==i&&1!==i||0!==n)continue;let h=e.subarray(r,r+c);t={},t.audio_object_type=s+1,t.sampling_freq_index=a,t.sampling_frequency=Ht[a],t.channel_config=d,t.data=h}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Zt{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,r=this.data_;for(;;){if(t+1>=r.byteLength)return this.eof_flag_=!0,r.byteLength;if(695===(r[t+0]<<3|r[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),r=0;for(let i=0;i<=t;i++)r<<=8,r|=e.readByte();return r}readNextAACFrame(e){let t=this.data_,r=null;for(;null==r&&!this.eof_flag_;){let i=this.current_syncword_offset_,n=(31&t[i+1])<<8|t[i+2];if(i+3+n>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let o=new Gt(t.subarray(i+3,i+3+n)),s=null;if(o.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(i+3+n),o.destroy();continue}s=e}else{let e=o.readBool();if(e&&o.readBool()){console.error("audioMuxVersionA is Not Supported"),o.destroy();break}if(e&&this.getLATMValue(o),!o.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),o.destroy();break}if(0!==o.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),o.destroy();break}if(0!==o.readBits(4)){console.error("more than 2 numProgram Not Supported"),o.destroy();break}if(0!==o.readBits(3)){console.error("more than 2 numLayer Not Supported"),o.destroy();break}let t=e?this.getLATMValue(o):0,r=o.readBits(5);t-=5;let i=o.readBits(4);t-=4;let n=o.readBits(4);t-=4,o.readBits(3),t-=3,t>0&&o.readBits(t);let a=o.readBits(3);if(0!==a){console.error(`frameLengthType = ${a}. Only frameLengthType = 0 Supported`),o.destroy();break}o.readByte();let d=o.readBool();if(d)if(e)this.getLATMValue(o);else{let e=0;for(;;){e<<=8;let t=o.readBool();if(e+=o.readByte(),!t)break}console.log(e)}o.readBool()&&o.readByte(),s={},s.audio_object_type=r,s.sampling_freq_index=i,s.sampling_frequency=Ht[s.sampling_freq_index],s.channel_config=n,s.other_data_present=d}let a=0;for(;;){let e=o.readByte();if(a+=e,255!==e)break}let d=new Uint8Array(a);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function Qt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const r=e.length,i=[];let n,o=0;for(;o+t>>=8),o+=t,n){if(o+n>r)break;i.push(e.subarray(o,o+n)),o+=n}return i}function er(e){const t=e.byteLength,r=new Uint8Array(4);r[0]=t>>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t;const i=new Uint8Array(t+4);return i.set(r,0),i.set(e,4),i}function tr(e,t){let r=null;return t?e.length>=28&&(r=1+(3&e[26])):e.length>=12&&(r=1+(3&e[9])),r}function rr(){return(new Date).getTime()}function ir(e,t,r){return Math.max(Math.min(e,Math.max(t,r)),Math.min(t,r))}function nr(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function or(e){let t=0,r=nr();return i=>{if(n=i,"[object Number]"!==Object.prototype.toString.call(n))return;var n;t+=i;const o=nr(),s=o-r;s>=1e3&&(e(t/s*1e3),r=o,t=0)}}function sr(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function ar(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ft)||self.MediaSource.isTypeSupported(ht)||self.MediaSource.isTypeSupported(pt)||self.MediaSource.isTypeSupported(mt)||self.MediaSource.isTypeSupported(_t))&&(e=!0),e}function dr(e){return null==e}function lr(e){return!dr(e)}function ur(e){return"function"==typeof e}function cr(e){let t=null,r=31&e[0];return r!==$e&&r!==He||(t=Me),t||(r=(126&e[0])>>1,r!==et&&r!==rt&&r!==nt||(t=Re)),t}function fr(){return"undefined"!=typeof WritableStream}function hr(e){e.close()}function pr(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let r=e[0],i=null,n=1;if(e.length>0){let t=e[1];t&&t.ts-r.ts>1e5&&(r=t,n=2)}if(r)for(let o=n;o=1e3){e[o-1].ts-r.ts<1e3&&(i=o+1)}}}return i}function mr(e){return e.ok&&e.status>=200&&e.status<=299}function _r(){return function(e){let t="";if("object"==typeof e)try{t=JSON.stringify(e),t=JSON.parse(t)}catch(r){t=e}else t=e;return t}(U)}function gr(e){return e[0]>>4===Ut&&e[1]===xt}function yr(e){return!0===e||"true"===e}function vr(e){return!0!==e&&"true"!==e}function br(){return!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker)}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();var wr=function(e,t,r,i){return new(r||(r=Promise))((function(n,o){function s(e){try{d(i.next(e))}catch(e){o(e)}}function a(e){try{d(i.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,a)}d((i=i.apply(e,t||[])).next())}))};const Sr=Symbol(32),Er=Symbol(16),Ar=Symbol(8);class Br{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return wr(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,r)=>{var i;this.reject=r,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(i=this.pull)||void 0===i||i.call(this,e)}))}))}readU32(){return this.read(Sr)}readU16(){return this.read(Er)}readU8(){return this.read(Ar)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let r=0;const i=e=>t.length<(r=e);if("number"==typeof this.need){if(i(this.need))return;e=t.subarray(0,r)}else if(this.need===Sr){if(i(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Er){if(i(2))return;e=t[0]<<8|t[1]}else if(this.need===Ar){if(i(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(i(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,r)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(i(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,r)),e=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,r=t+e;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{const e=new Uint8Array(r);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,r)}return this.buffer=new Uint8Array(e),this.buffer}}Br.U32=Sr,Br.U16=Er,Br.U8=Ar;class xr{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==S){const o=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n1?r-1:0),n=1;n1?i-1:0),o=1;o=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseSPS(e){let t=Ur._ebsp2rbsp(e),r=new Gt(t);r.readByte();let i=r.readByte();r.readByte();let n=r.readByte();r.readUEG();let o=Ur.getProfileString(i),s=Ur.getLevelString(n),a=1,d=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=r.readUEG(),3===a&&r.readBits(1),a<=3&&(d=l[a]),u=r.readUEG()+8,r.readUEG(),r.readBits(1),r.readBool())){let e=3!==a?8:12;for(let t=0;t0&&e<16?(b=t[e-1],w=i[e-1]):255===e&&(b=r.readByte()<<8|r.readByte(),w=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);E=r.readBool(),A=t,B=2*e,S=A/B}}let x=1;1===b&&1===w||(x=b/w);let U=0,k=0;if(0===a)U=1,k=2-m;else{U=3===a?1:2,k=(1===a?2:1)*(2-m)}let T=16*(h+1),C=16*(p+1)*(2-m);T-=(_+g)*U,C-=(y+v)*k;let D=Math.ceil(T*x);return r.destroy(),r=null,{profile_string:o,level_string:s,bit_depth:u,ref_frames:f,chroma_format:d,chroma_format_string:Ur.getChromaFormatString(d),frame_rate:{fixed:E,fps:S,fps_den:B,fps_num:A},sar_ratio:{width:b,height:w},codec_size:{width:T,height:C},present_size:{width:D,height:C}}}static parseSPS$2(e){let t=e.subarray(1,4),r="avc1.";for(let e=0;e<3;e++){let i=t[e].toString(16);i.length<2&&(i="0"+i),r+=i}let i=Ur._ebsp2rbsp(e),n=new Gt(i);n.readByte();let o=n.readByte();n.readByte();let s=n.readByte();n.readUEG();let a=Ur.getProfileString(o),d=Ur.getLevelString(s),l=1,u=420,c=[0,420,422,444],f=8,h=8;if((100===o||110===o||122===o||244===o||44===o||83===o||86===o||118===o||128===o||138===o||144===o)&&(l=n.readUEG(),3===l&&n.readBits(1),l<=3&&(u=c[l]),f=n.readUEG()+8,h=n.readUEG()+8,n.readBits(1),n.readBool())){let e=3!==l?8:12;for(let t=0;t0&&e<16?(E=t[e-1],A=r[e-1]):255===e&&(E=n.readByte()<<8|n.readByte(),A=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){let e=n.readBits(32),t=n.readBits(32);x=n.readBool(),U=t,k=2*e,B=U/k}}let T=1;1===E&&1===A||(T=E/A);let C=0,D=0;if(0===l)C=1,D=2-y;else{C=3===l?1:2,D=(1===l?2:1)*(2-y)}let P=16*(_+1),F=16*(g+1)*(2-y);P-=(v+b)*C,F-=(w+S)*D;let I=Math.ceil(P*T);return n.destroy(),n=null,{codec_mimetype:r,profile_idc:o,level_idc:s,profile_string:a,level_string:d,chroma_format_idc:l,bit_depth:f,bit_depth_luma:f,bit_depth_chroma:h,ref_frames:m,chroma_format:u,chroma_format_string:Ur.getChromaFormatString(u),frame_rate:{fixed:x,fps:B,fps_den:k,fps_num:U},sar_ratio:{width:E,height:A},codec_size:{width:P,height:F},present_size:{width:I,height:F}}}static _skipScalingList(e,t){let r=8,i=8,n=0;for(let o=0;o=this.buflen)return this.iserro=!0,0;this.iserro=!1,r=this.bufoff+e>8?8-this.bufoff:e,t<<=r,t+=this.buffer[this.bufpos]>>8-this.bufoff-r&255>>8-r,this.bufoff+=r,e-=r,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,r=this.bufoff,i=this.read(e);return this.bufpos=t,this.bufoff=r,i}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.sps,4),t.sps=i}if(t.pps){const e=t.pps.byteLength,r=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),i=new Uint8Array(e+4);i.set(r,0),i.set(t.pps,4),t.pps=i}return t}function Cr(e){let{sps:t,pps:r}=e;const i=[23,0,0,0,0,1,66,0,30,255];i[0]=23,i[6]=t[1],i[7]=t[2],i[8]=t[3],i[10]=225,i[11]=t.byteLength>>8&255,i[12]=255&t.byteLength,i.push(...t,1,r.byteLength>>8&255,255&r.byteLength,...r);return new Uint8Array(i)}function Dr(e){let{sps:t,pps:r}=e,i=8+t.byteLength+1+2+r.byteLength,n=!1;const o=Ur.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(n=!0,i+=4);let s=new Uint8Array(i);s[0]=1,s[1]=t[1],s[2]=t[2],s[3]=t[3],s[4]=255,s[5]=225;let a=t.byteLength;s[6]=a>>>8,s[7]=255&a;let d=8;s.set(t,8),d+=a,s[d]=1;let l=r.byteLength;s[d+1]=l>>>8,s[d+2]=255&l,s.set(r,d+3),d+=3+l,n&&(s[d]=252|o.chroma_format_idc,s[d+1]=248|o.bit_depth_luma-8,s[d+2]=248|o.bit_depth_chroma-8,s[d+3]=0,d+=4);const u=[23,0,0,0,0],c=new Uint8Array(u.length+s.byteLength);return c.set(u,0),c.set(s,u.length),c}function Pr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Fr(e,t){let r=[];r[0]=t?23:39,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Ir(e){return 31&e[0]}function Lr(e){return e===qe}function Mr(e){return!function(e){return e===$e||e===He}(e)&&!Lr(e)}function Rr(e){return e===Ve}function zr(e){if(0===e.length)return!1;const t=Ir(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=31&e[r],n=(128&e[r])>>>7,o=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=o,i>=Xe||0===n&&(t={type:i,data:e.subarray(r,o)})}return t}}class Or{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Gr=e=>{let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)},$r=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Hr{static _ebsp2rbsp(e){let t=e,r=t.byteLength,i=new Uint8Array(r),n=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(i[n]=t[e],n++);return new Uint8Array(i.buffer,0,n)}static parseVPS(e){let t=Hr._ebsp2rbsp(e),r=new Gt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}}static parseSPS(e){let t=Hr._ebsp2rbsp(e),r=new Gt(t);r.readByte(),r.readByte();let i=0,n=0,o=0,s=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),c=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<=16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()){r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())}if(r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(r.readUEG(),r.readUEG(),r.readUEG(),r.readUEG()),r.readBool()){if(R=r.readBits(32),z=r.readBits(32),r.readBool()&&r.readUEG(),r.readBool()){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let o=!0,s=1;n||(o=r.readBool());let a=!1;if(o?r.readUEG():a=r.readBool(),a||(s=r.readUEG()+1),e){for(let e=0;e>6&3,r.general_tier_flag=e[1]>>5&1,r.general_profile_idc=31&e[1],r.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],r.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],r.general_constraint_indicator_flags=r.general_constraint_indicator_flags<<16|e[10]<<8|e[11],r.general_level_idc=e[12],r.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],r.parallelismType=3&e[15],r.chromaFormat=3&e[16],r.bitDepthLumaMinus8=7&e[17],r.bitDepthChromaMinus8=7&e[18],r.avgFrameRate=e[19]<<8|e[20],r.constantFrameRate=e[21]>>6&3,r.numTemporalLayers=e[21]>>3&7,r.temporalIdNested=e[21]>>2&1,r.lengthSizeMinusOne=3&e[21];let i=e[22],n=e.slice(23);for(let e=0;e0)for(let t=r;t<8;t++)e.read(2);i.sub_layer_profile_space=[],i.sub_layer_tier_flag=[],i.sub_layer_profile_idc=[],i.sub_layer_profile_compatibility_flag=[],i.sub_layer_progressive_source_flag=[],i.sub_layer_interlaced_source_flag=[],i.sub_layer_non_packed_constraint_flag=[],i.sub_layer_frame_only_constraint_flag=[],i.sub_layer_level_idc=[];for(let t=0;t{let t=Gr(e),r=new Gt(t);return r.readByte(),r.readByte(),r.readBits(4),r.readBits(2),r.readBits(6),{num_temporal_layers:r.readBits(3)+1,temporal_id_nested:r.readBool()}})(t),s=(e=>{let t=Gr(e),r=new Gt(t);r.readByte(),r.readByte();let i=0,n=0,o=0,s=0;r.readBits(4);let a=r.readBits(3);r.readBool();let d=r.readBits(2),l=r.readBool(),u=r.readBits(5),c=r.readByte(),f=r.readByte(),h=r.readByte(),p=r.readByte(),m=r.readByte(),_=r.readByte(),g=r.readByte(),y=r.readByte(),v=r.readByte(),b=r.readByte(),w=r.readByte(),S=[],E=[];for(let e=0;e0)for(let e=a;e<8;e++)r.readBits(2);for(let e=0;e1&&r.readSEG();for(let e=0;e0&&e<16?(I=t[e-1],L=i[e-1]):255===e&&(I=r.readBits(16),L=r.readBits(16))}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(3),r.readBool(),r.readBool()&&(r.readByte(),r.readByte(),r.readByte())),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool(),r.readBool(),r.readBool(),P=r.readBool(),P&&(i+=r.readUEG(),n+=r.readUEG(),o+=r.readUEG(),s+=r.readUEG()),r.readBool()&&(R=r.readBits(32),z=r.readBits(32),r.readBool()&&(r.readUEG(),r.readBool()))){let e=!1,t=!1,i=!1;e=r.readBool(),t=r.readBool(),(e||t)&&(i=r.readBool(),i&&(r.readByte(),r.readBits(5),r.readBool(),r.readBits(5)),r.readBits(4),r.readBits(4),i&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let n=0;n<=a;n++){let n=r.readBool();M=n;let o=!1,s=1;n||(o=r.readBool());let a=!1;if(o?r.readSEG():a=r.readBool(),a||(cpbcnt=r.readUEG()+1),e)for(let e=0;e{let t=Gr(e),r=new Gt(t);r.readByte(),r.readByte(),r.readUEG(),r.readUEG(),r.readBool(),r.readBool(),r.readBits(3),r.readBool(),r.readBool(),r.readUEG(),r.readUEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool()&&r.readUEG(),r.readSEG(),r.readSEG(),r.readBool(),r.readBool(),r.readBool(),r.readBool();let i=r.readBool(),n=r.readBool(),o=1;return n&&i?o=0:n?o=3:i&&(o=2),{parallelismType:o}})(r);n=Object.assign(n,o,s,a);let d=23+(5+t.byteLength)+(5+i.byteLength)+(5+r.byteLength),l=new Uint8Array(d);l[0]=1,l[1]=(3&n.general_profile_space)<<6|(n.general_tier_flag?1:0)<<5|31&n.general_profile_idc,l[2]=n.general_profile_compatibility_flags_1||0,l[3]=n.general_profile_compatibility_flags_2||0,l[4]=n.general_profile_compatibility_flags_3||0,l[5]=n.general_profile_compatibility_flags_4||0,l[6]=n.general_constraint_indicator_flags_1||0,l[7]=n.general_constraint_indicator_flags_2||0,l[8]=n.general_constraint_indicator_flags_3||0,l[9]=n.general_constraint_indicator_flags_4||0,l[10]=n.general_constraint_indicator_flags_5||0,l[11]=n.general_constraint_indicator_flags_6||0,l[12]=60,l[13]=240|(3840&n.min_spatial_segmentation_idc)>>8,l[14]=255&n.min_spatial_segmentation_idc,l[15]=252|3&n.parallelismType,l[16]=252|3&n.chroma_format_idc,l[17]=248|7&n.bit_depth_luma_minus8,l[18]=248|7&n.bit_depth_chroma_minus8,l[19]=0,l[20]=0,l[21]=(3&n.constant_frame_rate)<<6|(7&n.num_temporal_layers)<<3|(n.temporal_id_nested?1:0)<<2|3,l[22]=3,l[23]=128|et,l[24]=0,l[25]=1,l[26]=(65280&t.byteLength)>>8,l[27]=(255&t.byteLength)>>0,l.set(t,28),l[23+(5+t.byteLength)+0]=128|rt,l[23+(5+t.byteLength)+1]=0,l[23+(5+t.byteLength)+2]=1,l[23+(5+t.byteLength)+3]=(65280&i.byteLength)>>8,l[23+(5+t.byteLength)+4]=(255&i.byteLength)>>0,l.set(i,23+(5+t.byteLength)+5),l[23+(5+t.byteLength+5+i.byteLength)+0]=128|nt,l[23+(5+t.byteLength+5+i.byteLength)+1]=0,l[23+(5+t.byteLength+5+i.byteLength)+2]=1,l[23+(5+t.byteLength+5+i.byteLength)+3]=(65280&r.byteLength)>>8,l[23+(5+t.byteLength+5+i.byteLength)+4]=(255&r.byteLength)>>0,l.set(r,23+(5+t.byteLength+5+i.byteLength)+5);const u=[28,0,0,0,0],c=new Uint8Array(u.length+l.byteLength);return c.set(u,0),c.set(l,u.length),c}function Yr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0,r[5]=e.byteLength>>24&255,r[6]=e.byteLength>>16&255,r[7]=e.byteLength>>8&255,r[8]=255&e.byteLength;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Kr(e,t){let r=[];r[0]=t?28:44,r[1]=1,r[2]=0,r[3]=0,r[4]=0;const i=new Uint8Array(r.length+e.byteLength);return i.set(r,0),i.set(e,r.length),i}function Xr(e){return(126&e[0])>>1}function Zr(e){return e===st}function Jr(e){return!function(e){return e>=32&&e<=40}(e)}function Qr(e){return e>=16&&e<=21}function ei(e){if(0===e.length)return!1;const t=Xr(e[0]);for(let r=1;r=r.byteLength)return this.eofFlag=!0,r.byteLength;let e=r[t+0]<<24|r[t+1]<<16|r[t+2]<<8|r[t+3],i=r[t+0]<<16|r[t+1]<<8|r[t+2];if(1===e||1===i)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let r=this.currentStartcodeOffset;r+=1===(e[r]<<24|e[r+1]<<16|e[r+2]<<8|e[r+3])?4:3;let i=e[r]>>1&63,n=(128&e[r])>>>7,o=this.findNextStartCodeOffset(r);this.currentStartcodeOffset=o,0===n&&(t={type:i,data:e.subarray(r,o)})}return t}}class ri{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}function ii(e){return parseInt(e)===e}function ni(e){if(!ii(e.length))return!1;for(var t=0;t255)return!1;return!0}function oi(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!ni(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(ii(e.length)&&ni(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function si(e){return new Uint8Array(e)}function ai(e,t,r,i,n){null==i&&null==n||(e=e.slice?e.slice(i,n):Array.prototype.slice.call(e,i,n)),t.set(e,r)}var di,li={toBytes:function(e){var t=[],r=0;for(e=encodeURI(e);r191&&i<224?(t.push(String.fromCharCode((31&i)<<6|63&e[r+1])),r+=2):(t.push(String.fromCharCode((15&i)<<12|(63&e[r+1])<<6|63&e[r+2])),r+=3)}return t.join("")}},ui=(di="0123456789abcdef",{toBytes:function(e){for(var t=[],r=0;r>4]+di[15&i])}return t.join("")}}),ci={16:10,24:12,32:14},fi=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],hi=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],pi=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],mi=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],_i=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],gi=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],yi=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],vi=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],bi=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],wi=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],Si=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Ei=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ai=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Bi=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],xi=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function Ui(e){for(var t=[],r=0;r>2,this._Ke[r][t%4]=o[t],this._Kd[e-r][t%4]=o[t];for(var s,a=0,d=n;d>16&255]<<24^hi[s>>8&255]<<16^hi[255&s]<<8^hi[s>>24&255]^fi[a]<<24,a+=1,8!=n)for(t=1;t>8&255]<<8^hi[s>>16&255]<<16^hi[s>>24&255]<<24;for(t=n/2+1;t>2,u=d%4,this._Ke[l][u]=o[t],this._Kd[e-l][u]=o[t++],d++}for(var l=1;l>24&255]^Ai[s>>16&255]^Bi[s>>8&255]^xi[255&s]},ki.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Ke[0][n];for(var o=1;o>24&255]^_i[i[(n+1)%4]>>16&255]^gi[i[(n+2)%4]>>8&255]^yi[255&i[(n+3)%4]]^this._Ke[o][n];i=r.slice()}var s,a=si(16);for(n=0;n<4;n++)s=this._Ke[t][n],a[4*n]=255&(hi[i[n]>>24&255]^s>>24),a[4*n+1]=255&(hi[i[(n+1)%4]>>16&255]^s>>16),a[4*n+2]=255&(hi[i[(n+2)%4]>>8&255]^s>>8),a[4*n+3]=255&(hi[255&i[(n+3)%4]]^s);return a},ki.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,r=[0,0,0,0],i=Ui(e),n=0;n<4;n++)i[n]^=this._Kd[0][n];for(var o=1;o>24&255]^bi[i[(n+3)%4]>>16&255]^wi[i[(n+2)%4]>>8&255]^Si[255&i[(n+1)%4]]^this._Kd[o][n];i=r.slice()}var s,a=si(16);for(n=0;n<4;n++)s=this._Kd[t][n],a[4*n]=255&(pi[i[n]>>24&255]^s>>24),a[4*n+1]=255&(pi[i[(n+3)%4]>>16&255]^s>>16),a[4*n+2]=255&(pi[i[(n+2)%4]>>8&255]^s>>8),a[4*n+3]=255&(pi[255&i[(n+1)%4]]^s);return a};var Ti=function(e){if(!(this instanceof Ti))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new ki(e)};Ti.prototype.encrypt=function(e){if((e=oi(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=si(e.length),r=si(16),i=0;iNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},Fi.prototype.setBytes=function(e){if(16!=(e=oi(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},Fi.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var Ii=function(e,t){if(!(this instanceof Ii))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof Fi||(t=new Fi(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new ki(e)};Ii.prototype.encrypt=function(e){for(var t=oi(e,!0),r=0;r16)throw new Error("PKCS#7 padding byte out of range");for(var r=e.length-t,i=0;i>>2]>>>24-o%4*8&255;t[i+o>>>2]|=s<<24-(i+o)%4*8}else for(var a=0;a>>2]=r[a>>>2];return this.sigBytes+=n,this},clamp:function(){var t=this.words,r=this.sigBytes;t[r>>>2]&=4294967295<<32-r%4*8,t.length=e.ceil(r/4)},clone:function(){var e=d.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new l.init(r,t/2)}},f=u.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new l.init(r,t)}},h=u.Utf8={stringify:function(e){try{return decodeURIComponent(escape(f.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return f.parse(unescape(encodeURIComponent(e)))}},p=a.BufferedBlockAlgorithm=d.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=h.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var r,i=this._data,n=i.words,o=i.sigBytes,s=this.blockSize,a=o/(4*s),d=(a=t?e.ceil(a):e.max((0|a)-this._minBufferSize,0))*s,u=e.min(4*d,o);if(d){for(var c=0;c>>2]|=e[n]<<24-n%4*8;t.call(this,i,r)}else t.apply(this,arguments)};i.prototype=e}}(),r.lib.WordArray)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.WordArray,i=e.enc;function n(e){return e<<8&4278255360|e>>>8&16711935}i.Utf16=i.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var r=e.length,i=[],n=0;n>>1]|=e.charCodeAt(n)<<16-n%2*16;return t.create(i,2*r)}},i.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],o=0;o>>2]>>>16-o%4*8&65535);i.push(String.fromCharCode(s))}return i.join("")},parse:function(e){for(var r=e.length,i=[],o=0;o>>1]|=n(e.charCodeAt(o)<<16-o%2*16);return t.create(i,2*r)}}}(),r.enc.Utf16)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.WordArray;function i(e,r,i){for(var n=[],o=0,s=0;s>>6-s%4*2;n[o>>>2]|=a<<24-o%4*8,o++}return t.create(n,o)}e.enc.Base64={stringify:function(e){var t=e.words,r=e.sigBytes,i=this._map;e.clamp();for(var n=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,a=0;a<4&&o+.75*a>>6*(3-a)&63));var d=i.charAt(64);if(d)for(;n.length%4;)n.push(d);return n.join("")},parse:function(e){var t=e.length,r=this._map,n=this._reverseMap;if(!n){n=this._reverseMap=[];for(var o=0;o>>6-s%4*2;n[o>>>2]|=a<<24-o%4*8,o++}return t.create(n,o)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map;e.clamp();for(var o=[],s=0;s>>2]>>>24-s%4*8&255)<<16|(r[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|r[s+2>>>2]>>>24-(s+2)%4*8&255,d=0;d<4&&s+.75*d>>6*(3-d)&63));var l=n.charAt(64);if(l)for(;o.length%4;)o.push(l);return o.join("")},parse:function(e,t){void 0===t&&(t=!0);var r=e.length,n=t?this._safe_map:this._map,o=this._reverseMap;if(!o){o=this._reverseMap=[];for(var s=0;s>>24)|4278255360&(n<<24|n>>>8)}var o=this._hash.words,s=e[t+0],d=e[t+1],h=e[t+2],p=e[t+3],m=e[t+4],_=e[t+5],g=e[t+6],y=e[t+7],v=e[t+8],b=e[t+9],w=e[t+10],S=e[t+11],E=e[t+12],A=e[t+13],B=e[t+14],x=e[t+15],U=o[0],k=o[1],T=o[2],C=o[3];U=l(U,k,T,C,s,7,a[0]),C=l(C,U,k,T,d,12,a[1]),T=l(T,C,U,k,h,17,a[2]),k=l(k,T,C,U,p,22,a[3]),U=l(U,k,T,C,m,7,a[4]),C=l(C,U,k,T,_,12,a[5]),T=l(T,C,U,k,g,17,a[6]),k=l(k,T,C,U,y,22,a[7]),U=l(U,k,T,C,v,7,a[8]),C=l(C,U,k,T,b,12,a[9]),T=l(T,C,U,k,w,17,a[10]),k=l(k,T,C,U,S,22,a[11]),U=l(U,k,T,C,E,7,a[12]),C=l(C,U,k,T,A,12,a[13]),T=l(T,C,U,k,B,17,a[14]),U=u(U,k=l(k,T,C,U,x,22,a[15]),T,C,d,5,a[16]),C=u(C,U,k,T,g,9,a[17]),T=u(T,C,U,k,S,14,a[18]),k=u(k,T,C,U,s,20,a[19]),U=u(U,k,T,C,_,5,a[20]),C=u(C,U,k,T,w,9,a[21]),T=u(T,C,U,k,x,14,a[22]),k=u(k,T,C,U,m,20,a[23]),U=u(U,k,T,C,b,5,a[24]),C=u(C,U,k,T,B,9,a[25]),T=u(T,C,U,k,p,14,a[26]),k=u(k,T,C,U,v,20,a[27]),U=u(U,k,T,C,A,5,a[28]),C=u(C,U,k,T,h,9,a[29]),T=u(T,C,U,k,y,14,a[30]),U=c(U,k=u(k,T,C,U,E,20,a[31]),T,C,_,4,a[32]),C=c(C,U,k,T,v,11,a[33]),T=c(T,C,U,k,S,16,a[34]),k=c(k,T,C,U,B,23,a[35]),U=c(U,k,T,C,d,4,a[36]),C=c(C,U,k,T,m,11,a[37]),T=c(T,C,U,k,y,16,a[38]),k=c(k,T,C,U,w,23,a[39]),U=c(U,k,T,C,A,4,a[40]),C=c(C,U,k,T,s,11,a[41]),T=c(T,C,U,k,p,16,a[42]),k=c(k,T,C,U,g,23,a[43]),U=c(U,k,T,C,b,4,a[44]),C=c(C,U,k,T,E,11,a[45]),T=c(T,C,U,k,x,16,a[46]),U=f(U,k=c(k,T,C,U,h,23,a[47]),T,C,s,6,a[48]),C=f(C,U,k,T,y,10,a[49]),T=f(T,C,U,k,B,15,a[50]),k=f(k,T,C,U,_,21,a[51]),U=f(U,k,T,C,E,6,a[52]),C=f(C,U,k,T,p,10,a[53]),T=f(T,C,U,k,w,15,a[54]),k=f(k,T,C,U,d,21,a[55]),U=f(U,k,T,C,v,6,a[56]),C=f(C,U,k,T,x,10,a[57]),T=f(T,C,U,k,g,15,a[58]),k=f(k,T,C,U,A,21,a[59]),U=f(U,k,T,C,m,6,a[60]),C=f(C,U,k,T,S,10,a[61]),T=f(T,C,U,k,h,15,a[62]),k=f(k,T,C,U,b,21,a[63]),o[0]=o[0]+U|0,o[1]=o[1]+k|0,o[2]=o[2]+T|0,o[3]=o[3]+C|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;r[n>>>5]|=128<<24-n%32;var o=e.floor(i/4294967296),s=i;r[15+(n+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),r[14+(n+64>>>9<<4)]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),t.sigBytes=4*(r.length+1),this._process();for(var a=this._hash,d=a.words,l=0;l<4;l++){var u=d[l];d[l]=16711935&(u<<8|u>>>24)|4278255360&(u<<24|u>>>8)}return a},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function l(e,t,r,i,n,o,s){var a=e+(t&r|~t&i)+n+s;return(a<>>32-o)+t}function u(e,t,r,i,n,o,s){var a=e+(t&i|r&~i)+n+s;return(a<>>32-o)+t}function c(e,t,r,i,n,o,s){var a=e+(t^r^i)+n+s;return(a<>>32-o)+t}function f(e,t,r,i,n,o,s){var a=e+(r^(t|~i))+n+s;return(a<>>32-o)+t}t.MD5=o._createHelper(d),t.HmacMD5=o._createHmacHelper(d)}(Math),r.MD5)})),Ot((function(e,t){var r,i,n,o,s,a,d,l;e.exports=(i=(r=l=Mi).lib,n=i.WordArray,o=i.Hasher,s=r.algo,a=[],d=s.SHA1=o.extend({_doReset:function(){this._hash=new n.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],d=r[4],l=0;l<80;l++){if(l<16)a[l]=0|e[t+l];else{var u=a[l-3]^a[l-8]^a[l-14]^a[l-16];a[l]=u<<1|u>>>31}var c=(i<<5|i>>>27)+d+a[l];c+=l<20?1518500249+(n&o|~n&s):l<40?1859775393+(n^o^s):l<60?(n&o|n&s|o&s)-1894007588:(n^o^s)-899497514,d=s,s=o,o=n<<30|n>>>2,n=i,i=c}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+d|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=Math.floor(r/4294967296),t[15+(i+64>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}}),r.SHA1=o._createHelper(d),r.HmacSHA1=o._createHmacHelper(d),l.SHA1)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,o=i.Hasher,s=t.algo,a=[],d=[];!function(){function t(t){for(var r=e.sqrt(t),i=2;i<=r;i++)if(!(t%i))return!1;return!0}function r(e){return 4294967296*(e-(0|e))|0}for(var i=2,n=0;n<64;)t(i)&&(n<8&&(a[n]=r(e.pow(i,.5))),d[n]=r(e.pow(i,1/3)),n++),i++}();var l=[],u=s.SHA256=o.extend({_doReset:function(){this._hash=new n.init(a.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],u=r[5],c=r[6],f=r[7],h=0;h<64;h++){if(h<16)l[h]=0|e[t+h];else{var p=l[h-15],m=(p<<25|p>>>7)^(p<<14|p>>>18)^p>>>3,_=l[h-2],g=(_<<15|_>>>17)^(_<<13|_>>>19)^_>>>10;l[h]=m+l[h-7]+g+l[h-16]}var y=i&n^i&o^n&o,v=(i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22),b=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+d[h]+l[h];f=c,c=u,u=a,a=s+b|0,s=o,o=n,n=i,i=b+(v+y)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+s|0,r[4]=r[4]+a|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0},_doFinalize:function(){var t=this._data,r=t.words,i=8*this._nDataBytes,n=8*t.sigBytes;return r[n>>>5]|=128<<24-n%32,r[14+(n+64>>>9<<4)]=e.floor(i/4294967296),r[15+(n+64>>>9<<4)]=i,t.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=o._createHelper(u),t.HmacSHA256=o._createHmacHelper(u)}(Math),r.SHA256)})),Ot((function(e,t){var r,i,n,o,s,a;e.exports=(i=(r=a=Mi).lib.WordArray,n=r.algo,o=n.SHA256,s=n.SHA224=o.extend({_doReset:function(){this._hash=new i.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=4,e}}),r.SHA224=o._createHelper(s),r.HmacSHA224=o._createHmacHelper(s),a.SHA224)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.Hasher,i=e.x64,n=i.Word,o=i.WordArray,s=e.algo;function a(){return n.create.apply(n,arguments)}var d=[a(1116352408,3609767458),a(1899447441,602891725),a(3049323471,3964484399),a(3921009573,2173295548),a(961987163,4081628472),a(1508970993,3053834265),a(2453635748,2937671579),a(2870763221,3664609560),a(3624381080,2734883394),a(310598401,1164996542),a(607225278,1323610764),a(1426881987,3590304994),a(1925078388,4068182383),a(2162078206,991336113),a(2614888103,633803317),a(3248222580,3479774868),a(3835390401,2666613458),a(4022224774,944711139),a(264347078,2341262773),a(604807628,2007800933),a(770255983,1495990901),a(1249150122,1856431235),a(1555081692,3175218132),a(1996064986,2198950837),a(2554220882,3999719339),a(2821834349,766784016),a(2952996808,2566594879),a(3210313671,3203337956),a(3336571891,1034457026),a(3584528711,2466948901),a(113926993,3758326383),a(338241895,168717936),a(666307205,1188179964),a(773529912,1546045734),a(1294757372,1522805485),a(1396182291,2643833823),a(1695183700,2343527390),a(1986661051,1014477480),a(2177026350,1206759142),a(2456956037,344077627),a(2730485921,1290863460),a(2820302411,3158454273),a(3259730800,3505952657),a(3345764771,106217008),a(3516065817,3606008344),a(3600352804,1432725776),a(4094571909,1467031594),a(275423344,851169720),a(430227734,3100823752),a(506948616,1363258195),a(659060556,3750685593),a(883997877,3785050280),a(958139571,3318307427),a(1322822218,3812723403),a(1537002063,2003034995),a(1747873779,3602036899),a(1955562222,1575990012),a(2024104815,1125592928),a(2227730452,2716904306),a(2361852424,442776044),a(2428436474,593698344),a(2756734187,3733110249),a(3204031479,2999351573),a(3329325298,3815920427),a(3391569614,3928383900),a(3515267271,566280711),a(3940187606,3454069534),a(4118630271,4000239992),a(116418474,1914138554),a(174292421,2731055270),a(289380356,3203993006),a(460393269,320620315),a(685471733,587496836),a(852142971,1086792851),a(1017036298,365543100),a(1126000580,2618297676),a(1288033470,3409855158),a(1501505948,4234509866),a(1607167915,987167468),a(1816402316,1246189591)],l=[];!function(){for(var e=0;e<80;e++)l[e]=a()}();var u=s.SHA512=t.extend({_doReset:function(){this._hash=new o.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],s=r[3],a=r[4],u=r[5],c=r[6],f=r[7],h=i.high,p=i.low,m=n.high,_=n.low,g=o.high,y=o.low,v=s.high,b=s.low,w=a.high,S=a.low,E=u.high,A=u.low,B=c.high,x=c.low,U=f.high,k=f.low,T=h,C=p,D=m,P=_,F=g,I=y,L=v,M=b,R=w,z=S,N=E,O=A,G=B,$=x,H=U,V=k,W=0;W<80;W++){var j,q,Y=l[W];if(W<16)q=Y.high=0|e[t+2*W],j=Y.low=0|e[t+2*W+1];else{var K=l[W-15],X=K.high,Z=K.low,J=(X>>>1|Z<<31)^(X>>>8|Z<<24)^X>>>7,Q=(Z>>>1|X<<31)^(Z>>>8|X<<24)^(Z>>>7|X<<25),ee=l[W-2],te=ee.high,re=ee.low,ie=(te>>>19|re<<13)^(te<<3|re>>>29)^te>>>6,ne=(re>>>19|te<<13)^(re<<3|te>>>29)^(re>>>6|te<<26),oe=l[W-7],se=oe.high,ae=oe.low,de=l[W-16],le=de.high,ue=de.low;q=(q=(q=J+se+((j=Q+ae)>>>0>>0?1:0))+ie+((j+=ne)>>>0>>0?1:0))+le+((j+=ue)>>>0>>0?1:0),Y.high=q,Y.low=j}var ce,fe=R&N^~R&G,he=z&O^~z&$,pe=T&D^T&F^D&F,me=C&P^C&I^P&I,_e=(T>>>28|C<<4)^(T<<30|C>>>2)^(T<<25|C>>>7),ge=(C>>>28|T<<4)^(C<<30|T>>>2)^(C<<25|T>>>7),ye=(R>>>14|z<<18)^(R>>>18|z<<14)^(R<<23|z>>>9),ve=(z>>>14|R<<18)^(z>>>18|R<<14)^(z<<23|R>>>9),be=d[W],we=be.high,Se=be.low,Ee=H+ye+((ce=V+ve)>>>0>>0?1:0),Ae=ge+me;H=G,V=$,G=N,$=O,N=R,O=z,R=L+(Ee=(Ee=(Ee=Ee+fe+((ce+=he)>>>0>>0?1:0))+we+((ce+=Se)>>>0>>0?1:0))+q+((ce+=j)>>>0>>0?1:0))+((z=M+ce|0)>>>0>>0?1:0)|0,L=F,M=I,F=D,I=P,D=T,P=C,T=Ee+(_e+pe+(Ae>>>0>>0?1:0))+((C=ce+Ae|0)>>>0>>0?1:0)|0}p=i.low=p+C,i.high=h+T+(p>>>0>>0?1:0),_=n.low=_+P,n.high=m+D+(_>>>0

>>0?1:0),y=o.low=y+I,o.high=g+F+(y>>>0>>0?1:0),b=s.low=b+M,s.high=v+L+(b>>>0>>0?1:0),S=a.low=S+z,a.high=w+R+(S>>>0>>0?1:0),A=u.low=A+O,u.high=E+N+(A>>>0>>0?1:0),x=c.low=x+$,c.high=B+G+(x>>>0<$>>>0?1:0),k=f.low=k+V,f.high=U+H+(k>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(i+128>>>10<<5)]=Math.floor(r/4294967296),t[31+(i+128>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(u),e.HmacSHA512=t._createHmacHelper(u)}(),r.SHA512)})),Ot((function(e,t){var r,i,n,o,s,a,d,l;e.exports=(i=(r=l=Mi).x64,n=i.Word,o=i.WordArray,s=r.algo,a=s.SHA512,d=s.SHA384=a.extend({_doReset:function(){this._hash=new o.init([new n.init(3418070365,3238371032),new n.init(1654270250,914150663),new n.init(2438529370,812702999),new n.init(355462360,4144912697),new n.init(1731405415,4290775857),new n.init(2394180231,1750603025),new n.init(3675008525,1694076839),new n.init(1203062813,3204075428)])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=16,e}}),r.SHA384=a._createHelper(d),r.HmacSHA384=a._createHmacHelper(d),l.SHA384)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,o=i.Hasher,s=t.x64.Word,a=t.algo,d=[],l=[],u=[];!function(){for(var e=1,t=0,r=0;r<24;r++){d[e+5*t]=(r+1)*(r+2)/2%64;var i=(2*e+3*t)%5;e=t%5,t=i}for(e=0;e<5;e++)for(t=0;t<5;t++)l[e+5*t]=t+(2*e+3*t)%5*5;for(var n=1,o=0;o<24;o++){for(var a=0,c=0,f=0;f<7;f++){if(1&n){var h=(1<>>24)|4278255360&(o<<24|o>>>8),s=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),(k=r[n]).high^=s,k.low^=o}for(var a=0;a<24;a++){for(var f=0;f<5;f++){for(var h=0,p=0,m=0;m<5;m++)h^=(k=r[f+5*m]).high,p^=k.low;var _=c[f];_.high=h,_.low=p}for(f=0;f<5;f++){var g=c[(f+4)%5],y=c[(f+1)%5],v=y.high,b=y.low;for(h=g.high^(v<<1|b>>>31),p=g.low^(b<<1|v>>>31),m=0;m<5;m++)(k=r[f+5*m]).high^=h,k.low^=p}for(var w=1;w<25;w++){var S=(k=r[w]).high,E=k.low,A=d[w];A<32?(h=S<>>32-A,p=E<>>32-A):(h=E<>>64-A,p=S<>>64-A);var B=c[l[w]];B.high=h,B.low=p}var x=c[0],U=r[0];for(x.high=U.high,x.low=U.low,f=0;f<5;f++)for(m=0;m<5;m++){var k=r[w=f+5*m],T=c[w],C=c[(f+1)%5+5*m],D=c[(f+2)%5+5*m];k.high=T.high^~C.high&D.high,k.low=T.low^~C.low&D.low}k=r[0];var P=u[a];k.high^=P.high,k.low^=P.low}},_doFinalize:function(){var t=this._data,r=t.words;this._nDataBytes;var i=8*t.sigBytes,o=32*this.blockSize;r[i>>>5]|=1<<24-i%32,r[(e.ceil((i+1)/o)*o>>>5)-1]|=128,t.sigBytes=4*r.length,this._process();for(var s=this._state,a=this.cfg.outputLength/8,d=a/8,l=[],u=0;u>>24)|4278255360&(f<<24|f>>>8),h=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8),l.push(h),l.push(f)}return new n.init(l,a)},clone:function(){for(var e=o.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}});t.SHA3=o._createHelper(f),t.HmacSHA3=o._createHmacHelper(f)}(Math),r.SHA3)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib,n=i.WordArray,o=i.Hasher,s=t.algo,a=n.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),d=n.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),l=n.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),u=n.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=n.create([0,1518500249,1859775393,2400959708,2840853838]),f=n.create([1352829926,1548603684,1836072691,2053994217,0]),h=s.RIPEMD160=o.extend({_doReset:function(){this._hash=n.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o,s,h,b,w,S,E,A,B,x,U,k=this._hash.words,T=c.words,C=f.words,D=a.words,P=d.words,F=l.words,I=u.words;for(S=o=k[0],E=s=k[1],A=h=k[2],B=b=k[3],x=w=k[4],r=0;r<80;r+=1)U=o+e[t+D[r]]|0,U+=r<16?p(s,h,b)+T[0]:r<32?m(s,h,b)+T[1]:r<48?_(s,h,b)+T[2]:r<64?g(s,h,b)+T[3]:y(s,h,b)+T[4],U=(U=v(U|=0,F[r]))+w|0,o=w,w=b,b=v(h,10),h=s,s=U,U=S+e[t+P[r]]|0,U+=r<16?y(E,A,B)+C[0]:r<32?g(E,A,B)+C[1]:r<48?_(E,A,B)+C[2]:r<64?m(E,A,B)+C[3]:p(E,A,B)+C[4],U=(U=v(U|=0,I[r]))+x|0,S=x,x=B,B=v(A,10),A=E,E=U;U=k[1]+h+B|0,k[1]=k[2]+b+x|0,k[2]=k[3]+w+S|0,k[3]=k[4]+o+E|0,k[4]=k[0]+s+A|0,k[0]=U},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;t[i>>>5]|=128<<24-i%32,t[14+(i+64>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process();for(var n=this._hash,o=n.words,s=0;s<5;s++){var a=o[s];o[s]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)}return n},clone:function(){var e=o.clone.call(this);return e._hash=this._hash.clone(),e}});function p(e,t,r){return e^t^r}function m(e,t,r){return e&t|~e&r}function _(e,t,r){return(e|~t)^r}function g(e,t,r){return e&r|t&~r}function y(e,t,r){return e^(t|~r)}function v(e,t){return e<>>32-t}t.RIPEMD160=o._createHelper(h),t.HmacRIPEMD160=o._createHmacHelper(h)}(),r.RIPEMD160)})),Ot((function(e,t){var r,i,n;e.exports=(i=(r=Mi).lib.Base,n=r.enc.Utf8,void(r.algo.HMAC=i.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=n.parse(t));var r=e.blockSize,i=4*r;t.sigBytes>i&&(t=e.finalize(t)),t.clamp();for(var o=this._oKey=t.clone(),s=this._iKey=t.clone(),a=o.words,d=s.words,l=0;l>>2];e.sigBytes-=t}};i.BlockCipher=u.extend({cfg:u.cfg.extend({mode:h,padding:p}),reset:function(){var e;u.reset.call(this);var t=this.cfg,r=t.iv,i=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=i.createEncryptor:(e=i.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(i,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=i.CipherParams=n.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),_=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,r=e.salt;return(r?o.create([1398893684,1701076831]).concat(r).concat(t):t).toString(d)},parse:function(e){var t,r=d.parse(e),i=r.words;return 1398893684==i[0]&&1701076831==i[1]&&(t=o.create(i.slice(2,4)),i.splice(0,4),r.sigBytes-=16),m.create({ciphertext:r,salt:t})}},g=i.SerializableCipher=n.extend({cfg:n.extend({format:_}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),o=n.finalize(t),s=n.cfg;return m.create({ciphertext:o,key:r,iv:s.iv,algorithm:e,mode:s.mode,padding:s.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),y=(t.kdf={}).OpenSSL={execute:function(e,t,r,i,n){if(i||(i=o.random(8)),n)s=l.create({keySize:t+r,hasher:n}).compute(e,i);else var s=l.create({keySize:t+r}).compute(e,i);var a=o.create(s.words.slice(t),4*r);return s.sigBytes=4*t,m.create({key:s,iv:a,salt:i})}},v=i.PasswordBasedCipher=g.extend({cfg:g.cfg.extend({kdf:y}),encrypt:function(e,t,r,i){var n=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize,i.salt,i.hasher);i.iv=n.iv;var o=g.encrypt.call(this,e,t,n.key,i);return o.mixIn(n),o},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);var n=i.kdf.execute(r,e.keySize,e.ivSize,t.salt,i.hasher);return i.iv=n.iv,g.decrypt.call(this,e,t,n.key,i)}})}())})),Ot((function(e,t){var r;e.exports=((r=Mi).mode.CFB=function(){var e=r.lib.BlockCipherMode.extend();function t(e,t,r,i){var n,o=this._iv;o?(n=o.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var s=0;s>24&255)){var t=e>>16&255,r=e>>8&255,i=255&e;255===t?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=i}else e+=1<<24;return e}function i(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var n=e.Encryptor=e.extend({processBlock:function(e,t){var r=this._cipher,n=r.blockSize,o=this._iv,s=this._counter;o&&(s=this._counter=o.slice(0),this._iv=void 0),i(s);var a=s.slice(0);r.encryptBlock(a,0);for(var d=0;d>>2]|=n<<24-o%4*8,e.sigBytes+=n},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Ansix923)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.Iso10126={pad:function(e,t){var i=4*t,n=i-e.sigBytes%i;e.concat(r.lib.WordArray.random(n-1)).concat(r.lib.WordArray.create([n<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.ZeroPadding={pad:function(e,t){var r=4*t;e.clamp(),e.sigBytes+=r-(e.sigBytes%r||r)},unpad:function(e){var t=e.words,r=e.sigBytes-1;for(r=e.sigBytes-1;r>=0;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},r.pad.ZeroPadding)})),Ot((function(e,t){var r;e.exports=((r=Mi).pad.NoPadding={pad:function(){},unpad:function(){}},r.pad.NoPadding)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(e){var t=r,i=t.lib.CipherParams,n=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(n)},parse:function(e){var t=n.parse(e);return i.create({ciphertext:t})}}}(),r.format.Hex)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo,n=[],o=[],s=[],a=[],d=[],l=[],u=[],c=[],f=[],h=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var r=0,i=0;for(t=0;t<256;t++){var p=i^i<<1^i<<2^i<<3^i<<4;p=p>>>8^255&p^99,n[r]=p,o[p]=r;var m=e[r],_=e[m],g=e[_],y=257*e[p]^16843008*p;s[r]=y<<24|y>>>8,a[r]=y<<16|y>>>16,d[r]=y<<8|y>>>24,l[r]=y,y=16843009*g^65537*_^257*m^16843008*r,u[p]=y<<24|y>>>8,c[p]=y<<16|y>>>16,f[p]=y<<8|y>>>24,h[p]=y,r?(r=m^e[e[e[g^m]]],i^=e[e[i]]):r=i=1}}();var p=[0,1,2,4,8,16,32,64,128,27,54],m=i.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*((this._nRounds=r+6)+1),o=this._keySchedule=[],s=0;s6&&s%r==4&&(l=n[l>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l]):(l=n[(l=l<<8|l>>>24)>>>24]<<24|n[l>>>16&255]<<16|n[l>>>8&255]<<8|n[255&l],l^=p[s/r|0]<<24),o[s]=o[s-r]^l);for(var a=this._invKeySchedule=[],d=0;d>>24]]^c[n[l>>>16&255]]^f[n[l>>>8&255]]^h[n[255&l]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,s,a,d,l,n)},decryptBlock:function(e,t){var r=e[t+1];e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,u,c,f,h,o),r=e[t+1],e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,o,s,a){for(var d=this._nRounds,l=e[t]^r[0],u=e[t+1]^r[1],c=e[t+2]^r[2],f=e[t+3]^r[3],h=4,p=1;p>>24]^n[u>>>16&255]^o[c>>>8&255]^s[255&f]^r[h++],_=i[u>>>24]^n[c>>>16&255]^o[f>>>8&255]^s[255&l]^r[h++],g=i[c>>>24]^n[f>>>16&255]^o[l>>>8&255]^s[255&u]^r[h++],y=i[f>>>24]^n[l>>>16&255]^o[u>>>8&255]^s[255&c]^r[h++];l=m,u=_,c=g,f=y}m=(a[l>>>24]<<24|a[u>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^r[h++],_=(a[u>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^r[h++],g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&u])^r[h++],y=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[u>>>8&255]<<8|a[255&c])^r[h++],e[t]=m,e[t+1]=_,e[t+2]=g,e[t+3]=y},keySize:8});e.AES=t._createHelper(m)}(),r.AES)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib,i=t.WordArray,n=t.BlockCipher,o=e.algo,s=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],a=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],l=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],u=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=o.DES=n.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=s[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],o=0;o<16;o++){var l=n[o]=[],u=d[o];for(r=0;r<24;r++)l[r/6|0]|=t[(a[r]-1+u)%28]<<31-r%6,l[4+(r/6|0)]|=t[28+(a[r+24]-1+u)%28]<<31-r%6;for(l[0]=l[0]<<1|l[0]>>>31,r=1;r<7;r++)l[r]=l[r]>>>4*(r-1)+3;l[7]=l[7]<<5|l[7]>>>27}var c=this._invSubKeys=[];for(r=0;r<16;r++)c[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],f.call(this,4,252645135),f.call(this,16,65535),h.call(this,2,858993459),h.call(this,8,16711935),f.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],o=this._lBlock,s=this._rBlock,a=0,d=0;d<8;d++)a|=l[d][((s^n[d])&u[d])>>>0];this._lBlock=s,this._rBlock=o^a}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,f.call(this,1,1431655765),h.call(this,8,16711935),h.call(this,2,858993459),f.call(this,16,65535),f.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function f(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,this._lBlock^=r<>>e^this._lBlock)&t;this._lBlock^=r,this._rBlock^=r<192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),n=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(i.create(t)),this._des2=c.createEncryptor(i.create(r)),this._des3=c.createEncryptor(i.create(n))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=n._createHelper(p)}(),r.TripleDES)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=i.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;n=0;for(var o=0;n<256;n++){var s=n%r,a=t[s>>>2]>>>24-s%4*8&255;o=(o+i[n]+a)%256;var d=i[n];i[n]=i[o],i[o]=d}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){r=(r+e[t=(t+1)%256])%256;var o=e[t];e[t]=e[r],e[r]=o,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}e.RC4=t._createHelper(n);var s=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)o.call(this)}});e.RC4Drop=t._createHelper(s)}(),r.RC4)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],o=[],s=[],a=i.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,r=0;r<4;r++)d.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var o=t.words,s=o[0],a=o[1],l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=l>>>16|4294901760&u,f=u<<16|65535&l;for(n[0]^=l,n[1]^=c,n[2]^=u,n[3]^=f,n[4]^=l,n[5]^=c,n[6]^=u,n[7]^=f,r=0;r<4;r++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);s[r]=d^l}e[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,e[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,e[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,e[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,e[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,e[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,e[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,e[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.Rabbit=t._createHelper(a)}(),r.Rabbit)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.StreamCipher,i=e.algo,n=[],o=[],s=[],a=i.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var n=0;n<4;n++)d.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var o=t.words,s=o[0],a=o[1],l=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8),u=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),c=l>>>16|4294901760&u,f=u<<16|65535&l;for(i[0]^=l,i[1]^=c,i[2]^=u,i[3]^=f,i[4]^=l,i[5]^=c,i[6]^=u,i[7]^=f,n=0;n<4;n++)d.call(this)}},_doProcessBlock:function(e,t){var r=this._X;d.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2});function d(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,a=i>>>16,d=((n*n>>>17)+n*a>>>15)+a*a,l=((4294901760&i)*i|0)+((65535&i)*i|0);s[r]=d^l}e[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,e[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,e[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,e[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,e[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,e[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,e[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,e[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}e.RabbitLegacy=t._createHelper(a)}(),r.RabbitLegacy)})),Ot((function(e,t){var r;e.exports=(r=Mi,function(){var e=r,t=e.lib.BlockCipher,i=e.algo;const n=16,o=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],s=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var a={pbox:[],sbox:[]};function d(e,t){let r=t>>24&255,i=t>>16&255,n=t>>8&255,o=255&t,s=e.sbox[0][r]+e.sbox[1][i];return s^=e.sbox[2][n],s+=e.sbox[3][o],s}function l(e,t,r){let i,o=t,s=r;for(let t=0;t1;--t)o^=e.pbox[t],s=d(e,o)^s,i=o,o=s,s=i;return i=o,o=s,s=i,s^=e.pbox[1],o^=e.pbox[0],{left:o,right:s}}function c(e,t,r){for(let t=0;t<4;t++){e.sbox[t]=[];for(let r=0;r<256;r++)e.sbox[t][r]=s[t][r]}let i=0;for(let s=0;s=r&&(i=0);let a=0,d=0,u=0;for(let t=0;t3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),r=new Uint8Array(r);const n=e.byteLength;let o=5;for(;on)break;let a=e[o+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=e.slice(o+4+2,o+4+s);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const a=n.decrypt(i);n=null,e.set(a,o+4+2)}o=o+4+s}return e}function Ni(e,t,r){if(e.byteLength<=30)return e;const i=e.slice(32);let n=new Li.ModeOfOperation.ctr(t,new Li.Counter(r));const o=n.decrypt(i);return n=null,e.set(o,32),e}Ot((function(e,t){e.exports=Mi}));var Oi=Ot((function(e,t){var r,n,o,s=(r=new Date,n=4,o={setLogLevel:function(e){n=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=n&&console.debug("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=n&&console.info("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=n&&console.warn("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=n&&console.error("["+s.getDurationString(new Date-r,1e3)+"]","["+e+"]",t)}},o);s.getDurationString=function(e,t){var r;function i(e,t){for(var r=(""+e).split(".");r[0].length0){for(var r="",i=0;i0&&(r+=","),r+="["+s.getDurationString(e.start(i))+","+s.getDurationString(e.end(i))+"]";return r}return"(empty)"},t.Log=s;var a=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};a.prototype.getPosition=function(){return this.position},a.prototype.getEndPosition=function(){return this.buffer.byteLength},a.prototype.getLength=function(){return this.buffer.byteLength},a.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},a.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},a.prototype.readAnyInt=function(e,t){var r=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:r=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:r=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";r=this.dataview.getUint8(this.position)<<16,r|=this.dataview.getUint8(this.position+1)<<8,r|=this.dataview.getUint8(this.position+2);break;case 4:r=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";r=this.dataview.getUint32(this.position)<<32,r|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,r}throw"Not enough bytes in buffer"},a.prototype.readUint8=function(){return this.readAnyInt(1,!1)},a.prototype.readUint16=function(){return this.readAnyInt(2,!1)},a.prototype.readUint24=function(){return this.readAnyInt(3,!1)},a.prototype.readUint32=function(){return this.readAnyInt(4,!1)},a.prototype.readUint64=function(){return this.readAnyInt(8,!1)},a.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",r=0;rthis._byteLength&&(this._byteLength=t);else{for(r<1&&(r=1);t>r;)r*=2;var i=new ArrayBuffer(r),n=new Uint8Array(this._buffer);new Uint8Array(i,0,n.length).set(n),this.buffer=i,this._byteLength=t}}},d.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),r=new Uint8Array(this._buffer,0,t.length);t.set(r),this.buffer=e}},d.BIG_ENDIAN=!1,d.LITTLE_ENDIAN=!0,d.prototype._byteLength=0,Object.defineProperty(d.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(d.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(d.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),d.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},d.prototype.isEof=function(){return this.position>=this._byteLength},d.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Int32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Int16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Uint32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var r=new Uint16Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return d.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},d.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var r=new Float64Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var r=new Float32Array(e);return d.memcpy(r.buffer,0,this.buffer,this.byteOffset+this.position,e*r.BYTES_PER_ELEMENT),d.arrayToNative(r,null==t?this.endianness:t),this.position+=r.byteLength,r},d.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},d.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},d.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},d.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},d.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},d.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,d.memcpy=function(e,t,r,i,n){var o=new Uint8Array(e,t,n),s=new Uint8Array(r,i,n);o.set(s)},d.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},d.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},d.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),r=0;rn;i--,n++){var o=t[n];t[n]=t[i],t[i]=o}return e},d.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],r=0;r>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},d.prototype.adjustUint32=function(e,t){var r=this.position;this.seek(e),this.writeUint32(t),this.seek(r)},d.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var r=new Int32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var r=new Int16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},d.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var r=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r},d.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var r=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=2*e,r},d.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var r=new Float64Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=8*e,r},d.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var r=new Float32Array(this._buffer,this.byteOffset+this.position,e);return d.arrayToNative(r,null==t?this.endianness:t),this.position+=4*e,r};var u=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(u.prototype=new d(new ArrayBuffer,0,d.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,s.debug("MultiBufferStream","Stream ready for parsing"),!0):(s.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(s.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){s.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var r=new Uint8Array(e.byteLength+t.byteLength);return r.set(new Uint8Array(e),0),r.set(new Uint8Array(t),e.byteLength),r.buffer},u.prototype.reduceBuffer=function(e,t,r){var i;return(i=new Uint8Array(r)).set(new Uint8Array(e,t,r)),i.buffer.fileStart=e.fileStart+t,i.buffer.usedBytes=0,i.buffer},u.prototype.insertBuffer=function(e){for(var t=!0,r=0;ri.byteLength){this.buffers.splice(r,1),r--;continue}s.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=i.fileStart||(e=this.reduceBuffer(e,0,i.fileStart-e.fileStart)),s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(r,0,e),0===r&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,n,o)}}t&&(s.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===r&&(this.buffer=e))},u.prototype.logBufferLevel=function(e){var t,r,i,n,o,a=[],d="";for(i=0,n=0,t=0;t0&&(d+=o.end-1+"]");var l=e?s.info:s.debug;0===this.buffers.length?l("MultiBufferStream","No more buffer in memory"):l("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+i+"/"+n+" bytes), continuous ranges: "+d)},u.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},u.prototype.findPosition=function(e,t,r){var i,n=null,o=-1;for(i=!0===e?0:this.bufferIndex;i=t?(s.debug("MultiBufferStream","Found position in existing buffer #"+o),o):-1},u.prototype.findEndContiguousBuf=function(e){var t,r,i,n=void 0!==e?e:this.bufferIndex;if(r=this.buffers[n],this.buffers.length>n+1)for(t=n+1;t>3;return 31===i&&r.data.length>=2&&(i=32+((7&r.data[0])<<3)+((224&r.data[1])>>5)),i}return null},r.DecoderConfigDescriptor=function(e){r.Descriptor.call(this,4,e)},r.DecoderConfigDescriptor.prototype=new r.Descriptor,r.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},r.DecoderSpecificInfo=function(e){r.Descriptor.call(this,5,e)},r.DecoderSpecificInfo.prototype=new r.Descriptor,r.SLConfigDescriptor=function(e){r.Descriptor.call(this,6,e)},r.SLConfigDescriptor.prototype=new r.Descriptor,this};t.MPEG4DescriptorParser=c;var f={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){f.FullBox.prototype=new f.Box,f.ContainerBox.prototype=new f.Box,f.SampleEntry.prototype=new f.Box,f.TrackGroupTypeBox.prototype=new f.FullBox,f.BASIC_BOXES.forEach((function(e){f.createBoxCtor(e)})),f.FULL_BOXES.forEach((function(e){f.createFullBoxCtor(e)})),f.CONTAINER_BOXES.forEach((function(e){f.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,r){this.type=e,this.size=t,this.uuid=r},FullBox:function(e,t,r){f.Box.call(this,e,t,r),this.flags=0,this.version=0},ContainerBox:function(e,t,r){f.Box.call(this,e,t,r),this.boxes=[]},SampleEntry:function(e,t,r,i){f.ContainerBox.call(this,e,t),this.hdr_size=r,this.start=i},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){f.FullBox.call(this,e,t)},createBoxCtor:function(e,t){f.boxCodes.push(e),f[e+"Box"]=function(t){f.Box.call(this,e,t)},f[e+"Box"].prototype=new f.Box,t&&(f[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){f[e+"Box"]=function(t){f.FullBox.call(this,e,t)},f[e+"Box"].prototype=new f.FullBox,f[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,r=0;rr?(s.error("BoxParser","Box of type '"+u+"' has a size "+l+" greater than its container size "+r),{code:f.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:a}):0!==l&&a+l>e.getEndPosition()?(e.seek(a),s.info("BoxParser","Not enough data in stream to parse the entire '"+u+"' box"),{code:f.ERR_NOT_ENOUGH_DATA,type:u,size:l,hdr_size:d,start:a}):t?{code:f.OK,type:u,size:l,hdr_size:d,start:a}:(f[u+"Box"]?i=new f[u+"Box"](l):"uuid"!==u?(s.warn("BoxParser","Unknown box type: '"+u+"'"),(i=new f.Box(u,l)).has_unparsed_data=!0):f.UUIDBoxes[o]?i=new f.UUIDBoxes[o](l):(s.warn("BoxParser","Unknown uuid type: '"+o+"'"),(i=new f.Box(u,l)).uuid=o,i.has_unparsed_data=!0),i.hdr_size=d,i.start=a,i.write===f.Box.prototype.write&&"mdat"!==i.type&&(s.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),i.parseDataAndRewind(e)),i.parse(e),(n=e.getPosition()-(i.start+i.size))<0?(s.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-n+" bytes), seeking forward"),e.seek(i.start+i.size)):n>0&&(s.error("BoxParser","Parsing of box '"+c+"' read "+n+" more bytes than the indicated box data size, seeking backwards"),0!==i.size&&e.seek(i.start+i.size)),{code:f.OK,box:i,size:i.size})},f.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},f.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},f.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},f.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},f.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},f.ContainerBox.prototype.parse=function(e){for(var t,r;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},f.SAMPLE_ENTRY_TYPE_VISUAL="Visual",f.SAMPLE_ENTRY_TYPE_AUDIO="Audio",f.SAMPLE_ENTRY_TYPE_HINT="Hint",f.SAMPLE_ENTRY_TYPE_METADATA="Metadata",f.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",f.SAMPLE_ENTRY_TYPE_SYSTEM="System",f.SAMPLE_ENTRY_TYPE_TEXT="Text",f.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},f.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},f.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},f.SampleEntry.prototype.parseFooter=function(e){f.ContainerBox.prototype.parse.call(this,e)},f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_HINT),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_METADATA),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SUBTITLE),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SYSTEM),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_TEXT),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),f.createMediaSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),f.createSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_TEXT,"enct"),f.createEncryptedSampleEntryCtor(f.SAMPLE_ENTRY_TYPE_METADATA,"encm"),f.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var r=0;r<3;r++)this.layer_size[r]=16==t?e.readUint16():e.readUint32()})),f.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),f.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),f.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)s.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void s.error("av1C reserved_2 parsing problem");var r=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(r)}else s.error("av1C reserved_1 parsing problem");else s.error("av1C version "+this.version+" not supported")})),f.createBoxCtor("avcC",(function(e){var t,r;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),r=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(r))})),f.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),f.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),f.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),f.createFullBoxCtor("co64",(function(e){var t,r;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(r=0;r>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),f.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),f.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),f.createFullBoxCtor("ctts",(function(e){var t,r;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(r=0;r>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|r>>6&3,this.acmod=r>>3&7,this.lfeon=r>>2&1,this.bit_rate_code=3&r|i>>5&7})),f.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var r=0;r>6,i.bsid=n>>1&31,i.bsmod=(1&n)<<4|o>>4&15,i.acmod=o>>1&7,i.lfeon=1&o,i.num_dep_sub=s>>1&15,i.num_dep_sub>0&&(i.chan_loc=(1&s)<<8|e.readUint8())}})),f.createFullBoxCtor("dfLa",(function(e){var t=[],r=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var i=e.readUint8(),n=Math.min(127&i,r.length-1);if(n?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(r[n]),128&i)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),f.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),f.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),f.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),f.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[r]=e.readString(4),t-=4,r++})),f.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),f.createBoxCtor("hvcC",(function(e){var t,r,i,n;this.configurationVersion=e.readUint8(),n=e.readUint8(),this.general_profile_space=n>>6,this.general_tier_flag=(32&n)>>5,this.general_profile_idc=31&n,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),n=e.readUint8(),this.constantFrameRate=n>>6,this.numTemporalLayers=(13&n)>>3,this.temporalIdNested=(4&n)>>2,this.lengthSizeMinusOne=3&n,this.nalu_arrays=[];var o=e.readUint8();for(t=0;t>7,s.nalu_type=63&n;var a=e.readUint16();for(r=0;r>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var r=0;if(this.version<2)r=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";r=e.readUint32()}for(var i=0;i>7,this.axis=1&t})),f.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),s.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),f.createFullBoxCtor("ipma",(function(e){var t,r;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?s.property_index=(127&o)<<8|e.readUint8():s.property_index=127&o}}})),f.createFullBoxCtor("iref",(function(e){var t,r;for(this.references=[];e.getPosition()>7,i.assignment_type=127&n,i.assignment_type){case 0:i.grouping_type=e.readString(4);break;case 1:i.grouping_type=e.readString(4),i.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:i.sub_track_id=e.readUint32();break;default:s.warn("BoxParser","Unknown leva assignement type")}}})),f.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),f.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),h.prototype.toString=function(){return"("+this.x+","+this.y+")"},f.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new h(e.readUint16(),e.readUint16()),this.display_primaries[1]=new h(e.readUint16(),e.readUint16()),this.display_primaries[2]=new h(e.readUint16(),e.readUint16()),this.white_point=new h(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),f.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),f.createFullBoxCtor("mehd",(function(e){1&this.flags&&(s.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),f.createFullBoxCtor("meta",(function(e){this.boxes=[],f.ContainerBox.prototype.parse.call(this,e)})),f.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),f.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),f.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),f.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),f.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),f.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),f.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var r=0;r0){var t=e.readUint32();this.kid=[];for(var r=0;r0&&(this.data=e.readUint8Array(i))})),f.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),f.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),f.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),f.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var r=0;r>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var r=e.readUint8(),i=0;i>7,this.num_leading_samples=127&t})),f.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)s.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=f.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),f.createSampleGroupCtor("stsa",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),f.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),f.createSampleGroupCtor("tsas",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("tscl",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createSampleGroupCtor("vipr",(function(e){s.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),f.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),r=0;r>6,this.sample_depends_on[i]=t>>4&3,this.sample_is_depended_on[i]=t>>2&3,this.sample_has_redundancy[i]=3&t})),f.createFullBoxCtor("senc"),f.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),s.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),r=0;r>31&1,i.referenced_size=2147483647&n,i.subsegment_duration=e.readUint32(),n=e.readUint32(),i.starts_with_SAP=n>>31&1,i.SAP_type=n>>28&7,i.SAP_delta_time=268435455&n}})),f.SingleItemTypeReferenceBox=function(e,t,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},f.SingleItemTypeReferenceBox.prototype=new f.Box,f.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var r=0;r>4&15,this.sample_sizes[t+1]=15&i}else if(8===this.field_size)for(t=0;t0)for(r=0;r>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=f.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),f.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),f.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&f.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),f.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var r=e.readUint32(),i=0;i>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),f.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),f.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),f.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),f.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),f.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),f.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},f.createTrackGroupCtor("msrc"),f.TrackReferenceTypeBox=function(e,t,r,i){f.Box.call(this,e,t),this.hdr_size=r,this.start=i},f.TrackReferenceTypeBox.prototype=new f.Box,f.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},f.trefBox.prototype.parse=function(e){for(var t,r;e.getPosition()t&&this.flags&f.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&f.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var r=0;r>7&1,this.block_pad_lsb=r>>6&1,this.block_little_endian=r>>5&1,this.block_reversed=r>>4&1,this.pad_unknown=r>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),f.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),f.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),f.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),f.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=f.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),f.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),f.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=f.parseHex16(e)})),f.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),f.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),f.createFullBoxCtor("vvcC",(function(e){var t,r,i={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(i.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,r=this.num_sublayers-2;r>=0;--r){var s=i.extract_bits(1);this.ptl_sublayer_present_mask|=s<1;++r)i.extract_bits(1);for(this.sublayer_level_idc=[],r=this.num_sublayers-2;r>=0;--r)this.ptl_sublayer_present_mask&1<>=1;t+=f.decimalToHex(i,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var n=!1,o="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||n)&&(o="."+f.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+o,n=!0);t+=o}return t},f.vvc1SampleEntry.prototype.getCodec=f.vvi1SampleEntry.prototype.getCodec=function(){var e,t=f.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var r="";if(this.vvcC.general_constraint_info){var i,n=[],o=0;for(o|=this.vvcC.ptl_frame_only_constraint<<7,o|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,n.push(o),o&&(i=e),o=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===i)r=".CA";else{r=".C";var s="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",a=0,d=0;for(e=0;e<=i;++e)for(a=a<<8|n[e],d+=8;d>=5;){r+=s[a>>d-5&31],a&=(1<<(d-=5))-1}d&&(r+=s[31&(a<<=5-d)])}}t+=r}return t},f.mp4aSampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),r=this.esds.esd.getAudioConfig();return e+"."+f.decimalToHex(t)+(r?"."+r:"")}return e},f.stxtSampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},f.vp08SampleEntry.prototype.getCodec=f.vp09SampleEntry.prototype.getCodec=function(){var e=f.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var r=this.vpcC.bitDepth;return 8==r&&(r="08"),e+".0"+this.vpcC.profile+"."+t+"."+r},f.av01SampleEntry.prototype.getCodec=function(){var e,t=f.SampleEntry.prototype.getCodec.call(this),r=this.av1C.seq_level_idx_0;return r<10&&(r="0"+r),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+r+(this.av1C.seq_tier_0?"H":"M")+"."+e},f.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),s.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>l?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>l&&e.writeUint64(this.size)},f.FullBox.prototype.writeHeader=function(e){this.size+=4,f.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},f.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},f.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},f.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&f.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&f.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&f.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&f.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&f.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&f.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&f.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},f.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},f.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},f.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&f.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&f.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&f.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&f.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&f.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&f.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&f.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&f.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[r]instanceof f.Box||t[r]instanceof f.Box||void 0===e[r]||void 0===t[r]||"function"==typeof e[r]||"function"==typeof t[r]||e.subBoxNames&&e.subBoxNames.indexOf(r.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(r.slice(0,4))>-1||"data"===r||"start"===r||"size"===r||"creation_time"===r||"modification_time"===r||f.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(r)>-1||e[r]===t[r]))return!1;return!0},f.boxEqual=function(e,t){if(!f.boxEqualFields(e,t))return!1;for(var r=0;r1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},g.prototype.setExtractionOptions=function(e,t,r){var i=this.getTrackById(e);if(i){var n={};this.extractedTracks.push(n),n.id=e,n.user=t,n.trak=i,i.nextSample=0,n.nb_samples=1e3,n.samples=[],r&&r.nbSamples&&(n.nb_samples=r.nbSamples)}},g.prototype.unsetExtractionOptions=function(e){for(var t=-1,r=0;r-1&&this.extractedTracks.splice(t,1)},g.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=f.parseOneBox(this.stream,false)).code===f.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var r;switch(r="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),r){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[r]&&s.warn("ISOFile","Duplicate Box of type: "+r+", overriding previous occurrence"),this[r]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},g.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(s.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(s.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(s.warn("ISOFile","Not ready to start parsing"),!1))},g.prototype.appendBuffer=function(e,t){var r;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(r=this.nextSeekPosition,this.nextSeekPosition=void 0):r=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(r=this.stream.getEndFilePositionAfter(r))):r=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(s.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+r),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),r},g.prototype.getInfo=function(){var e,t,r,i,n,o,s={},a=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(s.hasMoov=!0,s.duration=this.moov.mvhd.duration,s.timescale=this.moov.mvhd.timescale,s.isFragmented=null!=this.moov.mvex,s.isFragmented&&this.moov.mvex.mehd&&(s.fragment_duration=this.moov.mvex.mehd.fragment_duration),s.isProgressive=this.isProgressive,s.hasIOD=null!=this.moov.iods,s.brands=[],s.brands.push(this.ftyp.major_brand),s.brands=s.brands.concat(this.ftyp.compatible_brands),s.created=new Date(a+1e3*this.moov.mvhd.creation_time),s.modified=new Date(a+1e3*this.moov.mvhd.modification_time),s.tracks=[],s.audioTracks=[],s.videoTracks=[],s.subtitleTracks=[],s.metadataTracks=[],s.hintTracks=[],s.otherTracks=[],e=0;e0?s.mime+='video/mp4; codecs="':s.audioTracks&&s.audioTracks.length>0?s.mime+='audio/mp4; codecs="':s.mime+='application/mp4; codecs="',e=0;e=r.samples.length)&&(s.info("ISOFile","Sending fragmented data on track #"+i.id+" for samples ["+Math.max(0,r.nextSample-i.nb_samples)+","+(r.nextSample-1)+"]"),s.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(i.id,i.user,i.segmentStream.buffer,r.nextSample,e||r.nextSample>=r.samples.length),i.segmentStream=null,i!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=r.samples.length)&&(s.debug("ISOFile","Sending samples on track #"+o.id+" for sample "+r.nextSample),this.onSamples&&this.onSamples(o.id,o.user,o.samples),o.samples=[],o!==this.extractedTracks[t]))break}}}},g.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},g.prototype.getBoxes=function(e,t){var r=[];return g._sweep.call(this,e,r,t),r},g._sweep=function(e,t,r){for(var i in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&r)return;g._sweep.call(this.boxes[i],e,t,r)}},g.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},g.prototype.getTrackSample=function(e,t){var r=this.getTrackById(e);return this.getSample(r,t)},g.prototype.releaseUsedSamples=function(e,t){var r=0,i=this.getTrackById(e);i.lastValidSample||(i.lastValidSample=0);for(var n=i.lastValidSample;ne*n.timescale){l=i-1;break}t&&n.is_sync&&(d=i)}for(t&&(l=d),e=r.samples[l].cts,r.nextSample=l;r.samples[l].alreadyRead===r.samples[l].size&&r.samples[l+1];)l++;return o=r.samples[l].offset+r.samples[l].alreadyRead,s.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+r.nextSample+" on track "+r.tkhd.track_id+", time "+s.getDurationString(e,a)+" and offset: "+o),{offset:o,time:e/a}},g.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},g.prototype.seek=function(e,t){var r,i,n,o=this.moov,a={offset:1/0,time:1/0};if(this.moov){for(n=0;nthis.getTrackDuration(r)||((i=this.seekTrack(e,t,r)).offset-1){s=d;break}switch(s){case"Visual":if(n.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),o.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var c=new f.avcCBox;c.parse(new a(t.avcDecoderConfigRecord)),o.addBox(c)}else if(t.hevcDecoderConfigRecord){var h=new f.hvcCBox;h.parse(new a(t.hevcDecoderConfigRecord)),o.addBox(h)}break;case"Audio":n.add("smhd").set("balance",t.balance||0),o.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":n.add("hmhd");break;case"Subtitle":if(n.add("sthd"),"stpp"===t.type)o.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:n.add("nmhd")}t.description&&o.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){o.addBox(e)})),n.add("dinf").add("dref").addEntry((new f["url Box"]).set("flags",1));var p=n.add("stbl");return p.add("stsd").addEntry(o),p.add("stts").set("sample_counts",[]).set("sample_deltas",[]),p.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),p.add("stco").set("chunk_offsets",[]),p.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(r),t.id}},f.Box.prototype.computeSize=function(e){var t=e||new d;t.endianness=d.BIG_ENDIAN,this.write(t)},g.prototype.addSample=function(e,t,r){var i=r||{},n={},o=this.getTrackById(e);if(null!==o){n.number=o.samples.length,n.track_id=o.tkhd.track_id,n.timescale=o.mdia.mdhd.timescale,n.description_index=i.sample_description_index?i.sample_description_index-1:0,n.description=o.mdia.minf.stbl.stsd.entries[n.description_index],n.data=t,n.size=t.byteLength,n.alreadyRead=n.size,n.duration=i.duration||1,n.cts=i.cts||0,n.dts=i.dts||0,n.is_sync=i.is_sync||!1,n.is_leading=i.is_leading||0,n.depends_on=i.depends_on||0,n.is_depended_on=i.is_depended_on||0,n.has_redundancy=i.has_redundancy||0,n.degradation_priority=i.degradation_priority||0,n.offset=0,n.subsamples=i.subsamples,o.samples.push(n),o.samples_size+=n.size,o.samples_duration+=n.duration,void 0===o.first_dts&&(o.first_dts=i.dts),this.processSamples();var s=this.createSingleSampleMoof(n);return this.addBox(s),s.computeSize(),s.trafs[0].truns[0].data_offset=s.size+8,this.add("mdat").data=new Uint8Array(t),n}},g.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var r=new f.moofBox;r.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var i=r.add("traf"),n=this.getTrackById(e.track_id);return i.add("tfhd").set("track_id",e.track_id).set("flags",f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),i.add("tfdt").set("baseMediaDecodeTime",e.dts-(n.first_dts||0)),i.add("trun").set("flags",f.TRUN_FLAGS_DATA_OFFSET|f.TRUN_FLAGS_DURATION|f.TRUN_FLAGS_SIZE|f.TRUN_FLAGS_FLAGS|f.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),r},g.prototype.lastMoofIndex=0,g.prototype.samplesDataSize=0,g.prototype.resetTables=function(){var e,t,r,i,n,o;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(d=n[s].grouping_type+"/0",(a=new l(n[s].grouping_type,0)).is_fragment=!0,t.sample_groups_info[d]||(t.sample_groups_info[d]=a))}else for(s=0;s=2&&(d=i[s].grouping_type+"/0",a=new l(i[s].grouping_type,0),e.sample_groups_info[d]||(e.sample_groups_info[d]=a))},g.setSampleGroupProperties=function(e,t,r,i){var n,o;for(n in t.sample_groups=[],i){var s;if(t.sample_groups[n]={},t.sample_groups[n].grouping_type=i[n].grouping_type,t.sample_groups[n].grouping_type_parameter=i[n].grouping_type_parameter,r>=i[n].last_sample_in_run&&(i[n].last_sample_in_run<0&&(i[n].last_sample_in_run=0),i[n].entry_index++,i[n].entry_index<=i[n].sbgp.entries.length-1&&(i[n].last_sample_in_run+=i[n].sbgp.entries[i[n].entry_index].sample_count)),i[n].entry_index<=i[n].sbgp.entries.length-1?t.sample_groups[n].group_description_index=i[n].sbgp.entries[i[n].entry_index].group_description_index:t.sample_groups[n].group_description_index=-1,0!==t.sample_groups[n].group_description_index)s=i[n].fragment_description?i[n].fragment_description:i[n].description,t.sample_groups[n].group_description_index>0?(o=t.sample_groups[n].group_description_index>65535?(t.sample_groups[n].group_description_index>>16)-1:t.sample_groups[n].group_description_index-1,s&&o>=0&&(t.sample_groups[n].description=s.entries[o])):s&&s.version>=2&&s.default_group_description_index>0&&(t.sample_groups[n].description=s.entries[s.default_group_description_index-1])}},g.process_sdtp=function(e,t,r){t&&(e?(t.is_leading=e.is_leading[r],t.depends_on=e.sample_depends_on[r],t.is_depended_on=e.sample_is_depended_on[r],t.has_redundancy=e.sample_has_redundancy[r]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},g.prototype.buildSampleLists=function(){var e,t;for(e=0;ev&&(b++,v<0&&(v=0),v+=o.sample_counts[b]),t>0?(e.samples[t-1].duration=o.sample_deltas[b],e.samples_duration+=e.samples[t-1].duration,x.dts=e.samples[t-1].dts+e.samples[t-1].duration):x.dts=0,s?(t>=w&&(S++,w<0&&(w=0),w+=s.sample_counts[S]),x.cts=e.samples[t].dts+s.sample_offsets[S]):x.cts=x.dts,a?(t==a.sample_numbers[E]-1?(x.is_sync=!0,E++):(x.is_sync=!1,x.degradation_priority=0),l&&l.entries[A].sample_delta+B==t+1&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta,A++)):x.is_sync=!0,g.process_sdtp(e.mdia.minf.stbl.sdtp,x,x.number),x.degradation_priority=f?f.priority[t]:0,l&&l.entries[A].sample_delta+B==t&&(x.subsamples=l.entries[A].subsamples,B+=l.entries[A].sample_delta),(u.length>0||c.length>0)&&g.setSampleGroupProperties(e,x,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},g.prototype.updateSampleLists=function(){var e,t,r,i,n,o,s,a,d,l,u,c,h,p,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&g.initSampleGroups(c,u,u.sbgps,c.mdia.minf.stbl.sgpds,u.sgpds),t=0;t0?p.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(u.tfdt?p.dts=u.tfdt.baseMediaDecodeTime:p.dts=0,c.first_traf_merged=!0),p.cts=p.dts,_.flags&f.TRUN_FLAGS_CTS_OFFSET&&(p.cts=p.dts+_.sample_composition_time_offset[r]),m=s,_.flags&f.TRUN_FLAGS_FLAGS?m=_.sample_flags[r]:0===r&&_.flags&f.TRUN_FLAGS_FIRST_FLAG&&(m=_.first_sample_flags),p.is_sync=!(m>>16&1),p.is_leading=m>>26&3,p.depends_on=m>>24&3,p.is_depended_on=m>>22&3,p.has_redundancy=m>>20&3,p.degradation_priority=65535&m;var y=!!(u.tfhd.flags&f.TFHD_FLAG_BASE_DATA_OFFSET),v=!!(u.tfhd.flags&f.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),b=!!(_.flags&f.TRUN_FLAGS_DATA_OFFSET),w=0;w=y?u.tfhd.base_data_offset:v||0===t?l.start:a,p.offset=0===t&&0===r?b?w+_.data_offset:w:a,a=p.offset+p.size,(u.sbgps.length>0||u.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&g.setSampleGroupProperties(c,p,p.number_in_traf,u.sample_groups_info)}}if(u.subs){c.has_fragment_subsamples=!0;var S=u.first_sample_index;for(t=0;t-1))return null;var o=(r=this.stream.buffers[n]).byteLength-(i.offset+i.alreadyRead-r.fileStart);if(i.size-i.alreadyRead<=o)return s.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+(i.size-i.alreadyRead)+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,i.size-i.alreadyRead),r.usedBytes+=i.size-i.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead=i.size,i;if(0===o)return null;s.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+i.alreadyRead+" offset: "+(i.offset+i.alreadyRead-r.fileStart)+" read size: "+o+" full size: "+i.size+")"),d.memcpy(i.data.buffer,i.alreadyRead,r,i.offset+i.alreadyRead-r.fileStart,o),i.alreadyRead+=o,r.usedBytes+=o,this.stream.logBufferLevel()}},g.prototype.releaseSample=function(e,t){var r=e.samples[t];return r.data?(this.samplesDataSize-=r.size,r.data=null,r.alreadyRead=0,r.size):0},g.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},g.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},g.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(r.protection=o.ipro.protections[o.iinf.item_infos[e].protection_index-1]),o.iinf.item_infos[e].item_type?r.type=o.iinf.item_infos[e].item_type:r.type="mime",r.content_type=o.iinf.item_infos[e].content_type,r.content_encoding=o.iinf.item_infos[e].content_encoding;if(o.grpl)for(e=0;e0&&f.property_index-1-1))return null;var a=(t=this.stream.buffers[o]).byteLength-(n.offset+n.alreadyRead-t.fileStart);if(!(n.length-n.alreadyRead<=a))return s.debug("ISOFile","Getting item #"+e+" extent #"+i+" partial data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+a+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,a),n.alreadyRead+=a,r.alreadyRead+=a,t.usedBytes+=a,this.stream.logBufferLevel(),null;s.debug("ISOFile","Getting item #"+e+" extent #"+i+" data (alreadyRead: "+n.alreadyRead+" offset: "+(n.offset+n.alreadyRead-t.fileStart)+" read size: "+(n.length-n.alreadyRead)+" full extent size: "+n.length+" full item size: "+r.size+")"),d.memcpy(r.data.buffer,r.alreadyRead,t,n.offset+n.alreadyRead-t.fileStart,n.length-n.alreadyRead),t.usedBytes+=n.length-n.alreadyRead,this.stream.logBufferLevel(),r.alreadyRead+=n.length-n.alreadyRead,n.alreadyRead=n.length}}return r.alreadyRead===r.size?r:null},g.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var r=0;r0?this.moov.traks[e].samples[0].duration:0),t.push(i)}return t},f.Box.prototype.printHeader=function(e){this.size+=8,this.size>l&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},f.FullBox.prototype.printHeader=function(e){this.size+=4,f.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},f.Box.prototype.print=function(e){this.printHeader(e)},f.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},f.tkhdBox.prototype.print=function(e){f.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var y={createFile:function(e,t){var r=void 0===e||e,i=new g(t);return i.discardMdatData=!r,i}};t.createFile=y.createFile}));function Gi(e){return e.reduce(((e,t)=>256*e+t))}function $i(e){const t=[101,103,119,99],r=e.length-28,i=e.slice(r,r+t.length);return t.every(((e,t)=>e===i[t]))}Oi.Log,Oi.MP4BoxStream,Oi.DataStream,Oi.MultiBufferStream,Oi.MPEG4DescriptorParser,Oi.BoxParser,Oi.XMLSubtitlein4Parser,Oi.Textin4Parser,Oi.ISOFile,Oi.createFile;class Hi{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(r+32,r+32+t))]}return null}(t,this.t);if(!r)return e;const i=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(i instanceof Error)return console.error(i.message),this.d=!0,e;this.A=!0,this.u=r[1],$i(t)&&this.c++,WebAssembly.instantiate(r[2],i).then((e=>{if("function"!=typeof(t=e.instance.exports).parse||"object"!=typeof t.memory)return this.d=!0,void console.error("video_error_3");var t;this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}const Vi=16,Wi=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],ji=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function qi(e){const t=[];for(let r=0,i=e.length;r1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ki(e){const t=[];for(let r=0,i=e.length;r>>6),t.push(128|63&i);else if(i<=55295||i>=57344&&i<=65535)t.push(224|i>>>12),t.push(128|i>>>6&63),t.push(128|63&i);else{if(!(i>=65536&&i<=1114111))throw t.push(i),new Error("input is not supported");r++,t.push(240|i>>>18&28),t.push(128|i>>>12&63),t.push(128|i>>>6&63),t.push(128|63&i)}}return t}function Xi(e){const t=[];for(let r=0,i=e.length;r=240&&e[r]<=247?(t.push(String.fromCodePoint(((7&e[r])<<18)+((63&e[r+1])<<12)+((63&e[r+2])<<6)+(63&e[r+3]))),r+=3):e[r]>=224&&e[r]<=239?(t.push(String.fromCodePoint(((15&e[r])<<12)+((63&e[r+1])<<6)+(63&e[r+2]))),r+=2):e[r]>=192&&e[r]<=223?(t.push(String.fromCodePoint(((31&e[r])<<6)+(63&e[r+1]))),r++):t.push(String.fromCodePoint(e[r]));return t.join("")}function Zi(e,t){const r=31&t;return e<>>32-r}function Ji(e){return(255&Wi[e>>>24&255])<<24|(255&Wi[e>>>16&255])<<16|(255&Wi[e>>>8&255])<<8|255&Wi[255&e]}function Qi(e){return e^Zi(e,2)^Zi(e,10)^Zi(e,18)^Zi(e,24)}function en(e){return e^Zi(e,13)^Zi(e,23)}function tn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[4*t],n[1]=255&e[4*t+1],n[2]=255&e[4*t+2],n[3]=255&e[4*t+3],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];for(let e,t=0;t<32;t+=4)e=i[1]^i[2]^i[3]^r[t+0],i[0]^=Qi(Ji(e)),e=i[2]^i[3]^i[0]^r[t+1],i[1]^=Qi(Ji(e)),e=i[3]^i[0]^i[1]^r[t+2],i[2]^=Qi(Ji(e)),e=i[0]^i[1]^i[2]^r[t+3],i[3]^=Qi(Ji(e));for(let e=0;e<16;e+=4)t[e]=i[3-e/4]>>>24&255,t[e+1]=i[3-e/4]>>>16&255,t[e+2]=i[3-e/4]>>>8&255,t[e+3]=255&i[3-e/4]}function rn(e,t,r){const i=new Array(4),n=new Array(4);for(let t=0;t<4;t++)n[0]=255&e[0+4*t],n[1]=255&e[1+4*t],n[2]=255&e[2+4*t],n[3]=255&e[3+4*t],i[t]=n[0]<<24|n[1]<<16|n[2]<<8|n[3];i[0]^=2746333894,i[1]^=1453994832,i[2]^=1736282519,i[3]^=2993693404;for(let e,r=0;r<32;r+=4)e=i[1]^i[2]^i[3]^ji[r+0],t[r+0]=i[0]^=en(Ji(e)),e=i[2]^i[3]^i[0]^ji[r+1],t[r+1]=i[1]^=en(Ji(e)),e=i[3]^i[0]^i[1]^ji[r+2],t[r+2]=i[2]^=en(Ji(e)),e=i[0]^i[1]^i[2]^ji[r+3],t[r+3]=i[3]^=en(Ji(e));if(0===r)for(let e,r=0;r<16;r++)e=t[r],t[r]=t[31-r],t[31-r]=e}function nn(e,t,r){let{padding:i="pkcs#7",mode:n,iv:o=[],output:s="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===n&&("string"==typeof o&&(o=qi(o)),16!==o.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=qi(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==r?Ki(e):qi(e):[...e],("pkcs#5"===i||"pkcs#7"===i)&&0!==r){const t=Vi-e.length%Vi;for(let r=0;r=Vi;){const t=e.slice(c,c+16),i=new Array(16);if("cbc"===n)for(let e=0;e2&&void 0!==arguments[2]&&arguments[2];const i=e.byteLength;let n=5;for(;ni)break;let s=e[n+4],a=!1;if(r?(s=s>>>1&63,a=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(s)):(s&=31,a=1===s||5===s),a){const r=nn(e.slice(n+4+2,n+4+o),t,0,{padding:"none",output:"array"});e.set(r,n+4+2)}n=n+4+o}return e}class an{on(e,t,r){const i=this.e||(this.e={});return(i[e]||(i[e]=[])).push({fn:t,ctx:r}),this}once(e,t,r){const i=this;function n(){i.off(e,n);for(var o=arguments.length,s=new Array(o),a=0;a1?r-1:0),n=1;n{delete r[e]})),void delete this.e;const i=r[e],n=[];if(i&&t)for(let e=0,r=i.length;e=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=dn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=dn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==dn.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=dn.findFirstStartCode}}}}function un(e,t,r){for(let i=2;i3&&void 0!==arguments[3]&&arguments[3];const n=e.byteLength;let o=5;for(;on)break;let a=e[o+4],d=!1;if(i?(a=a>>>1&63,d=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(a)):(a&=31,d=1===a||5===a),d){const i=un(e.slice(o+4,o+4+s),t,r);e.set(i,o+4)}o=o+4+s}return e}function hn(){for(var e=arguments.length,t=new Array(e),r=0;re+t.byteLength),0));let n=0;return t.forEach((e=>{i.set(e,n),n+=e.byteLength})),i}class pn{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,r){let i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,r,i)));e.addEventListener(t,r,i);const n=()=>{ur(e.removeEventListener)&&e.removeEventListener(t,r,i)};return this.destroys.push(n),n}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class mn{static init(){mn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in mn.types)mn.types.hasOwnProperty(e)&&(mn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=mn.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,r=null,i=Array.prototype.slice.call(arguments,1),n=i.length;for(let e=0;e>>24&255,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r.set(e,4);let o=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 mn.box(mn.types.trak,mn.tkhd(e),mn.mdia(e))}static tkhd(e){let t=e.id,r=e.duration,i=e.presentWidth,n=e.presentHeight;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,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(e){return mn.box(mn.types.mdia,mn.mdhd(e),mn.hdlr(e),mn.minf(e))}static mdhd(e){let t=e.timescale,r=e.duration;return mn.box(mn.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,r>>>24&255,r>>>16&255,r>>>8&255,255&r,85,196,0,0]))}static hdlr(e){let t=null;return t="audio"===e.type?mn.constants.HDLR_AUDIO:mn.constants.HDLR_VIDEO,mn.box(mn.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?mn.box(mn.types.smhd,mn.constants.SMHD):mn.box(mn.types.vmhd,mn.constants.VMHD),mn.box(mn.types.minf,t,mn.dinf(),mn.stbl(e))}static dinf(){return mn.box(mn.types.dinf,mn.box(mn.types.dref,mn.constants.DREF))}static stbl(e){return mn.box(mn.types.stbl,mn.stsd(e),mn.box(mn.types.stts,mn.constants.STTS),mn.box(mn.types.stsc,mn.constants.STSC),mn.box(mn.types.stsz,mn.constants.STSZ),mn.box(mn.types.stco,mn.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp3(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.mp4a(e)):"avc"===e.videoType?mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.avc1(e)):mn.box(mn.types.stsd,mn.constants.STSD_PREFIX,mn.hvc1(e))}static mp3(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types[".mp3"],i)}static mp4a(e){let t=e.channelCount,r=e.audioSampleRate,i=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,r>>>8&255,255&r,0,0]);return mn.box(mn.types.mp4a,i,mn.esds(e))}static esds(e){let t=e.config||[],r=t.length,i=new Uint8Array([0,0,0,0,3,23+r,0,1,0,4,15+r,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([r]).concat(t).concat([6,1,2]));return mn.box(mn.types.esds,i)}static avc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.avc1,n,mn.box(mn.types.avcC,t))}static hvc1(e){let t=e.avcc;const r=e.codecWidth,i=e.codecHeight;let 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,r>>>8&255,255&r,i>>>8&255,255&i,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return mn.box(mn.types.hvc1,n,mn.box(mn.types.hvcC,t))}static mvex(e){return mn.box(mn.types.mvex,mn.trex(e))}static trex(e){let t=e.id,r=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 mn.box(mn.types.trex,r)}static moof(e,t){return mn.box(mn.types.moof,mn.mfhd(e.sequenceNumber),mn.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 mn.box(mn.types.mfhd,t)}static traf(e,t){let r=e.id,i=mn.box(mn.types.tfhd,new Uint8Array([0,0,0,0,r>>>24&255,r>>>16&255,r>>>8&255,255&r])),n=mn.box(mn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),o=mn.sdtp(e),s=mn.trun(e,o.byteLength+16+16+8+16+8+8);return mn.box(mn.types.traf,i,n,s,o)}static sdtp(e){let t=new Uint8Array(5),r=e.flags;return t[4]=r.isLeading<<6|r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy,mn.box(mn.types.sdtp,t)}static trun(e,t){let r=new Uint8Array(28);t+=36,r.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let i=e.duration,n=e.size,o=e.flags,s=e.cts;return r.set([i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.isNonSync,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s],12),mn.box(mn.types.trun,r)}static mdat(e){return mn.box(mn.types.mdat,e)}}mn.init();var _n,gn=Ot((function(e){e.exports=function(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e},e.exports.__esModule=!0,e.exports.default=e.exports}));(_n=gn)&&_n.__esModule&&Object.prototype.hasOwnProperty.call(_n,"default")&&_n.default;const yn=[44100,48e3,32e3,0],vn=[22050,24e3,16e3,0],bn=[11025,12e3,8e3,0],wn=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],Sn=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],En=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];function An(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),r=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let i=t[1]>>>3&3,n=(6&t[1])>>1,o=(240&t[2])>>>4,s=(12&t[2])>>>2,a=3!==(t[3]>>>6&3)?2:1,d=0,l=0;switch(i){case 0:d=bn[s];break;case 2:d=vn[s];break;case 3:d=yn[s]}switch(n){case 1:o=e[n]&&t=6?(i=5,t=new Array(4),s=n-3):(i=2,t=new Array(2),s=n):-1!==a.indexOf("android")?(i=2,t=new Array(2),s=n):(i=5,s=n,t=new Array(4),n>=6?s=n-3:1===o&&(i=2,t=new Array(2),s=n)),t[0]=i<<3,t[0]|=(15&n)>>>1,t[1]=(15&n)<<7,t[1]|=(15&o)<<3,5===i&&(t[1]|=(15&s)>>>1,t[2]=(1&s)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Nn[n],this.sampling_index=n,this.channel_count=o,this.object_type=i,this.original_object_type=r,this.codec_mimetype="mp4a.40."+i,this.original_codec_mimetype="mp4a.40."+r}}Date.now||(Date.now=function(){return(new Date).getTime()});const $n=[];$n.push(s({printErr:function(e){console.warn("JbPro[❌❌❌][worker]:",e)}}),o({printErr:function(e){console.warn("JbPro[❌❌❌][worker]",e)}})),Promise.all($n).then((e=>{const t=e[0];!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=[],n=[],o={},s=new AbortController,a=null,d=null,l=null,u=null,c=!1,f=null,h=null,S=!1,E=!1,U=!!yr(r),be=!1,we=null,Ve=null,Xe=null,st=[],ht=null,pt=null,mt=0,_t=0,Et=null,At=null,Ut=0,Nt=0,Ot=!1,Gt=!1,$t=!1,Ht=null,Yt=null,Jt=null,nr=!1,wr=!0,Sr=()=>{const e=_r();return{debug:e.debug,debugLevel:e.debugLevel,debugUuid:e.debugUuid,useOffscreen:e.useOffscreen,useWCS:e.useWCS,useMSE:e.useMSE,videoBuffer:e.videoBuffer,videoBufferDelay:e.videoBufferDelay,openWebglAlignment:e.openWebglAlignment,playType:e.playType,hasAudio:e.hasAudio,hasVideo:e.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:e.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:e.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:0,networkDelay:e.networkDelay,visibility:!0,useSIMD:e.useSIMD,isRecording:!1,recordType:e.recordType,isNakedFlow:e.isNakedFlow,checkFirstIFrame:e.checkFirstIFrame,audioBufferSize:1024,isM7sCrypto:e.isM7sCrypto,m7sCryptoAudio:e.m7sCryptoAudio,cryptoKey:e.cryptoKey,cryptoIV:e.cryptoIV,isSm4Crypto:e.isSm4Crypto,sm4CryptoKey:e.sm4CryptoKey,isXorCrypto:e.isXorCrypto,isHls265:!1,isFlv:e.isFlv,isFmp4:e.isFmp4,isMpeg4:e.isMpeg4,isTs:e.isTs,isFmp4Private:e.isFmp4Private,isEmitSEI:e.isEmitSEI,isRecordTypeFlv:!1,isWasmMp4:!1,isChrome:!1,isDropSameTimestampGop:e.isDropSameTimestampGop,mseDecodeAudio:e.mseDecodeAudio,nakedFlowH265DemuxUseNew:e.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:e.mseDecoderUseWorker,mseAutoCleanupSourceBuffer:e.mseAutoCleanupSourceBuffer,mseAutoCleanupMaxBackwardDuration:e.mseAutoCleanupMaxBackwardDuration,mseAutoCleanupMinBackwardDuration:e.mseAutoCleanupMinBackwardDuration,mseCorrectTimeDuration:e.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:e.mseCorrectAudioTimeDuration}};"VideoEncoder"in self&&(o={hasInit:!1,isEmitInfo:!1,offscreenCanvas:null,offscreenCanvasCtx:null,decoder:new VideoDecoder({output:function(e){if(o.isEmitInfo||(ii.debug.log("worker","Webcodecs Video Decoder initSize"),postMessage({cmd:T,w:e.codedWidth,h:e.codedHeight}),o.isEmitInfo=!0,o.offscreenCanvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),o.offscreenCanvasCtx=o.offscreenCanvas.getContext("2d")),ur(e.createImageBitmap))e.createImageBitmap().then((t=>{o.offscreenCanvasCtx.drawImage(t,0,0,e.codedWidth,e.codedHeight);let r=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:r,delay:ii.delay,ts:0},[r]),hr(e)}));else{o.offscreenCanvasCtx.drawImage(e,0,0,e.codedWidth,e.codedHeight);let t=o.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:t,delay:ii.delay,ts:0},[t]),hr(e)}},error:function(e){ii.debug.error("worker","VideoDecoder error",e)}}),decode:function(e,t,r){const i=e[0]>>4==1;if(o.hasInit){const r=new EncodedVideoChunk({data:e.slice(5),timestamp:t,type:i?lt:ut});o.decoder.decode(r)}else if(i&&0===e[1]){const t=15&e[0];postMessage({cmd:M,code:t});const r=new Uint8Array(e);postMessage({cmd:R,buffer:r,codecId:t},[r.buffer]);let i=null,n=null;const s=e.slice(5);t===Fe?(n=Tr(s),i={codec:n.codec,description:s}):t===Ie&&(n=Wr(s),i={codec:n.codec,description:s}),n&&n.codecWidth&&n.codecHeight&&(i.codedHeight=n.codecHeight,i.codedWidth=n.codecWidth);try{o.decoder.configure(i),o.hasInit=!0}catch(e){ii.debug.log("worker","VideoDecoder configure error",e.code,e)}}},reset(){o.hasInit=!1,o.isEmitInfo=!1,o.offscreenCanvas=null,o.offscreenCanvasCtx=null}});let Er=function(){if(nr=!0,ii.fetchStatus!==Ct||vr(ii._opt.isChrome)){if(s)try{s.abort(),s=null}catch(e){ii.debug.log("worker","abort catch",e)}}else s=null,ii.debug.log("worker",`abort() and not abortController.abort() _status is ${ii.fetchStatus} and _isChrome is ${ii._opt.isChrome}`)},Ar={init(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},destroy(){Ar.lastBuf=null,Ar.vps=null,Ar.sps=null,Ar.pps=null,Ar.streamType=null,Ar.localDts=0,Ar.isSendSeqHeader=!1},dispatch(e){const t=new Uint8Array(e);Ar.extractNALu$2(t)},getNaluDts(){let e=Ar.localDts;return Ar.localDts=Ar.localDts+40,e},getNaluAudioDts(){const e=ii._opt.sampleRate,t=ii._opt.audioBufferSize;return Ar.localDts+parseInt(t/e*1e3)},extractNALu(e){let t,r,i=0,n=e.byteLength,o=0,s=[];for(;i1)for(let e=0;e{const t=Ir(e);t===He||t===$e?Ar.handleVideoH264Nalu(e):Mr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH264Nalu(i[0]);else if(zr(i)){const e=Ir(i[0]),t=Rr(e);Ar.handleVideoH264NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH264Nalu(e)}))}else if(Ar.streamType===Re)if(ii._opt.nakedFlowH265DemuxUseNew){const t=Ar.handleAddNaluStartCode(e),r=Ar.extractNALu(t);if(0===r.length)return void ii.debug.warn("worker","handleVideoNalu","h265 naluList.length === 0");const i=[];if(r.forEach((e=>{const t=Xr(e);t===nt||t===rt||t===et?Ar.handleVideoH265Nalu(e):Jr(t)&&i.push(e)})),1===i.length)Ar.handleVideoH265Nalu(i[0]);else if(ei(i)){const e=Xr(i[0]),t=Qr(e);Ar.handleVideoH265NaluList(i,t,e)}else i.forEach((e=>{Ar.handleVideoH265Nalu(e)}))}else Xr(e)===nt?Ar.extractH265PPS(e):Ar.handleVideoH265Nalu(e)},extractH264PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Lr(Ir(e))?Ar.extractH264SEI(e):Ar.handleVideoH264Nalu(e)}))},extractH265PPS(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Zr(Xr(e))?Ar.extractH265SEI(e):Ar.handleVideoH265Nalu(e)}))},extractH264SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH264Nalu(e)}))},extractH265SEI(e){const t=Ar.handleAddNaluStartCode(e);Ar.extractNALu(t).forEach((e=>{Ar.handleVideoH265Nalu(e)}))},handleAddNaluStartCode(e){const t=[0,0,0,1],r=new Uint8Array(e.length+t.length);return r.set(t),r.set(e,t.length),r},handleVideoH264Nalu(e){const t=Ir(e);switch(t){case $e:Ar.sps=e;break;case He:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.sps&&Ar.pps){const e=Cr({sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}if(Mr(t)){const r=Rr(t),i=Ar.getNaluDts(),n=Pr(e,r);Ar.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH264Nalu Avc Seq Head is ${t}`)}else if(Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=Cr({sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ar.sps=null,Ar.pps=null}},handleVideoH264NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Fr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH264NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH264NaluList isSendSeqHeader is false")},handleVideoH265Nalu(e){const t=Xr(e);switch(t){case et:Ar.vps=e;break;case rt:Ar.sps=e;break;case nt:Ar.pps=e}if(Ar.isSendSeqHeader){if(Ar.vps&&Ar.sps&&Ar.pps){const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps}),t=Ar.getNaluDts();ii.decode(e,{type:se,ts:t,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}if(Jr(t)){const r=Qr(t),i=Ar.getNaluDts(),n=Yr(e,r);Ar.doDecode(n,{type:se,ts:i,isIFrame:r,cts:0})}else ii.debug.warn("work",`handleVideoH265Nalu HevcSeqHead is ${t}`)}else if(Ar.vps&&Ar.sps&&Ar.pps){Ar.isSendSeqHeader=!0;const e=qr({vps:Ar.vps,sps:Ar.sps,pps:Ar.pps});ii.decode(e,{type:se,ts:0,isIFrame:!0,cts:0}),Ar.vps=null,Ar.sps=null,Ar.pps=null}},handleVideoH265NaluList(e,t,r){if(Ar.isSendSeqHeader){const i=Ar.getNaluDts(),n=Kr(e.reduce(((e,t)=>{const r=er(e),i=er(t),n=new Uint8Array(r.byteLength+i.byteLength);return n.set(r,0),n.set(i,r.byteLength),n})),t);Ar.doDecode(n,{type:se,ts:i,isIFrame:t,cts:0}),ii.debug.log("worker",`handleVideoH265NaluList list size is ${e.length} package length is ${n.byteLength} isIFrame is ${t},nalu type is ${r}, dts is ${i}`)}else ii.debug.warn("worker","handleVideoH265NaluList isSendSeqHeader is false")},doDecode(e,t){ii.calcNetworkDelay(t.ts),t.isIFrame&&ii.calcIframeIntervalTimestamp(t.ts),ii.decode(e,t)}},kr={LOG_NAME:"worker fmp4Demuxer",mp4Box:null,offset:0,videoTrackId:null,audioTrackId:null,isHevc:!1,listenMp4Box(){kr.mp4Box=Oi.createFile(),kr.mp4Box.onReady=kr.onReady,kr.mp4Box.onError=kr.onError,kr.mp4Box.onSamples=kr.onSamples},initTransportDescarmber(){kr.transportDescarmber=new Hi},_getSeqHeader(e){const t=kr.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Oi.DataStream(void 0,0,Oi.DataStream.BIG_ENDIAN);let r=[];e.avcC?(e.avcC.write(t),r=[23,0,0,0,0]):(kr.isHevc=!0,Ht=!0,e.hvcC.write(t),r=[28,0,0,0,0]);const i=new Uint8Array(t.buffer,8),n=new Uint8Array(r.length+i.length);return n.set(r,0),n.set(i,r.length),n}return null},onReady(e){ii.debug.log(kr.LOG_NAME,"onReady()");const t=e.videoTracks[0],r=e.audioTracks[0];if(t){kr.videoTrackId=t.id;const e=kr._getSeqHeader(t);e&&(ii.debug.log(kr.LOG_NAME,"seqHeader"),ii.decodeVideo(e,0,!0,0)),kr.mp4Box.setExtractionOptions(t.id)}if(r&&ii._opt.hasAudio){kr.audioTrackId=r.id;const e=r.audio||{},t=Vt.indexOf(e.sample_rate),i=r.codec.replace("mp4a.40.","");kr.mp4Box.setExtractionOptions(r.id);const n=Wt({profile:parseInt(i,10),sampleRate:t,channel:e.channel_count});ii.debug.log(kr.LOG_NAME,"aacADTSHeader"),ii.decodeAudio(n,0)}kr.mp4Box.start()},onError(e){ii.debug.error(kr.LOG_NAME,"mp4Box onError",e)},onSamples(e,t,r){if(e===kr.videoTrackId)for(const t of r){const r=t.data,i=t.is_sync,n=1e3*t.cts/t.timescale;t.duration,t.timescale,i&&ii.calcIframeIntervalTimestamp(n);let o=null;o=kr.isHevc?Kr(r,i):Fr(r,i),ii.decode(o,{type:se,ts:n,isIFrame:i,cts:0}),kr.mp4Box.releaseUsedSamples(e,t.number)}else if(e===kr.audioTrackId){if(ii._opt.hasAudio)for(const t of r){const r=t.data,i=1e3*t.cts/t.timescale;t.duration,t.timescale;const n=new Uint8Array(r.byteLength+2);n.set([175,1],0),n.set(r,2),ii.decode(n,{type:oe,ts:i,isIFrame:!1,cts:0}),kr.mp4Box.releaseUsedSamples(e,t.number)}}else ii.debug.warn(kr.LOG_NAME,"onSamples() trackId error",e)},dispatch(e){let t=new Uint8Array(e);kr.transportDescarmber&&(t=kr.transportDescarmber.transport(t)),t.buffer.fileStart=kr.offset,kr.offset+=t.byteLength,kr.mp4Box.appendBuffer(t.buffer)},destroy(){kr.mp4Box&&(kr.mp4Box.stop(),kr.mp4Box.flush(),kr.mp4Box.destroy(),kr.mp4Box=null),kr.transportDescarmber&&(kr.transportDescarmber.destroy(),kr.transportDescarmber=null),kr.offset=0,kr.videoTrackId=null,kr.audioTrackId=null,kr.isHevc=!1}},Gr={LOG_NAME:"worker mpeg4Demuxer",lastBuffer:new Uint8Array(0),parsedOffset:0,firstStartCodeOffset:0,secondStartCodeOffset:0,state:"init",hasInitVideoCodec:!1,localDts:0,dispatch(e){const t=new Uint8Array(e);Gr.extractNALu(t)},destroy(){Gr.lastBuffer=new Uint8Array(0),Gr.parsedOffset=0,Gr.firstStartCodeOffset=0,Gr.secondStartCodeOffset=0,Gr.state="init",Gr.hasInitVideoCodec=!1,Gr.localDts=0},extractNALu(e){if(!e||e.byteLength<1)return void ii.debug.warn(Gr.LOG_NAME,"extractNALu() buffer error",e);const t=new Uint8Array(Gr.lastBuffer.length+e.length);for(t.set(Gr.lastBuffer,0),t.set(new Uint8Array(e),Gr.lastBuffer.length),Gr.lastBuffer=t;;){if("init"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findFirstStartCode",Gr.firstStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findFirstStartCode"===Gr.state){let e=!1;for(;Gr.lastBuffer.length-Gr.parsedOffset>=4;)if(0===Gr.lastBuffer[Gr.parsedOffset])if(0===Gr.lastBuffer[Gr.parsedOffset+1])if(1===Gr.lastBuffer[Gr.parsedOffset+2]){if(182===Gr.lastBuffer[Gr.parsedOffset+3]){Gr.state="findSecondStartCode",Gr.secondStartCodeOffset=Gr.parsedOffset,Gr.parsedOffset+=4,e=!0;break}Gr.parsedOffset++}else Gr.parsedOffset++;else Gr.parsedOffset++;else Gr.parsedOffset++;if(e)continue;break}if("findSecondStartCode"===Gr.state){if(!(Gr.lastBuffer.length-Gr.parsedOffset>0))break;{let e,t,r=192&Gr.lastBuffer[Gr.parsedOffset];e=0==r?Gr.secondStartCodeOffset-14:Gr.secondStartCodeOffset;let i=0==(192&Gr.lastBuffer[Gr.firstStartCodeOffset+4]);if(i){if(Gr.firstStartCodeOffset-14<0)return void ii.debug.warn(Gr.LOG_NAME,"firstStartCodeOffset -14 is",Gr.firstStartCodeOffset-14);Gr.hasInitVideoCodec||(Gr.hasInitVideoCodec=!0,ii.debug.log(Gr.LOG_NAME,"setCodec"),oi.setCodec(Le,"")),t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset-14,e)}else t=Gr.lastBuffer.subarray(Gr.firstStartCodeOffset,e);let n=Gr.getNaluDts();Gr.hasInitVideoCodec?(postMessage({cmd:G,type:Be,value:t.byteLength}),postMessage({cmd:G,type:xe,value:n}),oi.decode(t,i?1:0,n)):ii.debug.warn(Gr.LOG_NAME,"has not init video codec"),Gr.lastBuffer=Gr.lastBuffer.subarray(e),Gr.firstStartCodeOffset=0==r?14:0,Gr.parsedOffset=Gr.firstStartCodeOffset+4,Gr.state="findFirstStartCode"}}}},getNaluDts(){let e=Gr.localDts;return Gr.localDts=Gr.localDts+40,e}},$r={TAG_NAME:"worker TsLoaderV2",first_parse_:!0,tsPacketSize:0,syncOffset:0,pmt_:null,config_:null,media_info_:new On,timescale_:90,duration_:0,pat_:{version_number:0,network_pid:0,program_map_pid:{}},current_program_:null,current_pmt_pid_:-1,program_pmt_map_:{},pes_slice_queues_:{},section_slice_queues_:{},video_metadata_:{vps:null,sps:null,pps:null,details:null},audio_metadata_:{codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},last_pcr_:null,audio_last_sample_pts_:void 0,aac_last_incomplete_data_:null,has_video_:!1,has_audio_:!1,video_init_segment_dispatched_:!1,audio_init_segment_dispatched_:!1,video_metadata_changed_:!1,audio_metadata_changed_:!1,loas_previous_frame:null,video_track_:{type:"video",id:1,sequenceNumber:0,samples:[],length:0},audio_track_:{type:"audio",id:2,sequenceNumber:0,samples:[],length:0},_remainingPacketData:null,init(){},destroy(){$r.media_info_=null,$r.pes_slice_queues_=null,$r.section_slice_queues_=null,$r.video_metadata_=null,$r.audio_metadata_=null,$r.aac_last_incomplete_data_=null,$r.video_track_=null,$r.audio_track_=null,$r._remainingPacketData=null},probe(e){let t=new Uint8Array(e),r=-1,i=188;if(t.byteLength<=3*i)return{needMoreData:!0};for(;-1===r;){let e=Math.min(1e3,t.byteLength-3*i);for(let n=0;n=4&&(r-=4),{match:!0,consumed:0,ts_packet_size:i,sync_offset:r})},_initPmt:()=>({program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}),dispatch(e){$r._remainingPacketData&&(e=hn($r._remainingPacketData,e),$r._remainingPacketData=null);let t=e.buffer;const r=$r.parseChunks(t);r?$r._remainingPacketData=e.subarray(r):e.length>>6;r[1];let o=(31&r[1])<<8|r[2],s=(48&r[3])>>>4,a=15&r[3],d=!(!$r.pmt_||$r.pmt_.pcr_pid!==o),l={},u=4;if(2==s||3==s){let e=r[4];if(e>0&&(d||3==s)&&(l.discontinuity_indicator=(128&r[5])>>>7,l.random_access_indicator=(64&r[5])>>>6,l.elementary_stream_priority_indicator=(32&r[5])>>>5,(16&r[5])>>>4)){let e=300*(r[6]<<25|r[7]<<17|r[8]<<9|r[9]<<1|r[10]>>>7)+((1&r[10])<<8|r[11]);$r.last_pcr_=e}if(2==s||5+e===188){t+=188,204===$r.tsPacketSize&&(t+=16);continue}u=5+e}if(1==s||3==s)if(0===o||o===$r.current_pmt_pid_||null!=$r.pmt_&&$r.pmt_.pid_stream_type[o]===Fn){let r=188-u;$r.handleSectionSlice(e,t+u,r,{pid:o,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}else if(null!=$r.pmt_&&null!=$r.pmt_.pid_stream_type[o]){let r=188-u,i=$r.pmt_.pid_stream_type[o];o!==$r.pmt_.common_pids.h264&&o!==$r.pmt_.common_pids.h265&&o!==$r.pmt_.common_pids.adts_aac&&o!==$r.pmt_.common_pids.loas_aac&&o!==$r.pmt_.common_pids.ac3&&o!==$r.pmt_.common_pids.eac3&&o!==$r.pmt_.common_pids.opus&&o!==$r.pmt_.common_pids.mp3&&!0!==$r.pmt_.pes_private_data_pids[o]&&!0!==$r.pmt_.timed_id3_pids[o]&&!0!==$r.pmt_.synchronous_klv_pids[o]&&!0!==$r.pmt_.asynchronous_klv_pids[o]||$r.handlePESSlice(e,t+u,r,{pid:o,stream_type:i,payload_unit_start_indicator:n,continuity_conunter:a,random_access_indicator:l.random_access_indicator})}t+=188,204===$r.tsPacketSize&&(t+=16)}return $r.dispatchAudioVideoMediaSegment(),t},handleSectionSlice(e,t,r,i){let n=new Uint8Array(e,t,r),o=$r.section_slice_queues_[i.pid];if(i.payload_unit_start_indicator){let s=n[0];if(null!=o&&0!==o.total_length){let n=new Uint8Array(e,t+1,Math.min(r,s));o.slices.push(n),o.total_length+=n.byteLength,o.total_length===o.expected_length?$r.emitSectionSlices(o,i):$r.clearSlices(o,i)}for(let a=1+s;a=o.expected_length&&$r.clearSlices(o,i),a+=d.byteLength}}else if(null!=o&&0!==o.total_length){let n=new Uint8Array(e,t,Math.min(r,o.expected_length-o.total_length));o.slices.push(n),o.total_length+=n.byteLength,o.total_length===o.expected_length?$r.emitSectionSlices(o,i):o.total_length>=o.expected_length&&$r.clearSlices(o,i)}},handlePESSlice(e,t,r,i){let n=new Uint8Array(e,t,r),o=n[0]<<16|n[1]<<8|n[2];n[3];let s=n[4]<<8|n[5];if(i.payload_unit_start_indicator){if(1!==o)return void ii.debug.warn($r.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${o}`);let e=$r.pes_slice_queues_[i.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?$r.emitPESSlices(e,i):$r.clearSlices(e,i)),$r.pes_slice_queues_[i.pid]=new Mn,$r.pes_slice_queues_[i.pid].random_access_indicator=i.random_access_indicator}if(null==$r.pes_slice_queues_[i.pid])return;let a=$r.pes_slice_queues_[i.pid];a.slices.push(n),i.payload_unit_start_indicator&&(a.expected_length=0===s?0:s+6),a.total_length+=n.byteLength,a.expected_length>0&&a.expected_length===a.total_length?$r.emitPESSlices(a,i):a.expected_length>0&&a.expected_length>>6,a=t[8];2!==s&&3!==s||(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,o=3===s?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:r);let d,l=9+a;if(0!==n){if(n<3+a)return void ii.debug.warn($r.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");d=n-3-a}else d=t.byteLength-l;let u=t.subarray(l,l+d);switch(e.stream_type){case Bn:case xn:$r.parseMP3Payload(u,r);break;case Un:$r.pmt_.common_pids.opus===e.pid||$r.pmt_.common_pids.ac3===e.pid||$r.pmt_.common_pids.eac3===e.pid||($r.pmt_.asynchronous_klv_pids[e.pid]?$r.parseAsynchronousKLVMetadataPayload(u,e.pid,i):$r.pmt_.smpte2038_pids[e.pid]?$r.parseSMPTE2038MetadataPayload(u,r,o,e.pid,i):$r.parsePESPrivateDataPayload(u,r,o,e.pid,i));break;case kn:$r.parseADTSAACPayload(u,r);break;case Tn:$r.parseLOASAACPayload(u,r);break;case Cn:case Dn:break;case Pn:$r.pmt_.timed_id3_pids[e.pid]?$r.parseTimedID3MetadataPayload(u,r,o,e.pid,i):$r.pmt_.synchronous_klv_pids[e.pid]&&$r.parseSynchronousKLVMetadataPayload(u,r,o,e.pid,i);break;case In:$r.parseH264Payload(u,r,o,e.random_access_indicator);break;case Ln:$r.parseH265Payload(u,r,o,e.random_access_indicator)}}else if((188===i||191===i||240===i||241===i||255===i||242===i||248===i)&&e.stream_type===Un){let r,o=6;r=0!==n?n:t.byteLength-o;let s=t.subarray(o,o+r);$r.parsePESPrivateDataPayload(s,void 0,void 0,e.pid,i)}}else ii.debug.error($r.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${r}`)},parsePAT(e){let t=e[0];if(0!==t)return void Log.e($r.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let r=(15&e[1])<<8|e[2];e[3],e[4];let i=(62&e[5])>>>1,n=1&e[5],o=e[6];e[7];let s=null;if(1===n&&0===o)s={version_number:0,network_pid:0,program_pmt_pid:{}},s.version_number=i;else if(s=$r.pat_,null==s)return;let a=r-5-4,d=-1,l=-1;for(let t=8;t<8+a;t+=4){let r=e[t]<<8|e[t+1],i=(31&e[t+2])<<8|e[t+3];0===r?s.network_pid=i:(s.program_pmt_pid[r]=i,-1===d&&(d=r),-1===l&&(l=i))}1===n&&0===o&&(null==$r.pat_&&ii.debug.log($r.TAG_NAME,`Parsed first PAT: ${JSON.stringify(s)}`),$r.pat_=s,$r.current_program_=d,$r.current_pmt_pid_=l)},parsePMT(e){let t=e[0];if(2!==t)return void ii.debug.error($r.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let r,i=(15&e[1])<<8|e[2],n=e[3]<<8|e[4],o=(62&e[5])>>>1,s=1&e[5],a=e[6];if(e[7],1===s&&0===a)r=$r._initPmt(),r.program_number=n,r.version_number=o,$r.program_pmt_map_[n]=r;else if(r=$r.program_pmt_map_[n],null==r)return;r.pcr_pid=(31&e[8])<<8|e[9];let d=(15&e[10])<<8|e[11],l=12+d,u=i-9-d-4;for(let t=l;t0){for(let i=t+5;i0)for(let i=t+5;i$r.has_video_&&$r.has_audio_?$r.video_init_segment_dispatched_&&$r.audio_init_segment_dispatched_:$r.has_video_&&!$r.has_audio_?$r.video_init_segment_dispatched_:!($r.has_video_||!$r.has_audio_)&&$r.audio_init_segment_dispatched_,dispatchVideoInitSegment(){let e=$r.video_metadata_.details,t={type:"video"};t.id=$r.video_track_.id,t.timescale=1e3,t.duration=$r.duration_,t.codecWidth=e.codec_size.width,t.codecHeight=e.codec_size.height,t.presentWidth=e.present_size.width,t.presentHeight=e.present_size.height,t.profile=e.profile_string,t.level=e.level_string,t.bitDepth=e.bit_depth,t.chromaFormat=e.chroma_format,t.sarRatio=e.sar_ratio,t.frameRate=e.frame_rate;let r=t.frameRate.fps_den,i=t.frameRate.fps_num;if(t.refSampleDuration=r/i*1e3,t.codec=e.codec_mimetype,$r.video_metadata_.vps){let e=$r.video_metadata_.vps.data.subarray(4),r=$r.video_metadata_.sps.data.subarray(4),i=$r.video_metadata_.pps.data.subarray(4);t.hvcc=qr({vps:e,sps:r,pps:i}),0==$r.video_init_segment_dispatched_&&ii.debug.log($r.TAG_NAME,`Generated first HEVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.hvcc&&ii.decodeVideo(t.hvcc,0,!0,0)}else{let e=$r.video_metadata_.sps.data.subarray(4),r=$r.video_metadata_.pps.data.subarray(4);t.avcc=Dr({sps:e,pps:r}),0==$r.video_init_segment_dispatched_&&ii.debug.log($r.TAG_NAME,`Generated first AVCDecoderConfigurationRecord for mimeType: ${t.codec}`),t.avcc&&ii.decodeVideo(t.avcc,0,!0,0)}$r.video_init_segment_dispatched_=!0,$r.video_metadata_changed_=!1;let n=$r.media_info_;n.hasVideo=!0,n.width=t.codecWidth,n.height=t.codecHeight,n.fps=t.frameRate.fps,n.profile=t.profile,n.level=t.level,n.refFrames=e.ref_frames,n.chromaFormat=e.chroma_format_string,n.sarNum=t.sarRatio.width,n.sarDen=t.sarRatio.height,n.videoCodec=t.codec,n.hasAudio&&n.audioCodec?n.mimeType=`video/mp2t; codecs="${n.videoCodec},${n.audioCodec}"`:n.mimeType=`video/mp2t; codecs="${n.videoCodec}"`},dispatchVideoMediaSegment(){$r.isInitSegmentDispatched()&&$r.video_track_.length&&$r._preDoDecode()},dispatchAudioMediaSegment(){$r.isInitSegmentDispatched()&&$r.audio_track_.length&&$r._preDoDecode()},dispatchAudioVideoMediaSegment(){$r.isInitSegmentDispatched()&&($r.audio_track_.length||$r.video_track_.length)&&$r._preDoDecode()},parseADTSAACPayload(e,t){if($r.has_video_&&!$r.video_init_segment_dispatched_)return;if($r.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+$r.aac_last_incomplete_data_.byteLength);t.set($r.aac_last_incomplete_data_,0),t.set(e,$r.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/$r.timescale_),"aac"===$r.audio_metadata_.codec){if(null==t&&null!=$r.audio_last_sample_pts_)r=1024/$r.audio_metadata_.sampling_frequency*1e3,i=$r.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn($r.TAG_NAME,"AAC: Unknown pts");if($r.aac_last_incomplete_data_&&$r.audio_last_sample_pts_){r=1024/$r.audio_metadata_.sampling_frequency*1e3;let e=$r.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn($r.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,o=new Xt(e),s=null,a=i;for(;null!=(s=o.readNextAACFrame());){r=1024/s.sampling_frequency*1e3;const e={codec:"aac",data:s};0==$r.audio_init_segment_dispatched_?($r.audio_metadata_={codec:"aac",audio_object_type:s.audio_object_type,sampling_freq_index:s.sampling_freq_index,sampling_frequency:s.sampling_frequency,channel_config:s.channel_config},$r.dispatchAudioInitSegment(e)):$r.detectAudioMetadataChange(e)&&($r.dispatchAudioMediaSegment(),$r.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(s.data.length+2);i.set([175,1],0),i.set(s.data,2);let o={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};$r.audio_track_.samples.push(o),$r.audio_track_.length+=i.byteLength,a+=r}o.hasIncompleteData()&&($r.aac_last_incomplete_data_=o.getIncompleteData()),n&&($r.audio_last_sample_pts_=n)},parseLOASAACPayload(e,t){if($r.has_video_&&!$r.video_init_segment_dispatched_)return;if($r.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+$r.aac_last_incomplete_data_.byteLength);t.set($r.aac_last_incomplete_data_,0),t.set(e,$r.aac_last_incomplete_data_.byteLength),e=t}let r,i;if(null!=t&&(i=t/$r.timescale_),"aac"===$r.audio_metadata_.codec){if(null==t&&null!=$r.audio_last_sample_pts_)r=1024/$r.audio_metadata_.sampling_frequency*1e3,i=$r.audio_last_sample_pts_+r;else if(null==t)return void ii.debug.warn($r.TAG_NAME,"AAC: Unknown pts");if($r.aac_last_incomplete_data_&&$r.audio_last_sample_pts_){r=1024/$r.audio_metadata_.sampling_frequency*1e3;let e=$r.audio_last_sample_pts_+r;Math.abs(e-i)>1&&(ii.debug.warn($r.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${i}ms`),i=e)}}let n,o=new Zt(e),s=null,a=i;for(;null!=(s=o.readNextAACFrame(dr(this.loas_previous_frame)?void 0:this.loas_previous_frame));){$r.loas_previous_frame=s,r=1024/s.sampling_frequency*1e3;const e={codec:"aac",data:s};0==$r.audio_init_segment_dispatched_?($r.audio_metadata_={codec:"aac",audio_object_type:s.audio_object_type,sampling_freq_index:s.sampling_freq_index,sampling_frequency:s.sampling_frequency,channel_config:s.channel_config},$r.dispatchAudioInitSegment(e)):$r.detectAudioMetadataChange(e)&&($r.dispatchAudioMediaSegment(),$r.dispatchAudioInitSegment(e)),n=a;let t=Math.floor(a);const i=new Uint8Array(s.data.length+2);i.set([175,1],0),i.set(s.data,2);let o={payload:i,length:i.byteLength,pts:t,dts:t,type:oe};$r.audio_track_.samples.push(o),$r.audio_track_.length+=i.byteLength,a+=r}o.hasIncompleteData()&&($r.aac_last_incomplete_data_=o.getIncompleteData()),n&&($r.audio_last_sample_pts_=n)},parseAC3Payload(e,t){},parseEAC3Payload(e,t){},parseOpusPayload(e,t){},parseMP3Payload(e,t){if($r.has_video_&&!$r.video_init_segment_dispatched_)return;let r=[44100,48e3,32e3,0],i=[22050,24e3,16e3,0],n=[11025,12e3,8e3,0],o=e[1]>>>3&3,s=(6&e[1])>>1;e[2];let a=(12&e[2])>>>2,d=3!=(e[3]>>>6&3)?2:1,l=0,u=34;switch(o){case 0:l=n[a];break;case 2:l=i[a];break;case 3:l=r[a]}switch(s){case 1:u=34;break;case 2:u=33;break;case 3:u=32}const c={};c.object_type=u,c.sample_rate=l,c.channel_count=d,c.data=e;const f={codec:"mp3",data:c};0==$r.audio_init_segment_dispatched_?($r.audio_metadata_={codec:"mp3",object_type:u,sample_rate:l,channel_count:d},$r.dispatchAudioInitSegment(f)):$r.detectAudioMetadataChange(f)&&($r.dispatchAudioMediaSegment(),$r.dispatchAudioInitSegment(f));let h={payload:e,length:e.byteLength,pts:t/$r.timescale_,dts:t/$r.timescale_,type:oe};$r.audio_track_.samples.push(h),$r.audio_track_.length+=e.byteLength},detectAudioMetadataChange(e){if(e.codec!==$r.audio_metadata_.codec)return ii.debug.log($r.TAG_NAME,`Audio: Audio Codecs changed from ${$r.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===$r.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==$r.audio_metadata_.audio_object_type)return ii.debug.log($r.TAG_NAME,`AAC: AudioObjectType changed from ${$r.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==$r.audio_metadata_.sampling_freq_index)return ii.debug.log($r.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${$r.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==$r.audio_metadata_.channel_config)return ii.debug.log($r.TAG_NAME,`AAC: Channel configuration changed from ${$r.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===$r.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==$r.audio_metadata_.sampling_frequency)return ii.debug.log($r.TAG_NAME,`AC3: Sampling Frequency changed from ${$r.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==$r.audio_metadata_.bit_stream_identification)return ii.debug.log($r.TAG_NAME,`AC3: Bit Stream Identification changed from ${$r.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==$r.audio_metadata_.bit_stream_mode)return ii.debug.log($r.TAG_NAME,`AC3: BitStream Mode changed from ${$r.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==$r.audio_metadata_.channel_mode)return ii.debug.log($r.TAG_NAME,`AC3: Channel Mode changed from ${$r.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==$r.audio_metadata_.low_frequency_effects_channel_on)return ii.debug.log($r.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${$r.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===$r.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==$r.audio_metadata_.sample_rate)return ii.debug.log($r.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${$r.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==$r.audio_metadata_.channel_count)return ii.debug.log($r.TAG_NAME,`Opus: Channel count changed from ${$r.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===$r.audio_metadata_.codec){const t=e.data;if(t.object_type!==$r.audio_metadata_.object_type)return ii.debug.log($r.TAG_NAME,`MP3: AudioObjectType changed from ${$r.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==$r.audio_metadata_.sample_rate)return ii.debug.log($r.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${$r.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==$r.audio_metadata_.channel_count)return ii.debug.log($r.TAG_NAME,`MP3: Channel count changed from ${$r.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1},dispatchAudioInitSegment(e){let t={type:"audio"};if(t.id=$r.audio_track_.id,t.timescale=1e3,t.duration=$r.duration_,"aac"===$r.audio_metadata_.codec){let r="aac"===e.codec?e.data:null,i=new Gn(r);t.audioSampleRate=i.sampling_rate,t.audioSampleRateIndex=i.sampling_index,t.channelCount=i.channel_count,t.codec=i.codec_mimetype,t.originalCodec=i.original_codec_mimetype,t.config=i.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale;const n=Wt({profile:ii._opt.mseDecodeAudio?i.object_type:i.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});ii.decodeAudio(n,0)}else"ac-3"===$r.audio_metadata_.codec||"ec-3"===$r.audio_metadata_.codec||"opus"===$r.audio_metadata_.codec||"mp3"===$r.audio_metadata_.codec&&(t.audioSampleRate=$r.audio_metadata_.sample_rate,t.channelCount=$r.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0);0==$r.audio_init_segment_dispatched_&&ii.debug.log($r.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),$r.audio_init_segment_dispatched_=!0,$r.video_metadata_changed_=!1;let r=$r.media_info_;r.hasAudio=!0,r.audioCodec=t.originalCodec,r.audioSampleRate=t.audioSampleRate,r.audioChannelCount=t.channelCount,r.hasVideo&&r.videoCodec?r.mimeType=`video/mp2t; codecs="${r.videoCodec},${r.audioCodec}"`:r.mimeType=`video/mp2t; codecs="${r.audioCodec}"`},dispatchPESPrivateDataDescriptor(e,t,r){},parsePESPrivateDataPayload(e,t,r,i,n){let o=new zn;if(o.pid=i,o.stream_id=n,o.len=e.byteLength,o.data=e,null!=t){let e=Math.floor(t/$r.timescale_);o.pts=e}else o.nearest_pts=$r.getNearestTimestampMilliseconds();if(null!=r){let e=Math.floor(r/$r.timescale_);o.dts=e}},parseTimedID3MetadataPayload(e,t,r,i,n){ii.debug.log($r.TAG_NAME,`Timed ID3 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseSynchronousKLVMetadataPayload(e,t,r,i,n){ii.debug.log($r.TAG_NAME,`Synchronous KLV Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},parseAsynchronousKLVMetadataPayload(e,t,r){ii.debug.log($r.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${r}`)},parseSMPTE2038MetadataPayload(e,t,r,i,n){ii.debug.log($r.TAG_NAME,`SMPTE 2038 Metadata: pid=${i}, pts=${t}, dts=${r}, stream_id=${n}`)},getNearestTimestampMilliseconds:()=>null!=$r.audio_last_sample_pts_?Math.floor($r.audio_last_sample_pts_):null!=$r.last_pcr_?Math.floor($r.last_pcr_/300/$r.timescale_):void 0,_preDoDecode(){const e=$r.video_track_,t=$r.audio_track_;let r=e.samples;t.samples.length>0&&(r=e.samples.concat(t.samples),r=r.sort(((e,t)=>e.dts-t.dts))),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===se?$r._doDecodeVideo({...e,payload:t}):e.type===oe&&$r._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0},_doDecodeVideo(e){const t=new Uint8Array(e.payload);let r=null;r=e.isHevc?Kr(t,e.isIFrame):Fr(t,e.isIFrame),e.isIFrame&&ii.calcIframeIntervalTimestamp(e.dts);let i=ii.cryptoPayload(r,e.isIFrame);ii.decode(i,{type:se,ts:e.dts,isIFrame:e.isIFrame,cts:e.cts})},_doDecodeAudio(e){const t=new Uint8Array(e.payload);let r=t;yr(ii._opt.m7sCryptoAudio)&&(r=ii.cryptoPayloadAudio(t)),ii.decode(r,{type:oe,ts:e.dts,isIFrame:!1,cts:0})}},jr=null;br()&&(jr={TAG_NAME:"worker MediaSource",_resetInIt(){jr.isAvc=null,jr.isAAC=null,jr.videoInfo={},jr.videoMeta={},jr.audioMeta={},jr.sourceBuffer=null,jr.audioSourceBuffer=null,jr.hasInit=!1,jr.hasAudioInit=!1,jr.isAudioInitInfo=!1,jr.videoMimeType="",jr.audioMimeType="",jr.cacheTrack={},jr.cacheAudioTrack={},jr.timeInit=!1,jr.sequenceNumber=0,jr.audioSequenceNumber=0,jr.firstRenderTime=null,jr.firstAudioTime=null,jr.mediaSourceAppendBufferFull=!1,jr.mediaSourceAppendBufferError=!1,jr.mediaSourceAddSourceBufferError=!1,jr.mediaSourceBufferError=!1,jr.mediaSourceError=!1,jr.prevTimestamp=null,jr.decodeDiffTimestamp=null,jr.prevDts=null,jr.prevAudioDts=null,jr.prevPayloadBufferSize=0,jr.isWidthOrHeightChanged=!1,jr.prevTs=null,jr.prevAudioTs=null,jr.eventListenList=[],jr.pendingRemoveRanges=[],jr.pendingSegments=[],jr.pendingAudioRemoveRanges=[],jr.pendingAudioSegments=[],jr.supportVideoFrameCallbackHandle=null,jr.audioSourceBufferCheckTimeout=null,jr.audioSourceNoDataCheckTimeout=null,jr.hasPendingEos=!1,jr.$video={currentTime:0,readyState:0}},init(){jr.events=new pn,jr._resetInIt(),jr.mediaSource=new self.MediaSource,jr.isDecodeFirstIIframe=!!vr(ii._opt.checkFirstIFrame),jr._bindMediaSourceEvents()},destroy(){jr.stop(),jr._clearAudioSourceBufferCheckTimeout(),jr.eventListenList&&jr.eventListenList.length&&(jr.eventListenList.forEach((e=>e())),jr.eventListenList=[]),jr._resetInIt(),jr.mediaSource=null},getState:()=>jr.mediaSource&&jr.mediaSource.readyState,isStateOpen:()=>jr.getState()===yt,isStateClosed:()=>jr.getState()===vt,isStateEnded:()=>jr.getState()===gt,_bindMediaSourceEvents(){const{proxy:e}=jr.events,t=e(jr.mediaSource,wt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceOpen"),jr._onMediaSourceSourceOpen()})),r=e(jr.mediaSource,bt,(()=>{ii.debug.log(jr.TAG_NAME,"sourceClose")})),i=e(jr.mediaSource,St,(()=>{ii.debug.log(jr.TAG_NAME,"sourceended")}));jr.eventListenList.push(t,r,i)},_onMediaSourceSourceOpen(){jr.sourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() sourceBuffer is null and next init"),jr._initSourceBuffer()),jr.audioSourceBuffer||(ii.debug.log(jr.TAG_NAME,"onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),jr._initAudioSourceBuffer()),jr._hasPendingSegments()&&jr._doAppendSegments()},decodeVideo(e,t,r,i){if(ii.isDestroyed)ii.debug.warn(jr.TAG_NAME,"decodeVideo() and decoder is destroyed");else if(vr(jr.hasInit))if(r&&e[1]===xt){const i=15&e[0];if(i===Ie&&vr(ar()))return void jr.emitError(De.mediaSourceH265NotSupport);jr.videoInfo.codec=i,postMessage({cmd:M,code:i});const n=new Uint8Array(e);postMessage({cmd:R,buffer:n,codecId:i},[n.buffer]),jr.hasInit=jr._decodeConfigurationRecord(e,t,r,i)}else ii.debug.warn(jr.TAG_NAME,`decodeVideo has not init , isIframe is ${r} , payload is ${e[1]}`);else if(!jr.isDecodeFirstIIframe&&r&&(jr.isDecodeFirstIIframe=!0),jr.isDecodeFirstIIframe){if(r&&0===e[1]){const t=15&e[0];let r={};t===Fe?r=Tr(e.slice(5)):t===Ie&&(r=Vr(e));const i=jr.videoInfo;i&&i.codecWidth&&i.codecWidth&&r&&r.codecWidth&&r.codecHeight&&(r.codecWidth!==i.codecWidth||r.codecHeight!==i.codecWidth)&&(ii.debug.warn(jr.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${i.codecWidth}, old height is ${i.codecWidth},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),jr.isWidthOrHeightChanged=!0,jr.emitError(De.mseWidthOrHeightChange))}if(jr.isWidthOrHeightChanged)return void ii.debug.warn(jr.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(gr(e))return void ii.debug.warn(jr.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength300&&(jr.firstAudioTime-=e,ii.debug.warn(jr.TAG_NAME,`video\n firstAudioTime is ${jr.firstRenderTime} and current time is ${jr.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${jr.firstAudioTime}`))}r=t-jr.firstAudioTime,r<0&&(ii.debug.warn(jr.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${jr.prevAudioTs},\n firstAudioTime is ${jr.firstAudioTime}`),r=null===jr.prevAudioDts?0:jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration),null!==jr.prevAudioTs&&r<=jr.prevAudioDts&&(ii.debug.warn(jr.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${jr.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${jr.prevAudioTs} ,\n and diff is ${t-jr.prevAudioTs}`),r=jr.prevAudioDts+ii._opt.mseCorrectAudioTimeDuration)}ii.isPlayer?jr._decodeAudio(e,r,t):ii.isPlayback,jr.prevAudioTs=t,jr.prevAudioDts=r}else ii.debug.log(jr.TAG_NAME,"decodeAudio first frame is not iFrame")}},_checkTsIsMaxDiff:e=>jr.prevTs>0&&eA,_decodeConfigurationRecord(e,t,r,i){let n=e.slice(5),o={};if(i===Fe?o=Tr(n):i===Ie&&(o=Wr(n)),jr.videoInfo.width=o.codecWidth,jr.videoInfo.height=o.codecHeight,0===o.codecWidth&&0===o.codecHeight)return ii.debug.warn(jr.TAG_NAME,"_decodeConfigurationRecord error",JSON.stringify(o)),jr.emitError(De.mediaSourceDecoderConfigurationError),!1;const s={id:Pt,type:"video",timescale:1e3,duration:0,avcc:n,codecWidth:o.codecWidth,codecHeight:o.codecHeight,videoType:o.videoType},a=mn.generateInitSegment(s);jr.isAvc=i===Fe;let d=o.codec;return jr.videoMimeType=d?`video/mp4; codecs="${o.codec}"`:jr.isAvc?ct:ft,postMessage({cmd:T,w:o.codecWidth,h:o.codecHeight}),jr._initSourceBuffer(),jr.appendBuffer(a.buffer),jr.sequenceNumber=0,jr.cacheTrack={},jr.timeInit=!1,!0},_decodeAudioConfigurationRecord(e,t){const r=e[0]>>4,i=e[0]>>1&1,n=r===Ge,o=r===ze;if(vr(o||n))return ii.debug.warn(jr.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${r} ant auto wasm decode`),jr.emitError(De.mediaSourceAudioG711NotSupport),!1;const s={id:Ft,type:"audio",timescale:1e3};let a={};if(jt(e)){if(a=Kt(e.slice(2)),!a)return!1;s.audioSampleRate=a.sampleRate,s.channelCount=a.channelCount,s.config=a.config,s.refSampleDuration=1024/s.audioSampleRate*s.timescale}else{if(!n)return!1;if(a=An(e),!a)return!1;s.audioSampleRate=a.samplingRate,s.channelCount=a.channelCount,s.refSampleDuration=1152/s.audioSampleRate*s.timescale}s.codec=a.codec,s.duration=0;let d="mp4",l=a.codec,u=null;n&&vr(sr())?(d="mpeg",l="",u=new Uint8Array):u=mn.generateInitSegment(s);let c=`${s.type}/${d}`;return l&&l.length>0&&(c+=`;codecs=${l}`),vr(jr.isAudioInitInfo)&&(Jt=r===ze?i?16:8:0===i?8:16,postMessage({cmd:F,code:r}),postMessage({cmd:P,sampleRate:s.audioSampleRate,channels:s.channelCount,depth:Jt}),jr.isAudioInitInfo=!0),jr.audioMimeType=c,jr.isAAC=o,jr._initAudioSourceBuffer(),jr.appendAudioBuffer(u.buffer),!0},_initSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.sourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.videoMimeType){try{jr.sourceBuffer=jr.mediaSource.addSourceBuffer(jr.videoMimeType),ii.debug.log(jr.TAG_NAME,"_initSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.videoMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.sourceBuffer){const t=e(jr.sourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.sourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.sourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r)}}else ii.debug.log(jr.TAG_NAME,`_initSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.isAvc === null is ${null===jr.isAvc}`)},_initAudioSourceBuffer(){const{proxy:e}=jr.events;if(null===jr.audioSourceBuffer&&null!==jr.mediaSource&&jr.isStateOpen()&&jr.audioMimeType){try{jr.audioSourceBuffer=jr.mediaSource.addSourceBuffer(jr.audioMimeType),jr._clearAudioSourceBufferCheckTimeout(),ii.debug.log(jr.TAG_NAME,"_initAudioSourceBuffer() mseDecoder.mediaSource.addSourceBuffer()",jr.audioMimeType)}catch(e){return ii.debug.error(jr.TAG_NAME,"appendAudioBuffer() mseDecoder.mediaSource.addSourceBuffer()",e.code,e),jr.emitError(De.mseAddSourceBufferError,e.code),void(jr.mediaSourceAddSourceBufferError=!0)}if(jr.audioSourceBuffer){const t=e(jr.audioSourceBuffer,"error",(e=>{jr.mediaSourceBufferError=!0,ii.debug.error(jr.TAG_NAME,"mseSourceBufferError mseDecoder.audioSourceBuffer",e),jr.emitError(De.mseSourceBufferError,e.code)})),r=e(jr.audioSourceBuffer,"updateend",(()=>{jr._hasPendingRemoveRanges()?jr._doRemoveRanges():jr._hasPendingSegments()?jr._doAppendSegments():jr.hasPendingEos&&(ii.debug.log(jr.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),jr.endOfStream())}));jr.eventListenList.push(t,r),null===jr.audioSourceNoDataCheckTimeout&&(jr.audioSourceNoDataCheckTimeout=setTimeout((()=>{jr._clearAudioNoDataCheckTimeout(),jr.emitError(De.mediaSourceAudioNoDataTimeout)}),1e3))}}else ii.debug.log(jr.TAG_NAME,`_initAudioSourceBuffer and mseDecoder.isStateOpen is ${jr.isStateOpen()} and mseDecoder.audioMimeType is ${jr.audioMimeType}`)},_decodeVideo(e,t,r,i,n){let o=e.slice(5),s=o.byteLength;if(0===s)return void ii.debug.warn(jr.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let a=(new Date).getTime(),d=!1;jr.prevTimestamp||(jr.prevTimestamp=a,d=!0);const l=a-jr.prevTimestamp;if(jr.decodeDiffTimestamp=l,l>500&&!d&&ii.isPlayer&&ii.debug.warn(jr.TAG_NAME,`_decodeVideo now time is ${a} and prev time is ${jr.prevTimestamp}, diff time is ${l} ms`),jr.cacheTrack.id&&t>=jr.cacheTrack.dts){let e=8+jr.cacheTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheTrack.data,8),jr.cacheTrack.duration=t-jr.cacheTrack.dts;let i=mn.moof(jr.cacheTrack,jr.cacheTrack.dts);jr.cacheTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendBuffer(n.buffer)}else ii.debug.log(jr.TAG_NAME,`timeInit set false , cacheTrack = {} now dts is ${t}, and ts is ${n} cacheTrack dts is ${jr.cacheTrack&&jr.cacheTrack.dts}`),jr.timeInit=!1,jr.cacheTrack={};jr.cacheTrack||(jr.cacheTrack={}),jr.cacheTrack.id=Pt,jr.cacheTrack.sequenceNumber=++jr.sequenceNumber,jr.cacheTrack.size=s,jr.cacheTrack.dts=t,jr.cacheTrack.cts=i,jr.cacheTrack.isKeyframe=r,jr.cacheTrack.data=o,jr.cacheTrack.flags={isLeading:0,dependsOn:r?2:1,isDependedOn:r?1:0,hasRedundancy:0,isNonSync:r?0:1},jr.prevTimestamp=(new Date).getTime()},_decodeAudio(e,t,r){let i=jr.isAAC?e.slice(2):e.slice(1),n=i.byteLength;if(jr.cacheAudioTrack.id&&t>=jr.cacheAudioTrack.dts){let e=8+jr.cacheAudioTrack.size,r=new Uint8Array(e);r[0]=e>>>24&255,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=255&e,r.set(mn.types.mdat,4),r.set(jr.cacheAudioTrack.data,8),jr.cacheAudioTrack.duration=t-jr.cacheAudioTrack.dts;let i=mn.moof(jr.cacheAudioTrack,jr.cacheAudioTrack.dts);jr.cacheAudioTrack={};let n=new Uint8Array(i.byteLength+r.byteLength);n.set(i,0),n.set(r,i.byteLength),jr.appendAudioBuffer(n.buffer)}else jr.cacheAudioTrack={};jr.cacheAudioTrack||(jr.cacheAudioTrack={}),jr.cacheAudioTrack.id=Ft,jr.cacheAudioTrack.sequenceNumber=++jr.audioSequenceNumber,jr.cacheAudioTrack.size=n,jr.cacheAudioTrack.dts=t,jr.cacheAudioTrack.cts=0,jr.cacheAudioTrack.data=i,jr.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}},appendBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingSegments.push(e),jr.sourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`video has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},appendAudioBuffer(e){ii.isDestroyed?ii.debug.warn(jr.TAG_NAME,"appendAudioBuffer() player is destroyed"):jr.mediaSourceAddSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAddSourceBufferError is true"):jr.mediaSourceAppendBufferFull?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferFull is true"):jr.mediaSourceAppendBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceAppendBufferError is true"):jr.mediaSourceBufferError?ii.debug.warn(jr.TAG_NAME,"mseDecoder.mediaSourceBufferError is true"):(jr.pendingAudioSegments.push(e),jr.audioSourceBuffer&&(ii._opt.mseAutoCleanupSourceBuffer&&jr._needCleanupSourceBuffer()&&jr._doCleanUpSourceBuffer(),vr(jr.getAudioSourceBufferUpdating())&&jr.isStateOpen()&&vr(jr._hasPendingRemoveRanges()))?jr._doAppendSegments():jr.isStateClosed()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):jr.isStateEnded()?(jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,"mediaSource is end")):jr._hasPendingRemoveRanges()&&ii.debug.log(jr.TAG_NAME,`audio has pending remove ranges and video length is ${jr.pendingRemoveRanges.length}, audio length is ${jr.pendingAudioRemoveRanges.length}`))},getSourceBufferUpdating:()=>jr.sourceBuffer&&jr.sourceBuffer.updating,getAudioSourceBufferUpdating:()=>jr.audioSourceBuffer&&jr.audioSourceBuffer.updating,stop(){jr.abortSourceBuffer(),jr.removeSourceBuffer(),jr.endOfStream()},clearUpAllSourceBuffer(){if(jr.sourceBuffer){const e=jr.sourceBuffer.buffered;for(let t=0;tjr.pendingSegments.length>0||jr.pendingAudioSegments.length>0,getPendingSegmentsLength:()=>jr.pendingSegments.length,_handleUpdatePlaybackRate(){},_doAppendSegments(){if(jr.isStateClosed()||jr.isStateEnded())ii.debug.log(jr.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==jr.sourceBuffer){if(jr.needInitAudio()&&null===jr.audioSourceBuffer)return ii.debug.log(jr.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===jr.audioSourceBufferCheckTimeout&&(jr.audioSourceBufferCheckTimeout=setTimeout((()=>{jr._clearAudioSourceBufferCheckTimeout(),jr.emitError(De.mediaSourceAudioInitTimeout)}),1e3)));if(vr(jr.getSourceBufferUpdating())&&jr.pendingSegments.length>0){const e=jr.pendingSegments.shift();try{jr.sourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}if(vr(jr.getAudioSourceBufferUpdating())&&jr.pendingAudioSegments.length>0){const e=jr.pendingAudioSegments.shift();try{jr.audioSourceBuffer.appendBuffer(e)}catch(e){ii.debug.error(jr.TAG_NAME,"mseDecoder.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(jr.stop(),jr.mediaSourceAppendBufferFull=!0,jr.emitError(De.mediaSourceFull)):11===e.code?(jr.stop(),jr.mediaSourceAppendBufferError=!0,jr.emitError(De.mediaSourceAppendBufferError)):(jr.stop(),jr.mediaSourceBufferError=!0,jr.emitError(De.mseSourceBufferError,e.code))}}}else ii.debug.log(jr.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")},_doCleanUpSourceBuffer(){const e=jr.$video.currentTime;if(jr.sourceBuffer){const t=jr.sourceBuffer.buffered;let r=!1;for(let i=0;i=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingRemoveRanges.push({start:n,end:t})}}else o=ii._opt.mseAutoCleanupMaxBackwardDuration){r=!0;let t=e-ii._opt.mseAutoCleanupMinBackwardDuration;jr.pendingAudioRemoveRanges.push({start:n,end:t})}}else ojr.pendingRemoveRanges.length>0||jr.pendingAudioRemoveRanges.length>0,needInitAudio:()=>ii._opt.hasAudio&&ii._opt.mseDecodeAudio,_doRemoveRanges(){if(jr.sourceBuffer&&vr(jr.getSourceBufferUpdating())){let e=jr.pendingRemoveRanges;for(;e.length&&vr(jr.getSourceBufferUpdating());){let t=e.shift();try{jr.sourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(jr.audioSourceBuffer&&vr(jr.getAudioSourceBufferUpdating())){let e=jr.pendingAudioRemoveRanges;for(;e.length&&vr(jr.getAudioSourceBufferUpdating());){let t=e.shift();try{jr.audioSourceBuffer.remove(t.start,t.end)}catch(e){ii.debug.warn(jr.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}},_getPlaybackRate(){},_needCleanupSourceBuffer(){if(vr(ii._opt.mseAutoCleanupSourceBuffer))return!1;const e=jr.$video.currentTime;if(jr.sourceBuffer){let t=jr.sourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}if(jr.audioSourceBuffer){let t=jr.audioSourceBuffer.buffered;if(t.length>=1&&e-t.start(0)>=ii._opt.mseAutoCleanupMaxBackwardDuration)return!0}return!1},_clearAudioSourceBufferCheckTimeout(){jr.audioSourceBufferCheckTimeout&&(clearTimeout(jr.audioSourceBufferCheckTimeout),jr.audioSourceBufferCheckTimeout=null)},_clearAudioNoDataCheckTimeout(){jr.audioSourceNoDataCheckTimeout&&(clearTimeout(jr.audioSourceNoDataCheckTimeout),jr.audioSourceNoDataCheckTimeout=null)},getHandle:()=>jr.mediaSource.handle,emitError(e){postMessage({cmd:ne,value:e,msg:arguments.length>1&&void 0!==arguments[1]?arguments[1]:""})}});let ii={isPlayer:!0,isPlayback:!1,dropping:!1,isPushDropping:!1,isWorkerFetch:!1,isDestroyed:!1,fetchStatus:Tt,_opt:Sr(),mp3Demuxer:null,delay:-1,pushLatestDelay:-1,firstTimestamp:null,startTimestamp:null,preDelayTimestamp:null,stopId:null,streamFps:null,streamAudioFps:null,streamVideoFps:null,writableStream:null,networkDelay:0,webglObj:null,startStreamRateAndStatsInterval:function(){ii.stopStreamRateAndStatsInterval(),l=setInterval((()=>{d&&d(0);const e=JSON.stringify({demuxBufferDelay:ii.getVideoBufferLength(),audioDemuxBufferDelay:ii.getAudioBufferLength(),streamBufferByteLength:ii.getStreamBufferLength(),netBuf:ii.networkDelay||0,pushLatestDelay:ii.pushLatestDelay||0,latestDelay:ii.delay,isStreamTsMoreThanLocal:be});postMessage({cmd:G,type:ke,value:e})}),1e3)},stopStreamRateAndStatsInterval:function(){l&&(clearInterval(l),l=null)},useOffscreen:function(){return ii._opt.useOffscreen&&"undefined"!=typeof OffscreenCanvas},getDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===oe)return ii.delay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp>e)return ii.preDelayTimestamp-e>1e3&&ii.debug.warn("worker",`getDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return ${ii.delay}`),ii.preDelayTimestamp=e,ii.delay;if(ii.firstTimestamp){if(e){const t=Date.now()-ii.startTimestamp,r=e-ii.firstTimestamp;t>=r?(be=!1,ii.delay=t-r):(be=!0,ii.delay=r-t)}}else ii.firstTimestamp=e,ii.startTimestamp=Date.now(),ii.delay=-1;return ii.preDelayTimestamp=e,ii.delay},getDelayNotUpdateDelay:function(e,t){if(!e||ii._opt.hasVideo&&!U)return-1;if(t===oe)return ii.pushLatestDelay;if(ii.preDelayTimestamp&&ii.preDelayTimestamp-e>1e3)return ii.debug.warn("worker",`getDelayNotUpdateDelay() and preDelayTimestamp is ${ii.preDelayTimestamp} > timestamp is ${e} more than ${ii.preDelayTimestamp-e}ms and return -1`),-1;if(ii.firstTimestamp){let t=-1;if(e){const r=Date.now()-ii.startTimestamp,i=e-ii.firstTimestamp;r>=i?(be=!1,t=r-i):(be=!0,t=i-r)}return t}return-1},resetDelay:function(){ii.firstTimestamp=null,ii.startTimestamp=null,ii.delay=-1,ii.dropping=!1},resetAllDelay:function(){ii.resetDelay(),ii.preDelayTimestamp=null},doDecode:function(e){ii._opt.isEmitSEI&&e.type===se&&ii.isWorkerFetch&&ii.findSei(e.payload,e.ts),ii.isPlayUseMSEAndDecoderInWorker()?e.type===oe?ii._opt.mseDecodeAudio?jr.decodeAudio(e.payload,e.ts):e.decoder.decode(e.payload,e.ts):e.type===se&&jr.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):ii._opt.useWCS&&ii.useOffscreen()&&e.type===se&&o.decode?o.decode(e.payload,e.ts,e.cts):e.decoder.decode(e.payload,e.ts,e.isIFrame,e.cts)},decodeNext(e){if(0===i.length)return;const t=e.ts,n=i[0],o=e.type===se&&gr(e.payload);if(vr(r))o&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n isVideoSqeHeader is ${o}`),i.shift(),ii.doDecode(n));else{const r=n.ts-t,s=n.type===oe&&e.type===se;(r<=20||s||o)&&(ii.debug.log("worker",`decode data type is ${e.type} and\n ts is ${t} next data type is ${n.type} ts is ${n.ts}\n diff is ${r} and isVideoAndNextAudio is ${s} and isVideoSqeHeader is ${o}`),i.shift(),ii.doDecode(n))}},init:function(){ii.debug.log("worker","init and opt is",JSON.stringify(ii._opt));const e=ii._opt.playType===v,t=ii._opt.playType===b;if(Ar.init(),ii.isPlayer=e,ii.isPlayback=t,ii.isPlayUseMSEAndDecoderInWorker()&&jr&&jr.init(),ii.isPlaybackCacheBeforeDecodeForFpsRender())ii.debug.log("worker","playback and playbackIsCacheBeforeDecodeForFpsRender is true");else{ii.debug.log("worker","setInterval()");const t=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=()=>{let r=null;if(i.length){if(ii.isPushDropping)return void ii.debug.warn("worker",`loop() isPushDropping is true and bufferList length is ${i.length}`);if(ii.dropping){for(r=i.shift(),ii.debug.warn("worker",`loop() dropBuffer is dropping and isIFrame ${r.isIFrame} and delay is ${ii.delay} and bufferlist is ${i.length}`);!r.isIFrame&&i.length;)r=i.shift();const e=ii.getDelayNotUpdateDelay(r.ts,r.type);r.isIFrame&&e<=ii.getNotDroppingDelayTs()&&(ii.debug.log("worker","loop() is dropping = false, is iFrame"),ii.dropping=!1,ii.doDecode(r),ii.decodeNext(r))}else if(ii.isPlayback||ii.isPlayUseMSE()||0===ii._opt.videoBuffer)for(;i.length;)r=i.shift(),ii.doDecode(r);else if(r=i[0],-1===ii.getDelay(r.ts,r.type))ii.debug.log("worker","loop() common dumex delay is -1 ,data.ts is",r.ts),i.shift(),ii.doDecode(r),ii.decodeNext(r);else if(ii.delay>t&&e)ii.hasIframeInBufferList()?(ii.debug.log("worker",`delay is ${ii.delay} > maxDelay ${t}, set dropping is true`),ii.resetAllDelay(),ii.dropping=!0,postMessage({cmd:H})):(i.shift(),ii.doDecode(r),ii.decodeNext(r));else for(;i.length;){if(r=i[0],!(ii.getDelay(r.ts,r.type)>ii._opt.videoBuffer)){ii.delay<0&&ii.debug.warn("worker",`loop() do not decode and delay is ${ii.delay}, bufferList is ${i.length}`);break}i.shift(),ii.doDecode(r)}}else-1!==ii.delay&&ii.debug.log("worker","loop() bufferList is empty and reset delay"),ii.resetAllDelay()};ii.stopId=setInterval((()=>{let e=(new Date).getTime();we||(we=e);const t=e-we;t>100&&ii.debug.warn("worker",`loop demux diff time is ${t}`),r(),we=(new Date).getTime()}),20)}if(vr(ii._opt.checkFirstIFrame)&&(U=!0),ii.isPlayUseMSEAndDecoderInWorker()&&jr){const e=jr.getHandle();e&&postMessage({cmd:re,mseHandle:e},[e])}},playbackCacheLoop:function(){ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null);const e=()=>{let e=null;i.length&&(e=i.shift(),ii.doDecode(e))};e();const t=Math.ceil(1e3/(ii.streamFps*ii._opt.playbackRate));ii.debug.log("worker",`playbackCacheLoop fragDuration is ${t}, streamFps is ${ii.streamFps}, streamAudioFps is ${ii.streamAudioFps} ,streamVideoFps is ${ii.streamVideoFps} playbackRate is ${ii._opt.playbackRate}`),ii.stopId=setInterval(e,t)},close:function(){if(ii.debug.log("worker","close"),ii.isDestroyed=!0,Er(),!a||1!==a.readyState&&2!==a.readyState?a&&ii.debug.log("worker",`close() and socket.readyState is ${a.readyState}`):(nr=!0,a.close(1e3,"Client disconnecting")),a=null,ii.stopStreamRateAndStatsInterval(),ii.stopId&&(clearInterval(ii.stopId),ii.stopId=null),ii.mp3Demuxer&&(ii.mp3Demuxer.destroy(),ii.mp3Demuxer=null),ii.writableStream&&vr(ii.writableStream.locked)&&ii.writableStream.close().catch((e=>{ii.debug.log("worker","close() and writableStream.close() error",e)})),ii.writableStream=null,ni)try{ni.clear&&ni.clear(),ni=null}catch(e){ii.debug.warn("worker","close() and audioDecoder.clear error",e)}if(oi)try{oi.clear&&oi.clear(),oi=null}catch(e){ii.debug.warn("worker","close() and videoDecoder.clear error",e)}d=null,we=null,be=!1,o&&(o.reset&&o.reset(),o=null),jr&&(jr.destroy(),jr=null),ii.firstTimestamp=null,ii.startTimestamp=null,ii.networkDelay=0,ii.streamFps=null,ii.streamAudioFps=null,ii.streamVideoFps=null,ii.delay=-1,ii.pushLatestDelay=-1,ii.preDelayTimestamp=null,ii.dropping=!1,ii.isPushDropping=!1,ii.isPlayer=!0,ii.isPlayback=!1,ii.isWorkerFetch=!1,ii._opt=Sr(),ii.webglObj&&(ii.webglObj.destroy(),ii.offscreenCanvas.removeEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost),ii.offscreenCanvas.removeEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored),ii.offscreenCanvas=null,ii.offscreenCanvasGL=null,ii.offscreenCanvasCtx=null),i=[],n=[],u&&(u.buffer=null,u=null),f=null,h=null,S=!1,E=!1,U=!1,Ot=!1,Gt=!1,$t=!1,Ht=null,Yt=null,st=[],mt=0,_t=0,Ve=null,Xe=null,Et=null,At=null,Jt=null,Ut=0,Nt=0,ht=null,pt=null,ii.fetchStatus=Tt,wr=!0,Ar.destroy(),kr.destroy(),Gr.destroy(),$r.destroy(),postMessage({cmd:Y})},pushBuffer:function(e,t){if(t.type===oe&&jt(e)){if(ii.debug.log("worker",`pushBuffer audio ts is ${t.ts}, isAacCodecPacket is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:J,buffer:t},[t.buffer])}ii.decodeAudio(e,t.ts)}else if(t.type===se&&t.isIFrame&&gr(e)){if(ii.debug.log("worker",`pushBuffer video ts is ${t.ts}, isVideoSequenceHeader is true`),ii._opt.isRecordTypeFlv){const t=new Uint8Array(e);postMessage({cmd:Q,buffer:t},[t.buffer])}ii.decodeVideo(e,t.ts,t.isIFrame,t.cts)}else{if(ii._opt.isRecording)if(ii._opt.isRecordTypeFlv){const r=new Uint8Array(e);postMessage({cmd:ee,type:t.type,buffer:r,ts:t.ts},[r.buffer])}else if(ii._opt.recordType===w)if(t.type===se){const r=new Uint8Array(e).slice(5);postMessage({cmd:z,buffer:r,isIFrame:t.isIFrame,ts:t.ts,cts:t.cts},[r.buffer])}else if(t.type===oe&&ii._opt.isWasmMp4){const r=new Uint8Array(e),i=qt(r)?r.slice(2):r.slice(1);postMessage({cmd:I,buffer:i,ts:t.ts},[i.buffer])}if(ii.isPlayer&&Ut>0&&At>0&&t.type===se){const e=t.ts-At,r=Ut+Ut/2;e>r&&ii.debug.log("worker",`pushBuffer video\n ts is ${t.ts}, preTimestamp is ${At},\n diff is ${e} and preTimestampDuration is ${Ut} and maxDiff is ${r}\n maybe trigger black screen or flower screen\n `)}if(ii.isPlayer&&At>0&&t.type===se&&t.tsA&&(ii.debug.warn("worker",`pushBuffer,\n preTimestamp is ${At}, options.ts is ${t.ts},\n diff is ${At-t.ts} more than 3600000,\n and resetAllDelay`),ii.resetAllDelay(),At=null,Ut=0),ii.isPlayer&&At>0&&t.ts<=At&&t.type===se&&(ii.debug.warn("worker",`pushBuffer() and isIFrame is ${t.isIFrame} and,\n options.ts is ${t.ts} less than (or equal) preTimestamp is ${At} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${Nt}`),ii._opt.isDropSameTimestampGop&&vr(t.isIFrame)&&U)){const e=ii.hasIframeInBufferList(),t=vr(ii.isPushDropping);return ii.debug.log("worker",`pushBuffer, isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next dropBuffer`),void(e&&t?ii.dropBuffer$2():(ii.clearBuffer(!0),yr(ii._opt.checkFirstIFrame)&&yr(r)&&(ii.isPlayUseMSEAndDecoderInWorker()?jr.isDecodeFirstIIframe=!1:postMessage({cmd:te}))))}if(ii.isPlayer&&U){const e=ii._opt.videoBuffer+ii._opt.videoBufferDelay,r=ii.getDelayNotUpdateDelay(t.ts,t.type);ii.pushLatestDelay=r,r>e&&ii.delay0&&ii.hasIframeInBufferList()&&!1===ii.isPushDropping&&(ii.debug.log("worker",`pushBuffer(), pushLatestDelay is ${r} more than ${e} and decoder.delay is ${ii.delay} and has iIframe and next decoder.dropBuffer$2()`),ii.dropBuffer$2())}if(ii.isPlayer&&t.type===se&&(At>0&&(Ut=t.ts-At),Nt=e.byteLength,At=t.ts),t.type===oe?i.push({ts:t.ts,payload:e,decoder:{decode:ii.decodeAudio},type:oe,isIFrame:!1}):t.type===se&&i.push({ts:t.ts,cts:t.cts,payload:e,decoder:{decode:ii.decodeVideo},type:se,isIFrame:t.isIFrame}),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&(dr(ii.streamVideoFps)||dr(ii.streamAudioFps))){let e=ii.streamVideoFps,t=ii.streamAudioFps;if(dr(ii.streamVideoFps)&&(e=pr(i,se),e&&(ii.streamVideoFps=e,postMessage({cmd:V,value:ii.streamVideoFps}),ii.streamFps=t?e+t:e,vr(ii._opt.hasAudio)&&(ii.debug.log("worker","playbackCacheBeforeDecodeForFpsRender, _opt.hasAudio is false and set streamAudioFps is 0"),ii.streamAudioFps=0),ii.playbackCacheLoop())),dr(ii.streamAudioFps)&&(t=pr(i,oe),t&&(ii.streamAudioFps=t,ii.streamFps=e?e+t:t,ii.playbackCacheLoop())),dr(ii.streamVideoFps)&&dr(ii.streamAudioFps)){const r=i.map((e=>({type:e.type,ts:e.ts})));ii.debug.log("worker",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${i.length}, and ts list is ${JSON.stringify(r)}`)}const r=ii.getAudioBufferLength()>0,n=r?60:40;i.length>=n&&(ii.debug.warn("worker",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${i.length} more than ${n}, and hasAudio is ${r} an set streamFps is 25`),ii.streamVideoFps=25,postMessage({cmd:V,value:ii.streamVideoFps}),r?(ii.streamAudioFps=25,ii.streamFps=ii.streamVideoFps+ii.streamAudioFps):ii.streamFps=ii.streamVideoFps,ii.playbackCacheLoop())}}},getVideoBufferLength(){let e=0;return i.forEach((t=>{t.type===se&&(e+=1)})),e},hasIframeInBufferList:()=>i.some((e=>e.type===se&&e.isIFrame)),isAllIframeInBufferList(){const e=ii.getVideoBufferLength();let t=0;return i.forEach((e=>{e.type===se&&e.isIFrame&&(t+=1)})),e===t},getNotDroppingDelayTs:()=>ii._opt.videoBuffer+ii._opt.videoBufferDelay/2,getAudioBufferLength(){let e=0;return i.forEach((t=>{t.type===oe&&(e+=1)})),e},getStreamBufferLength(){let e=0;return u&&u.buffer&&(e=u.buffer.byteLength),ii._opt.isNakedFlow?Ar.lastBuf&&(e=Ar.lastBuf.byteLength):ii._opt.isTs?$r._remainingPacketData&&(e=$r._remainingPacketData.byteLength):ii._opt.isFmp4&&kr.mp4Box&&(e=kr.mp4Box.getAllocatedSampleDataSize()),e},fetchStream:function(e,t){ii.debug.log("worker","fetchStream, url is "+e,"options:",JSON.stringify(t)),ii.isWorkerFetch=!0,t.isFlv?ii._opt.isFlv=!0:t.isFmp4?ii._opt.isFmp4=!0:t.isMpeg4?ii._opt.isMpeg4=!0:t.isNakedFlow?ii._opt.isNakedFlow=!0:t.isTs&&(ii._opt.isTs=!0),d=or((e=>{postMessage({cmd:G,type:Ee,value:e})})),ii.startStreamRateAndStatsInterval(),t.isFmp4&&(kr.listenMp4Box(),ii._opt.isFmp4Private&&kr.initTransportDescarmber()),t.protocol===_?(u=new Br(ii.demuxFlv()),fetch(e,{signal:s.signal}).then((e=>{if(yr(nr))return ii.debug.log("worker","request abort and run res.body.cancel()"),ii.fetchStatus=Tt,void e.body.cancel();if(!mr(e))return ii.debug.warn("worker",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),Er(),void postMessage({cmd:G,type:De.fetchError,value:`fetch response status is ${e.status} and ok is ${e.ok}`});if(postMessage({cmd:G,type:Ue}),fr())ii.writableStream=new WritableStream({write:e=>s&&s.signal&&s.signal.aborted?(ii.debug.log("worker","writableStream write() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","writableStream write() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof e?(ii.fetchStatus=Ct,d(e.byteLength),t.isFlv?u.write(e):t.isFmp4?ii.demuxFmp4(e):t.isMpeg4?ii.demuxMpeg4(e):t.isTs&&ii.demuxTs(e)):ii.debug.warn("worker",`writableStream write() and value is "${e}" string so return`)),close:()=>{ii.debug.log("worker","writableStream close()"),ii.fetchStatus=Dt,u=null,Er(),postMessage({cmd:G,type:Se,value:g,msg:"fetch done"})},abort:e=>{if(s&&s.signal&&s.signal.aborted)return ii.debug.log("worker","writableStream abort() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);u=null,e.name!==Bt?(ii.debug.log("worker",`writableStream abort() and e is ${e.toString()}`),Er(),postMessage({cmd:G,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","writableStream abort() and e.name is AbortError so return")}}),e.body.pipeTo(ii.writableStream);else{const r=e.body.getReader(),i=()=>{r.read().then((e=>{let{done:r,value:n}=e;return r?(ii.debug.log("worker","fetchNext().then() and done is true"),ii.fetchStatus=Dt,u=null,Er(),void postMessage({cmd:G,type:Se,value:g,msg:"fetch done"})):s&&s.signal&&s.signal.aborted?(ii.debug.log("worker","fetchNext().then() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt)):yr(nr)?(ii.debug.log("worker","fetchNext().then() and requestAbort is true so return"),void(ii.fetchStatus=Dt)):void("string"!=typeof n?(ii.fetchStatus=Ct,d(n.byteLength),t.isFlv?u.write(n):t.isFmp4?ii.demuxFmp4(n):t.isMpeg4&&ii.demuxMpeg4(n),i()):ii.debug.warn("worker",`fetchNext().then() and value "${n}" is string so return`))})).catch((e=>{if(s&&s.signal&&s.signal.aborted)return ii.debug.log("worker","fetchNext().catch() and abortController.signal.aborted is true so return"),void(ii.fetchStatus=Dt);u=null,e.name!==Bt?(ii.debug.log("worker",`fetchNext().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:G,type:De.fetchError,value:e.toString()})):ii.debug.log("worker","fetchNext().catch() and e.name is AbortError so return")}))};i()}})).catch((e=>{s&&s.signal&&s.signal.aborted?ii.debug.log("worker","fetch().catch() and abortController.signal.aborted is true so return"):e.name!==Bt?(ii.debug.log("worker",`fetch().catch() and e is ${e.toString()}`),Er(),postMessage({cmd:G,type:De.fetchError,value:e.toString()}),u=null):ii.debug.log("worker","fetch().catch() and e.name is AbortError so return")}))):t.protocol===m&&(t.isFlv&&(u=new Br(ii.demuxFlv())),a=new WebSocket(e),a.binaryType="arraybuffer",a.onopen=()=>{ii.debug.log("worker","fetchStream, WebsocketStream socket open"),postMessage({cmd:G,type:Ue}),postMessage({cmd:G,type:Ce})},a.onclose=e=>{c?ii.debug.log("worker","fetchStream, WebsocketStream socket close and isSocketError is true , so return"):(ii.debug.log("worker",`fetchStream, WebsocketStream socket close and code is ${e.code}`),1006===e.code&&ii.debug.error("worker",`fetchStream, WebsocketStream socket close abnormally and code is ${e.code}`),yr(nr)?ii.debug.log("worker","fetchStream, WebsocketStream socket close and requestAbort is true so return"):(u=null,postMessage({cmd:G,type:Se,value:y,msg:e.code})))},a.onerror=e=>{ii.debug.error("worker","fetchStream, WebsocketStream socket error",e),c=!0,u=null,postMessage({cmd:G,type:De.websocketError,value:e.isTrusted?"websocket user aborted":"websocket error"})},a.onmessage=e=>{"string"!=typeof e.data?(d(e.data.byteLength),t.isFlv?u.write(e.data):t.isFmp4?ii.demuxFmp4(e.data):t.isMpeg4?ii.demuxMpeg4(e.data):ii._opt.isNakedFlow?ii.demuxNakedFlow(e.data):ii.demuxM7s(e.data)):ii.debug.warn("worker",`socket on message is string "${e.data}" and return`)})},demuxFlv:function*(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),r=new Uint32Array(e);for(;;){t[3]=0;const e=yield 15,i=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const n=r[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let o=r[0];const s=(yield n).slice();switch(i){case ae:if(s.byteLength>0){let e=s;yr(ii._opt.m7sCryptoAudio)&&(e=ii.cryptoPayloadAudio(s)),ii.decode(e,{type:oe,ts:o})}else ii.debug.warn("worker",`demuxFlv() type is audio and payload.byteLength is ${s.byteLength} and return`);break;case de:if(s.byteLength>=6){const e=s[0];if(ii._isEnhancedH265Header(e))ii._decodeEnhancedH265Video(s,o);else{s[0];let e=s[0]>>4===kt;if(e&&gr(s)&&null===Ht){const e=15&s[0];Ht=e===Ie,Yt=tr(s,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`)}e&&ii.calcIframeIntervalTimestamp(o),ii.isPlayer&&ii.calcNetworkDelay(o),r[0]=s[4],r[1]=s[3],r[2]=s[2],r[3]=0;let t=r[0],i=ii.cryptoPayload(s,e);ii.decode(i,{type:se,ts:o,isIFrame:e,cts:t})}}else ii.debug.warn("worker",`demuxFlv() type is video and payload.byteLength is ${s.byteLength} and return`);break;case le:postMessage({cmd:Z,buffer:s},[s.buffer]);break;default:ii.debug.log("worker",`demuxFlv() type is ${i}`)}}},decode:function(e,t){t.type===oe?ii._opt.hasAudio&&(postMessage({cmd:G,type:Ae,value:e.byteLength}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()||(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts})))):t.type===se&&ii._opt.hasVideo&&(postMessage({cmd:G,type:Be,value:e.byteLength}),postMessage({cmd:G,type:xe,value:t.ts}),ii.isPlayer?ii.pushBuffer(e,{type:t.type,ts:t.ts,isIFrame:t.isIFrame,cts:t.cts}):ii.isPlayback&&(ii.isPlaybackOnlyDecodeIFrame()?t.isIFrame&&ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}):(ii.isPlaybackCacheBeforeDecodeForFpsRender(),ii.pushBuffer(e,{type:t.type,ts:t.ts,cts:t.cts,isIFrame:t.isIFrame}))))},cryptoPayload:function(e,t){let r=e;return ii._opt.isM7sCrypto?ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=zi(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`):ii._opt.isSm4Crypto?ii._opt.sm4CryptoKey&&t?r=sn(e,ii._opt.sm4CryptoKey):ii._opt.sm4CryptoKey||ii.debug.error("worker","isSm4Crypto opt.sm4CryptoKey is null"):ii._opt.isXorCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?r=fn(e,ii._opt.cryptoKey,ii._opt.cryptoIV,Ht):ii.debug.error("worker",`isXorCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),r},cryptoPayloadAudio:function(e){let t=e;return ii._opt.isM7sCrypto&&(ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength>0&&ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength>0?e[0]>>4===ze&&(t=Ni(e,ii._opt.cryptoKey,ii._opt.cryptoIV)):ii.debug.error("worker",`isM7sCrypto cryptoKey.length is ${ii._opt.cryptoKey&&ii._opt.cryptoKey.byteLength} or cryptoIV.length is ${ii._opt.cryptoIV&&ii._opt.cryptoIV.byteLength} null`)),t},setCodecAudio:function(e,t){const r=e[0]>>4,i=e[0]>>1&1;if(Jt=r===ze?i?16:8:0===i?8:16,ni&&ni.setCodec)if(jt(e)||r===Ne||r===Oe||r===Ge){ii.debug.log("worker",`setCodecAudio: init audio codec, codeId is ${r}`);const i=r===ze?e.slice(2):new Uint8Array(0);ni.setCodec(r,ii._opt.sampleRate,i),r===ze&&postMessage({cmd:L,buffer:i},[i.buffer]),E=!0,r!==ze&&(r===Ge?(ii.mp3Demuxer||(ii.mp3Demuxer=new ln(ii),ii.mp3Demuxer.on("data",((e,t)=>{ni.decode(e,t)}))),ii.mp3Demuxer.dispatch(e.slice(1),t)):ni.decode(e.slice(1),t))}else ii.debug.warn("worker","setCodecAudio: hasInitAudioCodec is false, codecId is ",r);else ii.debug.error("worker","setCodecAudio: audioDecoder or audioDecoder.setCodec is null")},decodeAudio:function(e,t){if(ii.isDestroyed)ii.debug.log("worker","decodeAudio, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio())jr.decodeAudio(e,t);else if(yr(r)&&yr(ii._opt.mseDecodeAudio))postMessage({cmd:O,payload:e,ts:t,cts:t},[e.buffer]);else{const r=e[0]>>4;if(E){if(jt(e))return void ii.debug.log("worker","decodeAudio and has already initialized and payload is aac codec packet so drop this frame");r===Ge?ii.mp3Demuxer.dispatch(e.slice(1),t):ni.decode(r===ze?e.slice(2):e.slice(1),t)}else ii.setCodecAudio(e,t)}},setCodecVideo:function(e){const t=15&e[0];if(oi&&oi.setCodec)if(gr(e))if(t===Fe||t===Ie){ii.debug.log("worker",`setCodecVideo: init video codec , codecId is ${t}`);const r=e.slice(5);if(t===Fe&&ii._opt.useSIMD){const e=Tr(r);if(e.codecWidth>B||e.codecHeight>B)return postMessage({cmd:q}),void ii.debug.warn("worker",`setCodecVideo: SIMD H264 decode video width is too large, width is ${e.codecWidth}, height is ${e.codecHeight}`)}const i=new Uint8Array(e);S=!0,oi.setCodec(t,r),postMessage({cmd:M,code:t}),postMessage({cmd:R,buffer:i,codecId:t},[i.buffer])}else ii.debug.warn("worker",`setCodecVideo: hasInitVideoCodec is false, codecId is ${t} is not H264 or H265`);else ii.debug.warn("worker",`decodeVideo: hasInitVideoCodec is false, codecId is ${t} and frameType is ${e[0]>>4} and packetType is ${e[1]}`);else ii.debug.error("worker","setCodecVideo: videoDecoder or videoDecoder.setCodec is null")},decodeVideo:function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(ii.isDestroyed)ii.debug.log("worker","decodeVideo, decoder is destroyed and return");else if(ii.isPlayUseMSEAndDecoderInWorker())jr.decodeVideo(e,t,i,n);else if(yr(r))postMessage({cmd:N,payload:e,isIFrame:i,ts:t,cts:n,delay:ii.delay},[e.buffer]);else if(S)if(!U&&i&&(U=!0),U){if(i&&gr(e)){const t=15&e[0];let r={};t===Fe?r=Tr(e.slice(5)):t===Ie&&(r=Vr(e)),r.codecWidth&&r.codecHeight&&f&&h&&(r.codecWidth!==f||r.codecHeight!==h)&&(ii.debug.warn("worker",`\n decodeVideo: video width or height is changed,\n old width is ${f}, old height is ${h},\n new width is ${r.codecWidth}, new height is ${r.codecHeight},\n and emit change event`),Gt=!0,postMessage({cmd:W}))}if(Gt)return void ii.debug.warn("worker","decodeVideo: video width or height is changed, and return");if($t)return void ii.debug.warn("worker","decodeVideo: simd decode error, and return");if(gr(e))return void ii.debug.warn("worker","decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength0&&void 0!==arguments[0]&&arguments[0];ii.debug.log("worker",`clearBuffer,bufferList length is ${i.length}, need clear is ${e}`),e&&(i=[]),ii.isPlayer&&(ii.resetAllDelay(),yr(ii._opt.checkFirstIFrame)&&(ii.dropping=!0,postMessage({cmd:H}))),yr(ii._opt.checkFirstIFrame)&&vr(r)&&(U=!1)},dropBuffer$2:function(){if(i.length>0){let e=i.findIndex((e=>yr(e.isIFrame)&&e.type===se));if(ii.isAllIframeInBufferList())for(let t=0;t=ii.getNotDroppingDelayTs()){ii.debug.log("worker",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${n} and notDroppingDelayTs is ${ii.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){ii.isPushDropping=!0,postMessage({cmd:H});const t=i.length;i=i.slice(e);const r=i.shift();ii.resetAllDelay(),ii.getDelay(r.ts,r.type),ii.doDecode(r),ii.isPushDropping=!1,ii.debug.log("worker",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,new bufferList is ${i.length} and new delay is ${ii.delay} `)}else ii.isPushDropping=!1}0===i.length&&(ii.isPushDropping=!1)},demuxM7s:function(e){const t=new DataView(e),r=t.getUint32(1,!1),i=t.getUint8(0),n=new ArrayBuffer(4),o=new Uint32Array(n);switch(i){case oe:ii.decode(new Uint8Array(e,5),{type:oe,ts:r});break;case se:if(t.byteLength>=11){const i=new Uint8Array(e,5),n=i[0];if(ii._isEnhancedH265Header(n))ii._decodeEnhancedH265Video(i,r);else{const e=t.getUint8(5)>>4==1;if(e&&(ii.calcIframeIntervalTimestamp(r),gr(i)&&null===Ht)){const e=15&i[0];Ht=e===Ie}ii.isPlayer&&ii.calcNetworkDelay(r),o[0]=i[4],o[1]=i[3],o[2]=i[2],o[3]=0;let n=o[0],s=ii.cryptoPayload(i,e);ii.decode(s,{type:se,ts:r,isIFrame:e,cts:n})}}else ii.debug.warn("worker",`demuxM7s() type is video and arrayBuffer length is ${e.byteLength} and return`)}},demuxNakedFlow:function(e){Ar.dispatch(e)},demuxFmp4:function(e){kr.dispatch(e)},demuxMpeg4:function(e){Gr.dispatch(e)},demuxTs:function(e){$r.dispatch(e)},_decodeEnhancedH265Video:function(e,t){const r=e[0],i=48&r,n=15&r,o=e.slice(1,5),s=new ArrayBuffer(4),a=new Uint32Array(s),d="a"==String.fromCharCode(o[0]);if(Ht=vr(d),n===Lt){if(i===zt){const r=e.slice(5);if(d);else{const i=new Uint8Array(5+r.length);i.set([28,0,0,0,0],0),i.set(r,5),Yt=tr(e,Ht),ii.debug.log("worker",`demuxFlv() isVideoSequenceHeader(enhancedH265) is true and isHevc is ${Ht} and nalUnitSize is ${Yt}`),ii.decode(i,{type:se,ts:t,isIFrame:!0,cts:0})}}}else if(n===Mt){let r=e,n=0;const o=i===zt;o&&ii.calcIframeIntervalTimestamp(t),d||(a[0]=e[4],a[1]=e[3],a[2]=e[2],a[3]=0,n=a[0],r=Kr(e.slice(8),o),r=ii.cryptoPayload(r,o),ii.decode(r,{type:se,ts:t,isIFrame:o,cts:n}))}else if(n===Rt){const r=i===zt;r&&ii.calcIframeIntervalTimestamp(t);let n=Kr(e.slice(5),r);n=ii.cryptoPayload(n,r),ii.decode(n,{type:se,ts:t,isIFrame:r,cts:0})}},_isEnhancedH265Header:function(e){return(e&It)===It},findSei:function(e,t){let r=4;lr(Yt)&&(r=Yt),Qt(e.slice(5),r).forEach((e=>{const r=Ht?e[0]>>>1&63:31&e[0];(Ht&&(r===dt||r===at)||vr(Ht)&&r===qe)&&postMessage({cmd:X,buffer:e,ts:t},[e.buffer])}))},calcNetworkDelay:function(e){if(!(U&&e>0))return;null===Ve?(Ve=e,Xe=rr()):et?r-t:0;ii.networkDelay=i,i>ii._opt.networkDelay&&ii._opt.playType===v&&(ii.debug.warn("worker",`calcNetworkDelay now dts:${e}, start dts is ${Ve} vs start is ${t},local diff is ${r} ,delay is ${i}`),postMessage({cmd:G,type:Te,value:i}))},calcIframeIntervalTimestamp:function(e){null===Et?Et=e:Et=ii._opt.playbackForwardMaxRateDecodeIFrame},isPlayUseMSE:function(){return ii.isPlayer&&ii._opt.useMSE&&yr(r)},isPlayUseMSEAndDecoderInWorker:function(){return ii.isPlayUseMSE()&&ii._opt.mseDecoderUseWorker},isPlayUseMSEAndDecoderInWorkerAndMseDecodeAudio:function(){return ii.isPlayUseMSEAndDecoderInWorker()&&ii._opt.mseDecodeAudio},playbackUpdatePlaybackRate:function(){ii.clearBuffer(!0)},onOffscreenCanvasWebglContextLost:function(e){ii.debug.error("worker","handleOffscreenCanvasWebglContextLost and next try to create webgl"),e.preventDefault(),Ot=!0,ii.webglObj.destroy(),ii.webglObj=null,ii.offscreenCanvasGL=null,setTimeout((()=>{ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.offscreenCanvasGL&&ii.offscreenCanvasGL.getContextAttributes().stencil?(ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),Ot=!1):ii.debug.error("worker","handleOffscreenCanvasWebglContextLost, stencil is false")}),500)},onOffscreenCanvasWebglContextRestored:function(e){ii.debug.log("worker","handleOffscreenCanvasWebglContextRestored"),e.preventDefault()},videoInfo:function(e,t,r){postMessage({cmd:M,code:e}),postMessage({cmd:T,w:t,h:r}),f=t,h=r,ii.useOffscreen()&&(ii.offscreenCanvas=new OffscreenCanvas(t,r),ii.offscreenCanvasGL=ii.offscreenCanvas.getContext("webgl"),ii.webglObj=p(ii.offscreenCanvasGL,ii._opt.openWebglAlignment),ii.offscreenCanvas.addEventListener("webglcontextlost",ii.onOffscreenCanvasWebglContextLost,!1),ii.offscreenCanvas.addEventListener("webglcontextrestored",ii.onOffscreenCanvasWebglContextRestored,!1))},audioInfo:function(e,t,r){postMessage({cmd:F,code:e}),postMessage({cmd:P,sampleRate:t,channels:r,depth:Jt}),_t=r},yuvData:function(t,r){if(ii.isDestroyed)return void ii.debug.log("worker","yuvData, decoder is destroyed and return");const i=f*h*3/2;let n=e.HEAPU8.subarray(t,t+i),o=new Uint8Array(n);if(ht=null,ii.useOffscreen())try{if(Ot)return;ii.webglObj.renderYUV(f,h,o);let e=ii.offscreenCanvas.transferToImageBitmap();postMessage({cmd:C,buffer:e,delay:ii.delay,ts:r},[e])}catch(e){ii.debug.error("worker","yuvData, transferToImageBitmap error is",e)}else postMessage({cmd:C,output:o,delay:ii.delay,ts:r},[o.buffer])},pcmData:function(e,r,i){if(ii.isDestroyed)return void ii.debug.log("worker","pcmData, decoder is destroyed and return");let o=r,s=[],a=0,d=ii._opt.audioBufferSize;for(let r=0;r<2;r++){let i=t.HEAPU32[(e>>2)+r]>>2;s[r]=t.HEAPF32.subarray(i,i+o)}if(mt){if(!(o>=(r=d-mt)))return mt+=o,n[0]=Float32Array.of(...n[0],...s[0]),void(2==_t&&(n[1]=Float32Array.of(...n[1],...s[1])));st[0]=Float32Array.of(...n[0],...s[0].subarray(0,r)),2==_t&&(st[1]=Float32Array.of(...n[1],...s[1].subarray(0,r))),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer))),a=r,o-=r}for(mt=o;mt>=d;mt-=d)st[0]=s[0].slice(a,a+=d),2==_t&&(st[1]=s[1].slice(a-d,a)),postMessage({cmd:D,buffer:st,ts:i},st.map((e=>e.buffer)));mt&&(n[0]=s[0].slice(a),2==_t&&(n[1]=s[1].slice(a))),s=[]},errorInfo:function(e){null===ht&&(ht=rr());const t=rr(),r=ir(pt>0?2*pt:5e3,1e3,5e3),i=t-ht;i>r&&(ii.debug.warn("worker",`errorInfo() emit simdDecodeError and\n iframeIntervalTimestamp is ${pt} and diff is ${i} and maxDiff is ${r}\n and replay`),$t=!0,postMessage({cmd:j}))},sendWebsocketMessage:function(e){a?a.readyState===Pe?a.send(e):ii.debug.error("worker","socket is not open"):ii.debug.error("worker","socket is null")},timeEnd:function(){},postStreamToMain(e,t){postMessage({cmd:K,type:t,buffer:e},[e.buffer])}};ii.debug=new xr(ii);let ni=null;t.AudioDecoder&&(ni=new t.AudioDecoder(ii));let oi=null;e.VideoDecoder&&(oi=new e.VideoDecoder(ii)),postMessage({cmd:k}),self.onmessage=function(e){let t=e.data;switch(t.cmd){case ue:try{ii._opt=Object.assign(ii._opt,JSON.parse(t.opt))}catch(e){}ii.init();break;case ce:ii.pushBuffer(t.buffer,t.options);break;case fe:ii.decodeAudio(t.buffer,t.ts);break;case he:ii.decodeVideo(t.buffer,t.ts,t.isIFrame);break;case _e:ii.clearBuffer(t.needClear);break;case ge:ii.fetchStream(t.url,JSON.parse(t.opt));break;case pe:ii.debug.log("worker","close",JSON.stringify(t.options)),t.options&&vr(t.options.isVideoInited)&&(wr=t.options.isVideoInited),ii.close();break;case me:ii.debug.log("worker","updateConfig",t.key,t.value),ii._opt[t.key]=t.value,"playbackRate"===t.key&&(ii.playbackUpdatePlaybackRate(),ii.isPlaybackCacheBeforeDecodeForFpsRender()&&ii.playbackCacheLoop());break;case ye:ii.sendWebsocketMessage(t.message);break;case ve:jr.$video.currentTime=Number(t.message)}}}(e[1],t)}))})); diff --git a/public/js/jessibuca-pro/decoder-pro.wasm b/public/js/jessibuca-pro/decoder-pro.wasm new file mode 100644 index 0000000..c997680 Binary files /dev/null and b/public/js/jessibuca-pro/decoder-pro.wasm differ diff --git a/public/js/jessibuca-pro/jessibuca-pro.js b/public/js/jessibuca-pro/jessibuca-pro.js new file mode 100644 index 0000000..a0b8ba6 --- /dev/null +++ b/public/js/jessibuca-pro/jessibuca-pro.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("crypto")):"function"==typeof define&&define.amd?define(["crypto"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["jessibuca-pro"]=t(e.crypto$1)}(this,(function(t){"use strict";function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=s(t);const a=1,o=2,n=3,l=4,d=5,h=6,c=["","websocket","fetch","hls","webrtc","webTransport","aliyunRtc","ts"],u="fetch",p="hls",f="websocket",m="webrtc",g="webTransport",y="worker",A="aliyunRtc",b="player",v="playerAudio",_="playbackTF",S="mp4",w="webm",E="flv",T="flv",k="m7s",C="hls",x="webrtc",R="webTransport",D="nakedFlow",L="fmp4",P="mpeg4",B="aliyunRtc",I="ts",M={flv:"FLV",m7s:"M7S",hls:"HLS",fmp4:"FMP4",mpeg4:"MPEG4",webrtc:"Webrtc",webTransport:"WebTransport",nakedFlow:"裸流",aliyunRtc:"AliyunRtc",ts:"TS"},U="mse",F="wcs",O="offscreen",N="wasm",j="simd",z="mt",G="webrtc",H="hls",V="aliyunRtc",$="canvas",W="video",J="debug",q="warn",K="click",Y="mouseDownAndUp",Q={normal:"normal",simple:"simple"},X=36e5,Z="/crypto/",ee="jbprov",te=1e4,ie={url:"",playbackConfig:{},fullscreenWatermarkConfig:{},playType:b,playbackForwardMaxRateDecodeIFrame:4,playOptions:{},isLive:!0,isMulti:!0,isM7sCrypto:!1,supportHls265:!1,playFailedUseLastFrameShow:!0,playFailedAndPausedShowMessage:!1,pauseAndNextPlayUseLastFrameShow:!1,widthOrHeightChangeReplayDelayTime:0,isUseNewFullscreenWatermark:!1,websocket1006ErrorReplay:!1,websocket1006ErrorReplayDelayTime:1,streamErrorReplay:!1,streamErrorReplayDelayTime:1,streamEndReplay:!1,streamEndReplayDelayTime:1,networkDisconnectReplay:!1},se={playType:b,container:"",videoBuffer:1e3,videoBufferDelay:1e3,networkDelay:1e4,isResize:!0,isFullResize:!1,isFlv:!1,isHls:!1,isFmp4:!1,isFmp4Private:!1,isWebrtc:!1,isWebrtcForZLM:!1,isWebrtcForSRS:!1,isWebrtcForOthers:!1,isNakedFlow:!1,isMpeg4:!1,isAliyunRtc:!1,isTs:!1,debug:!1,debugLevel:q,debugUuid:"",isMulti:!0,multiIndex:-1,hotKey:!1,loadingTimeout:10,heartTimeout:10,timeout:10,pageVisibilityHiddenTimeout:300,loadingTimeoutReplay:!0,heartTimeoutReplay:!0,loadingTimeoutReplayTimes:3,heartTimeoutReplayTimes:3,heartTimeoutReplayUseLastFrameShow:!0,replayUseLastFrameShow:!0,replayShowLoadingIcon:!1,supportDblclickFullscreen:!1,showBandwidth:!1,showPerformance:!1,mseCorrectTimeDuration:20,mseCorrectAudioTimeDuration:20,keepScreenOn:!0,isNotMute:!1,muted:!0,hasAudio:!0,hasVideo:!0,operateBtns:{fullscreen:!1,screenshot:!1,play:!1,audio:!1,record:!1,ptz:!1,quality:!1,zoom:!1,close:!1,scale:!1,performance:!1,logSave:!1,aiFace:!1,aiObject:!1,aiOcclusion:!1,fullscreenFn:null,fullscreenExitFn:null,screenshotFn:null,playFn:null,pauseFn:null,recordFn:null,recordStopFn:null},extendOperateBtns:[],contextmenuBtns:[],watermarkConfig:{},controlAutoHide:!1,hasControl:!1,loadingIcon:!0,loadingIconStyle:{},loadingText:"",background:"",poster:"",backgroundLoadingShow:!0,loadingBackground:"",loadingBackgroundWidth:0,loadingBackgroundHeight:0,decoder:"decoder-pro.js",decoderAudio:"decoder-pro-audio.js",decoderHard:"decoder-pro-hard.js",decoderHardNotWasm:"decoder-pro-hard-not-wasm.js",wasmMp4RecorderDecoder:"jessibuca-pro-mp4-recorder-decoder.js",decoderWASM:"",isDecoderUseCDN:!1,url:"",rotate:0,mirrorRotate:"none",aspectRatio:"default",playbackConfig:{playList:[],fps:"",showControl:!0,controlType:Q.normal,duration:0,startTime:"",showRateBtn:!1,rateConfig:[],showPrecision:"",showPrecisionBtn:!0,isCacheBeforeDecodeForFpsRender:!1,uiUsePlaybackPause:!1,isPlaybackPauseClearCache:!0,isUseFpsRender:!1,isUseLocalCalculateTime:!1,localOneFrameTimestamp:40,supportWheel:!1,useWCS:!1,useMSE:!1},qualityConfig:[],defaultStreamQuality:"",scaleConfig:["拉伸","缩放","正常"],forceNoOffscreen:!0,hiddenAutoPause:!1,protocol:o,demuxType:T,useWasm:!1,useMSE:!1,useWCS:!1,useSIMD:!0,useMThreading:!1,wcsUseVideoRender:!0,wcsUseWebgl2Render:!0,wasmUseVideoRender:!0,mseUseCanvasRender:!1,hlsUseCanvasRender:!1,webrtcUseCanvasRender:!1,useOffscreen:!1,useWebGPU:!1,mseDecodeErrorReplay:!0,wcsDecodeErrorReplay:!0,wasmDecodeErrorReplay:!0,simdDecodeErrorReplay:!0,simdDecodeErrorReplayType:N,autoWasm:!0,decoderErrorAutoWasm:!0,hardDecodingNotSupportAutoWasm:!0,webglAlignmentErrorReplay:!0,webglContextLostErrorReplay:!0,openWebglAlignment:!1,syncAudioAndVideo:!1,syncAudioAndVideoDiff:500,playbackDelayTime:1e3,playbackFps:25,playbackForwardMaxRateDecodeIFrame:4,playbackCurrentTimeMove:!0,useVideoRender:!0,useCanvasRender:!1,networkDelayTimeoutReplay:!1,recordType:S,checkFirstIFrame:!0,nakedFlowFps:25,audioEngine:null,isShowRecordingUI:!0,isShowZoomingUI:!0,useFaceDetector:!1,useObjectDetector:!1,useImageDetector:!1,useOcclusionDetector:!1,ptzPositionConfig:{},ptzShowType:"vertical",ptzClickType:K,ptzStopEmitDelay:.3,ptzZoomShow:!1,ptzApertureShow:!1,ptzFocusShow:!1,ptzMoreArrowShow:!1,ptzCruiseShow:!1,ptzFogShow:!1,ptzWiperShow:!1,ptzSupportDraggable:!1,weiXinInAndroidAudioBufferSize:4800,isM7sCrypto:!1,m7sCryptoAudio:!1,isSm4Crypto:!1,isXorCrypto:!1,sm4CryptoKey:"",m7sCryptoKey:"",xorCryptoKey:"",cryptoKey:"",cryptoIV:"",cryptoKeyUrl:"",autoResize:!1,useWebFullScreen:!1,ptsMaxDiff:3600,aiFaceDetectLevel:2,aiFaceDetectWidth:240,aiFaceDetectShowRect:!0,aiFaceDetectInterval:1e3,aiFaceDetectRectConfig:{},aiObjectDetectLevel:2,aiObjectDetectWidth:240,aiObjectDetectShowRect:!0,aiObjectDetectInterval:1e3,aiObjectDetectRectConfig:{},aiOcclusionDetectInterval:1e3,aiImageDetectDrop:!1,aiImageDetectActive:!1,videoRenderSupportScale:!0,mediaSourceTsIsMaxDiffReplay:!0,controlHtml:"",isH265:!1,isWebrtcH265:!1,supportLockScreenPlayAudio:!0,supportHls265:!1,isEmitSEI:!1,pauseAndNextPlayUseLastFrameShow:!1,demuxUseWorker:!0,playFailedAndReplay:!0,showMessageConfig:{webglAlignmentError:"Webgl 渲染失败",webglContextLostError:"webgl 上下文丢失",mediaSourceH265NotSupport:"不支持硬解码H265",mediaSourceFull:"缓冲区已满",mediaSourceAppendBufferError:"初始化解码器失败",mseSourceBufferError:"解码失败",mseAddSourceBufferError:"初始化解码器失败",mediaSourceDecoderConfigurationError:"初始化解码器失败",mediaSourceTsIsMaxDiff:"流异常",mseWidthOrHeightChange:"流异常",mediaSourceAudioG711NotSupport:"硬解码不支持G711a/u音频格式",mediaSourceUseCanvasRenderPlayFailed:"MediaSource解码使用canvas渲染失败",webcodecsH265NotSupport:"不支持硬解码H265",webcodecsUnsupportedConfigurationError:"初始化解码器失败",webcodecsDecodeConfigureError:"初始化解码器失败",webcodecsDecodeError:"解码失败",wcsWidthOrHeightChange:"解码失败",wasmDecodeError:"解码失败",simdDecodeError:"解码失败",wasmWidthOrHeightChange:"流异常",wasmUseVideoRenderError:"video自动渲染失败",videoElementPlayingFailed:"video自动渲染失败",simdH264DecodeVideoWidthIsTooLarge:"不支持该分辨率的视频",networkDelayTimeout:"网络超时重播失败",fetchError:"请求失败",streamEnd:"请求结束",websocketError:"请求失败",webrtcError:"请求失败",hlsError:"请求失败",decoderWorkerInitError:"初始化worker失败",videoElementPlayingFailedForWebrtc:"video自动渲染失败",videoInfoError:"解析视频分辨率失败",webrtcStreamH265:"webrtc不支持H265",delayTimeout:"播放超时重播失败",loadingTimeout:"加载超时重播失败",loadingTimeoutRetryEnd:"加载超时重播失败",delayTimeoutRetryEnd:"播放超时重播失败"},videoElementPlayingFailedReplay:!0,mp4RecordUseWasm:!0,mseAutoCleanupSourceBuffer:!0,mseAutoCleanupMaxBackwardDuration:30,mseAutoCleanupMinBackwardDuration:10,widthOrHeightChangeReplay:!0,simdH264DecodeVideoWidthIsTooLargeReplay:!0,mediaSourceAudioG711NotSupportReplay:!0,mediaSourceAudioInitTimeoutReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplay:!0,mediaSourceUseCanvasRenderPlayFailedReplayType:W,widthOrHeightChangeReplayDelayTime:0,ghostWatermarkConfig:{on:5,off:5,content:"",fontSize:12,color:"white",opacity:.15,speed:.2},dynamicWatermarkConfig:{content:"",speed:.2,fontSize:12,color:"white",opacity:.15},isDropSameTimestampGop:!1,mseDecodeAudio:!1,nakedFlowH265DemuxUseNew:!0,extendDomConfig:{html:"",showBeforePlay:!1,showAfterLoading:!0},disableContextmenu:!1,mseDecoderUseWorker:!1,openMemoryLog:!1,mainThreadFetchUseWorker:!0,playFailedAndPausedShowPlayBtn:!0,mseCorrectionTimestamp:!0,flvDemuxBufferSizeTooLargeReplay:!1,flvDemuxBufferSizeTooLargeEmitFailed:!1,flvDemuxBufferSizeMaxLarge:1048576,isCheckInView:!1,hiddenControl:!1},re="init",ae="initVideo",oe="render",ne="playAudio",le="initAudio",de="audioCode",he="audioNalu",ce="audioAACSequenceHeader",ue="videoCode",pe="videoCodec",fe="videoNalu",me="videoPayload",ge="audioPayload",ye="wasmError",Ae="workerFetch",be="iframeIntervalTs",ve="isDropping",_e="workerEnd",Se="playbackStreamVideoFps",we="wasmDecodeVideoNoResponseError",Ee="wasmWidthOrHeightChange",Te="simdDecodeError",ke="simdH264DecodeVideoWidthIsTooLarge",Ce="closeEnd",xe="tempStream",Re="videoSEI",De="flvScriptData",Le="aacSequenceHeader",Pe="videoSequenceHeader",Be="flvBufferData",Ie="checkFirstIFrame",Me="mseHandle",Ue="mseFirstRenderTime",Fe="mseError",Oe="Invalid NAL unit size",Ne=1,je=2,ze=8,Ge=9,He=18,Ve="init",$e="decode",We="audioDecode",Je="videoDecode",qe="close",Ke="updateConfig",Ye="clearBuffer",Qe="fetchStream",Xe="sendWsMessage",Ze="mseUpdateVideoTimestamp",et="fetch",tt="destroy",it="destroyEnd",st="buffer",rt="fetchError",at="fetchClose",ot="fetchSuccess",nt={fullscreen:"fullscreen$2",webFullscreen:"webFullscreen",decoderWorkerInit:"decoderWorkerInit",play:"play",playing:"playing",pause:"pause",mute:"mute",load:"load",loading:"loading",zooming:"zooming",videoInfo:"videoInfo",timeUpdate:"timeUpdate",audioInfo:"audioInfo",log:"log",error:"error",kBps:"kBps",timeout:"timeout",delayTimeout:"delayTimeout",delayTimeoutRetryEnd:"delayTimeoutRetryEnd",loadingTimeout:"loadingTimeout",loadingTimeoutRetryEnd:"loadingTimeoutRetryEnd",stats:"stats",performance:"performance",videoSmooth:"videoSmooth",faceDetectActive:"faceDetectActive",objectDetectActive:"objectDetectActive",occlusionDetectActive:"occlusionDetectActive",imageDetectActive:"imageDetectActive",record:"record",recording:"recording",recordingTimestamp:"recordingTimestamp",recordStart:"recordStart",recordEnd:"recordEnd",recordCreateError:"recordCreateError",recordBlob:"recordBlob",buffer:"buffer",videoFrame:"videoFrame",videoSEI:"videoSEI",start:"start",metadata:"metadata",resize:"resize",volumechange:"volumechange",volume:"volume",destroy:"destroy",beforeDestroy:"beforeDestroy",streamEnd:"streamEnd",streamRate:"streamRate",streamAbps:"streamAbps",streamVbps:"streamVbps",streamDts:"streamDts",streamSuccess:"streamSuccess",streamMessage:"streamMessage",streamError:"streamError",streamStats:"streamStats",mseSourceOpen:"mseSourceOpen",mseSourceClose:"mseSourceClose",mseSourceended:"mseSourceended",mseSourceStartStreaming:"mseSourceStartStreaming",mseSourceEndStreaming:"mseSourceEndStreaming",mseSourceBufferError:"mseSourceBufferError",mseAddSourceBufferError:"mseAddSourceBufferError",mseSourceBufferBusy:"mseSourceBufferBusy",mseSourceBufferFull:"mseSourceBufferFull",videoWaiting:"videoWaiting",videoTimeUpdate:"videoTimeUpdate",videoSyncAudio:"videoSyncAudio",playToRenderTimes:"playToRenderTimes",playbackTime:"playbackTime",playbackTimestamp:"playbackTimestamp",playbackTimeScroll:"playbackTimeScroll",playbackPrecision:"playbackPrecision",playbackShowPrecisionChange:"playbackShowPrecisionChange",playbackJustTime:"playbackJustTime",playbackStats:"playbackStats",playbackSeek:"playbackSeek",playbackPause:"playbackPause",playbackPauseOrResume:"playbackPauseOrResume",playbackRateChange:"playbackRateChange",playbackPreRateChange:"playbackPreRateChange",ptz:"ptz",streamQualityChange:"streamQualityChange",visibilityChange:"visibilityChange",netBuf:"netBuf",close:"close",networkDelayTimeout:"networkDelayTimeout",togglePerformancePanel:"togglePerformancePanel",viewResizeChange:"viewResizeChange",flvDemuxBufferSizeTooLarge:"flvDemuxBufferSizeTooLarge",talkGetUserMediaSuccess:"talkGetUserMediaSuccess",talkGetUserMediaFail:"talkGetUserMediaFail",talkGetUserMediaTimeout:"talkGetUserMediaTimeout",talkStreamStart:"talkStreamStart",talkStreamOpen:"talkStreamOpen",talkStreamClose:"talkStreamClose",talkStreamError:"talkStreamError",talkStreamInactive:"talkStreamInactive",webrtcDisconnect:"webrtcDisconnect",webrtcFailed:"webrtcFailed",webrtcClosed:"webrtcClosed",webrtcOnConnectionStateChange:"webrtcOnConnectionStateChange",webrtcOnIceConnectionStateChange:"webrtcOnIceConnectionStateChange",crashLog:"crashLog",focus:"focus",blur:"blur",inView:"inView",visibilityHiddenTimeout:"visibilityHiddenTimeout",websocketOpen:"websocketOpen",websocketClose:"websocketClose",websocketError:"websocketError",websocketMessage:"websocketMessage",aiObjectDetectorInfo:"aiObjectDetectorInfo",aiFaceDetectorInfo:"aiFaceDetectorInfo",aiOcclusionDetectResult:"aiOcclusionDetectResult",aiImageDetectResult:"aiImageDetectResult",playFailedAndPaused:"playFailedAndPaused",audioResumeState:"audioResumeState",webrtcStreamH265:"webrtcStreamH265",flvMetaData:"flvMetaData",talkFailedAndStop:"talkFailedAndStop",removeLoadingBgImage:"removeLoadingBgImage",memoryLog:"memoryLog",downloadMemoryLog:"downloadMemoryLog",pressureObserverCpu:"pressureObserverCpu",currentPts:"currentPts",online:"online",offline:"offline",networkState:"networkState"},lt={load:nt.load,timeUpdate:nt.timeUpdate,videoInfo:nt.videoInfo,audioInfo:nt.audioInfo,error:nt.error,kBps:nt.kBps,start:nt.start,timeout:nt.timeout,loadingTimeout:nt.loadingTimeout,loadingTimeoutRetryEnd:nt.loadingTimeoutRetryEnd,delayTimeout:nt.delayTimeout,delayTimeoutRetryEnd:nt.delayTimeoutRetryEnd,fullscreen:"fullscreen",webFullscreen:nt.webFullscreen,play:nt.play,pause:nt.pause,mute:nt.mute,stats:nt.stats,performance:nt.performance,recordingTimestamp:nt.recordingTimestamp,recordStart:nt.recordStart,recordCreateError:nt.recordCreateError,recordEnd:nt.recordEnd,recordBlob:nt.recordBlob,playToRenderTimes:nt.playToRenderTimes,playbackSeek:nt.playbackSeek,playbackStats:nt.playbackStats,playbackTimestamp:nt.playbackTimestamp,playbackPauseOrResume:nt.playbackPauseOrResume,playbackPreRateChange:nt.playbackPreRateChange,playbackRateChange:nt.playbackRateChange,playbackShowPrecisionChange:nt.playbackShowPrecisionChange,ptz:nt.ptz,streamQualityChange:nt.streamQualityChange,zooming:nt.zooming,crashLog:nt.crashLog,focus:nt.focus,blur:nt.blur,visibilityHiddenTimeout:nt.visibilityHiddenTimeout,visibilityChange:nt.visibilityChange,websocketOpen:nt.websocketOpen,websocketClose:nt.websocketClose,networkDelayTimeout:nt.networkDelayTimeout,aiObjectDetectorInfo:nt.aiObjectDetectorInfo,aiFaceDetectorInfo:nt.aiFaceDetectorInfo,aiOcclusionDetectResult:nt.aiOcclusionDetectResult,aiImageDetectResult:nt.aiImageDetectResult,playFailedAndPaused:nt.playFailedAndPaused,streamEnd:nt.streamEnd,audioResumeState:nt.audioResumeState,videoSEI:nt.videoSEI,flvMetaData:nt.flvMetaData,webrtcOnConnectionStateChange:nt.webrtcOnConnectionStateChange,webrtcOnIceConnectionStateChange:nt.webrtcOnIceConnectionStateChange,currentPts:nt.currentPts,videoSmooth:nt.videoSmooth,networkState:nt.networkState,volume:nt.volume},dt={talkStreamClose:nt.talkStreamClose,talkStreamError:nt.talkStreamError,talkStreamInactive:nt.talkStreamInactive,talkGetUserMediaTimeout:nt.talkGetUserMediaTimeout,talkFailedAndStop:nt.talkFailedAndStop},ht={talkStreamError:nt.talkStreamError,talkStreamClose:nt.talkStreamClose},ct={playError:"playIsNotPauseOrUrlIsNull",fetchError:"fetchError",websocketError:"websocketError",webcodecsH265NotSupport:"webcodecsH265NotSupport",webcodecsDecodeError:"webcodecsDecodeError",webcodecsUnsupportedConfigurationError:"webcodecsUnsupportedConfigurationError",webcodecsDecodeConfigureError:"webcodecsDecodeConfigureError",mediaSourceH265NotSupport:"mediaSourceH265NotSupport",mediaSourceAudioG711NotSupport:"mediaSourceAudioG711NotSupport",mediaSourceAudioInitTimeout:"mediaSourceAudioInitTimeout",mediaSourceAudioNoDataTimeout:"mediaSourceAudioNoDataTimeout",mediaSourceDecoderConfigurationError:"mediaSourceDecoderConfigurationError",mediaSourceFull:nt.mseSourceBufferFull,mseSourceBufferError:nt.mseSourceBufferError,mseAddSourceBufferError:nt.mseAddSourceBufferError,mediaSourceAppendBufferError:"mediaSourceAppendBufferError",mediaSourceTsIsMaxDiff:"mediaSourceTsIsMaxDiff",mediaSourceUseCanvasRenderPlayFailed:"mediaSourceUseCanvasRenderPlayFailed",mediaSourceBufferedIsZeroError:"mediaSourceBufferedIsZeroError",wasmDecodeError:"wasmDecodeError",wasmUseVideoRenderError:"wasmUseVideoRenderError",hlsError:"hlsError",webrtcError:"webrtcError",webrtcClosed:nt.webrtcClosed,webrtcIceCandidateError:"webrtcIceCandidateError",webglAlignmentError:"webglAlignmentError",wasmWidthOrHeightChange:"wasmWidthOrHeightChange",mseWidthOrHeightChange:"mseWidthOrHeightChange",wcsWidthOrHeightChange:"wcsWidthOrHeightChange",widthOrHeightChange:"widthOrHeightChange",tallWebsocketClosedByError:"tallWebsocketClosedByError",flvDemuxBufferSizeTooLarge:nt.flvDemuxBufferSizeTooLarge,wasmDecodeVideoNoResponseError:"wasmDecodeVideoNoResponseError",audioChannelError:"audioChannelError",simdH264DecodeVideoWidthIsTooLarge:"simdH264DecodeVideoWidthIsTooLarge",simdDecodeError:"simdDecodeError",webglContextLostError:"webglContextLostError",videoElementPlayingFailed:"videoElementPlayingFailed",videoElementPlayingFailedForWebrtc:"videoElementPlayingFailedForWebrtc",decoderWorkerInitError:"decoderWorkerInitError",videoInfoError:"videoInfoError",videoCodecIdError:"videoCodecIdError",streamEnd:nt.streamEnd,websocket1006Error:"websocket1006Error",delayTimeout:nt.delayTimeout,loadingTimeout:nt.loadingTimeout,networkDelayTimeout:nt.networkDelayTimeout,aliyunRtcError:"aliyunRtcError",...ht},ut="notConnect",pt="open",ft="close",mt="error",gt={download:"download",base64:"base64",blob:"blob"},yt="download",At="blob",bt={7:"H264(AVC)",12:"H265(HEVC)",99:"MPEG4"},vt=7,_t=12,St="H264(AVC)",wt="H265(HEVC)",Et=10,Tt=2,kt={AAC:"AAC",ALAW:"ALAW(g711a)",MULAW:"MULAW(g711u)",MP3:"MP3"},Ct={10:"AAC",7:"ALAW",8:"MULAW",2:"MP3"},xt=7,Rt=8,Dt=5,Lt=1,Pt=5,Bt=6,It=7,Mt=8,Ut=14,Ft=19,Ot=20,Nt=21,jt=32,zt=32,Gt=33,Ht=33,Vt=34,$t=34,Wt=39,Jt=39,qt=40,Kt=38,Yt=48,Qt=0,Xt=1,Zt=2,ei="webcodecs",ti="webgl",ii="webgl2",si="webgpu",ri="offscreen",ai="mse",oi="hls",ni="webrtc",li="key",di="delta",hi='video/mp4; codecs="avc1.64002A"',ci='video/mp4; codecs="hev1.1.6.L123.b0"',ui='video/mp4;codecs="hev1.1.6.L120.90"',pi='video/mp4;codecs="hev1.2.4.L120.90"',fi='video/mp4;codecs="hev1.3.E.L120.90"',mi='video/mp4;codecs="hev1.4.10.L120.90"',gi="ended",yi="open",Ai="closed",bi=27,vi=38,_i=40,Si="oneHour",wi="halfHour",Ei="tenMin",Ti="fiveMin",ki={oneHour:"one-hour",halfHour:"half-hour",tenMin:"ten-min",fiveMin:"five-min"},Ci=["oneHour","halfHour","tenMin","fiveMin"],xi=["up","right","down","left","left-up","right-up","left-down","right-down"],Ri="stop",Di="fiStop",Li="zoomExpand",Pi="zoomNarrow",Bi="apertureFar",Ii="apertureNear",Mi="focusFar",Ui="focusNear",Fi="cruiseStart",Oi="cruiseStop",Ni="fogOpen",ji="fogClose",zi="wiperOpen",Gi="wiperClose",Hi="g711a",Vi="g711u",$i="pcm",Wi="opus",Ji={png:"image/png",jpeg:"image/jpeg",webp:"image/webp"},qi="sourceclose",Ki="sourceopen",Yi="sourceended",Qi="startstreaming",Xi="endstreaming",Zi="qualitychange",es="canplay",ts="waiting",is="timeupdate",ss="ratechange",rs="avc",as="hevc",os="A key frame is required after configure() or flush()",ns="Cannot call 'decode' on a closed codec",ls="Unsupported configuration",ds="Decoder failure",hs="Decoding error",cs="Decoder error",us="HEVC decoding is not supported",ps="The user aborted a request",fs="AbortError",ms="AbortError",gs="loading",ys="playing",As="paused",bs="destroy",vs=0,_s=1,Ss=8,ws=0,Es=98,Ts="empty",ks="rtp",Cs="tcp",xs="open",Rs="close",Ds="error",Ls="message",Ps="worklet",Bs="script",Is={encType:Hi,packetType:ks,packetTcpSendType:Cs,rtpSsrc:"0000000000",numberChannels:1,sampleRate:8e3,sampleBitsWidth:16,sendInterval:20,debug:!1,debugLevel:q,testMicrophone:!1,saveToTempFile:!1,audioBufferLength:160,engine:Ps,checkGetUserMediaTimeout:!1,getUserMediaTimeout:1e4,audioConstraints:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1}},Ms="worklet",Us="script",Fs="active",Os={name:"",index:0,icon:"",iconHover:"",iconTitle:"",activeIcon:"",activeIconHover:"",activeIconTitle:"",click:null,activeClick:null},Ns={content:"",click:null,index:0},js=1,zs="subtitle-segments",Gs="hls-manifest-loaded",Hs="hls-level-loaded",Vs="demuxed-track",$s="flv-script-data",Ws="metadata-parsed",Js="ttfb",qs="load-retry",Ks="load-start",Ys="speed",Qs="load-complete",Xs="load-response-headers",Zs="sei",er="sei-in-time",tr="switch-url-failed",ir="switch-url-success",sr="subtitle-playlist",rr="stream-parsed",ar="error",or=[0,160,240,320,480,640],nr=[0,160,240,320,480,640],lr=["轻松","正常","较高","高"],dr="idle",hr="buffering",cr="complete",ur={1:"MEDIA_ERR_ABORTED",2:"MEDIA_ERR_NETWORK",3:"MEDIA_ERR_DECODE",4:"MEDIA_ERR_SRC_NOT_SUPPORTED"},pr="video decoder initialization failed",fr="audio packet",mr=1,gr=2,yr=0,Ar=1,br=3,vr=16,_r="candidate-pair",Sr="inbound-rtp",wr="local-candidate",Er="remote-candidate",Tr="track",kr=9e4,Cr=45e4,xr=9e4,Rr="ws1006",Dr="mseDecodeError",Lr="wcsDecodeError";class Pr{constructor(e){this.log=function(t){if(e._opt.debug&&e._opt.debugLevel==J){const a=e._opt.debugUuid?`[${e._opt.debugUuid}]`:"";for(var i=arguments.length,s=new Array(i>1?i-1:0),r=1;r1?i-1:0),r=1;r1?s-1:0),a=1;a32&&console.error("ExpGolomb: readBits() bits exceeded max 32bits!"),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 s=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-s;return this._current_word<<=s,this._current_word_bits_left-=s,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)}}const Fr=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350,-1,-1,-1],Or=Fr,Nr=Fr;function jr(e){let{profile:t,sampleRate:i,channel:s}=e;return new Uint8Array([175,0,t<<3|(14&i)>>1,(1&i)<<7|s<<3])}function zr(e){return Gr(e)&&e[1]===vs}function Gr(e){return e[0]>>4===Et}function Hr(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])}}function Vr(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return 1024*t/e}const $r=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class Wr{constructor(e){this.buffer=e,this.buflen=e.length,this.bufpos=0,this.bufoff=0,this.iserro=!1}read(e){let t=0,i=0;for(;e;){if(e<0||this.bufpos>=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0==this.read(1)&&!this.iserro;e++);return(1<=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(4095===(i[t+0]<<8|i[t+1])>>>4)return t;t++}}readNextAACFrame(){let e=this.data_,t=null;for(;null==t&&!this.eof_flag_;){let i=this.current_syncword_offset_,s=(8&e[i+1])>>>3,r=(6&e[i+1])>>>1,a=1&e[i+1],o=(192&e[i+2])>>>6,n=(60&e[i+2])>>>2,l=(1&e[i+2])<<2|(192&e[i+3])>>>6,d=(3&e[i+3])<<11|e[i+4]<<3|(224&e[i+5])>>>5;if(e[i+6],i+d>this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let h=1===a?7:9,c=d-h;i+=h;let u=this.findNextSyncwordOffset(i+c);if(this.current_syncword_offset_=u,0!==s&&1!==s||0!==r)continue;let p=e.subarray(i,i+c);t={},t.audio_object_type=o+1,t.sampling_freq_index=n,t.sampling_frequency=Or[n],t.channel_config=l,t.data=p}return t}hasIncompleteData(){return this.has_last_incomplete_data}getIncompleteData(){return this.has_last_incomplete_data?this.data_.subarray(this.current_syncword_offset_):null}}class Xr{constructor(e){this.data_=e,this.eof_flag_=!1,this.current_syncword_offset_=this.findNextSyncwordOffset(0),this.eof_flag_&&console.error("Could not found ADTS syncword until payload end")}findNextSyncwordOffset(e){let t=e,i=this.data_;for(;;){if(t+1>=i.byteLength)return this.eof_flag_=!0,i.byteLength;if(695===(i[t+0]<<3|i[t+1]>>>5))return t;t++}}getLATMValue(e){let t=e.readBits(2),i=0;for(let s=0;s<=t;s++)i<<=8,i|=e.readByte();return i}readNextAACFrame(e){let t=this.data_,i=null;for(;null==i&&!this.eof_flag_;){let s=this.current_syncword_offset_,r=(31&t[s+1])<<8|t[s+2];if(s+3+r>=this.data_.byteLength){this.eof_flag_=!0,this.has_last_incomplete_data=!0;break}let a=new Ur(t.subarray(s+3,s+3+r)),o=null;if(a.readBool()){if(null==e){console.warn("StreamMuxConfig Missing"),this.current_syncword_offset_=this.findNextSyncwordOffset(s+3+r),a.destroy();continue}o=e}else{let e=a.readBool();if(e&&a.readBool()){console.error("audioMuxVersionA is Not Supported"),a.destroy();break}if(e&&this.getLATMValue(a),!a.readBool()){console.error("allStreamsSameTimeFraming zero is Not Supported"),a.destroy();break}if(0!==a.readBits(6)){console.error("more than 2 numSubFrames Not Supported"),a.destroy();break}if(0!==a.readBits(4)){console.error("more than 2 numProgram Not Supported"),a.destroy();break}if(0!==a.readBits(3)){console.error("more than 2 numLayer Not Supported"),a.destroy();break}let t=e?this.getLATMValue(a):0,i=a.readBits(5);t-=5;let s=a.readBits(4);t-=4;let r=a.readBits(4);t-=4,a.readBits(3),t-=3,t>0&&a.readBits(t);let n=a.readBits(3);if(0!==n){console.error(`frameLengthType = ${n}. Only frameLengthType = 0 Supported`),a.destroy();break}a.readByte();let l=a.readBool();if(l)if(e)this.getLATMValue(a);else{let e=0;for(;;){e<<=8;let t=a.readBool();if(e+=a.readByte(),!t)break}console.log(e)}a.readBool()&&a.readByte(),o={},o.audio_object_type=i,o.sampling_freq_index=s,o.sampling_frequency=Or[o.sampling_freq_index],o.channel_config=r,o.other_data_present=l}let n=0;for(;;){let e=a.readByte();if(n+=e,255!==e)break}let l=new Uint8Array(n);for(let e=0;e1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function ea(e){const t=e.byteLength,i=new Uint8Array(4);i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t;const s=new Uint8Array(t+4);return s.set(i,0),s.set(e,4),s}function ta(){}function ia(e){let t=null;const i=["webgl","experimental-webgl","moz-webgl","webkit-3d"];let s=0;for(;!t&&s0&&void 0!==arguments[0]?arguments[0]:"";const t=e.split(","),i=atob(t[1]),s=t[0].replace("data:","").replace(";base64","");let r=i.length,a=new Uint8Array(r);for(;r--;)a[r]=i.charCodeAt(r);return new File([a],"file",{type:s})}function aa(){return(new Date).getTime()}function oa(e,t,i){return Math.max(Math.min(e,Math.max(t,i)),Math.min(t,i))}function na(e,t,i){if(e)return"object"==typeof t&&Object.keys(t).forEach((i=>{na(e,i,t[i])})),e.style[t]=i,e}function la(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!e)return 0;const s=getComputedStyle(e,null).getPropertyValue(t);return i?parseFloat(s):s}function da(){return performance&&"function"==typeof performance.now?performance.now():Date.now()}function ha(e){let t=0,i=da();return s=>{if(!Ta(s))return;t+=s;const r=da(),a=r-i;a>=1e3&&(e(t/a*1e3),i=r,t=0)}}(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){}})();const ca='"4-1-2024"';function ua(){return/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase())}function pa(){return!(ua()||/ipad|android(?!.*mobile)|tablet|kindle|silk/i.test(window.navigator.userAgent.toLowerCase()))}function fa(){const e=window.navigator.userAgent.toLowerCase();return/android/i.test(e)}function ma(){const e=window.navigator.userAgent.toLowerCase();return/firefox/i.test(e)}function ga(){const e=window.navigator.userAgent.toLowerCase()||"",t={type:"",version:""},i={IE:window.ActiveXObject||"ActiveXObject"in window,Chrome:e.indexOf("chrome")>-1&&e.indexOf("safari")>-1,Firefox:e.indexOf("firefox")>-1,Opera:e.indexOf("opera")>-1,Safari:e.indexOf("safari")>-1&&-1==e.indexOf("chrome"),Edge:e.indexOf("edge")>-1,QQBrowser:/qqbrowser/.test(e),WeixinBrowser:/MicroMessenger/i.test(e)};for(let s in i)if(i[s]){let i="";if("IE"===s){const t=e.match(/(msie\s|trident.*rv:)([\w.]+)/);t&&t.length>2&&(i=e.match(/(msie\s|trident.*rv:)([\w.]+)/)[2])}else if("Chrome"===s){for(let e in navigator.mimeTypes)"application/360softmgrplugin"===navigator.mimeTypes[e].type&&(s="360");const t=e.match(/chrome\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Firefox"===s){const t=e.match(/firefox\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Opera"===s){const t=e.match(/opera\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Safari"===s){const t=e.match(/version\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("Edge"===s){const t=e.match(/edge\/([\d.]+)/);t&&t.length>1&&(i=t[1])}else if("QQBrowser"===s){const t=e.match(/qqbrowser\/([\d.]+)/);t&&t.length>1&&(i=t[1])}t.type=s,t.version=parseInt(i)}return t}function ya(){const e=window.navigator.userAgent.toLowerCase();return e&&/iphone|ipad|ipod|ios/.test(e)}function Aa(){const e=window.navigator.userAgent;return!e.match(/Chrome/gi)&&!!e.match(/Safari/gi)}function ba(e,t){if(0===arguments.length)return null;var i,s=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"==typeof e?i=e:(10===(""+e).length&&(e=1e3*parseInt(e)),e=+e,i=new Date(e));var r={y:i.getFullYear(),m:i.getMonth()+1,d:i.getDate(),h:i.getHours(),i:i.getMinutes(),s:i.getSeconds(),a:i.getDay()},a=s.replace(/{(y|m|d|h|i|s|a)+}/g,((e,t)=>{var i=r[t];return"a"===t?["一","二","三","四","五","六","日"][i-1]:(e.length>0&&i<10&&(i="0"+i),i||0)}));return a}function va(){return"VideoFrame"in window}function _a(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function Sa(){return"xxxxxxxxxxxx4xxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}function wa(e,t){let i,s,r=!1;return function a(){for(var o=arguments.length,n=new Array(o),l=0;l{r=!1,i&&(a.apply(s,i),i=null,s=null)}),t)}}function Ea(e){if(null==e||""==e)return"0 Bytes";const t=new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB");let i=0;const s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));var r=s/Math.pow(1024,i);return(r=r.toFixed(2))+t[i]}function Ta(e){return"[object Number]"===Object.prototype.toString.call(e)}function ka(){let e=!1;return"MediaSource"in self&&(self.MediaSource.isTypeSupported(ci)||self.MediaSource.isTypeSupported(ui)||self.MediaSource.isTypeSupported(pi)||self.MediaSource.isTypeSupported(fi)||self.MediaSource.isTypeSupported(mi))&&(e=!0),e}function Ca(){const e=ga();return"chrome"===e.type.toLowerCase()&&e.version>=107}function xa(){let e=!1;return"MediaStreamTrackGenerator"in window&&(e=!0),e}function Ra(){let e=!1;return"MediaStream"in window&&(e=!0),e}function Da(e,t){let i=window.URL.createObjectURL(t),s=window.document.createElement("a");s.download=e,s.href=i;let r=window.document.createEvent("MouseEvents");r.initEvent("click",!0,!0),s.dispatchEvent(r),setTimeout((()=>{window.URL.revokeObjectURL(i)}),ya()?1e3:0)}function La(e){return null==e}function Pa(e){return!0===e||!1===e}function Ba(e){return!La(e)}function Ia(e){let t={left:"",right:"",top:"",bottom:"",opacity:1,backgroundColor:"",image:{src:"",width:"100",height:"60"},text:{content:"",fontSize:"14",color:"#000",width:"",height:""},rect:{color:"green",lineWidth:2,width:"",height:"",fill:"",fillOpacity:.2},line:{x1:"",y1:"",x2:"",y2:"",color:"green",lineWidth:2},polygon:{color:"green",lineWidth:2,list:[],fill:"",fillOpacity:.2},html:""};const i=Object.assign(t.image,e.image||{}),s=Object.assign(t.text,e.text||{}),r=Object.assign(t.rect,e.rect||{}),a=Object.assign(t.line,e.line||{});return t=Object.assign(t,e,{image:i,text:s,rect:r,line:a}),t}function Ma(e,t){let i={container:e||"",text:"",opacity:"",angle:"",color:"",fontSize:"",fontFamily:""};return i=Object.assign(i,t),{watermark_parent_node:i.container,watermark_alpha:i.opacity,watermark_angle:i.angle,watermark_fontsize:i.fontSize,watermark_color:i.color,watermark_font:i.fontFamily,watermark_txt:i.text}}function Ua(e,t){return new Promise(((i,s)=>{let r=Ia(t);if(!r.image.src&&!r.text.content)return i(e);let a=document.createElement("canvas");a.width=t.width,a.height=t.height;let o=a.getContext("2d"),n=0,l=0;Ta(r.left)?n=r.left:Ta(r.right)&&(n=a.width-r.right),Ta(r.top)?l=r.top:Ta(r.bottom)&&(l=a.height-r.bottom);const d=new Image;d.src=e,d.onload=()=>{if(o.drawImage(d,0,0),r.image&&r.image.src){const e=new Image;e.src=r.image.src,e.setAttribute("crossOrigin","Anonymous"),e.onload=()=>{n-=r.image.width,o.drawImage(e,n,l,r.image.width,r.image.height),i(a.toDataURL(t.format,t.quality))},e.onerror=e=>{s()}}else r.text&&r.text.content&&(o.font=r.text.fontSize+"px 宋体",o.fillStyle=r.text.color,o.textAlign="right",o.fillText(r.text.content,n,l),i(a.toDataURL(t.format,t.quality)))},d.onerror=e=>{s(e)}}))}function Fa(e){var t;if(e>-1){var i=Math.floor(e/3600),s=Math.floor(e/60)%60,r=e%60;t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",(r=Math.round(r))<10&&(t+="0"),t+=r.toFixed(0)}return t}function Oa(e,t){let i="";if(e>-1){const s=Math.floor(e/60)%60;let r=e%60;r=Math.round(r),i=s<10?"0"+s+":":s+":",r<10&&(i+="0"),i+=r,La(t)||(t<10&&(t="0"+t),i+=":"+t)}return i}function Na(e){let t="";if(e>-1){const i=Math.floor(e/60/60)%60;let s=Math.floor(e/60)%60,r=e%60;s=Math.round(s),t=i<10?"0"+i+":":i+":",s<10&&(t+="0"),t+=s+":",r<10&&(t+="0"),t+=r}return t}function ja(e,t){const i=Math.floor(t/60)%60,s=Math.floor(t%60);return new Date(e).setHours(i,s,0,0)}function za(e,t){const i=Math.floor(t/60/60)%60,s=Math.floor(t/60)%60,r=t%60;return new Date(e).setHours(i,s,r,0)}function Ga(e){return(""+e).length}function Ha(e){return e&&0===Object.keys(e).length}function Va(e){return!Ha(e)}function $a(e){return"string"==typeof e}const Wa=()=>{const e=window.navigator.userAgent;return/MicroMessenger/i.test(e)},Ja=()=>{const e=window.navigator.userAgent;return/Chrome/i.test(e)};function qa(e){const t=e||window.event;return t.target||t.srcElement}function Ka(){return ma()&&function(){const e=navigator.userAgent.toLowerCase();return/macintosh|mac os x/i.test(e)}()}function Ya(e){return"function"==typeof e}function Qa(e){if(ua()){let t=0,i=0;if(1===e.touches.length){let s=e.touches[0];t=s.clientX,i=s.clientY}return{posX:t,posY:i}}let t=0,i=0;const s=e||window.event;return s.pageX||s.pageY?(t=s.pageX,i=s.pageY):(s.clientX||s.clientY)&&(t=e.clientX+document.documentElement.scrollLeft+document.body.scrollLeft,i=e.clientY+document.documentElement.scrollTop+document.body.scrollTop),{posX:t,posY:i}}function Xa(){let e=document.createElement("video"),t=e.canPlayType("application/vnd.apple.mpegurl");return e=null,t}function Za(e){let t=po(e.hasAudio)&&(e.useMSE||e.useWCS&&!e.useOffscreen)&&po(e.demuxUseWorker);return!!(po(t)&&e.useMSE&&e.mseDecodeAudio&&po(e.demuxUseWorker))||t}function eo(e){const t=e.toString().trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1];const i=new Blob([t],{type:"application/javascript"});return URL.createObjectURL(i)}function to(e){e.close()}function io(){return"https:"===window.location.protocol||"localhost"===window.location.hostname}function so(e){const t=Object.prototype.toString;return function(e){switch(t.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:try{return e instanceof Error}catch(e){return!1}}}(e)?e.message:null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function ro(e,t){t&&(e=e.filter((e=>e.type&&e.type===t)));let i=e[0],s=null,r=1;if(e.length>0){let t=e[1];t&&t.ts-i.ts>1e5&&(i=t,r=2)}if(i)for(let a=r;a=1e3){e[a-1].ts-i.ts<1e3&&(s=a+1)}}}return s}function ao(e){for(var t=(e+"=".repeat((4-e.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(t),s=new Uint8Array(i.length),r=0;r>4===_s&&e[1]===vs}function uo(e){return!0===e||"true"===e}function po(e){return!0!==e&&"true"!==e}function fo(e){return e.replace(/-([a-z])/g,(function(e,t){return t.toUpperCase()}))}function mo(){return/iphone/i.test(navigator.userAgent)}function go(){return window.performance&&window.performance.memory?window.performance.memory:null}function yo(){try{var e=document.createElement("canvas");return!(!window.WebGL2RenderingContext||!e.getContext("webgl2"))}catch(e){return!1}}function Ao(e){return e.trim().match(/^function\s*\w*\s*\([\w\s,]*\)\s*{([\w\W]*?)}$/)[1]}function bo(){let e=!1;return"requestVideoFrameCallback"in HTMLVideoElement.prototype&&(e=!0),e}function vo(){let e=!1;return"PressureObserver"in window&&(e=!0),e}class _o{constructor(e){this.destroys=[],this.proxy=this.proxy.bind(this),this.master=e}proxy(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(!e)return;if(Array.isArray(t))return t.map((t=>this.proxy(e,t,i,s)));e.addEventListener(t,i,s);const r=()=>{Ya(e.removeEventListener)&&e.removeEventListener(t,i,s)};return this.destroys.push(r),r}destroy(){this.master.debug&&this.master.debug.log("Events","destroy"),this.destroys.forEach((e=>e())),this.destroys=[]}}class So{on(e,t,i){const s=this.e||(this.e={});return(s[e]||(s[e]=[])).push({fn:t,ctx:i}),this}once(e,t,i){const s=this;function r(){s.off(e,r);for(var a=arguments.length,o=new Array(a),n=0;n1?i-1:0),r=1;r{delete i[e]})),void delete this.e;const s=i[e],r=[];if(s&&t)for(let e=0,i=s.length;e0) {\n\n highp float y = texture2D(yTexture, vTexturePosition).r;\n highp float u = texture2D(uTexture, vTexturePosition).r;\n highp float v = texture2D(vTexture, vTexturePosition).r;\n gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;\n\n } else {\n gl_FragColor = texture2D(rgbaTexture, vTexturePosition);\n }\n }\n "),i=this.gl.createProgram();return this.gl.attachShader(i,e),this.gl.attachShader(i,t),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS)?i:(console.log("Unable to initialize the shader program: "+this.gl.getProgramInfoLog(i)),null)}_loadShader(e,t){const i=this.gl,s=i.createShader(e);return i.shaderSource(s,t),i.compileShader(s),i.getShaderParameter(s,i.COMPILE_STATUS)?s:(console.log("An error occurred compiling the shaders: "+i.getShaderInfoLog(s)),i.deleteShader(s),null)}_initBuffers(){const e=this.gl,t=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,t);const i=[-1,-1,1,-1,1,1,-1,1];e.bufferData(e.ARRAY_BUFFER,new Float32Array(i),e.STATIC_DRAW);var s=[];s=s.concat([0,1],[1,1],[1,0],[0,0]);const r=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,r),e.bufferData(e.ARRAY_BUFFER,new Float32Array(s),e.STATIC_DRAW);const a=e.createBuffer();e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a);return e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Uint16Array([0,1,2,0,2,3]),e.STATIC_DRAW),{positions:i,position:t,texPosition:r,indices:a}}_createTexture(){let e=this.gl.createTexture();return this.gl.bindTexture(this.gl.TEXTURE_2D,e),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),e}_drawScene(e,t,i){this.gl.viewport(0,0,e,t),this.gl.enable(this.gl.BLEND),this.gl.blendFunc(this.gl.SRC_ALPHA,this.gl.ONE_MINUS_SRC_ALPHA),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.position),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(this._buffers.positions),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this._programInfo.attribLocations.vertexPosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.vertexPosition),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this._buffers.texPosition),this.gl.vertexAttribPointer(this._programInfo.attribLocations.texturePosition,2,this.gl.FLOAT,!1,0,0),this.gl.enableVertexAttribArray(this._programInfo.attribLocations.texturePosition),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this._buffers.indices);i?(this.gl.activeTexture(this.gl.TEXTURE0+3),this.gl.bindTexture(this.gl.TEXTURE_2D,this._ytexture),this.gl.activeTexture(this.gl.TEXTURE0+4),this.gl.bindTexture(this.gl.TEXTURE_2D,this._utexture),this.gl.activeTexture(this.gl.TEXTURE0+5),this.gl.bindTexture(this.gl.TEXTURE_2D,this._vtexture)):(this.gl.activeTexture(this.gl.TEXTURE0+2),this.gl.bindTexture(this.gl.TEXTURE_2D,this._rgbatexture)),this.gl.useProgram(this._programInfo.program),this.gl.uniform1i(this._programInfo.uniformLocations.rgbatexture,2),this.gl.uniform1i(this._programInfo.uniformLocations.ytexture,3),this.gl.uniform1i(this._programInfo.uniformLocations.utexture,4),this.gl.uniform1i(this._programInfo.uniformLocations.vtexture,5),this.gl.uniform1i(this._programInfo.uniformLocations.isyuv,i?1:0),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0)}_calRect(e,t,i,s,r,a){let o=2*e/r-1,n=2*(a-t-s)/a-1,l=2*(e+i)/r-1,d=2*(a-t)/a-1;return[o,n,l,n,l,d,o,d]}_clear(){this.gl.clearColor(0,0,0,1),this.gl.clearDepth(1),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}render(e,t,i,s,r){const a=this.gl;this._clear(),a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._ytexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e,t,0,a.LUMINANCE,a.UNSIGNED_BYTE,i),a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,this._utexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,s),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,this._vtexture),a.texImage2D(a.TEXTURE_2D,0,a.LUMINANCE,e/2,t/2,0,a.LUMINANCE,a.UNSIGNED_BYTE,r),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}renderYUV(e,t,i){let s=i.slice(0,e*t),r=i.slice(e*t,e*t*5/4),a=i.slice(e*t*5/4,e*t*3/2);const o=this.gl;this._clear(),o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this._ytexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,t,0,o.LUMINANCE,o.UNSIGNED_BYTE,s),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this._utexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,r),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this._vtexture),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,t/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,a),this._buffers.positions=[-1,-1,1,-1,1,1,-1,1],this._drawScene(e,t,!0)}drawDom(e,t,i,s,r){const a=this.gl;a.activeTexture(a.TEXTURE0),a.bindTexture(a.TEXTURE_2D,this._rgbatexture),a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,r),this._buffers.positions=this._calRect(i,s,r.width,r.height,e,t),this._drawScene(e,t,!1)}}class Lo{constructor(e){this.gpu=e,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null,this.hasInited=!1,this.buffers=this._initBuffer(),this._initPipeline().then((e=>{this.pipeline=e,this.matrixGroupInfo=this._initMatrixGroupInfo(),this.hasInited=!0}))}destroy(){this.gpu&&(this.gpu.device.destroy(),this.gpu=null),this.hasInited=!1,this.pipeline=null,this.matrixGroupInfo=null,this.depthTexture=null,this.textureGroupInfo=null}_initBuffer(){const e=this.gpu.device,t=new Float32Array([-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1]),i=e.createBuffer({size:t.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(i,0,t);const s=new Float32Array([0,1,1,1,1,0,0,0]),r=e.createBuffer({size:s.byteLength,usage:window.GPUBufferUsage.VERTEX|window.GPUBufferUsage.COPY_DST});e.queue.writeBuffer(r,0,s);const a=new Uint16Array([0,1,2,0,2,3]),o=e.createBuffer({size:a.byteLength,usage:window.GPUBufferUsage.INDEX|window.GPUBufferUsage.COPY_DST});return e.queue.writeBuffer(o,0,a),{positionBuffer:i,texpositionBuffer:r,indexBuffer:o}}_initPipeline(){return new Promise(((e,t)=>{const i=this.gpu.device,s=this.gpu.format,r={layout:"auto",vertex:{module:i.createShaderModule({code:"\n\n @binding(0) @group(0) var uModelMatrix : mat4x4;\n @binding(1) @group(0) var uViewMatrix : mat4x4;\n @binding(2) @group(0) var uProjectionMatrix : mat4x4;\n\n struct VertexOutput {\n @builtin(position) Position : vec4,\n @location(0) vTexturePosition : vec2,\n }\n\n @vertex\n fn main(\n @location(0) aVertexPosition : vec4,\n @location(1) aTexturePosition : vec2\n ) -> VertexOutput {\n var output : VertexOutput;\n var tmppos : vec4 = uProjectionMatrix * uViewMatrix * uModelMatrix * aVertexPosition;\n output.Position = vec4(tmppos.x, tmppos.y, (tmppos.z+1.)/2., tmppos.w); // webgl z [-1, 1], webgpu z [0, 1], 这里z做下调整 z-webgpu = (z-webgl+1)/2\n output.vTexturePosition = aTexturePosition;\n return output;\n }\n\n "}),entryPoint:"main",buffers:[{arrayStride:12,attributes:[{shaderLocation:0,offset:0,format:"float32x3"}]},{arrayStride:8,attributes:[{shaderLocation:1,offset:0,format:"float32x2"}]}]},primitive:{topology:"triangle-list"},fragment:{module:i.createShaderModule({code:"\n @group(1) @binding(0) var mySampler: sampler;\n @group(1) @binding(1) var yTexture: texture_2d;\n @group(1) @binding(2) var uTexture: texture_2d;\n @group(1) @binding(3) var vTexture: texture_2d;\n\n const YUV2RGB : mat4x4 = mat4x4( 1.1643828125, 0, 1.59602734375, -.87078515625,\n 1.1643828125, -.39176171875, -.81296875, .52959375,\n 1.1643828125, 2.017234375, 0, -1.081390625,\n 0, 0, 0, 1);\n\n @fragment\n fn main(\n @location(0) vTexturePosition: vec2\n ) -> @location(0) vec4 {\n\n var y : f32= textureSample(yTexture, mySampler, vTexturePosition).r;\n var u : f32 = textureSample(uTexture, mySampler, vTexturePosition).r;\n var v : f32 = textureSample(vTexture, mySampler, vTexturePosition).r;\n\n return vec4(y, u, v, 1.0)*YUV2RGB;\n }\n\n "}),entryPoint:"main",targets:[{format:s}]},depthStencil:{depthWriteEnabled:!0,depthCompare:"less",format:"depth24plus"}};i.createRenderPipelineAsync(r).then((t=>{e(t)})).catch((e=>{t(e)}))}))}_initMatrixGroupInfo(){const e=this.gpu.device,t=this.pipeline,i=To();xo(i,-1,1,-1,1,.1,100);const s=To();ko(s);const r=To();!function(e,t,i,s){var r,a,o,n,l,d,h,c,u,p,f=t[0],m=t[1],g=t[2],y=s[0],A=s[1],b=s[2],v=i[0],_=i[1],S=i[2];Math.abs(f-v)Ia(e)));this.configList=i,this._updateDom()}_resizeDomForVideo(){const e=this.player.width,t=this.player.height,i=this.player.getVideoInfo();if(!(i&&i.height>0&&i.width>0))return;let s=i.width,r=i.height;const a=this.player._opt;let o=t,n=e;if(a.hasControl&&!a.controlAutoHide){const e=a.playType===_?Yt:Kt;ua()&&this.player.fullscreen&&a.useWebFullScreen?n-=e:o-=e}const l=a.rotate;let d=(n-s)/2,h=(o-r)/2;270!==l&&90!==l||(s=i.height,r=i.width);const c=n/s,u=o/r;let p=c>u?u:c;a.isResize||c!==u&&(p=c+","+u),a.isFullResize&&(p=c>u?c:u);let f="scale("+p+")";"none"===a.mirrorRotate&&l&&(f+=" rotate("+l+"deg)"),"level"===a.mirrorRotate?f+=" rotateY(180deg)":"vertical"===a.mirrorRotate&&(f+=" rotateX(180deg)"),this.scale=-1!==(""+p).indexOf(",")?c:p,this.shadowRootInnerDom.style.transform=f,this.shadowRootInnerDom.style.left=d+"px",this.shadowRootInnerDom.style.top=h+"px",this.shadowRootInnerDom.style.width=i.width+"px",this.shadowRootInnerDom.style.height=i.height+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomForCanvas(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt;let i=this.player.width,s=this.player.height;if(t.hasControl&&!t.controlAutoHide){const e=t.playType===_?Yt:Kt;ua()&&this.player.fullscreen&&t.useWebFullScreen?i-=e:s-=e}let r=e.width,a=e.height;const o=t.rotate;let n=(i-r)/2,l=(s-a)/2;270!==o&&90!==o||(r=e.height,a=e.width);const d=i/r,h=s/a;let c=d>h?h:d;t.isResize||d!==h&&(c=d+","+h),t.isFullResize&&(c=d>h?d:h);let u="scale("+c+")";"none"===t.mirrorRotate&&o&&(u+=" rotate("+o+"deg)"),"level"===t.mirrorRotate?u+=" rotateY(180deg)":"vertical"===t.mirrorRotate&&(u+=" rotateX(180deg)"),this.shadowRootInnerDom.style.height=e.height+"px",this.shadowRootInnerDom.style.width=e.width+"px",this.shadowRootInnerDom.style.padding="0",this.shadowRootInnerDom.style.transform=u,this.shadowRootInnerDom.style.left=n+"px",this.shadowRootInnerDom.style.top=l+"px",this.shadowRootInnerDom.style.display="block"}_resizeDomRatio(){const e=this.player.getVideoInfo();if(!(e&&e.height>0&&e.width>0))return;const t=this.player._opt.aspectRatio.split(":").map(Number);let i=this.player.width,s=this.player.height;const r=this.player._opt;let a=0;r.hasControl&&!r.controlAutoHide&&(a=r.playType===_?Yt:Kt,s-=a);const o=e.width/e.height,n=t[0]/t[1];if(o>n){const t=n*e.height/e.width;this.shadowRootInnerDom.style.width=100*t+"%",this.shadowRootInnerDom.style.height=`calc(100% - ${a}px)`,this.shadowRootInnerDom.style.padding=`0 ${(i-i*t)/2}px`}else{const t=e.width/n/e.height;this.shadowRootInnerDom.style.width="100%",this.shadowRootInnerDom.style.height=`calc(${100*t}% - ${a}px)`,this.shadowRootInnerDom.style.padding=(s-s*t)/2+"px 0"}this.shadowRootInnerDom.style.display="block"}_updateDom(){this.shadowRoot&&this.configList.forEach((e=>{const t=document.createElement("div");let i=null;if(e.image&&e.image.src?(i=document.createElement("img"),i.style.height="100%",i.style.width="100%",i.style.objectFit="contain",i.src=e.image.src):e.text&&e.text.content?i=document.createTextNode(e.text.content):(e.rect&&e.rect.color&&e.rect.width||e.html||e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2||e.polygon&&e.polygon.list&&e.polygon.list.length>=3)&&(i=document.createElement("div")),i){if(t.appendChild(i),t.style.visibility="",t.style.position="absolute",t.style.display="block",t.style["-ms-user-select"]="none",t.style["-moz-user-select"]="none",t.style["-webkit-user-select"]="none",t.style["-o-user-select"]="none",t.style["user-select"]="none",t.style["-webkit-touch-callout"]="none",t.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",t.style["-webkit-text-size-adjust"]="none",t.style["-webkit-touch-callout"]="none",t.style.opacity=e.opacity,Ba(e.left)&&(Ta(e.left)?t.style.left=e.left+"px":t.style.left=e.left),Ba(e.right)&&(Ta(e.right)?t.style.right=e.right+"px":t.style.right=e.right),Ba(e.top)&&(Ta(e.top)?t.style.top=e.top+"px":t.style.top=e.top),Ba(e.bottom)&&(Ta(e.bottom)?t.style.bottom=e.bottom+"px":t.style.bottom=e.bottom),e.backgroundColor&&(t.style.backgroundColor=e.backgroundColor),t.style.overflow="hidden",t.style.zIndex="9999999",e.image&&e.image.src)t.style.width=e.image.width+"px",t.style.height=e.image.height+"px";else if(e.text&&e.text.content)t.style.fontSize=e.text.fontSize+"px",t.style.color=e.text.color,e.text.width&&(t.style.width=e.text.width+"px"),e.text.height&&(t.style.height=e.text.height+"px");else if(e.rect&&e.rect.color&&e.rect.width){if(t.style.width=e.rect.width+"px",t.style.height=e.rect.height+"px",t.style.borderWidth=e.rect.lineWidth+"px",t.style.borderStyle="solid",t.style.borderColor=e.rect.color,e.rect.fill){const i=document.createElement("div");i.style.position="absolute",i.style.width="100%",i.style.height="100%",i.style.backgroundColor=e.rect.fill,e.rect.fillOpacity&&(i.style.opacity=e.rect.fillOpacity),t.appendChild(i)}}else if(e.html)t.style.width="100%",t.style.height="100%",t.innerHTML=e.html;else if(e.line&&e.line.x1&&e.line.y1&&e.line.x2&&e.line.y2)this.settingLine(t,e.line);else if(e.polygon&&e.polygon.list&&e.polygon.list.length>=3){t.style.width="100%",t.style.height="100%";let i=e.polygon.list;const s=e.polygon.color,r=e.polygon.lineWidth;if(i=i.sort(((e,t)=>(e.index||0)-(t.index||0))),e.polygon.fill){const s=document.createElement("div");s.style.position="absolute",s.style.width="100%",s.style.height="100%";const r="polygon("+i.map((e=>`${e.x}px ${e.y}px`)).join(", ")+")";s.style.clipPath=r,s.style.backgroundColor=e.polygon.fill,e.polygon.fillOpacity&&(s.style.opacity=e.polygon.fillOpacity),t.appendChild(s)}i.forEach(((e,a)=>{const o=document.createElement("div");if(a===i.length-1){const a=i[0],n={x1:e.x,y1:e.y,x2:a.x,y2:a.y,color:s,lineWidth:r};return this.settingLine(o,n),void t.appendChild(o)}const n=i[a+1],l={x1:e.x,y1:e.y,x2:n.x,y2:n.y,color:s,lineWidth:r};this.settingLine(o,l),t.appendChild(o)}))}this.isDynamic&&(this.shadowRootDynamicDom=t),this.shadowRootInnerDom.appendChild(t)}}))}settingLine(e,t){const i=t.x1,s=t.y1,r=t.x2,a=t.y2;var o=Math.sqrt((i-r)**2+(s-a)**2),n=180*Math.atan2(a-s,r-i)/Math.PI;e.style.backgroundColor=t.color,e.style.width=o+"px",e.style.height=t.lineWidth+"px",e.style.position="absolute",e.style.top=s+"px",e.style.left=i+"px",e.style.transform="rotate("+n+"deg)",e.style.transformOrigin="0 0"}remove(){this._removeDom()}_removeDom(){this.shadowRootInnerDom&&(this.shadowRootInnerDom.innerHTML="")}}class Bo extends So{constructor(){super(),this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1,this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.prevOcclusionDetectTime=null,this.contentWatermark=null,this.aiContentWatermark=null,this.tempContentList=[],this.tempAiContentList=[],this.streamFps=0}destroy(){this.resetInit(),this.contentWatermark&&(this.contentWatermark.destroy(),this.contentWatermark=null),this.tempContentList=[],this.aiContentWatermark&&(this.aiContentWatermark.destroy(),this.aiContentWatermark=null),this.tempAiContentList=[],this.prevAiFaceDetectTime=null,this.prevAiObjectDetectTime=null,this.streamFps=0,this.off()}resetInit(){this.videoInfo={width:null,height:null,encType:null,encTypeCode:null},this.init=!1}getHasInit(){return this.init}updateVideoInfo(e){Ba(e.encTypeCode)&&(this.videoInfo.encType=bt[e.encTypeCode],this.videoInfo.encTypeCode=e.encTypeCode),Ba(e.encType)&&(this.videoInfo.encType=e.encType),Ba(e.width)&&(this.videoInfo.width=e.width),Ba(e.height)&&(this.videoInfo.height=e.height),Ba(this.videoInfo.encType)&&Ba(this.videoInfo.height)&&Ba(this.videoInfo.width)&&!this.init&&(this.player.emit(nt.videoInfo,this.videoInfo),this.init=!0)}getVideoInfo(){return this.videoInfo}clearView(){this.tempContentList=[],this.tempAiContentList=[]}resize(){if(this.player.debug.log("CommonVideo","resize()"),"default"===this.player._opt.aspectRatio||ua()?this._resize():this._resizeRatio(),this.contentWatermark&&this.contentWatermark.resize(),this.aiContentWatermark&&this.aiContentWatermark.resize(),this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize(),this.player.zoom&&this.player.zooming){const e=this._getStyleScale();this.player.zoom.updatePrevVideoElementStyleScale(e),this.player.zoom.updateVideoElementScale()}}_resizeRatio(){this.player.debug.log("CommonVideo","_resizeRatio()");const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const s=this.player._opt;let r=0;s.hasControl&&!s.controlAutoHide&&(r=s.playType===_?Yt:Kt,i-=r);const a=this.videoInfo,o=a.width/a.height,n=e[0]/e[1];if(this.getType()===$&&(this.$videoElement.style.left="0",this.$videoElement.style.top="0",this.$videoElement.style.transform="none"),this.getType()===W&&this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit="fill"),o>n){const e=n*a.height/a.width;this.$videoElement.style.width=100*e+"%",this.$videoElement.style.height=`calc(100% - ${r}px)`,this.$videoElement.style.padding=`0 ${(t-t*e)/2}px`}else{const e=a.width/n/a.height;this.$videoElement.style.width="100%",this.$videoElement.style.height=`calc(${100*e}% - ${r}px)`,this.$videoElement.style.padding=(i-i*e)/2+"px 0"}}play(){}pause(){}setRate(e){}getType(){return""}getCanvasType(){return""}getCurrentTime(){return 0}getStreamFps(){return this.streamFps}isPlaying(){return!0}getPlaybackQuality(){return null}setStreamFps(e){this.player.debug.log("CommonVideo","setStreamFps",e),this.streamFps=e}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempContentList=e}addAiContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.tempAiContentList=e}doAddContentToWatermark(){if(this.tempContentList.length>0){this.contentWatermark||(this.contentWatermark=new Po(this.player),this.contentWatermark.resize());const e=[];this.tempContentList.forEach((t=>{let i={left:t.x||0,top:t.y||0};"text"===t.type?i.text={content:t.text,fontSize:t.fontSize||"14",color:t.color||"#000"}:"rect"===t.type?i.rect={width:t.width,height:t.height,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill||"",fillOpacity:t.fillOpacity||.2}:"polygon"===t.type?i.polygon={list:t.list,color:t.color||"green",lineWidth:t.lineWidth||2,fill:t.fill,fillOpacity:t.fillOpacity||.2}:"line"===t.type&&(i.line={color:t.color||"green",lineWidth:t.lineWidth||2,x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2}),e.push(i)})),this.contentWatermark.update(e)}else this.contentWatermark&&this.contentWatermark.remove()}doAddAiContentToWatermark(){if(this.tempAiContentList.length>0){this.aiContentWatermark||(this.aiContentWatermark=new Po(this.player),this.aiContentWatermark.resize());const e=this.tempAiContentList.map((e=>{let t={left:e.x,top:e.y};return"text"===e.type?t.text={content:e.text,fontSize:e.fontSize,color:e.color}:"rect"===e.type&&(t.rect={width:e.width,height:e.height,color:e.color,lineWidth:e.lineWidth}),t}));this.aiContentWatermark.update(e)}else this.aiContentWatermark&&this.aiContentWatermark.remove()}_getStyleScale(){let e=this.$videoElement.style.transform.match(/scale\([0-9., ]*\)/g),t="";if(e&&e[0]){t=e[0].replace("scale(","").replace(")","").split(",")}return t}getReadyStateInited(){return!0}}var Io="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0;function Mo(e,t,i){var s=new XMLHttpRequest;s.open("GET",e),s.responseType="blob",s.onload=function(){No(s.response,t,i)},s.onerror=function(){console.error("could not download file")},s.send()}function Uo(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return t.status>=200&&t.status<=299}function Fo(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(i){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var Oo=Io.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),No="object"!=typeof window||window!==Io?function(){}:"download"in HTMLAnchorElement.prototype&&!Oo?function(e,t,i){var s=Io.URL||Io.webkitURL,r=document.createElementNS("http://www.w3.org/1999/xhtml","a");t=t||e.name||"download",r.download=t,r.rel="noopener","string"==typeof e?(r.href=e,r.origin!==location.origin?Uo(r.href)?Mo(e,t,i):Fo(r,r.target="_blank"):Fo(r)):(r.href=s.createObjectURL(e),setTimeout((function(){s.revokeObjectURL(r.href)}),4e4),setTimeout((function(){Fo(r)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"==typeof e)if(Uo(e))Mo(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout((function(){Fo(s)}))}else navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e}(e,i),t)}:function(e,t,i,s){if((s=s||open("","_blank"))&&(s.document.title=s.document.body.innerText="downloading..."),"string"==typeof e)return Mo(e,t,i);var r="application/octet-stream"===e.type,a=/constructor/i.test(Io.HTMLElement)||Io.safari,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||r&&a||Oo)&&"undefined"!=typeof FileReader){var n=new FileReader;n.onloadend=function(){var e=n.result;e=o?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),s?s.location.href=e:location=e,s=null},n.readAsDataURL(e)}else{var l=Io.URL||Io.webkitURL,d=l.createObjectURL(e);s?s.location=d:location.href=d,s=null,setTimeout((function(){l.revokeObjectURL(d)}),4e4)}};class jo{constructor(e,t){this.canvas=e,this.gl=t;const i=t.createShader(t.VERTEX_SHADER);if(t.shaderSource(i,"\n attribute vec2 xy;\n varying highp vec2 uv;\n void main(void) {\n gl_Position = vec4(xy, 0.0, 1.0);\n // Map vertex coordinates (-1 to +1) to UV coordinates (0 to 1).\n // UV coordinates are Y-flipped relative to vertex coordinates.\n uv = vec2((1.0 + xy.x) / 2.0, (1.0 - xy.y) / 2.0);\n }\n "),t.compileShader(i),!t.getShaderParameter(i,t.COMPILE_STATUS))throw t.getShaderInfoLog(i);const s=t.createShader(t.FRAGMENT_SHADER);if(t.shaderSource(s,"\n varying highp vec2 uv;\n uniform sampler2D texture;\n void main(void) {\n gl_FragColor = texture2D(texture, uv);\n }\n "),t.compileShader(s),!t.getShaderParameter(s,t.COMPILE_STATUS))throw t.getShaderInfoLog(s);const r=t.createProgram();if(t.attachShader(r,i),t.attachShader(r,s),t.linkProgram(r),!t.getProgramParameter(r,t.LINK_STATUS))throw t.getProgramInfoLog(r);t.useProgram(r);const a=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,a),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,-1,1,1,1,1,-1]),t.STATIC_DRAW);const o=t.getAttribLocation(r,"xy");t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0),t.enableVertexAttribArray(o);const n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),this.program=r,this.buffer=a,this.vertexShader=i,this.fragmentShader=s,this.texture=n}destroy(){this.gl.deleteProgram(this.program),this.gl.deleteBuffer(this.buffer),this.gl.deleteTexture(this.texture),this.gl.deleteShader(this.vertexShader),this.gl.deleteShader(this.fragmentShader),this.program=null,this.buffer=null,this.vertexShader=null,this.fragmentShader=null,this.texture=null}render(e){this.canvas.width=e.displayWidth,this.canvas.height=e.displayHeight;const t=this.gl;t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),t.viewport(0,0,t.drawingBufferWidth,t.drawingBufferHeight),t.clearColor(1,0,0,1),t.clear(t.COLOR_BUFFER_BIT),t.drawArrays(t.TRIANGLE_FAN,0,4)}}class zo extends Bo{constructor(e){super(),this.player=e;const t=document.createElement("canvas");t.style.position="absolute",t.style.top=0,t.style.left=0,this.$videoElement=t,e.$container.appendChild(this.$videoElement),this.context2D=null,this.contextGl=null,this.webglRender=null,this.webglRectRender=null,this.webGPURender=null,this.isWebglContextLost=!1,this.isWcsWebgl2=!1,this.bitmaprenderer=null,this.renderType=null,this.controlHeight=0,this.proxyDestroyList=[],this._initCanvasRender()}destroy(){super.destroy(),this.proxyDestroyList.length>0&&(this.proxyDestroyList.forEach((e=>{e&&e()})),this.proxyDestroyList=[]),this.contextGl&&(this.contextGl=null),this.context2D&&(this.context2D=null),this.webglRender&&(this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.webglRectRender.destroy(),this.webglRectRender=null),this.webGPURender&&(this.webGPURender.destroy(),this.webGPURender=null),this.bitmaprenderer&&(this.bitmaprenderer=null),this.renderType=null,this.isWebglContextLost=!1,this.videoInfo={width:"",height:"",encType:""},this.player.$container.removeChild(this.$videoElement),this.init=!1,this.off()}_initContext2D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.context2D=this.$videoElement.getContext("2d",e)}_initContextGl(){if(this.player.events,this.contextGl=ia(this.$videoElement),!this.contextGl)throw this.player.debug.error("CommonCanvasLoader","_initContextGl() createContextGL error"),new Error("CommonCanvasLoader and _initContextGl createContextGL error");this._bindContextGlEvents(),this.webglRender=new Do(this.contextGl,this.player._opt.openWebglAlignment)}_initContextGl2(){if(this.contextGl=sa(this.$videoElement),this.contextGl){this._bindContextGlEvents(2);try{this.webglRender=new jo(this.$videoElement,this.contextGl)}catch(e){this.player.debug.error("CommonCanvasLoader",`create webgl2Render error is ${e} and next use context2d.draw render`),this.contextGl=null,this.webglRender=null,this._initContext2D()}}else this.player.debug.error("CommonCanvasLoader","_initContextGl2() createContextGL2 error")}_bindContextGlEvents(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;const{proxy:t}=this.player.events,i=t(this.$videoElement,"webglcontextlost",(t=>{t.preventDefault(),this.player.debug.error("canvasVideo","webglcontextlost error",t),this.isWebglContextLost=!0,this.webglRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRender"),this.webglRender.destroy(),this.webglRender=null),this.webglRectRender&&(this.player.debug.log("CommonCanvasLoader","webglcontextlost error and destroy webglRectRender"),this.webglRectRender.destroy(),this.webglRectRender=null),this.contextGl=null,setTimeout((()=>{if(this.player.debug.log("CommonCanvasLoader",`createContextGL() version ${e}`),1===e?this.contextGl=ia(this.$videoElement):2===e&&(this.contextGl=sa(this.$videoElement)),this.player.debug.log("CommonCanvasLoader","createContextGL success"),this.contextGl&&this.contextGl.getContextAttributes){const t=this.contextGl.getContextAttributes();t&&t.stencil?(1===e?this.webglRender=new Do(this.contextGl,this.player._opt.openWebglAlignment):2===e&&(this.webglRender=new jo(this.$videoElement,this.contextGl)),this.isWebglContextLost=!1,this.player.debug.log("CommonCanvasLoader","webglcontextlost error reset and getContextAttributes().stencil is true")):(this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(ct.webglContextLostError))}else this.player.debug.error("CommonCanvasLoader","webglcontextlost error, getContextAttributes().stencil is false"),this.player.emitError(ct.webglContextLostError)}),500)})),s=t(this.$videoElement,"webglcontextrestored",(e=>{e.preventDefault(),this.player.debug.log("CommonCanvasLoader","webglcontextrestored ",e)}));this.proxyDestroyList.push(i,s)}_initContextGPU(){var t;(t=this.$videoElement,new Promise(((e,i)=>{navigator.gpu?navigator.gpu.requestAdapter().then((s=>{s?s.requestDevice().then((r=>{if(r){const a=t.getContext("webgpu");if(a){const t=navigator.gpu.getPreferredCanvasFormat();a.configure({device:r,format:t,alphaMode:"opaque"}),e({adapter:s,device:r,context:a,format:t})}else i('WebGPU "context" create fail')}else i('WebGPU "device" request fail')})).catch((e=>{i('WebGPU "adapter.requestDevice()" fail')})):i('WebGPU "adapter" request fail is empty')})).catch((e=>{i('WebGPU "navigator.gpu.requestAdapter()" fail')})):i("WebGPU not support!!")}))).then((t=>{t?(this.webGPURender=new Lo(t),this.player.debug.log("CommonCanvasLoader","webGPURender init success")):(this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=ti,this._initContextGl())})).catch((e=>{this.player.debug.warn("CommonCanvasLoader",`createWebGPUContext error is ${e} and next use webgl render`),this.renderType=ti,this._initContextGl()}))}initCanvasViewSize(){this.$videoElement.width=this.videoInfo.width,this.$videoElement.height=this.videoInfo.height,this.resize()}screenshot(e,t,i,s){e=e||aa(),s=s||gt.download;let r=.92;!Ji[t]&>[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const a=Ji[t]||Ji.png,o=this.$videoElement.toDataURL(a,r);if(s===gt.base64)return o;{const t=ra(o);if(s===gt.blob)return t;if(s===gt.download){const i=a.split("/")[1];No(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{$a(e)&&(e={filename:e}),(e=e||{}).width=this.videoInfo.width,e.height=this.videoInfo.height,e.filename=e.filename||aa(),e.format=e.format?Ji[e.format]:Ji.png,e.quality=Number(e.quality)||.92,e.type=e.type||gt.download;const s=this.$videoElement.toDataURL(e.format,e.quality);Ua(s,e).then((i=>{if(e.type===gt.base64)t(s);else{const s=ra(i);if(e.type===gt.blob)t(s);else if(e.type===gt.download){t();const i=e.format.split("/")[1];No(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}render(){}clearView(){super.clearView()}play(){}pause(){}_resize(){this.player.debug.log("canvasVideo","_resize()");const e=this.player._opt;let t=this.player.width,i=this.player.height;if(e.hasControl&&!e.controlAutoHide){const s=this.controlHeight;ua()&&this.player.fullscreen&&e.useWebFullScreen?t-=s:i-=s}let s=this.$videoElement.width,r=this.$videoElement.height;const a=e.rotate;let o=(t-s)/2,n=(i-r)/2;270!==a&&90!==a||(s=this.$videoElement.height,r=this.$videoElement.width);const l=t/s,d=i/r;let h=l>d?d:l;po(e.isResize)&&l!==d&&(h=l+","+d),e.isFullResize&&(h=l>d?l:d);let c="scale("+h+")";"none"===e.mirrorRotate&&a&&(c+=" rotate("+a+"deg)"),"level"===e.mirrorRotate?c+=" rotateY(180deg)":"vertical"===e.mirrorRotate&&(c+=" rotateX(180deg)"),this.$videoElement.style.height=this.videoInfo.height+"px",this.$videoElement.style.width=this.videoInfo.width+"px",this.$videoElement.style.padding="0",this.$videoElement.style.transform=c,this.$videoElement.style.left=o+"px",this.$videoElement.style.top=n+"px"}initFps(){}setStreamFps(e){}getStreamFps(){return 25}getType(){return $}getCanvasType(){let e=this.renderType===si?si:ti;return this.isWcsWebgl2&&(e=ii),e}}class Go extends zo{constructor(e){super(e),this.yuvList=[],this.controlHeight=Kt,this.tempTextCanvas=null,this.tempTextCanvasCtx=null,this.player.debug.log("CanvasVideo","init")}async destroy(){super.destroy(),this.yuvList=[],this.tempTextCanvas&&(this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvas.width=0,this.tempTextCanvas.height=0,this.tempTextCanvas=null),this.player.debug.log("CanvasVideoLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS&&!this._supportOffscreen()?(this.renderType=ei,yo()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useMSE&&this.player._opt.mseUseCanvasRender?(this.renderType=ai,this._initContext2D()):this.player.isOldHls()&&this.player._opt.useCanvasRender?(this.renderType=oi,this._initContext2D()):this.player.isWebrtcH264()&&this.player._opt.webrtcUseCanvasRender?(this.renderType=ni,this._initContext2D()):this._supportOffscreen()?(this.renderType=ri,this._bindOffscreen()):this.player._opt.useWebGPU?(this.renderType=si,this._initContextGPU()):(this.renderType=ti,this._initContextGl())}_supportOffscreen(){return"function"==typeof this.$videoElement.transferControlToOffscreen&&this.player._opt.useOffscreen}_bindOffscreen(){this.bitmaprenderer=this.$videoElement.getContext("bitmaprenderer")}render(e){this.yuvList.push(e),this.startRender()}startRender(){for(;!(this.yuvList.length<=0);){const e=this.yuvList.shift();this.doRender(e)}}doRender(e){if(this.renderType!==ai){const t={ts:e.ts||0,fps:!0};this.player.updateStats(t)}switch(this.renderType){case ri:this.bitmaprenderer.transferFromImageBitmap(e.buffer);break;case ti:case si:if(this.isWebglContextLost)return void this.player.debug.warn("CanvasVideoLoader","doRender() and webgl context is lost");let t=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=aa());const i=aa();i-this.prevAiFaceDetectTime>=this.player._opt.aiFaceDetectInterval&&(t=this.player.ai.faceDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=i)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=aa());const i=aa();i-this.prevAiObjectDetectTime>=this.player._opt.aiObjectDetectInterval&&(t=this.player.ai.objectDetector.detect({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=i)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=aa());const t=aa();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});this.prevAiOcclusionDetectTime=t,i&&this.player.emit(nt.aiOcclusionDetectResult,{ts:e.ts||0})}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.$videoElement.width,height:this.$videoElement.height,data:e.output});if(t&&t.data&&(this.player.emit(nt.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("CanvasVideoLoader",`doRender() and ai image detect result type is ${t.type} and drop`)}if(this.renderType===si)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgpu render and error: ${e.toString()}`)}else if(this.renderType===ti)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,t)}catch(e){this.player.debug.error("CanvasVideoLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}break;case ei:if(this.webglRender)this.webglRender.render(e.videoFrame),to(e.videoFrame);else if(this.context2D)if(Ya(e.videoFrame.createImageBitmap))try{e.videoFrame.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),to(e.videoFrame)}))}catch(e){}else this.context2D.drawImage(e.videoFrame,0,0,this.$videoElement.width,this.$videoElement.height),to(e.videoFrame);else this.player.debug.warn("CanvasVideoLoader","doRender() and webcodecs context is lost");break;case ai:case oi:case ni:this.context2D.drawImage(e.$video,0,0,this.$videoElement.width,this.$videoElement.height)}let t=e.ts||0;this.renderType===ai&&(t=parseInt(1e3*e.$video.currentTime,10)+(this.player.mseDecoder.firstRenderTime||0)),this.player.updateCurrentPts(t),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}clearView(){switch(super.clearView(),this.renderType){case ri:(function(e,t){const i=document.createElement("canvas");i.width=e,i.height=t;const s=window.createImageBitmap(i,0,0,e,t);return i.width=0,i.height=0,s})(this.$videoElement.width,this.$videoElement.height).then((e=>{this.bitmaprenderer.transferFromImageBitmap(e)}));break;case ti:this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT);break;case si:this.webGPURender.clear();break;case ei:this.contextGl?this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT):this.context2D&&this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height);break;case ai:case oi:case ni:this.context2D.clearRect(0,0,this.$videoElement.width,this.$videoElement.height)}}_initTempTextCanvas(){this.tempTextCanvas=document.createElement("canvas"),this.tempTextCanvasCtx=this.tempTextCanvas.getContext("2d"),this.tempTextCanvas.width=600,this.tempTextCanvas.height=20}doAddContentToCanvas(){this.tempContentList.length>0&&this.context2D&&function(e){let{ctx:t,list:i}=e;t.save(),(i||[]).forEach((e=>{"text"===e.type?(t.font=`${e.fontSize||12}px Arial`,t.fillStyle=e.color||"green",t.fillText(e.text,e.x,e.y)):"rect"===e.type&&(t.strokeStyle=e.color||"green",t.lineWidth=e.lineWidth||2,t.strokeRect(e.x,e.y,e.width,e.height))})),t.restore()}({ctx:this.context2D,list:this.tempContentList})}doAddContentToWebGlCanvas(){this.tempContentList.length>0&&this.contextGl&&this.webglRectRender&&this.tempContentList.forEach((e=>{const t=e.x,i=e.y;if("rect"===e.type){const r=e.width,a=e.height,o=(s=e.color||"#008000",[parseInt(s.substring(1,3),16)/255,parseInt(s.substring(3,5),16)/255,parseInt(s.substring(5,7),16)/255,1]),n=e.lineWidth||4;if(!r||!a)return;this.webglRectRender.drawBox({x:t,y:i,width:r,height:a,lineColor:o,lineWidth:n,canvasWidth:this.$videoElement.width,canvasHeight:this.$videoElement.height})}else if("text"===e.type){const s=e.text||"";if(!s)return;const r=e.fontSize||20,a=e.color||"#008000";this.tempTextCanvas||this._initTempTextCanvas(),this.tempTextCanvasCtx.clearRect(0,0,this.tempTextCanvas.width,this.tempTextCanvas.height),this.tempTextCanvasCtx.font=`${r}px Arial`,this.tempTextCanvasCtx.fillStyle=a,this.tempTextCanvasCtx.textBaseline="top",this.tempTextCanvasCtx.fillText(s,0,0),this.webglRender.drawDom(this.$videoElement.width,this.$videoElement.height,t,i,this.tempTextCanvas)}var s}))}}class Ho extends Bo{constructor(e){super(),this.player=e,this.TAG_NAME="Video";const t=document.createElement("video"),i=document.createElement("canvas");t.muted=!0,t.style.position="absolute",t.style.top=0,t.style.left=0,this._delayPlay=!1,e.$container.appendChild(t),this.$videoElement=t,this.$canvasElement=i,this.canvasContext=i.getContext("2d"),this.mediaStream=null,this.vwriter=null,e.canVideoTrackWritter()&&xa()&&Ra()&&(this.trackGenerator=new MediaStreamTrackGenerator({kind:"video"}),this.mediaStream=new MediaStream([this.trackGenerator]),t.srcObject=this.mediaStream,this.vwriter=this.trackGenerator.writable.getWriter()),this.fixChromeVideoFlashBug(),this.fixMobileAutoFullscreen(),this.resize(),this.eventListenList=[],this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.progressProxyDestroy=null,this.checkVideoCanplayTimeout=null;const s=bo();this.supportVideoFrameCallbackHandle=null;const{proxy:r}=this.player.events,a=r(this.$videoElement,"canplay",(()=>{this.player.debug.log("Video","canplay"),this.player.isDestroyedOrClosed()||(this.canplayReceived=!0,this._delayPlay?(this.clearCheckVideoCanplayTimeout(),this._play(),bo()?this.supportVideoFrameCallbackHandle||(this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.debug.warn("Video","not support requestVideoFrameCallback and use timeupdate event to update stats")):this.$videoElement.paused&&this.player.isMSEPlaybackRateChangePause&&(this.player.debug.log("Video",`canplay and video is paused and isMSEPlaybackRateChangePause is ${this.player.isMSEPlaybackRateChangePause} so next try to play`),this.player.isMSEPlaybackRateChangePause=!1,this.$videoElement.play()))})),o=r(this.$videoElement,"waiting",(()=>{this.player.debug.log("Video","waiting")})),n=r(this.$videoElement,"loadedmetadata",(()=>{this.player.debug.log("Video","loadedmetadata")})),l=r(this.$videoElement,"timeupdate",(t=>{if(!this.player.isDestroyedOrClosed()){if(po(s)){const t=parseInt(1e3*this.getCurrentTime(),10);(e.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc())&&(this.player.emit(nt.timeUpdate,t),e.handleRender(),e.updateStats({fps:!0,ts:t,dts:t}))}this.player.isMseDecoderUseWorker()&&(this.player.decoderWorker.updateVideoTimestamp(this.getCurrentTime()),this._handleUpdatePlaybackRate())}})),d=r(this.$videoElement,"error",(()=>{let e={};if(this.player.isUseMSE()&&(e=this.player.getMseMineType()),this.player.debug.error("Video","Error Code "+this.$videoElement.error.code+" "+ur[this.$videoElement.error.code]+"; Details: "+this.$videoElement.error.message+"; Video Info: "+JSON.stringify(this.videoInfo)+"; Mse Mine Type: "+e.video+"; "),this.player.isUseMSE()){this.$videoElement.error.code;const e=this.$videoElement.error.message;-1!==e.indexOf(pr)&&(this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc=!0),-1!==e.indexOf(fr)&&(this.player.isMSEAudioDecoderError=!0)}this.player.isHlsCanVideoPlay()})),h=r(this.$videoElement,"stalled",(()=>{this._detectAndFixStuckPlayback(!0)}));if(this.progressProxyDestroy=r(this.$videoElement,"progress",(()=>{this._detectAndFixStuckPlayback()})),this.eventListenList.push(a,o,l,d,n,h),this.player.isUseMSE()){const e=r(this.$videoElement,ss,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"ratechange and video is paused and sent isMSEPlaybackRateChangePause true"),this.player.isMSEPlaybackRateChangePause=!0)}));this.eventListenList.push(e),this.player.on(nt.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getBufferMaxDelayTime()&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300)}))}this.player.debug.log("Video","init")}async destroy(){if(super.destroy(),this.clearCheckVideoCanplayTimeout(),this._cancelVideoFrameCallback(),this._removeProgressProxyDestroy(),this.eventListenList.length&&(this.eventListenList.forEach((e=>{e()})),this.eventListenList=[]),this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes=0,this.isRetryPlaying=!1,this.isRetryPlayingTimes=0,this.canplayReceived=!1,this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="none",e.style.transform="none"}if(this.$canvasElement.height=0,this.$canvasElement.width=0,this.$canvasElement=null,this.canvasContext=null,this.$videoElement){this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src"));try{this.$videoElement.load()}catch(e){}this.player.$container.removeChild(this.$videoElement),this.$videoElement=null}this.trackGenerator&&(this.trackGenerator.stop(),this.trackGenerator=null),this.vwriter&&(await this.vwriter.close(),this.vwriter=null),this._delayPlay=!1,this.mediaStream&&(this.mediaStream.getTracks().forEach((e=>e.stop())),this.mediaStream=null),this.off(),this.player.debug.log("Video","destroy")}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debug.log("Video","videoFrameCallback() and isDestroyedOrClosed and return");this.player.handleRender();const i=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)||0;if(this.player.isUseHls265UseMse())this.player.updateStats({fps:!0,ts:i});else if(this.player.isMseDecoderUseWorker()){this.player._times.videoStart||(this.player._times.videoStart=aa(),this.player.handlePlayToRenderTimes());const e=i+(this.player._mseWorkerData.firstRenderTime||0);if(this.player.updateStats({fps:!0,dfps:!0,ts:e,mseTs:i}),this.player.emit(nt.timeUpdate,e),po(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.updateVideoInfo(e),this.initCanvasViewSize()}}if(this.player.isWebrtcH264()||this.player.isOldHls()||this.player.isAliyunRtc()){if(this.player.emit(nt.timeUpdate,i),po(this.getHasInit())&&t.width&&t.height){const e={width:t.width,height:t.height};this.videoInfo.encTypeCode||this.player.isOldHls()||(e.encTypeCode=vt),this.updateVideoInfo(e)}this.player.updateStats({fps:!0,ts:i,dts:i}),this.player.updateCurrentPts(i),this.doAddContentToWatermark()}else if(uo(this.player._opt.useMSE)&&po(this.player._opt.mseUseCanvasRender)){if(this.player.mseDecoder){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player.mseDecoder.firstRenderTime||0);this.player.updateCurrentPts(e)}else if(this.player._opt.mseDecoderUseWorker){let e=parseInt(1e3*Math.max(t.mediaTime,this.getCurrentTime()),10)+(this.player._mseWorkerData.firstRenderTime||0);this.player.updateCurrentPts(e)}this.doAddContentToWatermark()}this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}fixChromeVideoFlashBug(){if(this.player._opt.videoRenderSupportScale&&this._isNeedAddBackDropFilter()){const e=this.player.$container;e.style.backdropFilter="blur(0px)",e.style.transform="translateZ(0)"}}fixMobileAutoFullscreen(){const e=ya(),t=fa();(e||t)&&(this.player.debug.log("Video",`fixMobileAutoFullscreen and isIOS ${e} and isAndroid ${t}`),this.$videoElement.setAttribute("webkit-playsinline","true"),this.$videoElement.setAttribute("playsinline","true"),this.$videoElement.setAttribute("x5-video-player-type","h5-page"))}_detectAndFixStuckPlayback(e){const t=this.$videoElement,i=t.buffered,s=t.readyState;this.player.debug.log(this.TAG_NAME,`_detectAndFixStuckPlayback() and isStalled is ${e} ,canplayReceived is ${this.canplayReceived} ,videoReadyState is ${s}`),e||po(this.canplayReceived)||s<2?i.length>0&&t.currentTime{if(this.clearCheckVideoCanplayTimeout(),!this.player.isDestroyedOrClosed()&&po(this.isPlaying())){const e=this._getBufferStore();this.player.debug.warn("Video",`checkVideoCanplayTimeout and video is not playing and buffer store is ${e} and retry play`),this.$videoElement.currentTime=e,this._replay()}}),1e3)));this._play()}}_play(){this.$videoElement&&this.$videoElement.play().then((()=>{this._delayPlay=!1,this.player.debug.log("Video","_play success"),this.isPlaying()?(this.player.emit(nt.removeLoadingBgImage),this.isRetryPlayingTimes=0,this.isRetryPlaying=!1):setTimeout((()=>{this._replay()}),100)})).catch((e=>{this.player.isDestroyedOrClosed()?this.player.debug.log("Video","_play error and player is isDestroyedOrClosed and return"):(this.player.debug.error("Video","_play error",e),this.isRetryPlaying=!1,setTimeout((()=>{this._replay()}),100))}))}_replay(){if(!this.isPlaying()&&po(this.player.isDestroyedOrClosed())&&po(this.isRetryPlaying)){if(this.isRetryPlaying=!0,this.isRetryPlayingTimes>=3)return void(this.player.isWebrtcH264()?(this.player.debug.error("Video",`_replay(webrtc H264) then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error`),this.player.emitError(ct.videoElementPlayingFailedForWebrtc)):(this.player.debug.error("Video",`_replay then but not playing and retry play times is ${this.isRetryPlayingTimes} and emit error to use canvas render`),this.player.emitError(ct.videoElementPlayingFailed)));this.player.debug.warn("Video",`_play then but not playing and retry play and isRetryPlayingTimes is ${this.isRetryPlayingTimes}`),this._play(),this.isRetryPlayingTimes++}else this.player.debug.log("Video",`_replay() and isPlaying is ${this.isPlaying()} and isRetryPlaying is ${this.isRetryPlaying} and isDestroyedOrClosed is ${this.player.isDestroyedOrClosed()} and return;`)}pause(e){this.player.debug.log(this.TAG_NAME,"pause and isNow is "+e),this.isPlaying()&&(e?(this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()):setTimeout((()=>{this.$videoElement&&this.$videoElement.pause(),this._cancelVideoFrameCallback()}),100))}clearView(){super.clearView(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")))}screenshot(e,t,i,s){if(!this._canScreenshot())return this.player.debug.warn("Video",`screenshot failed, video is not ready and stats is ${this._getVideoReadyState()}`),null;e=e||aa(),s=s||gt.download;let r=.92;!Ji[t]&>[t]&&(s=t,t="png",i=void 0),"string"==typeof i&&(s=i,i=void 0),void 0!==i&&(r=Number(i));const a=this.$videoElement;let o=this.$canvasElement;o.width=a.videoWidth,o.height=a.videoHeight,this.canvasContext.drawImage(a,0,0,o.width,o.height);const n=Ji[t]||Ji.png,l=o.toDataURL(n,r);if(this.canvasContext.clearRect(0,0,o.width,o.height),o.width=0,o.height=0,s===gt.base64)return l;{const t=ra(l);if(s===gt.blob)return t;if(s===gt.download){const i=n.split("/")[1];No(t,e+"."+i)}}}screenshotWatermark(e){return new Promise(((t,i)=>{if($a(e)&&(e={filename:e}),!this._canScreenshot())return this.player.debug.warn("Video","screenshot failed, video is not ready"),i("screenshot failed, video is not ready");const s=this.$videoElement;(e=e||{}).width=s.videoWidth,e.height=s.videoHeight,e.filename=e.filename||aa(),e.format=e.format?Ji[e.format]:Ji.png,e.quality=Number(e.quality)||.92,e.type=e.type||gt.download;let r=this.$canvasElement;r.width=s.videoWidth,r.height=s.videoHeight,this.canvasContext.drawImage(s,0,0,r.width,r.height);const a=r.toDataURL(e.format,e.quality);this.canvasContext.clearRect(0,0,r.width,r.height),r.width=0,r.height=0,Ua(a,e).then((i=>{if(e.type===gt.base64)t(a);else{const s=ra(i);if(e.type===gt.blob)t(s);else if(e.type===gt.download){t();const i=e.format.split("/")[1];No(s,e.filename+"."+i)}}})).catch((e=>{i(e)}))}))}initCanvasViewSize(){this.resize()}clear(){const e=this.$videoElement,t=e.buffered,i=t.length?t.end(t.length-1):0;e.currentTime=i}render(e){if(this.vwriter){if(this.$videoElement.srcObject||(this.$videoElement.srcObject=this.mediaStream),this.isPaused()){const e=this._getVideoReadyState();if(this.player.debug.warn("Video","render() error, video is paused and readyState is "+e),4===e&&po(this.isRenderRetryPlaying)){if(this.isRenderRetryPlaying=!0,this.isRenderRetryPlayingTimes>3)return this.player.debug.error("Video","render() error, video is paused and readyState is "+e+", retry times is "+this.isRenderRetryPlayingTimes+", emit error and use canvas render"),void this.player.emitError(ct.videoElementPlayingFailed);this.$videoElement.play().then((()=>{this.isRenderRetryPlayingTimes=0,this.isRenderRetryPlaying=!1,this.player.debug.log("Video","render() video is paused and replay success")})).catch((e=>{this.isRenderRetryPlaying=!1,this.isRenderRetryPlayingTimes++,this.player.debug.warn("Video","render() error, video is paused and replay error ",e)}))}}if(this.player.updateStats({fps:!0,ts:e.ts||0}),e.videoFrame)this.vwriter.write(e.videoFrame),to(e.videoFrame);else if(e.output){let s=e.output;if(this.player.faceDetectActive&&this.player.ai&&this.player.ai.faceDetector){null===this.prevAiFaceDetectTime&&(this.prevAiFaceDetectTime=aa());const t=aa();t-this.prevAiFaceDetectTime>this.player._opt.aiFaceDetectInterval&&(s=this.player.ai.faceDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiFaceDetectTime=t)}if(this.player.objectDetectActive&&this.player.ai&&this.player.ai.objectDetector){null===this.prevAiObjectDetectTime&&(this.prevAiObjectDetectTime=aa());const t=aa();t-this.prevAiObjectDetectTime>this.player._opt.aiObjectDetectInterval&&(s=this.player.ai.objectDetector.detect({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0}),this.prevAiObjectDetectTime=t)}if(this.player.occlusionDetectActive&&this.player.ai&&this.player.ai.occlusionDetector){null===this.prevAiOcclusionDetectTime&&(this.prevAiOcclusionDetectTime=aa());const t=aa();if(t-this.prevAiOcclusionDetectTime>=this.player._opt.aiOcclusionDetectInterval){const i=this.player.ai.occlusionDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});this.prevAiOcclusionDetectTime=t,i&&(this.player.debug.log("Video","render() and ai occlusion detect result is true"),this.player.emit(nt.aiOcclusionDetectResult,{ts:e.ts||0}))}}if(this.player.imageDetectActive&&this.player.ai&&this.player.ai.imageDetector){const t=this.player.ai.imageDetector.check({width:this.videoInfo.width,height:this.videoInfo.height,data:e.output,ts:e.ts||0});if(t&&t.data&&(this.player.emit(nt.aiOcclusionDetectResult,{type:t.type,ts:e.ts||0}),this.player._opt.aiImageDetectDrop))return void this.player.debug.log("Video",`render() and ai image detect result type is ${t.type} and drop`)}try{const r=(t=s,i={format:"I420",codedWidth:this.videoInfo.width,codedHeight:this.videoInfo.height,timestamp:e.ts},new VideoFrame(t,i));this.vwriter.write(r),to(r)}catch(e){this.player.debug.error("Video","render error",e),this.player.emitError(ct.wasmUseVideoRenderError,e)}}this.player.updateCurrentPts(e.ts||0),this.doAddContentToWatermark(),this.doAddAiContentToWatermark()}else this.player.debug.warn("Video","render and this.vwriter is null");var t,i}_resize(){this.player.debug.log("Video","_resize()");let e=this.player.width,t=this.player.height;const i=this.player._opt,s=i.rotate;if(i.hasControl&&!i.controlAutoHide){const s=i.playType===_?Yt:Kt;ua()&&this.player.fullscreen&&i.useWebFullScreen?e-=s:t-=s}this.$videoElement.width=e,this.$videoElement.height=t,this.$videoElement.style.width=e+"px",this.$videoElement.style.height=t+"px",270!==s&&90!==s||(this.$videoElement.width=t,this.$videoElement.height=e,this.$videoElement.style.width=t+"px",this.$videoElement.style.height=e+"px");let r=(e-this.$videoElement.width)/2,a=(t-this.$videoElement.height)/2,o="contain";po(i.isResize)&&(o="fill"),i.isFullResize&&(o="none");let n="";"none"===i.mirrorRotate&&s&&(n+=" rotate("+s+"deg)"),"level"===i.mirrorRotate?n+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(n+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$videoElement.style.objectFit=o),this.$videoElement.style.transform=n,this.$videoElement.style.padding="0",this.$videoElement.style.left=r+"px",this.$videoElement.style.top=a+"px"}getType(){return W}getCurrentTime(){return this.$videoElement.currentTime}isPlaying(){return this.$videoElement&&po(this.$videoElement.paused)&&po(this.$videoElement.ended)&&0!==this.$videoElement.playbackRate&&0!==this.$videoElement.readyState}_canScreenshot(){return this.$videoElement&&this.$videoElement.readyState>=1}getPlaybackQuality(){let e=null;if(this.$videoElement){if(Ya(this.$videoElement.getVideoPlaybackQuality)){const t=this.$videoElement.getVideoPlaybackQuality();e={droppedVideoFrames:t.droppedVideoFrames||t.corruptedVideoFrames,totalVideoFrames:t.totalVideoFrames,creationTime:t.creationTime}}else e={droppedVideoFrames:this.$videoElement.webkitDroppedFrameCount,totalVideoFrames:this.$videoElement.webkitDecodedFrameCount,creationTime:aa()};e&&(e.renderedVideoFrames=e.totalVideoFrames-e.droppedVideoFrames)}return e}setRate(e){this.$videoElement&&(this.$videoElement.playbackRate=e)}get rate(){let e=1;return this.$videoElement&&(e=this.$videoElement.playbackRate),e}clearCheckVideoCanplayTimeout(){this.checkVideoCanplayTimeout&&(clearTimeout(this.checkVideoCanplayTimeout),this.checkVideoCanplayTimeout=null)}_cancelVideoFrameCallback(){this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null)}_getBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.buffered.start(0)),t}_handleUpdatePlaybackRate(){const e=this.$videoElement,t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,a=this.getBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>a)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${a} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0){if(this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),0===i)return void this.player.emit(ct.mediaSourceBufferedIsZeroError,"video.buffered is empty");e.paused&&e.play()}const o=this._getPlaybackRate(i-s);e.playbackRate!==o&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${o} `),e.playbackRate=o)}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkVideoSourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}getBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}getReadyStateInited(){return this._getVideoReadyState()>=1}}class Vo extends zo{constructor(e){super(e),this.controlHeight=Yt,this.bufferList=[],this.playing=!1,this.playInterval=null,this.fps=1,this.preFps=1,this.streamFps=0,this.playbackRate=1,this._firstTimestamp=null,this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,this.player.on(nt.playbackPause,(e=>{e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()})),this.player.debug.log("CanvasPlaybackLoader","init")}async destroy(){this._stopSync(),this._firstTimestamp=null,this.playing=!1,this.playbackRate=1,this.fps=1,this.preFps=1,this.bufferList=[],this._renderFps=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._hasCalcFps=!1,super.destroy(),this.player.debug.log("CanvasPlaybackLoader","destroy")}_initCanvasRender(){this.player._opt.useWCS?(this.renderType=ei,yo()&&this.player._opt.wcsUseWebgl2Render?(this._initContextGl2(),this.webglRender&&(this.isWcsWebgl2=!0)):this._initContext2D()):this.player._opt.useWebGPU?(this.renderType=si,this._initContextGPU()):(this.renderType=ti,this._initContextGl())}_sync(){this._stopSync(),this._doPlay(),this.playInterval=setInterval((()=>{this._doPlay()}),this.fragDuration)}_doPlay(){if(this.bufferList.length>0&&!this.player.seeking){const e=this.bufferList.shift();e&&e.buffer&&(this._doRender(e.buffer),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:e.tfTs}))}}_stopSync(){this.playInterval&&(clearInterval(this.playInterval),this.playInterval=null)}_doRender(e){if(this.player._opt.useWCS)if(this.webglRender)this.webglRender.render(e),to(e);else if(Ya(e.createImageBitmap))try{e.createImageBitmap().then((t=>{this.context2D.drawImage(t,0,0,this.$videoElement.width,this.$videoElement.height),to(e)}))}catch(e){}else this.context2D.drawImage(e,0,0,this.$videoElement.width,this.$videoElement.height),to(e);else if(this.getCanvasType()===ti)try{this.webglRender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgl render context is lost ${this.contextGl&&this.contextGl.isContextLost()} and error: ${e.toString()}`)}else if(this.getCanvasType()===si)try{if(!this.webGPURender)return void this.player.debug.warn("CanvasVideoLoader","doRender webgpu render is not init");this.webGPURender.renderYUV(this.$videoElement.width,this.$videoElement.height,e)}catch(e){this.player.debug.error("CanvasPlaybackLoader",`doRender webgpu render and error: ${e.toString()}`)}}get rate(){return this.playbackRate}get fragDuration(){return Math.ceil(1e3/(this.fps*this.playbackRate))}get bufferSize(){return this.bufferList.length}getStreamFps(){return this.streamFps}initFps(){this._hasCalcFps?this.player.debug.log("CanvasPlaybackLoader","initFps, has calc fps"):(this.preFps=oa(this.player.playback.fps,1,100),this.fps=this.preFps)}setFps(e){e!==this.fps?(e>100&&this.player.debug.warn("CanvasPlaybackLoader","setFps max",e),e<0&&this.player.debug.warn("CanvasPlaybackLoader","setFps min",e),this.fps=oa(e,1,100),this.player.debug.log("CanvasPlaybackLoader",`setFps ${this.preFps} -> ${this.fps}`),this.player.playback.isUseFpsRender&&this._sync()):this.player.debug.log("CanvasPlaybackLoader",`setFps, same fps ${e}`)}setStreamFps(e){this.player.debug.log("CanvasPlaybackLoader","setStreamFps",e),this._hasCalcFps=!0,this.streamFps=e,this.preFps=e,this.setFps(e)}setRate(e){e!==this.playbackRate&&(this.playbackRate=e,this.player.playback.isUseFpsRender&&this._sync())}render$2(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output,this.bufferList.push(t),this.startRender(),this.player.handleRender(),this.player.playback.updateStats({ts:e.ts,tfTs:t.tfTs})}startRender(){for(;!(this.bufferList.length<=0);){const e=this.bufferList.shift();this._doRender(e.buffer)}}pushData(e){null===this._firstTimestamp&&(this._firstTimestamp=e.ts);const t={tfTs:e.ts-this._firstTimestamp,ts:e.ts};e.videoFrame?t.buffer=e.videoFrame:t.buffer=e.output;const i=this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender;if(i||this.bufferSize>this.fps*this.playbackRate*2&&(this.player.debug.warn("CanvasPlaybackLoader",`buffer size is ${this.bufferSize}`),this._doPlay()),this.bufferList.push(t),!this._hasCalcFps){const e=ro(this.bufferList);null!==e&&e!==this.preFps&&(this.player.debug.log("CanvasPlaybackLoader",`calc fps is ${e} pre fps is ${this.preFps} and updatePreFps`),this.setStreamFps(e))}if(!i){const e=this.bufferList.length,t=e/(this.fps*this.playbackRate);this.player.debug.log("CanvasPlaybackLoader","rate is",t),t<=1?this.setFps(this.preFps):(this.setFps(this.fps+Math.floor(t*this.playbackRate)),this.player.debug.warn("CanvasPlaybackLoader","rate is",t,"fps is",this.fps,"bufferListLength is",e))}}initVideo(){this.player.playback&&this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}initVideoDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initVideo()}),e):this.initVideo()}clearView(){super.clearView(),this.contextGl.clear(this.contextGl.COLOR_BUFFER_BIT)}clear(){this.player._opt.useWCS&&this.bufferList.forEach((e=>{e.buffer&&to(e.buffer)})),this.bufferList=[]}resume(){this.player.playback.isUseFpsRender&&this._sync(),this.playing=!0}pause(){this.player.playback.isUseFpsRender&&this._stopSync(),this.playing=!1}}class $o{constructor(e){return new($o.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.useMSE?e.mseUseCanvasRender?Go:Ho:e.isHls&&po(e.supportHls265)||e.isWebrtc&&po(e.isWebrtcH265)?e.useCanvasRender?Go:Ho:e.isAliyunRtc?Ho:e.useWCS?e.playType===_?Vo:!e.useOffscreen&&e.wcsUseVideoRender?Ho:Go:e.playType===_?Vo:e.wasmUseVideoRender&&!e.useOffscreen?Ho:Go}}class Wo extends So{constructor(e){super(),this.bufferList=[],this.player=e,this.$audio=null,this.scriptNode=null,this.workletProcessorNode=null,this.workletWorkerCloseTimeout=null,this.hasInitScriptNode=!1,this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain();const t=this.audioContext.createBufferSource();t.buffer=this.audioContext.createBuffer(1,1,22050),t.connect(this.audioContext.destination),t.noteOn?t.noteOn(0):t.start(0),this.audioBufferSourceNode=t,this.mediaStreamAudioDestinationNode=this.audioContext.createMediaStreamDestination(),this.gainNode.gain.value=0,this._prevVolume=null,this.playing=!1,this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1,this.hasAudio=!1,this.audioResumeStateTimeout=null}async destroy(){return this.closeAudio(),this.resetInit(),this.clearAudioResumeStateTimeout(),this.audioContext&&(await this.audioContext.close(),this.audioContext=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.hasAudio=!1,this.playing=!1,this.scriptNode&&(this.scriptNode.disconnect(),this.scriptNode.onaudioprocess=ta,this.scriptNode=null),await this._destroyWorklet(),this.workletProcessorNode&&(this.workletProcessorNode.disconnect(),this.workletProcessorNode.port.onmessage=ta,this.workletProcessorNode=null),this.audioBufferSourceNode&&(this.audioBufferSourceNode.stop(),this.audioBufferSourceNode=null),this.mediaStreamAudioDestinationNode&&(this.mediaStreamAudioDestinationNode.disconnect(),this.mediaStreamAudioDestinationNode=null),this.hasInitScriptNode=!1,this._prevVolume=null,this.off(),!0}_destroyWorklet(){return new Promise(((e,t)=>{this.workletProcessorNode?(this.workletProcessorNode.port.postMessage({type:"destroy"}),this.workletWorkerCloseTimeout=setTimeout((()=>{this.player.debug.log(this.TAG_NAME,"send close and wait 10ms destroy directly"),this.workletWorkerCloseTimeout&&(clearTimeout(this.workletWorkerCloseTimeout),this.workletWorkerCloseTimeout=null),e()}),10)):e()}))}resetInit(){this.audioInfo={encTypeCode:"",encType:"",channels:"",sampleRate:"",depth:""},this.init=!1}getAudioInfo(){return this.audioInfo}updateAudioInfo(e){e.encTypeCode&&(this.audioInfo.encTypeCode=e.encTypeCode,this.audioInfo.encType=Ct[e.encTypeCode]),e.channels&&(this.audioInfo.channels=e.channels),e.sampleRate&&(this.audioInfo.sampleRate=e.sampleRate),e.depth&&(this.audioInfo.depth=e.depth),this.audioInfo.sampleRate&&this.audioInfo.channels&&this.audioInfo.encType&&!this.init&&(this.player.emit(nt.audioInfo,this.audioInfo),this.init=!0)}get isPlaying(){return this.playing}get isMute(){return 0===this.gainNode.gain.value}get volume(){return this.gainNode.gain.value}get bufferSize(){return this.bufferList.length}get audioContextState(){let e=null;return this.audioContext&&(e=this.audioContext.state),e}initScriptNode(){}initMobileScriptNode(){}initWorkletScriptNode(){}getEngineType(){return""}mute(e){e?(this.setVolume(0),this.clear()):this.setVolume(this.player.lastVolume||.5)}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(this.audioEnabled(!0),e=oa(e,0,1),null===this._prevVolume?this.player.emit(nt.mute,0===e):0===this._prevVolume&&e>0?this.player.emit(nt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(nt.mute,!0),this.gainNode.gain.value=e,this.player.emit(nt.volumechange,this.player.volume),this.player.emit(nt.volume,this.player.volume),this._prevVolume=e)}closeAudio(){this.hasInitScriptNode&&(this.scriptNode&&this.scriptNode.disconnect(this.gainNode),this.workletProcessorNode&&this.workletProcessorNode.disconnect(this.gainNode),this.gainNode&&(this.gainNode.disconnect(this.mediaStreamAudioDestinationNode),this.$audio||this.gainNode.disconnect(this.audioContext.destination))),this.clear()}audioEnabled(e){e?this.isStateSuspended()&&(this.audioContext.resume().then((()=>{this.player.emit(nt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})})),this.audioResumeStateTimeout=setTimeout((()=>{this.clearAudioResumeStateTimeout(),this.isStateSuspended()&&this.player.emit(nt.audioResumeState,{state:this.audioContextState,isRunning:this.isStateRunning()})}),1e3)):this.isStateRunning()&&this.audioContext.suspend()}isStateRunning(){return"running"===this.audioContextState}isStateSuspended(){return"suspended"===this.audioContextState}clearAudioResumeStateTimeout(){this.audioResumeStateTimeout&&(clearTimeout(this.audioResumeStateTimeout),this.audioResumeStateTimeout=null)}clear(){this.bufferList=[]}play(e,t){}pause(){this.playing=!1}resume(){this.playing=!0}setRate(e){}getAudioBufferSize(){return 0}}class Jo{constructor(e,t,i,s){this.player=e,this.audio=t,this.channel=i,this.bufferSize=s}destroy(){this.buffer=null,this.channel=null}extract(e,t){let i=this.provide(t);for(let t=0;t=o){try{for(let e=0;e2&&void 0!==arguments[2]?arguments[2]:0;const s=2*(t=t||0);i>=0||(i=(e.length-s)/2);const r=2*i;this.ensureCapacity(i+this._frameCount);const a=this.endIndex;this.vector.set(e.subarray(s,s+r),a),this._frameCount+=i}putBuffer(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;t=t||0,i>=0||(i=e.frameCount-t),this.putSamples(e.vector,e.position+t,i)}receive(e){e>=0&&!(e>this._frameCount)||(e=this.frameCount),this._frameCount-=e,this._position+=e}receiveSamples(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=2*t,s=this.startIndex;e.set(this._vector.subarray(s,s+i)),this.receive(t)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=this.startIndex+2*t,r=2*i;e.set(this._vector.subarray(s,s+r))}ensureCapacity(){const e=parseInt(2*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0));if(this._vector.length0&&void 0!==arguments[0]?arguments[0]:0;this.ensureCapacity(this._frameCount+e)}rewind(){this._position>0&&(this._vector.set(this._vector.subarray(this.startIndex,this.endIndex)),this._position=0)}}class Ko{constructor(e){e?(this._inputBuffer=new qo,this._outputBuffer=new qo):this._inputBuffer=this._outputBuffer=null}destroy(){this.clear(),this._outputBuffer&&(this._outputBuffer.destroy(),this._outputBuffer=null),this._inputBuffer&&(this._inputBuffer.destroy(),this._inputBuffer=null)}get inputBuffer(){return this._inputBuffer}set inputBuffer(e){this._inputBuffer=e}get outputBuffer(){return this._outputBuffer}set outputBuffer(e){this._outputBuffer=e}clear(){this._inputBuffer.clear(),this._outputBuffer.clear()}}class Yo extends Ko{constructor(e){super(e),this.reset(),this._rate=1}destroy(){super.destroy()}set rate(e){this._rate=e}reset(){this.slopeCount=0,this.prevSampleL=0,this.prevSampleR=0}clone(){const e=new Yo;return e.rate=this._rate,e}process(){const e=this._inputBuffer.frameCount;this._outputBuffer.ensureAdditionalCapacity(e/this._rate+1);const t=this.transpose(e);this._inputBuffer.receive(),this._outputBuffer.put(t)}transpose(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;if(0===e)return 0;const t=this._inputBuffer.vector,i=this._inputBuffer.startIndex,s=this._outputBuffer.vector,r=this._outputBuffer.endIndex;let a=0,o=0;for(;this.slopeCount<1;)s[r+2*o]=(1-this.slopeCount)*this.prevSampleL+this.slopeCount*t[i],s[r+2*o+1]=(1-this.slopeCount)*this.prevSampleR+this.slopeCount*t[i+1],o+=1,this.slopeCount+=this._rate;if(this.slopeCount-=1,1!==e)e:for(;;){for(;this.slopeCount>1;)if(this.slopeCount-=1,a+=1,a>=e-1)break e;const n=i+2*a;s[r+2*o]=(1-this.slopeCount)*t[n]+this.slopeCount*t[n+2],s[r+2*o+1]=(1-this.slopeCount)*t[n+1]+this.slopeCount*t[n+3],o+=1,this.slopeCount+=this._rate}return this.prevSampleL=t[i+2*e-2],this.prevSampleR=t[i+2*e-1],o}}class Qo{constructor(e){this._pipe=e}destroy(){}get pipe(){return this._pipe}get inputBuffer(){return this._pipe.inputBuffer}get outputBuffer(){return this._pipe.outputBuffer}fillInputBuffer(){throw new Error("fillInputBuffer() not overridden")}fillOutputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;for(;this.outputBuffer.frameCount2&&void 0!==arguments[2]?arguments[2]:Xo;super(t),this.callback=i,this.sourceSound=e,this.historyBufferSize=22050,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}destroy(){this.clear(),this.sourceSound.destroy(),this.sourceSound=null,this._sourcePosition=0,this.outputBufferPosition=0,this._position=0}get position(){return this._position}set position(e){if(e>this._position)throw new RangeError("New position may not be greater than current position");const t=this.outputBufferPosition-(this._position-e);if(t<0)throw new RangeError("New position falls outside of history buffer");this.outputBufferPosition=t,this._position=e}get sourcePosition(){return this._sourcePosition}set sourcePosition(e){this.clear(),this._sourcePosition=e}onEnd(){this.callback()}fillInputBuffer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;const t=new Float32Array(2*e),i=this.sourceSound.extract(t,e,this._sourcePosition);this._sourcePosition+=i,this.inputBuffer.putSamples(t,0,i)}extract(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this.fillOutputBuffer(this.outputBufferPosition+t);const i=Math.min(t,this.outputBuffer.frameCount-this.outputBufferPosition);this.outputBuffer.extract(e,this.outputBufferPosition,i);const s=this.outputBufferPosition+i;return this.outputBufferPosition=Math.min(this.historyBufferSize,s),this.outputBuffer.receive(Math.max(s-this.historyBufferSize,0)),this._position+=i,i}handleSampleData(e){this.extract(e.data,4096)}clear(){super.clear(),this.outputBufferPosition=0}}const en=[[124,186,248,310,372,434,496,558,620,682,744,806,868,930,992,1054,1116,1178,1240,1302,1364,1426,1488,0],[-100,-75,-50,-25,25,50,75,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-20,-15,-10,-5,5,10,15,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[-4,-3,-2,-1,1,2,3,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],tn=-10/1.5;class sn extends Ko{constructor(e){super(e),this._quickSeek=!0,this.midBufferDirty=!1,this.midBuffer=null,this.refMidBuffer=null,this.overlapLength=0,this.autoSeqSetting=!0,this.autoSeekSetting=!0,this._tempo=1,this.setParameters(44100,0,0,8)}destroy(){this.clear(),super.destroy()}clear(){super.clear(),this.clearMidBuffer(),this.refMidBuffer=null}clearMidBuffer(){this.midBufferDirty&&(this.midBufferDirty=!1),this.midBuffer=null}setParameters(e,t,i,s){e>0&&(this.sampleRate=e),s>0&&(this.overlapMs=s),t>0?(this.sequenceMs=t,this.autoSeqSetting=!1):this.autoSeqSetting=!0,i>0?(this.seekWindowMs=i,this.autoSeekSetting=!1):this.autoSeekSetting=!0,this.calculateSequenceParameters(),this.calculateOverlapLength(this.overlapMs),this.tempo=this._tempo}set tempo(e){let t;this._tempo=e,this.calculateSequenceParameters(),this.nominalSkip=this._tempo*(this.seekWindowLength-this.overlapLength),this.skipFract=0,t=Math.floor(this.nominalSkip+.5),this.sampleReq=Math.max(t+this.overlapLength,this.seekWindowLength)+this.seekLength}get tempo(){return this._tempo}get inputChunkSize(){return this.sampleReq}get outputChunkSize(){return this.overlapLength+Math.max(0,this.seekWindowLength-2*this.overlapLength)}calculateOverlapLength(){let e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;e=this.sampleRate*t/1e3,e=e<16?16:e,e-=e%8,this.overlapLength=e,this.refMidBuffer=new Float32Array(2*this.overlapLength),this.midBuffer=new Float32Array(2*this.overlapLength)}checkLimits(e,t,i){return ei?i:e}calculateSequenceParameters(){let e,t;this.autoSeqSetting&&(e=150+-50*this._tempo,e=this.checkLimits(e,50,125),this.sequenceMs=Math.floor(e+.5)),this.autoSeekSetting&&(t=28.333333333333332+tn*this._tempo,t=this.checkLimits(t,15,25),this.seekWindowMs=Math.floor(t+.5)),this.seekWindowLength=Math.floor(this.sampleRate*this.sequenceMs/1e3),this.seekLength=Math.floor(this.sampleRate*this.seekWindowMs/1e3)}set quickSeek(e){this._quickSeek=e}clone(){const e=new sn;return e.tempo=this._tempo,e.setParameters(this.sampleRate,this.sequenceMs,this.seekWindowMs,this.overlapMs),e}seekBestOverlapPosition(){return this._quickSeek?this.seekBestOverlapPositionStereoQuick():this.seekBestOverlapPositionStereo()}seekBestOverlapPositionStereo(){let e,t,i,s=0;for(this.preCalculateCorrelationReferenceStereo(),e=0,t=Number.MIN_VALUE;st&&(t=i,e=s);return e}seekBestOverlapPositionStereoQuick(){let e,t,i,s,r,a=0;for(this.preCalculateCorrelationReferenceStereo(),t=Number.MIN_VALUE,e=0,s=0,r=0;a<4;a+=1){let o=0;for(;en[a][o]&&(r=s+en[a][o],!(r>=this.seekLength));)i=this.calculateCrossCorrelationStereo(2*r,this.refMidBuffer),i>t&&(t=i,e=r),o+=1;s=e}return e}preCalculateCorrelationReferenceStereo(){let e,t,i=0;for(;i=this.sampleReq;){e=this.seekBestOverlapPosition(),this._outputBuffer.ensureAdditionalCapacity(this.overlapLength),this.overlap(Math.floor(e)),this._outputBuffer.put(this.overlapLength),t=this.seekWindowLength-2*this.overlapLength,t>0&&this._outputBuffer.putBuffer(this._inputBuffer,e+this.overlapLength,t);const s=this._inputBuffer.startIndex+2*(e+this.seekWindowLength-this.overlapLength);this.midBuffer.set(this._inputBuffer.vector.subarray(s,s+2*this.overlapLength)),this.skipFract+=this.nominalSkip,i=Math.floor(this.skipFract),this.skipFract-=i,this._inputBuffer.receive(i)}}}const rn=function(e,t){return(e>t?e-t:t-e)>1e-10};class an{constructor(){this.transposer=new Yo(!1),this.stretch=new sn(!1),this._inputBuffer=new qo,this._intermediateBuffer=new qo,this._outputBuffer=new qo,this._rate=0,this._tempo=0,this.virtualPitch=1,this.virtualRate=1,this.virtualTempo=1,this.calculateEffectiveRateAndTempo()}destroy(){this.clear(),this._inputBuffer.destroy(),this._intermediateBuffer.destroy(),this._outputBuffer.destroy(),this._inputBuffer=null,this._intermediateBuffer=null,this._outputBuffer=null}clear(){this.transposer.clear(),this.stretch.clear()}clone(){const e=new an;return e.rate=this.rate,e.tempo=this.tempo,e}get rate(){return this._rate}set rate(e){this.virtualRate=e,this.calculateEffectiveRateAndTempo()}set rateChange(e){this._rate=1+.01*e}get tempo(){return this._tempo}set tempo(e){this.virtualTempo=e,this.calculateEffectiveRateAndTempo()}set tempoChange(e){this.tempo=1+.01*e}set pitch(e){this.virtualPitch=e,this.calculateEffectiveRateAndTempo()}set pitchOctaves(e){this.pitch=Math.exp(.69314718056*e),this.calculateEffectiveRateAndTempo()}set pitchSemitones(e){this.pitchOctaves=e/12}get inputBuffer(){return this._inputBuffer}get outputBuffer(){return this._outputBuffer}calculateEffectiveRateAndTempo(){const e=this._tempo,t=this._rate;this._tempo=this.virtualTempo/this.virtualPitch,this._rate=this.virtualRate*this.virtualPitch,rn(this._tempo,e)&&(this.stretch.tempo=this._tempo),rn(this._rate,t)&&(this.transposer.rate=this._rate),this._rate>1?this._outputBuffer!=this.transposer.outputBuffer&&(this.stretch.inputBuffer=this._inputBuffer,this.stretch.outputBuffer=this._intermediateBuffer,this.transposer.inputBuffer=this._intermediateBuffer,this.transposer.outputBuffer=this._outputBuffer):this._outputBuffer!=this.stretch.outputBuffer&&(this.transposer.inputBuffer=this._inputBuffer,this.transposer.outputBuffer=this._intermediateBuffer,this.stretch.inputBuffer=this._intermediateBuffer,this.stretch.outputBuffer=this._outputBuffer)}process(){this._rate>1?(this.stretch.process(),this.transposer.process()):(this.transposer.process(),this.stretch.process())}}class on{constructor(e,t,i){this.player=e,this.audio=t,this.soundTouch=new an,this.soundTouch.tempo=1,this.soundTouch.rate=1,this.filter=new Zo(i,this.soundTouch)}destroy(){this.filter&&(this.filter.destroy(),this.filter=null),this.soundTouch&&(this.soundTouch.destroy(),this.soundTouch=null)}setRate(e){e!==this.soundTouch.rate&&(this.soundTouch.tempo=e)}provide(e){let t=new Float32Array(2*e),i=this.filter.extract(t,e),s=new Float32Array(i),r=new Float32Array(i);for(let e=0;e{e()})),this.eventListenList=[]),this.$audio&&(this.$audio.pause(),this.$audio.srcObject=null,this.$audio.parentNode&&this.$audio.parentNode.removeChild(this.$audio),this.$audio=null),this.processor&&(this.processor.destroy(),this.processor=null),this.rateProcessor&&(this.rateProcessor.destroy(),this.rateProcessor=null),this.scriptNodeInterval&&(clearInterval(this.scriptNodeInterval),this.scriptNodeInterval=null),this.defaultPlaybackRate=1,this.playbackRate=1,this.scriptStartTime=0,this.audioBufferSize=0,this.engineType=Us,this.player.debug.log("AudioContext","destroy"),!0}isAudioPlaying(){return this.$audio&&po(this.$audio.paused)&&po(this.$audio.ended)&&0!==this.$audio.playbackRate&&0!==this.$audio.readyState}_bindAudioProxy(){const{proxy:e}=this.player.events,t=e(this.$audio,"canplay",(()=>{this.player.debug.log("AudioContext","canplay"),this._delayPlay&&this._audioElementPlay()}));this.eventListenList.push(t)}_getAudioElementReadyState(){let e=0;return this.$audio&&(e=this.$audio.readyState),e}audioElementPlay(){if(this.$audio){const e=this._getAudioElementReadyState();if(this.player.debug.log("AudioContext",`play and readyState: ${e}`),!(0!==e||Wa()&&ya()))return this.player.debug.warn("AudioContext","readyState is 0 and set _delayPlay to true"),void(this._delayPlay=!0);this._audioElementPlay()}}_audioElementPlay(){this.$audio&&this.$audio.play().then((()=>{this._delayPlay=!1,this.player.debug.log("AudioContext","_audioElementPlay success"),setTimeout((()=>{this.isAudioPlaying()||(this.player.debug.warn("AudioContext","play failed and retry play"),this._audioElementPlay())}),100),this.isAudioPlaying()&&(this.player.debug.log("AudioContext","play success and remove document click event listener"),document.removeEventListener("click",this._audioElementPlay.bind(this)))})).catch((e=>{this.player.debug.error("AudioContext","_audioElementPlay error",e),document.addEventListener("click",this._audioElementPlay.bind(this))}))}getAudioBufferSize(){return this.audioBufferSize}get oneBufferDuration(){return this.audioBufferSize/this.audioContext.sampleRate*1e3}get isActiveEngineType(){return this.engineType===Fs}getBufferListDuration(){return this.bufferList.length*this.oneBufferDuration}isMoreThanMinBufferDuration(){return this.getBufferListDuration()>=100*this.playbackRate}initProcessor(){this.processor=new Jo(this.player,this,this.audioInfo.channels,this.audioBufferSize),this.rateProcessor=new on(this.player,this,this.processor)}getAutoAudioEngineType(){let e=this.player._opt.audioEngine||Us;const t=()=>{e=Wa()&&fa()?Fs:(ya()&&this.player._opt.supportLockScreenPlayAudio||io()&&this.supportAudioWorklet(),Us)};return this.player._opt.audioEngine?this.player._opt.audioEngine===Ms&&io()&&this.supportAudioWorklet()?e=Ms:this.player._opt.audioEngine===Fs?e=Fs:this.player._opt.audioEngine===Us?e=Us:t():t(),e}getAudioBufferSizeByType(){const e=this.engineType;this.player._opt.hasVideo;const t=this.player._opt.weiXinInAndroidAudioBufferSize;return e===Ms?1024:e===Fs?t||4800:1024}supportAudioWorklet(){return this.audioContext&&this.audioContext.audioWorklet}initScriptNode(){this.playing=!0,this.hasInitScriptNode||(this.initProcessor(),this.engineType===Ms?this.initWorkletScriptNode():this.engineType===Fs?this.initIntervalScriptNode():this.engineType===Us&&this.initProcessScriptNode(),this.audioElementPlay())}getEngineType(){return this.engineType}isPlaybackRateSpeed(){return this.playbackRate>this.defaultPlaybackRate}initProcessScriptNode(){const e=this.audioContext.createScriptProcessor(this.audioBufferSize,0,this.audioInfo.channels);e.onaudioprocess=e=>{const t=e.outputBuffer;this.handleScriptNodeCallback(t)},e.connect(this.gainNode),this.scriptNode=e,this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0}initIntervalScriptNode(){this.scriptStartTime=0;const e=1e3*this.audioBufferSize/this.audioContext.sampleRate;this.scriptNodeInterval=setInterval((()=>{if(0===this.bufferList.length||po(this.playing)||this.isMute)return void(this.playing&&po(this.isMute)&&this.player.debug.log("AudioContext",`interval script node and bufferList is ${this.bufferList.length} or playing is ${this.playing}`));const e=this.audioContext.createBufferSource(),t=this.audioContext.createBuffer(this.audioInfo.channels,this.audioBufferSize,this.audioContext.sampleRate);this.handleScriptNodeCallback(t,(()=>{this.scriptStartTime{"init"===e.data.message?(this.audioBufferSize=e.data.audioBufferSize,this.start=e.data.start,this.channels=e.data.channels,this.state=0,this.offset=0,this.samplesArray=[]):"stop"===e.data.message?(this.state=0,this.start=!1,this.offset=0,this.samplesArray=[]):"data"===e.data.message?this.samplesArray.push(e.data.buffer):"zero"===e.data.message&&this.samplesArray.push({left:new Float32Array(this.audioBufferSize).fill(0),right:new Float32Array(this.audioBufferSize).fill(0)})}}process(e,t,i){const s=t[0][0],r=t[0][1];if(0===this.offset&&this.port.postMessage({message:"beep"}),0===this.state)this.state=1;else if(1===this.state&&this.samplesArray.length>=4)this.state=2;else if(2===this.state){const e=this.samplesArray[0];for(let t=0;t{if(this.player.isDestroyedOrClosed())return void this.player.debug.log("AudioContext","initWorkletScriptNode() player is destroyed");if(!this.audioContext)return void this.player.debug.warn("AudioContext","initWorkletScriptNode audioContext is null");let e=[1];2===this.audioInfo.channels&&(e=[1,1]);try{this.workletProcessorNode=new AudioWorkletNode(this.audioContext,"worklet-processor",{numberOfOutputs:this.audioInfo.channels,outputChannelCount:e})}catch(e){this.player.debug.error("AudioContext","initWorkletScriptNode error",e),this.workletProcessorNode=null,this.tierDownToProcessScript()}this.workletProcessorNode&&(this.workletProcessorNode.connect(this.gainNode),this.gainNode.connect(this.mediaStreamAudioDestinationNode),this.$audio?this.$audio.srcObject=this.mediaStreamAudioDestinationNode.stream:this.gainNode.connect(this.audioContext.destination),this.hasInitScriptNode=!0,this.workletProcessorNode.port.postMessage({message:"init",audioBufferSize:this.audioBufferSize,start:!0,channels:this.audioInfo.channels}),this.workletProcessorNode.port.onmessage=e=>{this.workletProcessorNode?this.audioContext?this.handleScriptNodeCallback(this.workletProcessorNode,null,!0):this.workletProcessorNode.port.postMessage({message:"zero"}):this.player.debug.error("AudioContext","workletProcessorNode is null")})})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(this.workletUrl),this.workletUrl=null,this.clearWorkletUrlTimeout=null}),te)}tierDownToProcessScript(){this.player.debug.log("AudioContext","tierDownToProcessScript"),this.engineType=Us,this.audioBufferSize=this.getAudioBufferSizeByType(),this.initProcessScriptNode(),this.audioElementPlay()}handleScriptNodeCallback(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];t=t||ta;let r=e.length;s&&(i=e,r=this.audioBufferSize);const a=this.audioInfo.channels;if(this.playing&&this.isMoreThanMinBufferDuration()){if(this.player._opt,this.player.openSyncAudioAndVideo()&&uo(this.player.visibility)){this.calcPlaybackRateBySync();const r=this.player.getAudioSyncVideoDiff();if(r>this.player._opt.syncAudioAndVideoDiff)return this.player.debug.warn("AudioContext",`audioSyncVideoOption more than diff :${r}, waiting and bufferList is ${this.bufferList.length}`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),void t()}let o=this._provide(r);if(0===o.size)return po(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debug.warn("AudioContext",`bufferList size is ${this.bufferList.length} outputBufferLength is ${r},and bufferItem.size is 0`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),void t();o&&o.ts&&(this.player.audioTimestamp=o.ts),s?i.port.postMessage({message:"data",buffer:o}):this.fillScriptNodeOutputBuffer(e,a,o),t()}else 0===this.bufferList.length&&this.playing&&po(this.isMute)&&po(this.player.isPlaybackOnlyDecodeIFrame())&&this.player.debug.warn("AudioContext",`bufferList size is 0 and outputBufferLength is ${r}`),s?i.port.postMessage({message:"zero"}):this.fillScriptNodeOutputBuffer(e,a),t()}fillScriptNodeOutputBuffer(e,t,i){if(1===t){const t=e.getChannelData(0);i?0===i.size?t.fill(0):t.set(i.left):t.fill(0)}else if(2===t){const t=e.getChannelData(0),s=e.getChannelData(1);i?0===i.size?(t.fill(0),s.fill(0)):(t.set(i.left),s.set(i.right)):(t.fill(0),s.fill(0))}}play(e,t){this.isMute||(this.hasInitScriptNode?(this.hasAudio=!0,this.player.latestAudioTimestamp=t,this.bufferList.push({buffer:e,ts:t}),po(this.player.openSyncAudioAndVideo())&&this.calcPlaybackRateByBuffer()):this.player.debug.warn("AudioContext","play has not init script node"))}calcPlaybackRateBySync(){if(this.isMute)return;if(!this.playing)return;const e=Math.floor(2e3/this.oneBufferDuration);if(this.bufferList.length>e)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${e}, and drop`),void this.clear();const t=this.player.getAudioSyncVideoDiff();if(this.getEngineType()===Fs){if(t<-this.player._opt.syncAudioAndVideoDiff){this.player.debug.warn("AudioContext",`engine active , audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n and bufferlist is ${this.bufferList.length}`);const e=this.player.getRenderCurrentPts();for(;this.bufferList.length>0;){const t=this.bufferList[0],i=t.ts-e;if(i>-this.player._opt.syncAudioAndVideoDiff/2){this.player.audioTimestamp=t.ts,this.player.debug.log("AudioContext",`engine active , audioSyncVideoOption\n item.ts is ${t.ts} and currentVideoTimestamp is ${e}, diff is ${i} > -${this.player._opt.syncAudioAndVideoDiff/2} and end`);break}this.bufferList.shift(),this.player.audioTimestamp=t.ts}}}else{let e=this.playbackRate;t<-this.player._opt.syncAudioAndVideoDiff?e===this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`audioSyncVideoOption ${-this.player._opt.syncAudioAndVideoDiff} less than diff :${t},\n speed up, playbackRate is ${e},\n and bufferList is ${this.bufferList.length}`),e=this.defaultPlaybackRate+.2):t>-this.player._opt.syncAudioAndVideoDiff/2&&e!==this.defaultPlaybackRate&&(this.player.debug.log("AudioContext",`diff is ${t} > -${this.player._opt.syncAudioAndVideoDiff/2} and speed to 1`),e=this.defaultPlaybackRate),this.updatePlaybackRate(e)}}calcPlaybackRateByBuffer(){if(this.isMute)return;if(!this.playing)return;let e=this.playbackRate,t=1e3,i=5e3;this.isAudioPlayer&&(t=this.player._opt.videoBufferDelay,i=this.player._opt.videoBufferMax);const s=Math.floor(t/this.oneBufferDuration),r=Math.floor(i/this.oneBufferDuration);if(this.bufferList.length>r)return this.player.debug.warn("AudioContext",`bufferList length ${this.bufferList.length} more than ${r}, and drop`),void this.clear();this.getEngineType()!==Fs&&(this.bufferList.length>s?(e=this.defaultPlaybackRate+.2,this.player.debug.log("AudioContext",`bufferList length ${this.bufferList.length} more than ${s}, speed up, playbackRate is ${e}`)):this.bufferList.length0?this.player.emit(nt.mute,!1):this._prevVolume>0&&0===e&&this.player.emit(nt.mute,!0),this.$video.volume=e,this.player.emit(nt.volumechange,this.player.volume),this.player.emit(nt.volume,this.player.volume),this._prevVolume=e)}clear(){}play(){}pause(){}resume(){}getEngineType(){return"audio"}isPlaybackRateSpeed(){return!1}getAudioBufferSize(){return 0}setRate(){}initScriptNode(){}initScriptNodeDelay(){}audioEnabled(){this.mute(!1)}}class dn extends nn{constructor(e){super(e),this.delayTimeout=null,this.player.on(nt.playbackPause,(e=>{this.listenPlaybackPause(e)})),this.player.debug.log("AudioPlaybackContext","init")}async destroy(){return this.delayTimeout&&(clearTimeout(this.delayTimeout),this.delayTimeout=null),await super.destroy(),this.player.debug.log("AudioPlaybackLoader","destroy"),!0}listenPlaybackPause(e){e?(this.pause(),this.player.playback.isPlaybackPauseClearCache&&this.clear()):this.resume()}initScriptNodeDelay(){const e=this.player._opt.playbackDelayTime;e>0?this.delayTimeout=setTimeout((()=>{this.initScriptNode()}),e):this.initScriptNode()}setRate(e){e!==this.defaultPlaybackRate&&this.rateProcessor&&(this.player.debug.log("AudioPlaybackContext","setRate",e),this.defaultPlaybackRate=e,this.updatePlaybackRate(e))}}class hn extends nn{constructor(e){super(e),this.TAG_NAME="AudioPlayerLoader",this.isAudioPlayer=!0,this.player.debug.log(this.TAG_NAME,"init")}async destroy(){return await super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy"),!0}play(e,t){po(this.playing)||super.play(e,t)}pause(){this.player.debug.log(this.TAG_NAME,"pause"),this.playing=!1,this.clear()}resume(){this.player.debug.log(this.TAG_NAME,"resume"),this.playing=!0}}class cn{constructor(e){return new(cn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){return e.playType===_?e.useMSE&&e.mseDecodeAudio?ln:dn:e.playType===v?hn:e.isHls&&po(e.supportHls265)||e.isWebrtc&&po(e.isWebrtcH265)||e.useMSE&&e.mseDecodeAudio||e.isAliyunRtc?ln:nn}}class un extends So{constructor(e){super(),this.player=e,this.playing=!1,this._requestAbort=!1,this._status=dr,this.writableStream=null,this.abortController=new AbortController,this.streamRate=ha((t=>{e.emit(nt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("FetchStream","init")}async destroy(){return this.abort(),this.writableStream&&po(this.writableStream.locked)&&this.writableStream.close().catch((e=>{this.player.debug.log("FetchStream","destroy and writableStream.close()",e)})),this.writableStream=null,this.off(),this._status=dr,this.streamRate=null,this.stopStreamRateInterval(),this.player.debug.log("FetchStream","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{demux:i}=this.player;this.player._times.streamStart=aa();const s=Object.assign({signal:this.abortController.signal},{headers:t.headers||{}});fetch(e,s).then((e=>{if(this._requestAbort)return this._status=dr,void e.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(e))return this.player.debug.error("FetchStream",`fetch response status is ${e.status} and ok is ${e.ok} and emit error and next abort()`),this.abort(),void this.emit(ct.fetchError,`fetch response status is ${e.status} and ok is ${e.ok}`);if(this.emit(nt.streamSuccess),this.startStreamRateInterval(),"undefined"!=typeof WritableStream)this.player.debug.log("FetchStream","use WritableStream() to read stream"),this.writableStream=new WritableStream({write:e=>this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debug.log("FetchStream","writableStream.write() and this.abortController.signal.aborted so return"),void(this._status=cr)):uo(this._requestAbort)?(this.player.debug.log("FetchStream","writableStream.write() and this._requestAbort is true so return"),void(this._status=cr)):"string"!=typeof e?(this._status=hr,this.streamRate&&this.streamRate(e.byteLength),i.dispatch(e)):void this.player.debug.warn("FetchStream",`writableStream.write() and value is "${e}" string so return`),close:()=>{this._status=cr,i.close(),this.emit(nt.streamEnd,"fetch done")},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debug.log("FetchStream","writableStream.abort() and this.abortController.signal.aborted so return"),void(this._status=cr);i.close();const t=e.toString();-1===t.indexOf(ps)&&-1===t.indexOf(fs)&&e.name!==ms&&(this.abort(),this.emit(ct.fetchError,e))}}),e.body.pipeTo(this.writableStream);else{this.player.debug.log("FetchStream","not support WritableStream and use getReader() to read stream");const t=e.body.getReader(),s=()=>{t.read().then((e=>{let{done:t,value:r}=e;return t?(this._status=cr,i.close(),void this.emit(nt.streamEnd,"fetch done")):this.abortController&&this.abortController.signal&&this.abortController.signal.aborted?(this.player.debug.log("FetchStream","reader.read() and this.abortController.signal.aborted so return"),void(this._status=cr)):uo(this._requestAbort)?(this.player.debug.log("FetchStream","reader.read() and this._requestAbort is true so return"),void(this._status=cr)):void("string"!=typeof r?(this._status=hr,this.streamRate&&this.streamRate(r.byteLength),i.dispatch(r),s()):this.player.debug.warn("FetchStream",`reader.read() and value is "${r}" string so return`))})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return this.player.debug.log("FetchStream","reader.read().catch() and this.abortController.signal.aborted so return"),void(this._status=cr);i.close();const t=e.toString();-1===t.indexOf(ps)&&-1===t.indexOf(fs)&&e.name!==ms&&(this.abort(),this.emit(ct.fetchError,e))}))};s()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(i.close(),this.abort(),this.emit(ct.fetchError,e))}))}abort(){this._requestAbort=!0;const e=Ja();if(this._status!==hr||po(e)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null,this.player.debug.log("FetchStream",`abort() and not abortController.abort() _status is ${this._status} and _isChrome is ${e}`)}getStreamType(){return u}}class pn extends So{constructor(e){super(),this.TAG_NAME="FetchWorkerLoader",this.player=e,this.playing=!1,this.fetchWorker=null,this.workerClearTimeout=null,this.workerUrl=null,this.destroyResolve=null,this.decoderWorkerCloseTimeout=null,this.abortController=new AbortController,this.streamRate=ha((t=>{e.emit(nt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,this._initFetchWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.fetchWorker?(this.player.debug.log(this.TAG_NAME,"send destroy"),this.fetchWorker.postMessage({cmd:tt}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug.warn(this.TAG_NAME,"send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)):(this._destroy(),setTimeout((()=>{e()}),0))}))}_destroy(){this.off(),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this._stopStreamRateInterval(),this.streamRate=null,this.fetchWorker&&(this.fetchWorker.terminate(),this.fetchWorker.onmessage=null,this.fetchWorker=null),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null),this.player.debug.log(this.TAG_NAME,"destroy")}_initFetchWorker(){const e=Ao(function(){function e(e){return!0===e||"true"===e}function t(e){return!1===e||"false"===e}const i="The user aborted a request",s="AbortError",r="AbortError",a="fetch",o="destroy",n="destroyEnd",l="buffer",d="fetchError",h="fetchClose",c="fetchSuccess",u="idle",p="buffering",f="complete";let m=new class{constructor(){this._requestAbort=!1,this._status=u,this.writableStream=null,this.isChrome=!1,this.abortController=new AbortController}destroy(){this.abort(),this.writableStream&&t(this.writableStream.locked)&&this.writableStream.close().catch((e=>{})),this.writableStream=null,this._status=u}fetchStream(t){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=Object.assign({signal:this.abortController.signal},{headers:a.headers||{}});fetch(t,o).then((t=>{if(this._requestAbort)return this._status=u,void t.body.cancel();if(!function(e){return e.ok&&e.status>=200&&e.status<=299}(t))return this.abort(),void postMessage({cmd:d,message:`fetch response status is ${t.status} and ok is ${t.ok}`});if(postMessage({cmd:c}),"undefined"!=typeof WritableStream)this.writableStream=new WritableStream({write:t=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=f:"string"!=typeof t&&(this._status=p,postMessage({cmd:l,buffer:t},[t.buffer]))},close:()=>{this._status=f,postMessage({cmd:h})},abort:e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=f);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(s)&&e.name!==r&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}}),t.body.pipeTo(this.writableStream);else{const a=t.body.getReader(),o=()=>{a.read().then((t=>{let{done:i,value:s}=t;if(i)return this._status=f,void postMessage({cmd:h});this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||e(this._requestAbort)?this._status=f:"string"!=typeof s&&(this._status=p,postMessage({cmd:l,buffer:s},[s.buffer]),o())})).catch((e=>{if(this.abortController&&this.abortController.signal&&this.abortController.signal.aborted)return void(this._status=f);const t=e.toString();-1===t.indexOf(i)&&-1===t.indexOf(s)&&e.name!==r&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}))};o()}})).catch((e=>{this.abortController&&this.abortController.signal&&this.abortController.signal.aborted||"AbortError"!==e.name&&(this.abort(),postMessage({cmd:d,message:e.toString()}))}))}abort(){if(this._requestAbort=!0,this._status!==p||t(m.isChrome)){if(this.abortController){try{this.abortController.abort()}catch(e){}this.abortController=null}}else this.abortController=null}};self.onmessage=t=>{const i=t.data;switch(i.cmd){case a:m.isChrome=e(i.isChrome),m.fetchStream(i.url,JSON.parse(i.options));break;case o:m.destroy(),m=null,postMessage({cmd:n})}}}.toString()),t=new Blob([e],{type:"text/javascript"});let i=URL.createObjectURL(t);const s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te),s.onmessage=e=>{const{demux:t}=this.player,i=e.data;switch(i.cmd){case st:this.streamRate&&this.streamRate(i.buffer.byteLength),t.dispatch(i.buffer);break;case ot:this.emit(nt.streamSuccess),this._startStreamRateInterval();break;case at:t.close(),this.emit(nt.streamEnd,"fetch done");break;case rt:t.close(),this.emit(ct.fetchError,i.message);break;case it:this._destroy()}},this.fetchWorker=s}_startStreamRateInterval(){this._stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}_stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player._times.streamStart=aa(),this.fetchWorker.postMessage({cmd:et,url:e,isChrome:Ja(),options:JSON.stringify(t)})}getStreamType(){return u}}class fn extends So{constructor(e){super(),this.player=e,this.socket=null,this.socketStatus=ut,this.wsUrl=null,this.requestAbort=!1,this.socketDestroyFnList=[],this.streamRate=ha((t=>{e.emit(nt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebsocketStream","init")}async destroy(){this._closeWebSocket(),this.stopStreamRateInterval(),this.wsUrl=null,this.off(),this.player.debug.log("WebsocketStream","destroy")}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebSocket(){const e=this.player,{debug:t,events:{proxy:i},demux:s}=e;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer";const r=i(this.socket,"open",(()=>{t.log("WebsocketStream","socket open"),this.socketStatus=pt,this.emit(nt.streamSuccess),this.player.emit(nt.websocketOpen),this.startStreamRateInterval()})),a=i(this.socket,"message",(e=>{"string"!=typeof e.data?(this.streamRate&&this.streamRate(e.data.byteLength),this._handleMessage(e.data)):this.player.debug.warn("WebsocketStream",`websocket handle message message is "${e.data}" string so return`)})),o=i(this.socket,"close",(e=>{if(this.socketStatus!==mt){if(t.log("WebsocketStream",`socket close and code is ${e.code}`),1006===e.code&&t.error("WebsocketStream",`socket close abnormally and code is ${e.code}`),uo(this.requestAbort))return this.requestAbort=!1,void t.log("WebsocketStream","socket close and requestAbort is true");s.close(),this.socketStatus=ft,this.player.emit(nt.websocketClose,e.code),this.emit(nt.streamEnd,e.code)}else t.log("WebsocketStream","socket close and status is error, so return")})),n=i(this.socket,"error",(e=>{t.error("WebsocketStream","socket error",e),this.socketStatus=mt,this.emit(ct.websocketError,e),s.close(),t.log("WebsocketStream","socket error:",e.isTrusted?"websocket user aborted":"websocket error")}));this.socketDestroyFnList.push(r,a,o,n)}_closeWebSocket(){this.socketDestroyFnList.forEach((e=>e())),!this.socket||0!==this.socket.readyState&&1!==this.socket.readyState?this.socket&&this.player.debug.log("WebsocketStream",`_closeWebSocket() socket is null or socket status is ${this.socket&&this.socket.readyState}`):(this.requestAbort=!0,this.socket.close(1e3,"Client disconnecting")),this.socket=null,this.socketStatus=ut,this.streamRate=null}_handleMessage(e){const{demux:t}=this.player;t?t.dispatch(e):this.player.debug.warn("WebsocketStream","websocket handle message demux is null so return")}fetchStream(e,t){this.player._times.streamStart=aa(),this.wsUrl=e,this._createWebSocket()}sendMessage(e){this.socket?this.socketStatus===pt?this.socket.send(e):this.player.debug.error("WebsocketStream",`websocket send message error and socket status is ${this.socketStatus}`):this.player.debug.error("WebsocketStream","websocket send message socket is null")}resetFetchStream(){this._closeWebSocket(),this._createWebSocket()}getStreamType(){return f}}class mn extends So{constructor(e){super(),this.player=e,e.debug.log("HlsStream","init")}async destroy(){return this.off(),this.player.debug.log("HlsStream","destroy"),!0}fetchStream(e){const{hlsDecoder:t,debug:i}=this.player;this.player._times.streamStart=aa(),t.loadSource(e).then((()=>{this.player.debug.log("HlsStream","loadSource success"),this.emit(nt.streamSuccess)})).catch((e=>{this.emit(ct.hlsError,e)}))}getStreamType(){return p}}class gn extends So{constructor(e){super(),this.player=e,this.webrctUrl=null,e.debug.log("WebrtcStream","init")}async destroy(){return this.webrctUrl=null,this.off(),this.player.debug.log("WebrtcStream","destroy"),!0}fetchStream(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{webrtc:i,debug:s}=this.player;if(this.player._times.streamStart=aa(),this.webrctUrl=e.replace("webrtc:",window.location.protocol),-1===this.webrctUrl.indexOf("/webrtc/play")&&this.player.isWebrtcForM7S()){const t=new URL(this.webrctUrl),i="/webrtc/play"+t.pathname;this.webrctUrl=t.origin+i+t.search,this.player.debug.log("WebrtcStream",`original url is ${e}, and new url is: ${this.webrctUrl}`)}i.loadSource(this.webrctUrl,t).then((()=>{this.player.debug.log("WebrtcStream","loadSource success"),this.emit(nt.streamSuccess)})).catch((e=>{this.player.debug.error("WebrtcStream","loadSource error",e),this.emit(ct.webrtcError,e)}))}getStreamType(){return m}}class yn extends So{constructor(e){super(),this.player=e,this.transport=null,this.wtUrl=null,this.streamRate=ha((t=>{e.emit(nt.kBps,(t/1024).toFixed(2))})),this.streamRateInterval=null,e.debug.log("WebTransportLoader","init")}async destroy(){return this.abort(),this.off(),this.player.debug.log("WebTransportLoader","destroy"),!0}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}_createWebTransport(){const e=this.player,{debug:t,events:{proxy:i},demux:s}=e;try{this.transport=new WebTransport(this.wtUrl),this.transport.ready.then((()=>{this.emit(nt.streamSuccess),this.startStreamRateInterval(),this.transport.createBidirectionalStream().then((e=>{e.readable.pipeTo(new WritableStream(s.input))}))})).catch((e=>{this.player.debug.warn("WebTransportLoader","_createWebTransport-ready",e)}))}catch(e){this.player.debug.warn("WebTransportLoader","_createWebTransport",e)}}fetchStream(e){this.player._times.streamStart=aa(),this.wtUrl=e.replace(/^wt:/,"https:"),this._createWebTransport()}abort(){if(this.transport)try{this.transport.close(),this.transport=null}catch(e){this.transport=null}}getStreamType(){return g}}class An extends So{constructor(e){super(),this.player=e,this.workUrl=null,e.debug.log("WorkerStream","init")}async destroy(){return this.workUrl=null,this.off(),this.player.debug.log("WorkerStream","destroy"),!0}sendMessage(e){this.player.decoderWorker.workerSendMessage(e)}fetchStream(e){this.workUrl=e,this.player._times.streamStart=aa(),this.player.decoderWorker.workerFetchStream(e)}getStreamType(){const e=this.player._opt.protocol;return y+" "+(e===o?u:f)}}class bn extends So{constructor(e){super(),this.TAG_NAME="AliyunRtcLoader",this.player=e,e.debug.log(this.TAG_NAME,"init")}async destroy(){return this.off(),this.player.debug.log(this.TAG_NAME,"destroy"),!0}fetchStream(e){const{aliyunRtcDecoder:t}=this.player;this.player._times.streamStart=aa(),t.loadSource(e).then((()=>{this.player.debug.log(this.TAG_NAME,"loadSource success"),this.emit(nt.streamSuccess)})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource error",e),this.emit(ct.aliyunRtcError,e)}))}getStreamType(){return A}}class vn{constructor(e){return new(vn.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){const{protocol:t,useWasm:i,playType:s,useWCS:r,useMSE:c,demuxUseWorker:u,mainThreadFetchUseWorker:p}=e;return t===o?s===v?An:s===b?i&&!Za(e)||u?An:p?pn:un:r||c?u?An:p?pn:un:An:t===a?s===v?An:s===b?i&&!Za(e)||u?An:fn:r||c?u?An:fn:An:t===n?mn:t===l?gn:t===d?yn:t===h?bn:void 0}}var _n=Ir((function(e){function t(e,r){if(!e)throw"First parameter is required.";r=new i(e,r=r||{type:"video"});var a=this;function o(t){t&&(r.initCallback=function(){t(),t=r.initCallback=null});var i=new s(e,r);(p=new i(e,r)).record(),u("recording"),r.disableLogs||console.log("Initialized recorderType:",p.constructor.name,"for output-type:",r.type)}function n(e){if(e=e||function(){},p){if("paused"===a.state)return a.resumeRecording(),void setTimeout((function(){n(e)}),1);"recording"===a.state||r.disableLogs||console.warn('Recording state should be: "recording", however current state is: ',a.state),r.disableLogs||console.log("Stopped recording "+r.type+" stream."),"gif"!==r.type?p.stop(t):(p.stop(),t()),u("stopped")}else m();function t(t){if(p){Object.keys(p).forEach((function(e){"function"!=typeof p[e]&&(a[e]=p[e])}));var i=p.blob;if(!i){if(!t)throw"Recording failed.";p.blob=i=t}if(i&&!r.disableLogs&&console.log(i.type,"->",y(i.size)),e){var s;try{s=h.createObjectURL(i)}catch(e){}"function"==typeof e.call?e.call(a,s):e(s)}r.autoWriteToDisk&&d((function(e){var t={};t[r.type+"Blob"]=e,R.Store(t)}))}else"function"==typeof e.call?e.call(a,""):e("")}}function l(e){postMessage((new FileReaderSync).readAsDataURL(e))}function d(e,t){if(!e)throw"Pass a callback function over getDataURL.";var i=t?t.blob:(p||{}).blob;if(!i)return r.disableLogs||console.warn("Blob encoder did not finish its job yet."),void setTimeout((function(){d(e,t)}),1e3);if("undefined"==typeof Worker||navigator.mozGetUserMedia){var s=new FileReader;s.readAsDataURL(i),s.onload=function(t){e(t.target.result)}}else{var a=function(e){try{var t=h.createObjectURL(new Blob([e.toString(),"this.onmessage = function (eee) {"+e.name+"(eee.data);}"],{type:"application/javascript"})),i=new Worker(t);return h.revokeObjectURL(t),i}catch(e){}}(l);a.onmessage=function(t){e(t.data)},a.postMessage(i)}}function c(e){e=e||0,"paused"!==a.state?"stopped"!==a.state&&(e>=a.recordingDuration?n(a.onRecordingStopped):(e+=1e3,setTimeout((function(){c(e)}),1e3))):setTimeout((function(){c(e)}),1e3)}function u(e){a&&(a.state=e,"function"==typeof a.onStateChanged.call?a.onStateChanged.call(a,e):a.onStateChanged(e))}var p,f='It seems that recorder is destroyed or "startRecording" is not invoked for '+r.type+" recorder.";function m(){!0!==r.disableLogs&&console.warn(f)}var g={startRecording:function(t){return r.disableLogs||console.log("RecordRTC version: ",a.version),t&&(r=new i(e,t)),r.disableLogs||console.log("started recording "+r.type+" stream."),p?(p.clearRecordedData(),p.record(),u("recording"),a.recordingDuration&&c(),a):(o((function(){a.recordingDuration&&c()})),a)},stopRecording:n,pauseRecording:function(){p?"recording"===a.state?(u("paused"),p.pause(),r.disableLogs||console.log("Paused recording.")):r.disableLogs||console.warn("Unable to pause the recording. Recording state: ",a.state):m()},resumeRecording:function(){p?"paused"===a.state?(u("recording"),p.resume(),r.disableLogs||console.log("Resumed recording.")):r.disableLogs||console.warn("Unable to resume the recording. Recording state: ",a.state):m()},initRecorder:o,setRecordingDuration:function(e,t){if(void 0===e)throw"recordingDuration is required.";if("number"!=typeof e)throw"recordingDuration must be a number.";return a.recordingDuration=e,a.onRecordingStopped=t||function(){},{onRecordingStopped:function(e){a.onRecordingStopped=e}}},clearRecordedData:function(){p?(p.clearRecordedData(),r.disableLogs||console.log("Cleared old recorded data.")):m()},getBlob:function(){if(p)return p.blob;m()},getDataURL:d,toURL:function(){if(p)return h.createObjectURL(p.blob);m()},getInternalRecorder:function(){return p},save:function(e){p?A(p.blob,e):m()},getFromDisk:function(e){p?t.getFromDisk(r.type,e):m()},setAdvertisementArray:function(e){r.advertisement=[];for(var t=e.length,i=0;i-1&&"netscape"in window&&/ rv:/.test(navigator.userAgent),f=!u&&!c&&!!navigator.webkitGetUserMedia||b()||-1!==navigator.userAgent.toLowerCase().indexOf("chrome/"),m=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);m&&!f&&-1!==navigator.userAgent.indexOf("CriOS")&&(m=!1,f=!0);var g=window.MediaStream;function y(e){if(0===e)return"0 Bytes";var t=parseInt(Math.floor(Math.log(e)/Math.log(1e3)),10);return(e/Math.pow(1e3,t)).toPrecision(3)+" "+["Bytes","KB","MB","GB","TB"][t]}function A(e,t){if(!e)throw"Blob object is required.";if(!e.type)try{e.type="video/webm"}catch(e){}var i=(e.type||"video/webm").split("/")[1];if(-1!==i.indexOf(";")&&(i=i.split(";")[0]),t&&-1!==t.indexOf(".")){var s=t.split(".");t=s[0],i=s[1]}var r=(t||Math.round(9999999999*Math.random())+888888888)+"."+i;if(void 0!==navigator.msSaveOrOpenBlob)return navigator.msSaveOrOpenBlob(e,r);if(void 0!==navigator.msSaveBlob)return navigator.msSaveBlob(e,r);var a=document.createElement("a");a.href=h.createObjectURL(e),a.download=r,a.style="display:none;opacity:0;color:transparent;",(document.body||document.documentElement).appendChild(a),"function"==typeof a.click?a.click():(a.target="_blank",a.dispatchEvent(new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}))),h.revokeObjectURL(a.href)}function b(){return"undefined"!=typeof window&&"object"==typeof window.process&&"renderer"===window.process.type||(!("undefined"==typeof process||"object"!=typeof process.versions||!process.versions.electron)||"object"==typeof navigator&&"string"==typeof navigator.userAgent&&navigator.userAgent.indexOf("Electron")>=0)}function v(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function _(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}void 0===g&&"undefined"!=typeof webkitMediaStream&&(g=webkitMediaStream),void 0!==g&&void 0===g.prototype.stop&&(g.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))}),t.invokeSaveAsDialog=A,t.getTracks=v,t.getSeekableBlob=function(e,t){if("undefined"==typeof EBML)throw new Error("Please link: https://www.webrtc-experiment.com/EBML.js");var i=new EBML.Reader,s=new EBML.Decoder,r=EBML.tools,a=new FileReader;a.onload=function(e){s.decode(this.result).forEach((function(e){i.read(e)})),i.stop();var a=r.makeMetadataSeekable(i.metadatas,i.duration,i.cues),o=this.result.slice(i.metadataSize),n=new Blob([a,o],{type:"video/webm"});t(n)},a.readAsArrayBuffer(e)},t.bytesToSize=y,t.isElectron=b;var S={};function w(){if(p||m||c)return!0;var e,t,i=navigator.userAgent,s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10);return(f||u)&&(e=i.indexOf("Chrome"),s=i.substring(e+7)),-1!==(t=s.indexOf(";"))&&(s=s.substring(0,t)),-1!==(t=s.indexOf(" "))&&(s=s.substring(0,t)),r=parseInt(""+s,10),isNaN(r)&&(s=""+parseFloat(navigator.appVersion),r=parseInt(navigator.appVersion,10)),r>=49}function E(e,t){var i=this;if(void 0===e)throw'First argument "MediaStream" is required.';if("undefined"==typeof MediaRecorder)throw"Your browser does not support the Media Recorder API. Please try other modules e.g. WhammyRecorder or StereoAudioRecorder.";if("audio"===(t=t||{mimeType:"video/webm"}).type){var s;if(v(e,"video").length&&v(e,"audio").length)navigator.mozGetUserMedia?(s=new g).addTrack(v(e,"audio")[0]):s=new g(v(e,"audio")),e=s;t.mimeType&&-1!==t.mimeType.toString().toLowerCase().indexOf("audio")||(t.mimeType=f?"audio/webm":"audio/ogg"),t.mimeType&&"audio/ogg"!==t.mimeType.toString().toLowerCase()&&navigator.mozGetUserMedia&&(t.mimeType="audio/ogg")}var r,a=[];function o(){i.timestamps.push((new Date).getTime()),"function"==typeof t.onTimeStamp&&t.onTimeStamp(i.timestamps[i.timestamps.length-1],i.timestamps)}function n(e){return r&&r.mimeType?r.mimeType:e.mimeType||"video/webm"}function l(){a=[],r=null,i.timestamps=[]}this.getArrayOfBlobs=function(){return a},this.record=function(){i.blob=null,i.clearRecordedData(),i.timestamps=[],d=[],a=[];var s=t;t.disableLogs||console.log("Passing following config over MediaRecorder API.",s),r&&(r=null),f&&!w()&&(s="video/vp8"),"function"==typeof MediaRecorder.isTypeSupported&&s.mimeType&&(MediaRecorder.isTypeSupported(s.mimeType)||(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType),s.mimeType="audio"===t.type?"audio/webm":"video/webm"));try{r=new MediaRecorder(e,s),t.mimeType=s.mimeType}catch(t){r=new MediaRecorder(e)}s.mimeType&&!MediaRecorder.isTypeSupported&&"canRecordMimeType"in r&&!1===r.canRecordMimeType(s.mimeType)&&(t.disableLogs||console.warn("MediaRecorder API seems unable to record mimeType:",s.mimeType)),r.ondataavailable=function(e){if(e.data&&d.push("ondataavailable: "+y(e.data.size)),"number"!=typeof t.timeSlice)!e.data||!e.data.size||e.data.size<100||i.blob?i.recordingCallback&&(i.recordingCallback(new Blob([],{type:n(s)})),i.recordingCallback=null):(i.blob=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)}),i.recordingCallback&&(i.recordingCallback(i.blob),i.recordingCallback=null));else if(e.data&&e.data.size&&(a.push(e.data),o(),"function"==typeof t.ondataavailable)){var r=t.getNativeBlob?e.data:new Blob([e.data],{type:n(s)});t.ondataavailable(r)}},r.onstart=function(){d.push("started")},r.onpause=function(){d.push("paused")},r.onresume=function(){d.push("resumed")},r.onstop=function(){d.push("stopped")},r.onerror=function(e){e&&(e.name||(e.name="UnknownError"),d.push("error: "+e),t.disableLogs||(-1!==e.name.toString().toLowerCase().indexOf("invalidstate")?console.error("The MediaRecorder is not in a state in which the proposed operation is allowed to be executed.",e):-1!==e.name.toString().toLowerCase().indexOf("notsupported")?console.error("MIME type (",s.mimeType,") is not supported.",e):-1!==e.name.toString().toLowerCase().indexOf("security")?console.error("MediaRecorder security error",e):"OutOfMemory"===e.name?console.error("The UA has exhaused the available memory. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"IllegalStreamModification"===e.name?console.error("A modification to the stream has occurred that makes it impossible to continue recording. An example would be the addition of a Track while recording is occurring. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"OtherRecordingError"===e.name?console.error("Used for an fatal error other than those listed above. User agents SHOULD provide as much additional information as possible in the message attribute.",e):"GenericError"===e.name?console.error("The UA cannot provide the codec or recording option that has been requested.",e):console.error("MediaRecorder Error",e)),function(e){if(!i.manuallyStopped&&r&&"inactive"===r.state)return delete t.timeslice,void r.start(6e5);setTimeout(void 0,1e3)}(),"inactive"!==r.state&&"stopped"!==r.state&&r.stop())},"number"==typeof t.timeSlice?(o(),r.start(t.timeSlice)):r.start(36e5),t.initCallback&&t.initCallback()},this.timestamps=[],this.stop=function(e){e=e||function(){},i.manuallyStopped=!0,r&&(this.recordingCallback=e,"recording"===r.state&&r.stop(),"number"==typeof t.timeSlice&&setTimeout((function(){i.blob=new Blob(a,{type:n(t)}),i.recordingCallback(i.blob)}),100))},this.pause=function(){r&&"recording"===r.state&&r.pause()},this.resume=function(){r&&"paused"===r.state&&r.resume()},this.clearRecordedData=function(){r&&"recording"===r.state&&i.stop(l),l()},this.getInternalRecorder=function(){return r},this.blob=null,this.getState=function(){return r&&r.state||"inactive"};var d=[];this.getAllStates=function(){return d},void 0===t.checkForInactiveTracks&&(t.checkForInactiveTracks=!1);i=this;!function s(){if(r&&!1!==t.checkForInactiveTracks)return!1===function(){if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}()?(t.disableLogs||console.log("MediaStream seems stopped."),void i.stop()):void setTimeout(s,1e3)}(),this.name="MediaStreamRecorder",this.toString=function(){return this.name}}function T(e,i){if(!v(e,"audio").length)throw"Your stream has no audio tracks.";var s,r=this,a=[],o=[],n=!1,l=0,d=2,c=(i=i||{}).desiredSampRate;function u(){if(!1===i.checkForInactiveTracks)return!0;if("active"in e){if(!e.active)return!1}else if("ended"in e&&e.ended)return!1;return!0}function p(e,t){function i(e,t){var i,s=e.numberOfAudioChannels,r=e.leftBuffers.slice(0),a=e.rightBuffers.slice(0),o=e.sampleRate,n=e.internalInterleavedLength,l=e.desiredSampRate;function d(e,t,i){var s=Math.round(e.length*(t/i)),r=[],a=Number((e.length-1)/(s-1));r[0]=e[0];for(var o=1;o96e3)&&(i.disableLogs||console.log("sample-rate must be under range 22050 and 96000.")),i.disableLogs||i.desiredSampRate&&console.log("Desired sample-rate: "+i.desiredSampRate);var b=!1;function _(){a=[],o=[],l=0,w=!1,n=!1,b=!1,f=null,r.leftchannel=a,r.rightchannel=o,r.numberOfAudioChannels=d,r.desiredSampRate=c,r.sampleRate=A,r.recordingLength=l,E={left:[],right:[],recordingLength:0}}function S(){s&&(s.onaudioprocess=null,s.disconnect(),s=null),m&&(m.disconnect(),m=null),_()}this.pause=function(){b=!0},this.resume=function(){if(!1===u())throw"Please make sure MediaStream is active.";if(!n)return i.disableLogs||console.log("Seems recording has been restarted."),void this.record();b=!1},this.clearRecordedData=function(){i.checkForInactiveTracks=!1,n&&this.stop(S),S()},this.name="StereoAudioRecorder",this.toString=function(){return this.name};var w=!1;s.onaudioprocess=function(e){if(!b)if(!1===u()&&(i.disableLogs||console.log("MediaStream seems stopped."),s.disconnect(),n=!1),n){w||(w=!0,i.onAudioProcessStarted&&i.onAudioProcessStarted(),i.initCallback&&i.initCallback());var t=e.inputBuffer.getChannelData(0),h=new Float32Array(t);if(a.push(h),2===d){var c=e.inputBuffer.getChannelData(1),p=new Float32Array(c);o.push(p)}l+=y,r.recordingLength=l,void 0!==i.timeSlice&&(E.recordingLength+=y,E.left.push(h),2===d&&E.right.push(p))}else m&&(m.disconnect(),m=null)},f.createMediaStreamDestination?s.connect(f.createMediaStreamDestination()):s.connect(f.destination),this.leftchannel=a,this.rightchannel=o,this.numberOfAudioChannels=d,this.desiredSampRate=c,this.sampleRate=A,r.recordingLength=l;var E={left:[],right:[],recordingLength:0};function T(){n&&"function"==typeof i.ondataavailable&&void 0!==i.timeSlice&&(E.left.length?(p({desiredSampRate:c,sampleRate:A,numberOfAudioChannels:d,internalInterleavedLength:E.recordingLength,leftBuffers:E.left,rightBuffers:1===d?[]:E.right},(function(e,t){var s=new Blob([t],{type:"audio/wav"});i.ondataavailable(s),setTimeout(T,i.timeSlice)})),E={left:[],right:[],recordingLength:0}):setTimeout(T,i.timeSlice))}}function k(e,t){if("undefined"==typeof html2canvas)throw"Please link: https://www.webrtc-experiment.com/screenshot.js";(t=t||{}).frameInterval||(t.frameInterval=10);var i=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){e in document.createElement("canvas")&&(i=!0)}));var s,r,a,o=!(!window.webkitRTCPeerConnection&&!window.webkitGetUserMedia||!window.chrome),n=50,l=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);if(o&&l&&l[2]&&(n=parseInt(l[2],10)),o&&n<52&&(i=!1),t.useWhammyRecorder&&(i=!1),i)if(t.disableLogs||console.log("Your browser supports both MediRecorder API and canvas.captureStream!"),e instanceof HTMLCanvasElement)s=e;else{if(!(e instanceof CanvasRenderingContext2D))throw"Please pass either HTMLCanvasElement or CanvasRenderingContext2D.";s=e.canvas}else navigator.mozGetUserMedia&&(t.disableLogs||console.error("Canvas recording is NOT supported in Firefox."));this.record=function(){if(a=!0,i&&!t.useWhammyRecorder){var e;"captureStream"in s?e=s.captureStream(25):"mozCaptureStream"in s?e=s.mozCaptureStream(25):"webkitCaptureStream"in s&&(e=s.webkitCaptureStream(25));try{var o=new g;o.addTrack(v(e,"video")[0]),e=o}catch(e){}if(!e)throw"captureStream API are NOT available.";(r=new E(e,{mimeType:t.mimeType||"video/webm"})).record()}else p.frames=[],u=(new Date).getTime(),c();t.initCallback&&t.initCallback()},this.getWebPImages=function(i){if("canvas"===e.nodeName.toLowerCase()){var s=p.frames.length;p.frames.forEach((function(e,i){var r=s-i;t.disableLogs||console.log(r+"/"+s+" frames remaining"),t.onEncodingCallback&&t.onEncodingCallback(r,s);var a=e.image.toDataURL("image/webp",1);p.frames[i].image=a})),t.disableLogs||console.log("Generating WebM"),i()}else i()},this.stop=function(e){a=!1;var s=this;i&&r?r.stop(e):this.getWebPImages((function(){p.compile((function(i){t.disableLogs||console.log("Recording finished!"),s.blob=i,s.blob.forEach&&(s.blob=new Blob([],{type:"video/webm"})),e&&e(s.blob),p.frames=[]}))}))};var d=!1;function h(){p.frames=[],a=!1,d=!1}function c(){if(d)return u=(new Date).getTime(),setTimeout(c,500);if("canvas"===e.nodeName.toLowerCase()){var i=(new Date).getTime()-u;return u=(new Date).getTime(),p.frames.push({image:(s=document.createElement("canvas"),r=s.getContext("2d"),s.width=e.width,s.height=e.height,r.drawImage(e,0,0),s),duration:i}),void(a&&setTimeout(c,t.frameInterval))}var s,r;html2canvas(e,{grabMouse:void 0===t.showMousePointer||t.showMousePointer,onrendered:function(e){var i=(new Date).getTime()-u;if(!i)return setTimeout(c,t.frameInterval);u=(new Date).getTime(),p.frames.push({image:e.toDataURL("image/webp",1),duration:i}),a&&setTimeout(c,t.frameInterval)}})}this.pause=function(){d=!0,r instanceof E&&r.pause()},this.resume=function(){d=!1,r instanceof E?r.resume():a||this.record()},this.clearRecordedData=function(){a&&this.stop(h),h()},this.name="CanvasRecorder",this.toString=function(){return this.name};var u=(new Date).getTime(),p=new x.Video(100)}function C(e,t){function i(e){e=void 0!==e?e:10;var t=(new Date).getTime()-l;return t?a?(l=(new Date).getTime(),setTimeout(i,100)):(l=(new Date).getTime(),n.paused&&n.play(),c.drawImage(n,0,0,h.width,h.height),d.frames.push({duration:t,image:h.toDataURL("image/webp")}),void(r||setTimeout(i,e,e))):setTimeout(i,e,e)}function s(e,t,i,s,r){var a=document.createElement("canvas");a.width=h.width,a.height=h.height;var o=a.getContext("2d"),n=[],l=-1===t,d=t&&t>0&&t<=e.length?t:e.length,c=0,u=0,p=0,f=Math.sqrt(Math.pow(255,2)+Math.pow(255,2)+Math.pow(255,2)),m=i&&i>=0&&i<=1?i:0,g=s&&s>=0&&s<=1?s:0,y=!1;!function(e){var t=-1,i=e.length;!function s(){++t!==i?setTimeout((function(){e.functionToLoop(s,t)}),1):e.callback()}()}({length:d,functionToLoop:function(t,i){var s,r,a,d=function(){!y&&a-s<=a*g||(l&&(y=!0),n.push(e[i])),t()};if(y)d();else{var A=new Image;A.onload=function(){o.drawImage(A,0,0,h.width,h.height);var e=o.getImageData(0,0,h.width,h.height);s=0,r=e.data.length,a=e.data.length/4;for(var t=0;t127)throw"TrackNumber > 127 not supported";return[128|e.trackNum,e.timecode>>8,255&e.timecode,t].map((function(e){return String.fromCharCode(e)})).join("")+e.frame}({discardable:0,frame:e.data.slice(4),invisible:0,keyframe:1,lacing:0,trackNum:1,timecode:Math.round(t)});return t+=e.duration,{data:i,id:163}})))}function i(e){for(var t=[];e>0;)t.push(255&e),e>>=8;return new Uint8Array(t.reverse())}function s(e){var t=[];e=(e.length%8?new Array(9-e.length%8).join("0"):"")+e;for(var i=0;i1?2*a[0].width:a[0].width;var n=1;3!==e&&4!==e||(n=2),5!==e&&6!==e||(n=3),7!==e&&8!==e||(n=4),9!==e&&10!==e||(n=5),r.height=a[0].height*n}else r.width=o.width||360,r.height=o.height||240;t&&t instanceof HTMLVideoElement&&u(t),a.forEach((function(e,t){u(e,t)})),setTimeout(c,o.frameInterval)}}function u(e,t){if(!s){var i=0,r=0,o=e.width,n=e.height;1===t&&(i=e.width),2===t&&(r=e.height),3===t&&(i=e.width,r=e.height),4===t&&(r=2*e.height),5===t&&(i=e.width,r=2*e.height),6===t&&(r=3*e.height),7===t&&(i=e.width,r=3*e.height),void 0!==e.stream.left&&(i=e.stream.left),void 0!==e.stream.top&&(r=e.stream.top),void 0!==e.stream.width&&(o=e.stream.width),void 0!==e.stream.height&&(n=e.stream.height),a.drawImage(e,i,r,o,n),"function"==typeof e.stream.onRender&&e.stream.onRender(a,i,r,o,n,t)}}function p(e){var i=document.createElement("video");return function(e,t){"srcObject"in t?t.srcObject=e:"mozSrcObject"in t?t.mozSrcObject=e:t.srcObject=e}(e,i),i.className=t,i.muted=!0,i.volume=0,i.width=e.width||o.width||360,i.height=e.height||o.height||240,i.play(),i}function f(t){i=[],(t=t||e).forEach((function(e){if(e.getTracks().filter((function(e){return"video"===e.kind})).length){var t=p(e);t.stream=e,i.push(t)}}))}void 0!==n?h.AudioContext=n:"undefined"!=typeof webkitAudioContext&&(h.AudioContext=webkitAudioContext),this.startDrawingFrames=function(){c()},this.appendStreams=function(t){if(!t)throw"First parameter is required.";t instanceof Array||(t=[t]),t.forEach((function(t){var s=new d;if(t.getTracks().filter((function(e){return"video"===e.kind})).length){var r=p(t);r.stream=t,i.push(r),s.addTrack(t.getTracks().filter((function(e){return"video"===e.kind}))[0])}if(t.getTracks().filter((function(e){return"audio"===e.kind})).length){var a=o.audioContext.createMediaStreamSource(t);o.audioDestination=o.audioContext.createMediaStreamDestination(),a.connect(o.audioDestination),s.addTrack(o.audioDestination.stream.getTracks().filter((function(e){return"audio"===e.kind}))[0])}e.push(s)}))},this.releaseStreams=function(){i=[],s=!0,o.gainNode&&(o.gainNode.disconnect(),o.gainNode=null),o.audioSources.length&&(o.audioSources.forEach((function(e){e.disconnect()})),o.audioSources=[]),o.audioDestination&&(o.audioDestination.disconnect(),o.audioDestination=null),o.audioContext&&o.audioContext.close(),o.audioContext=null,a.clearRect(0,0,r.width,r.height),r.stream&&(r.stream.stop(),r.stream=null)},this.resetVideoStreams=function(e){!e||e instanceof Array||(e=[e]),f(e)},this.name="MultiStreamsMixer",this.toString=function(){return this.name},this.getMixedStream=function(){s=!1;var t=function(){var e;f(),"captureStream"in r?e=r.captureStream():"mozCaptureStream"in r?e=r.mozCaptureStream():o.disableLogs||console.error("Upgrade to latest Chrome or otherwise enable this flag: chrome://flags/#enable-experimental-web-platform-features");var t=new d;return e.getTracks().filter((function(e){return"video"===e.kind})).forEach((function(e){t.addTrack(e)})),r.stream=t,t}(),i=function(){h.AudioContextConstructor||(h.AudioContextConstructor=new h.AudioContext);o.audioContext=h.AudioContextConstructor,o.audioSources=[],!0===o.useGainNode&&(o.gainNode=o.audioContext.createGain(),o.gainNode.connect(o.audioContext.destination),o.gainNode.gain.value=0);var t=0;if(e.forEach((function(e){if(e.getTracks().filter((function(e){return"audio"===e.kind})).length){t++;var i=o.audioContext.createMediaStreamSource(e);!0===o.useGainNode&&i.connect(o.gainNode),o.audioSources.push(i)}})),!t)return;return o.audioDestination=o.audioContext.createMediaStreamDestination(),o.audioSources.forEach((function(e){e.connect(o.audioDestination)})),o.audioDestination.stream}();return i&&i.getTracks().filter((function(e){return"audio"===e.kind})).forEach((function(e){t.addTrack(e)})),e.forEach((function(e){e.fullcanvas})),t}}function P(e,t){e=e||[];var i,s,r=this;(t=t||{elementClass:"multi-streams-mixer",mimeType:"video/webm",video:{width:360,height:240}}).frameInterval||(t.frameInterval=10),t.video||(t.video={}),t.video.width||(t.video.width=360),t.video.height||(t.video.height=240),this.record=function(){var r;i=new L(e,t.elementClass||"multi-streams-mixer"),(r=[],e.forEach((function(e){v(e,"video").forEach((function(e){r.push(e)}))})),r).length&&(i.frameInterval=t.frameInterval||10,i.width=t.video.width||360,i.height=t.video.height||240,i.startDrawingFrames()),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()),(s=new E(i.getMixedStream(),t)).record()},this.stop=function(e){s&&s.stop((function(t){r.blob=t,e(t),r.clearRecordedData()}))},this.pause=function(){s&&s.pause()},this.resume=function(){s&&s.resume()},this.clearRecordedData=function(){s&&(s.clearRecordedData(),s=null),i&&(i.releaseStreams(),i=null)},this.addStreams=function(r){if(!r)throw"First parameter is required.";r instanceof Array||(r=[r]),e.concat(r),s&&i&&(i.appendStreams(r),t.previewStream&&"function"==typeof t.previewStream&&t.previewStream(i.getMixedStream()))},this.resetVideoStreams=function(e){i&&(!e||e instanceof Array||(e=[e]),i.resetVideoStreams(e))},this.getMixer=function(){return i},this.name="MultiStreamRecorder",this.toString=function(){return this.name}}function B(e,t){var i,s,r;function a(){return new ReadableStream({start:function(s){var r=document.createElement("canvas"),a=document.createElement("video"),o=!0;a.srcObject=e,a.muted=!0,a.height=t.height,a.width=t.width,a.volume=0,a.onplaying=function(){r.width=t.width,r.height=t.height;var e=r.getContext("2d"),n=1e3/t.frameRate,l=setInterval((function(){if(i&&(clearInterval(l),s.close()),o&&(o=!1,t.onVideoProcessStarted&&t.onVideoProcessStarted()),e.drawImage(a,0,0),"closed"!==s._controlledReadableStream.state)try{s.enqueue(e.getImageData(0,0,t.width,t.height))}catch(e){}}),n)},a.play()}})}function o(e,l){if(!t.workerPath&&!l)return i=!1,void fetch("https://unpkg.com/webm-wasm@latest/dist/webm-worker.js").then((function(t){t.arrayBuffer().then((function(t){o(e,t)}))}));if(!t.workerPath&&l instanceof ArrayBuffer){var d=new Blob([l],{type:"text/javascript"});t.workerPath=h.createObjectURL(d)}t.workerPath||console.error("workerPath parameter is missing."),(s=new Worker(t.workerPath)).postMessage(t.webAssemblyPath||"https://unpkg.com/webm-wasm@latest/dist/webm-wasm.wasm"),s.addEventListener("message",(function(e){"READY"===e.data?(s.postMessage({width:t.width,height:t.height,bitrate:t.bitrate||1200,timebaseDen:t.frameRate||30,realtime:t.realtime}),a().pipeTo(new WritableStream({write:function(e){i?console.error("Got image, but recorder is finished!"):s.postMessage(e.data.buffer,[e.data.buffer])}}))):e.data&&(r||n.push(e.data))}))}"undefined"!=typeof ReadableStream&&"undefined"!=typeof WritableStream||console.error("Following polyfill is strongly recommended: https://unpkg.com/@mattiasbuelens/web-streams-polyfill/dist/polyfill.min.js"),(t=t||{}).width=t.width||640,t.height=t.height||480,t.frameRate=t.frameRate||30,t.bitrate=t.bitrate||1200,t.realtime=t.realtime||!0,this.record=function(){n=[],r=!1,this.blob=null,o(e),"function"==typeof t.initCallback&&t.initCallback()},this.pause=function(){r=!0},this.resume=function(){r=!1};var n=[];this.stop=function(e){i=!0;var t=this;!function(e){s?(s.addEventListener("message",(function(t){null===t.data&&(s.terminate(),s=null,e&&e())})),s.postMessage(null)):e&&e()}((function(){t.blob=new Blob(n,{type:"video/webm"}),e(t.blob)}))},this.name="WebAssemblyRecorder",this.toString=function(){return this.name},this.clearRecordedData=function(){n=[],r=!1,this.blob=null},this.blob=null}t.DiskStorage=R,t.GifRecorder=D,t.MultiStreamRecorder=P,t.RecordRTCPromisesHandler=function(e,i){if(!this)throw'Use "new RecordRTCPromisesHandler()"';if(void 0===e)throw'First argument "MediaStream" is required.';var s=this;s.recordRTC=new t(e,i),this.startRecording=function(){return new Promise((function(e,t){try{s.recordRTC.startRecording(),e()}catch(e){t(e)}}))},this.stopRecording=function(){return new Promise((function(e,t){try{s.recordRTC.stopRecording((function(i){s.blob=s.recordRTC.getBlob(),s.blob&&s.blob.size?e(i):t("Empty blob.",s.blob)}))}catch(e){t(e)}}))},this.pauseRecording=function(){return new Promise((function(e,t){try{s.recordRTC.pauseRecording(),e()}catch(e){t(e)}}))},this.resumeRecording=function(){return new Promise((function(e,t){try{s.recordRTC.resumeRecording(),e()}catch(e){t(e)}}))},this.getDataURL=function(e){return new Promise((function(e,t){try{s.recordRTC.getDataURL((function(t){e(t)}))}catch(e){t(e)}}))},this.getBlob=function(){return new Promise((function(e,t){try{e(s.recordRTC.getBlob())}catch(e){t(e)}}))},this.getInternalRecorder=function(){return new Promise((function(e,t){try{e(s.recordRTC.getInternalRecorder())}catch(e){t(e)}}))},this.reset=function(){return new Promise((function(e,t){try{e(s.recordRTC.reset())}catch(e){t(e)}}))},this.destroy=function(){return new Promise((function(e,t){try{e(s.recordRTC.destroy())}catch(e){t(e)}}))},this.getState=function(){return new Promise((function(e,t){try{e(s.recordRTC.getState())}catch(e){t(e)}}))},this.blob=null,this.version="5.6.2"},t.WebAssemblyRecorder=B}));class Sn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseSPS(e){let t=Sn._ebsp2rbsp(e),i=new Ur(t);i.readByte();let s=i.readByte();i.readByte();let r=i.readByte();i.readUEG();let a=Sn.getProfileString(s),o=Sn.getLevelString(r),n=1,l=420,d=[0,420,422,444],h=8;if((100===s||110===s||122===s||244===s||44===s||83===s||86===s||118===s||128===s||138===s||144===s)&&(n=i.readUEG(),3===n&&i.readBits(1),n<=3&&(l=d[n]),h=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool())){let e=3!==n?8:12;for(let t=0;t0&&e<16?(v=t[e-1],_=s[e-1]):255===e&&(v=i.readByte()<<8|i.readByte(),_=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);w=i.readBool(),E=t,T=2*e,S=E/T}}let k=1;1===v&&1===_||(k=v/_);let C=0,x=0;if(0===n)C=1,x=2-m;else{C=3===n?1:2,x=(1===n?2:1)*(2-m)}let R=16*(p+1),D=16*(f+1)*(2-m);R-=(g+y)*C,D-=(A+b)*x;let L=Math.ceil(R*k);return i.destroy(),i=null,{profile_string:a,level_string:o,bit_depth:h,ref_frames:u,chroma_format:l,chroma_format_string:Sn.getChromaFormatString(l),frame_rate:{fixed:w,fps:S,fps_den:T,fps_num:E},sar_ratio:{width:v,height:_},codec_size:{width:R,height:D},present_size:{width:L,height:D}}}static parseSPS$2(e){let t=e.subarray(1,4),i="avc1.";for(let e=0;e<3;e++){let s=t[e].toString(16);s.length<2&&(s="0"+s),i+=s}let s=Sn._ebsp2rbsp(e),r=new Ur(s);r.readByte();let a=r.readByte();r.readByte();let o=r.readByte();r.readUEG();let n=Sn.getProfileString(a),l=Sn.getLevelString(o),d=1,h=420,c=[0,420,422,444],u=8,p=8;if((100===a||110===a||122===a||244===a||44===a||83===a||86===a||118===a||128===a||138===a||144===a)&&(d=r.readUEG(),3===d&&r.readBits(1),d<=3&&(h=c[d]),u=r.readUEG()+8,p=r.readUEG()+8,r.readBits(1),r.readBool())){let e=3!==d?8:12;for(let t=0;t0&&e<16?(w=t[e-1],E=i[e-1]):255===e&&(w=r.readByte()<<8|r.readByte(),E=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let e=r.readBits(32),t=r.readBits(32);k=r.readBool(),C=t,x=2*e,T=C/x}}let R=1;1===w&&1===E||(R=w/E);let D=0,L=0;if(0===d)D=1,L=2-A;else{D=3===d?1:2,L=(1===d?2:1)*(2-A)}let P=16*(g+1),B=16*(y+1)*(2-A);P-=(b+v)*D,B-=(_+S)*L;let I=Math.ceil(P*R);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:a,level_idc:o,profile_string:n,level_string:l,chroma_format_idc:d,bit_depth:u,bit_depth_luma:u,bit_depth_chroma:p,ref_frames:m,chroma_format:h,chroma_format_string:Sn.getChromaFormatString(h),frame_rate:{fixed:k,fps:T,fps_den:x,fps_num:C},sar_ratio:{width:w,height:E},codec_size:{width:P,height:B},present_size:{width:I,height:B}}}static _skipScalingList(e,t){let i=8,s=8,r=0;for(let a=0;a=this.buflen)return this.iserro=!0,0;this.iserro=!1,i=this.bufoff+e>8?8-this.bufoff:e,t<<=i,t+=this.buffer[this.bufpos]>>8-this.bufoff-i&255>>8-i,this.bufoff+=i,e-=i,8==this.bufoff&&(this.bufpos++,this.bufoff=0)}return t}look(e){let t=this.bufpos,i=this.bufoff,s=this.read(e);return this.bufpos=t,this.bufoff=i,s}read_golomb(){let e;for(e=0;0===this.read(1)&&!this.iserro;e++);return(1<>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.sps,4),t.sps=s}if(t.pps){const e=t.pps.byteLength,i=new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e]),s=new Uint8Array(e+4);s.set(i,0),s.set(t.pps,4),t.pps=s}return t}function Tn(e){let{sps:t,pps:i}=e,s=8+t.byteLength+1+2+i.byteLength,r=!1;const a=Sn.parseSPS$2(t);66!==t[3]&&77!==t[3]&&88!==t[3]&&(r=!0,s+=4);let o=new Uint8Array(s);o[0]=1,o[1]=t[1],o[2]=t[2],o[3]=t[3],o[4]=255,o[5]=225;let n=t.byteLength;o[6]=n>>>8,o[7]=255&n;let l=8;o.set(t,8),l+=n,o[l]=1;let d=i.byteLength;o[l+1]=d>>>8,o[l+2]=255&d,o.set(i,l+3),l+=3+d,r&&(o[l]=252|a.chroma_format_idc,o[l+1]=248|a.bit_depth_luma-8,o[l+2]=248|a.bit_depth_chroma-8,o[l+3]=0,l+=4);const h=[23,0,0,0,0],c=new Uint8Array(h.length+o.byteLength);return c.set(h,0),c.set(o,h.length),c}function kn(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function Cn(e){return 31&e[0]}function xn(e){return e===Bt}function Rn(e){return!function(e){return e===xt||e===Rt}(e)&&!xn(e)}function Dn(e){return e===Dt}class Ln{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=31&e[i],r=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,s>=Ut||0===r&&(t={type:s,data:e.subarray(i,a)})}return t}}class Pn{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}const Bn=e=>{let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)},In=e=>{switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}};class Mn{static _ebsp2rbsp(e){let t=e,i=t.byteLength,s=new Uint8Array(i),r=0;for(let e=0;e=2&&3===t[e]&&0===t[e-1]&&0===t[e-2]||(s[r]=t[e],r++);return new Uint8Array(s.buffer,0,r)}static parseVPS(e){let t=Mn._ebsp2rbsp(e),i=new Ur(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}}static parseSPS(e){let t=Mn._ebsp2rbsp(e),i=new Ur(t);i.readByte(),i.readByte();let s=0,r=0,a=0,o=0;i.readBits(4);let n=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],w=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<=16?(I=t[e-1],M=s[e-1]):255===e&&(I=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()){i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())}if(i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),P=i.readBool(),P&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()){if(F=i.readBits(32),O=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool()){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();U=r;let a=!0,o=1;r||(a=i.readBool());let n=!1;if(a?i.readUEG():n=i.readBool(),n||(o=i.readUEG()+1),e){for(let e=0;e>6&3,i.general_tier_flag=e[1]>>5&1,i.general_profile_idc=31&e[1],i.general_profile_compatibility_flags=e[2]<<24|e[3]<<16|e[4]<<8|e[5],i.general_constraint_indicator_flags=e[6]<<24|e[7]<<16|e[8]<<8|e[9],i.general_constraint_indicator_flags=i.general_constraint_indicator_flags<<16|e[10]<<8|e[11],i.general_level_idc=e[12],i.min_spatial_segmentation_idc=(15&e[13])<<8|e[14],i.parallelismType=3&e[15],i.chromaFormat=3&e[16],i.bitDepthLumaMinus8=7&e[17],i.bitDepthChromaMinus8=7&e[18],i.avgFrameRate=e[19]<<8|e[20],i.constantFrameRate=e[21]>>6&3,i.numTemporalLayers=e[21]>>3&7,i.temporalIdNested=e[21]>>2&1,i.lengthSizeMinusOne=3&e[21];let s=e[22],r=e.slice(23);for(let e=0;e0)for(let t=i;t<8;t++)e.read(2);s.sub_layer_profile_space=[],s.sub_layer_tier_flag=[],s.sub_layer_profile_idc=[],s.sub_layer_profile_compatibility_flag=[],s.sub_layer_progressive_source_flag=[],s.sub_layer_interlaced_source_flag=[],s.sub_layer_non_packed_constraint_flag=[],s.sub_layer_frame_only_constraint_flag=[],s.sub_layer_level_idc=[];for(let t=0;t{let t=Bn(e),i=new Ur(t);return i.readByte(),i.readByte(),i.readBits(4),i.readBits(2),i.readBits(6),{num_temporal_layers:i.readBits(3)+1,temporal_id_nested:i.readBool()}})(t),o=(e=>{let t=Bn(e),i=new Ur(t);i.readByte(),i.readByte();let s=0,r=0,a=0,o=0;i.readBits(4);let n=i.readBits(3);i.readBool();let l=i.readBits(2),d=i.readBool(),h=i.readBits(5),c=i.readByte(),u=i.readByte(),p=i.readByte(),f=i.readByte(),m=i.readByte(),g=i.readByte(),y=i.readByte(),A=i.readByte(),b=i.readByte(),v=i.readByte(),_=i.readByte(),S=[],w=[];for(let e=0;e0)for(let e=n;e<8;e++)i.readBits(2);for(let e=0;e1&&i.readSEG();for(let e=0;e0&&e<16?(I=t[e-1],M=s[e-1]):255===e&&(I=i.readBits(16),M=i.readBits(16))}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool(),i.readBool(),i.readBool(),P=i.readBool(),P&&(s+=i.readUEG(),r+=i.readUEG(),a+=i.readUEG(),o+=i.readUEG()),i.readBool()&&(F=i.readBits(32),O=i.readBits(32),i.readBool()&&(i.readUEG(),i.readBool()))){let e=!1,t=!1,s=!1;e=i.readBool(),t=i.readBool(),(e||t)&&(s=i.readBool(),s&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5)),i.readBits(4),i.readBits(4),s&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5));for(let r=0;r<=n;r++){let r=i.readBool();U=r;let a=!1,o=1;r||(a=i.readBool());let n=!1;if(a?i.readSEG():n=i.readBool(),n||(cpbcnt=i.readUEG()+1),e)for(let e=0;e{let t=Bn(e),i=new Ur(t);i.readByte(),i.readByte(),i.readUEG(),i.readUEG(),i.readBool(),i.readBool(),i.readBits(3),i.readBool(),i.readBool(),i.readUEG(),i.readUEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool()&&i.readUEG(),i.readSEG(),i.readSEG(),i.readBool(),i.readBool(),i.readBool(),i.readBool();let s=i.readBool(),r=i.readBool(),a=1;return r&&s?a=0:r?a=3:s&&(a=2),{parallelismType:a}})(i);r=Object.assign(r,a,o,n);let l=23+(5+t.byteLength)+(5+s.byteLength)+(5+i.byteLength),d=new Uint8Array(l);d[0]=1,d[1]=(3&r.general_profile_space)<<6|(r.general_tier_flag?1:0)<<5|31&r.general_profile_idc,d[2]=r.general_profile_compatibility_flags_1||0,d[3]=r.general_profile_compatibility_flags_2||0,d[4]=r.general_profile_compatibility_flags_3||0,d[5]=r.general_profile_compatibility_flags_4||0,d[6]=r.general_constraint_indicator_flags_1||0,d[7]=r.general_constraint_indicator_flags_2||0,d[8]=r.general_constraint_indicator_flags_3||0,d[9]=r.general_constraint_indicator_flags_4||0,d[10]=r.general_constraint_indicator_flags_5||0,d[11]=r.general_constraint_indicator_flags_6||0,d[12]=60,d[13]=240|(3840&r.min_spatial_segmentation_idc)>>8,d[14]=255&r.min_spatial_segmentation_idc,d[15]=252|3&r.parallelismType,d[16]=252|3&r.chroma_format_idc,d[17]=248|7&r.bit_depth_luma_minus8,d[18]=248|7&r.bit_depth_chroma_minus8,d[19]=0,d[20]=0,d[21]=(3&r.constant_frame_rate)<<6|(7&r.num_temporal_layers)<<3|(r.temporal_id_nested?1:0)<<2|3,d[22]=3,d[23]=128|jt,d[24]=0,d[25]=1,d[26]=(65280&t.byteLength)>>8,d[27]=(255&t.byteLength)>>0,d.set(t,28),d[23+(5+t.byteLength)+0]=128|Gt,d[23+(5+t.byteLength)+1]=0,d[23+(5+t.byteLength)+2]=1,d[23+(5+t.byteLength)+3]=(65280&s.byteLength)>>8,d[23+(5+t.byteLength)+4]=(255&s.byteLength)>>0,d.set(s,23+(5+t.byteLength)+5),d[23+(5+t.byteLength+5+s.byteLength)+0]=128|Vt,d[23+(5+t.byteLength+5+s.byteLength)+1]=0,d[23+(5+t.byteLength+5+s.byteLength)+2]=1,d[23+(5+t.byteLength+5+s.byteLength)+3]=(65280&i.byteLength)>>8,d[23+(5+t.byteLength+5+s.byteLength)+4]=(255&i.byteLength)>>0,d.set(i,23+(5+t.byteLength+5+s.byteLength)+5);const h=[28,0,0,0,0],c=new Uint8Array(h.length+d.byteLength);return c.set(h,0),c.set(d,h.length),c}function jn(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}function zn(e){return(126&e[0])>>1}function Gn(e){return!function(e){return e>=32&&e<=40}(e)}function Hn(e){return e>=16&&e<=21}class Vn{constructor(e){this.data=e,this.eofFlag=!1,this.currentStartcodeOffset=this.findNextStartCodeOffset(0),this.eofFlag&&console.error("Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data;for(;;){if(t+3>=i.byteLength)return this.eofFlag=!0,i.byteLength;let e=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],s=i[t+0]<<16|i[t+1]<<8|i[t+2];if(1===e||1===s)return t;t++}}readNextNaluPayload(){let e=this.data,t=null;for(;null==t&&!this.eofFlag;){let i=this.currentStartcodeOffset;i+=1===(e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3])?4:3;let s=e[i]>>1&63,r=(128&e[i])>>>7,a=this.findNextStartCodeOffset(i);this.currentStartcodeOffset=a,0===r&&(t={type:s,data:e.subarray(i,a)})}return t}}class $n{constructor(e){let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}}class Wn extends So{constructor(e){super(),this.TAG_NAME="recorderCommon",this.player=e,this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.recordingInterval=null,this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo={codecWidth:0,codecHeight:0,presentWidth:0,presentHeight:0,refSampleDuration:0,timescale:1e3,avcc:null,videoType:""},this.audioMetaInfo={timescale:1e3,sampleRate:0,refSampleDuration:0,channelCount:0,codec:"",originalCodec:"",audioType:"",extraData:new Uint8Array(0)}}destroy(){this._reset(),this.sps=null,this.pps=null,this.vps=null,this.codecId=null,this.audioCodeId=null,this.metaInfo=null,this.audioMetaInfo=null}get isH264(){return this.codecId===vt}get isH265(){return this.codecId===_t}setFileName(e){this.fileName=e}get isRecording(){return this._isRecording}get recording(){return this._isRecording}get recordTime(){return this._recordingTimestamp}startRecord(){}handleAddNaluTrack(e,t,i,s){}handleAddAudioTrack(e,t){}handleAddTrack(e){}stopRecordAndSave(){}startRecordingInterval(){}isWasmMp4(){return!1}stopRecordingInterval(){this.recordingInterval&&clearInterval(this.recordingInterval),this.recordingInterval=null}getToTalByteLength(){return 0}_reset(){this.fileName="",this._isRecording=!1,this._recordingTimestamp=0,this.stopRecordingInterval()}initMetaData(e,t){let i;const s=e.slice(5);if(this.codecId=t,this.metaInfo.avcc=s,t===vt)i=En(s);else if(t===_t){i=function(e){let t=23;const i=e[t];if((63&i)!==jt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and vpsTag is ${i}`),{};t+=2,t+=1;const s=e[t+1]|e[t]<<8;t+=2;const r=e.slice(t,t+s);t+=s;const a=e[t];if((63&a)!==Gt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and sps tag is ${a}`),{};t+=2,t+=1;const o=e[t+1]|e[t]<<8;t+=2;const n=e.slice(t,t+o);t+=o;const l=e[t];if((63&l)!==Vt)return console.warn(`parseHEVCDecoderVPSAndSPSAndPPS and pps tag is ${l}`),{};t+=2,t+=1;const d=e[t+1]|e[t]<<8;t+=2;const h=e.slice(t,t+d),c=new Uint8Array([o>>>24&255,o>>>16&255,o>>>8&255,255&o]),u=new Uint8Array([d>>>24&255,d>>>16&255,d>>>8&255,255&d]),p=new Uint8Array([s>>>24&255,s>>>16&255,s>>>8&255,255&s]),f=new Uint8Array(o+4);f.set(c,0),f.set(n,4);const m=new Uint8Array(d+4);m.set(u,0),m.set(h,4);const g=new Uint8Array(s+4);return g.set(p,0),g.set(r,4),{sps:f,pps:m,vps:g}}(s);const t=Un(e);i=Object.assign(i,t)}i&&(i.vps&&(this.vps=i.vps),i.pps&&(this.pps=i.pps),i.sps&&(this.sps=i.sps),i.presentWidth&&(this.metaInfo.presentWidth=i.presentWidth),i.presentHeight&&(this.metaInfo.presentHeight=i.presentHeight),i.codecWidth&&(this.metaInfo.codecWidth=i.codecWidth),i.codecHeight&&(this.metaInfo.codecHeight=i.codecHeight),i.timescale&&(this.metaInfo.timescale=i.timescale),i.refSampleDuration&&(this.metaInfo.refSampleDuration=i.refSampleDuration),i.videoType&&(this.metaInfo.videoType=i.videoType))}initAudioMetaData(e,t){this.audioCodeId=t;const i=e[0]>>1&1;let s=null;t===Et?(s=function(e){let t={},i=new Wr(e);return i.read(16),t.object_type=Jr(i),t.sample_rate=qr(i,t),t.chan_config=i.read(4),t.chan_config{r.onload=function(e){i.decode(this.result).forEach((function(e){t.read(e)})),t.stop();const r=s.makeMetadataSeekable(t.metadatas,t.duration,t.cues),o=this.result.slice(t.metadataSize),n=new Blob([r,o],{type:"video/webm"});a(n)},r.readAsArrayBuffer(e)}))}startRecord(){const e=this.player.debug,t={type:"video",mimeType:"video/webm;codecs=h264",timeSlice:1e3,onTimeStamp:t=>{e.log("RecorderRTC","record timestamp :"+t),null===this._startRecordingTimestamp&&(this._startRecordingTimestamp=t),this._recordingTimestamp=(t-this._startRecordingTimestamp)/1e3},ondataavailable:t=>{this.totalByteLength+=t.size,e.log("RecorderRTC","ondataavailable",t.size)},disableLogs:!this.player._opt.debug};try{let i=null;if(this.player.getRenderType()===$?i=this.player.video.$videoElement.captureStream(25):this.player.video.mediaStream?i=this.player.video.mediaStream:this.player.isOldHls()||this.player._opt.useMSE||this.player._opt.useWCS?i=this.player.video.$videoElement.captureStream(25):this.player.isWebrtcH264()?i=this.player.webrtc.videoStream:this.player.isAliyunRtc()&&(i=this.player.video.$videoElement.captureStream(25)),!i)return e.error("RecorderRTC","startRecord error and can not create stream"),void this.player.emitError(nt.recordCreateError,"can not create stream");if(this.player.audio&&this.player.audio.mediaStreamAudioDestinationNode&&this.player.audio.mediaStreamAudioDestinationNode.stream&&!this.player.audio.isStateSuspended()&&this.player.audio.hasAudio&&this.player._opt.hasAudio){const e=this.player.audio.mediaStreamAudioDestinationNode.stream;if(e.getAudioTracks().length>0){const t=e.getAudioTracks()[0];t&&t.enabled&&i.addTrack(t)}}this.recorder=_n(i,t)}catch(t){return e.error("RecorderRTC","startRecord error",t),void this.player.emitError(nt.recordCreateError,t)}this.recorder&&(this._isRecording=!0,this.player.emit(nt.recording,!0),this.recorder.startRecording(),e.log("RecorderRTC","start recording"),this.player.emit(nt.recordStart),this.startRecordingInterval())}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(nt.recordingTimestamp,this._recordingTimestamp)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:yt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{this.recorder&&this._isRecording||s("recorder is not ready"),t&&this.setFileName(t),this.recorder.stopRecording((()=>{this.player.debug.log("RecorderRTC","stop recording");const t=(this.fileName||aa())+"."+w;if(this.recorder.getBlob(),e===At){const e=this.recorder.getBlob();i(e),this.player.emit(nt.recordBlob,e)}else i(),this.recorder.save(t);this.player.emit(nt.recordEnd),this._reset(),this.player.emit(nt.recording,!1)}))}))}getToTalByteLength(){return this.totalByteLength}getTotalDuration(){return this.recordTime}getType(){return w}initMetaData(){}}class qn{static init(){qn.types={avc1:[],avcC:[],hvc1:[],hvcC:[],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":[],free:[],edts:[],elst:[],stss:[]};for(let e in qn.types)qn.types.hasOwnProperty(e)&&(qn.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=qn.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,2,0,105,115,111,109,105,115,111,50,97,118,99,49,109,112,52,49,0,0,0,0]),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,s=Array.prototype.slice.call(arguments,1),r=s.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 a=8;for(let e=0;e=Math.pow(2,32)-1?(a=16,o=new Uint8Array(i+a),o.set(new Uint8Array([0,0,0,1]),0),o.set(qn.types.mdat,4),o.set(new Uint8Array([i+8>>>56&255,i+8>>>48&255,i+8>>>40&255,i+8>>>32&255,i+8>>>24&255,i+8>>>16&255,i+8>>>8&255,i+8&255]),8)):(o=new Uint8Array(i+a),o[0]=i+8>>>24&255,o[1]=i+8>>>16&255,o[2]=i+8>>>8&255,o[3]=i+8&255,o.set(qn.types.mdat,4));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,0,0,0,3]))}static trak(e){return qn.box(qn.types.trak,qn.tkhd(e),qn.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return qn.box(qn.types.tkhd,new Uint8Array([0,0,0,15,206,186,253,168,206,186,253,168,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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static edts(e,t){return qn.box(qn.types.edts,qn.elst(e,t))}static elst(e,t){let i=0;for(let s=0;s>>24&255,i>>>16&255,i>>>8&255,255&i,255,255,255,255,0,1,0,0,s>>>24&255,s>>>16&255,s>>>8&255,255&s,0,0,0,0,0,1,0,0]))}static mdia(e){return qn.box(qn.types.mdia,qn.mdhd(e),qn.hdlr(e),qn.minf(e))}static mdhd(e){let t=e.timescale/e.refSampleDuration,i=t*e.duration/e.timescale;return qn.box(qn.types.mdhd,new Uint8Array([0,0,0,0,206,186,253,168,206,186,253,168,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=qn.constants.HDLR_VIDEO,qn.box(qn.types.hdlr,t)}static minf(e){let t=null;return t=qn.box(qn.types.vmhd,qn.constants.VMHD),qn.box(qn.types.minf,t,qn.dinf(),qn.stbl(e))}static dinf(){return qn.box(qn.types.dinf,qn.box(qn.types.dref,qn.constants.DREF))}static stbl(e){let t=e.samples,i=[{No:1,num:0,sampleDelte:1,chunkNo:1,duration:t[0].duration}],s=[t[0].duration],r=t.length;for(let e=0;e>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+8*t);r.set(i,0);for(let i=0;i>>24&255,e[i].num>>>16&255,e[i].num>>>8&255,255&e[i].num,e[i].sampleDelte>>>24&255,e[i].sampleDelte>>>16&255,e[i].sampleDelte>>>8&255,255&e[i].sampleDelte]),s),s+=8;return qn.box(qn.types.stts,r)}static stss(e){let t=[],i=e.length;for(let s=0;s>>24&255,s>>>16&255,s>>>8&255,255&s]),a=r.byteLength,o=new Uint8Array(a+4*s);o.set(r,0);for(let e=0;e>>24&255,t[e]>>>16&255,t[e]>>>8&255,255&t[e]]),a),a+=4;return qn.box(qn.types.stss,o)}static stsc(e){let t=e.length,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+12*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t,a>>>24&255,a>>>16&255,a>>>8&255,255&a,o>>>24&255,o>>>16&255,o>>>8&255,255&o]),s),s+=12}return qn.box(qn.types.stsc,r)}static stsz(e){let t=e.length,i=new Uint8Array([0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]),s=i.byteLength,r=new Uint8Array(s+4*t);r.set(i,0);for(let i=0;i>>24&255,t>>>16&255,t>>>8&255,255&t]),s),s+=4}return qn.box(qn.types.stsz,r)}static stco(e,t){let i=t[0].chunkOffset;return qn.box(qn.types.stco,new Uint8Array([0,0,0,0,0,0,0,1,i>>>24&255,i>>>16&255,i>>>8&255,255&i]))}static stsd(e){return"audio"===e.type?"mp3"===e.codec?qn.box(qn.types.stsd,qn.constants.STSD_PREFIX,qn.mp3(e)):qn.box(qn.types.stsd,qn.constants.STSD_PREFIX,qn.mp4a(e)):"avc"===e.videoType?qn.box(qn.types.stsd,qn.constants.STSD_PREFIX,qn.avc1(e)):qn.box(qn.types.stsd,qn.constants.STSD_PREFIX,qn.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.sampleRate,s=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 qn.box(qn.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.sampleRate,s=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 qn.box(qn.types.mp4a,s,qn.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 qn.box(qn.types.esds,s)}static avc1(e){let t=e.avcc,i=e.codecWidth,s=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,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return qn.box(qn.types.avc1,r,qn.box(qn.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let 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,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,13,106,101,115,115,105,98,117,99,97,45,112,114,111,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return qn.box(qn.types.hvc1,r,qn.box(qn.types.hvcC,t))}static mvex(e){return qn.box(qn.types.mvex,qn.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 qn.box(qn.types.trex,i)}static moof(e,t){return qn.box(qn.types.moof,qn.mfhd(e.sequenceNumber),qn.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 qn.box(qn.types.mfhd,t)}static traf(e,t){let i=e.id,s=qn.box(qn.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=qn.box(qn.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=qn.sdtp(e),o=qn.trun(e,a.byteLength+16+16+8+16+8+8);return qn.box(qn.types.traf,s,r,o,a)}static sdtp(e){let t=e.samples||[],i=t.length,s=new Uint8Array(4+i);for(let e=0;e>>24&255,s>>>16&255,s>>>8&255,255&s,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,s>>>24&255,s>>>16&255,s>>>8&255,255&s,r.isLeading<<2|r.dependsOn,r.isDependedOn<<6|r.hasRedundancy<<4|r.isNonSync,0,0,o>>>24&255,o>>>16&255,o>>>8&255,255&o],12+16*e)}return qn.box(qn.types.trun,a)}static mdat(e){return qn.box(qn.types.mdat,e)}}qn.init();class Kn extends Wn{constructor(e){super(e),this.TAG_NAME="recorderMP4",this._reset(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.bufferList=[],this.audioBufferList=[],this.cacheTrack={},this.audioCacheTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(nt.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(nt.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(nt.recordingTimestamp,this.getTotalDuration())}),1e3)}formatFmp4Track(e,t,i,s){return{id:1,sequenceNumber:++this.sequenceNumber,size:e.byteLength,dts:i,cts:s,isKeyframe:t,data:e,duration:0,flags:{isLeading:0,dependsOn:t?2:1,isDependedOn:t?1:0,hasRedundancy:0,isNonSync:t?0:1}}}formatAudioFmp4Track(e,t){return{id:2,sequenceNumber:++this.audioSequenceNumber,size:e.byteLength,dts:t,pts:t,cts:0,data:new Uint8Array(e),duration:0,originalDts:t,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}}handleAddNaluTrack(e,t,i,s){this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.handleAddFmp4Track(this.cacheTrack)):this.cacheTrack={},this.cacheTrack=this.formatFmp4Track(e,t,i,s)}handleAddAudioTrack(e,t){}handleAddFmp4Track(e){if(!this.isRecording)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, isRecording is false ");if((null===this.sps||null===this.pps)&&this.isH264)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h264 and this.sps or this.pps is null ");if((null===this.sps||null===this.pps||null===this.vps)&&this.isH265)return void this.player.debug.error(this.TAG_NAME,"handleAddFmp4Track, is h265 and this.sps or this.pps or this.vps is null ");const t=Object.assign({},e);t.pts=t.dts+t.cts;const i=t.data;if(t.isKeyframe)if(this.isH264){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength);e.set(this.sps,0),e.set(this.pps,this.sps.byteLength);const s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}else if(this.isH265){const e=new Uint8Array(this.sps.byteLength+this.pps.byteLength+this.vps.byteLength);e.set(this.vps,0),e.set(this.sps,this.vps.byteLength),e.set(this.pps,this.vps.byteLength+this.sps.byteLength);const s=new Uint8Array(e.byteLength+i.byteLength);s.set(e,0),s.set(i,e.byteLength),t.data=s}t.size=t.data.byteLength,this.totalDuration+=t.duration,this.totalByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.bufferList.push(t)}handleAddFmp4AudioTrack(e){const t=Object.assign({},e);t.pts=t.dts+t.cts,t.size=t.data.byteLength,this.totalAudioDuration+=t.duration,this.totalAudioByteLength+=t.data.byteLength,t.duration=0,t.originalDts=t.dts,delete t.id,delete t.sequenceNumber,this.audioBufferList.push(t)}getTotalDuration(){return this.totalDuration/1e3}getType(){return S}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:yt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r={id:1,type:"video",sps:this.sps,pps:this.pps,samples:this.bufferList,sequenceNumber:this.bufferList.length,length:0,addSampleNum:1,duration:0,...this.metaInfo},a={id:2,type:"audio",sequenceNumber:this.audioBufferList.length,samples:this.audioBufferList,...this.audioMetaInfo},o=[r];a.samples.length>0&&o.push(a),this.player.debug.log(this.TAG_NAME,`trackList length is ${o.length}`);const n=qn.generateInitSegment({timescale:1e3,duration:this.totalDuration},o,this.totalByteLength+this.totalAudioByteLength);this.player.debug.log(this.TAG_NAME,"stop recording");const l=new Blob([n],{type:"application/octet-stream"});if(e===At)i(l),this.player.emit(nt.recordBlob,l);else{i();Da((this.fileName||aa())+"."+S,l)}this._reset(),this.player.emit(nt.recording,!1)}))}}class Yn extends Wn{constructor(e){super(e),this.TAG_NAME="FlvRecorderLoader",this.player=e,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this._init(),this.player.debug.log(this.TAG_NAME,"destroy")}_init(){this.hasAudio=!1,this.hasVideo=!1,this.startTime=null,this.currentTime=0,this.prevTimestamp=0,this.totalByteLength=0,this.totalDuration=0,this.flvMetaData=null,this.aacSequenceHeader=null,this.videoSequenceHeader=null,this.bufferList=[]}_reset(){super._reset(),this._init()}startRecord(){const e=this.player.debug;this._isRecording=!0,this.player.emit(nt.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(nt.recordStart),this.startRecordingInterval()}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(nt.recordingTimestamp,this.getTotalDuration())}),1e3)}addMetaData(e){this.flvMetaData=e}addAACSequenceHeader(e){this.aacSequenceHeader=e}addVideoSequenceHeader(e){this.videoSequenceHeader=e}addVideo(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasVideo=!0,this._createBufferItem(e,Ge,i)}addAudio(e,t){this._setStartTime(t);const i=this._getBufferTs(t);this.hasAudio=!0,this._createBufferItem(e,ze,i)}_setStartTime(e){null===this.startTime&&this._isRecording&&(this.startTime=e,this.player.debug.log(this.TAG_NAME,`_setStartTime is ${e}`))}_getBufferTs(e){e>this.currentTime&&(this.currentTime=e);let t=0;return this.startTime&&e>=this.startTime&&(t=e-this.startTime),t>this.prevTimestamp?this.prevTimestamp=t:t=this.prevTimestamp,t}_createBufferItem(e,t,i){const s=this._createFlvPacket(e,t,i),r=this._createFlvTag(s);this.totalByteLength+=r.byteLength,this.bufferList.push(r)}_createFlvTag(e){let t=11+e.header.length,i=new Uint8Array(t+4);i[0]=e.header.type;let s=new DataView(i.buffer);return i[1]=e.header.length>>16&255,i[2]=e.header.length>>8&255,i[3]=255&e.header.length,i[4]=e.header.timestamp>>16&255,i[5]=e.header.timestamp>>8&255,i[6]=255&e.header.timestamp,i[7]=e.header.timestamp>>24&255,i[8]=0,i[9]=0,i[10]=0,s.setUint32(t,t),i.set(e.payload.subarray(0,e.header.length),11),i}_createFlvPacket(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return{header:{length:e?e.length:0,timestamp:i,type:t},payload:e}}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:yt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>{if(!this.isRecording)return this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false ");if(0===this.bufferList.length)return this.player.debug.error(this.TAG_NAME,"stop recording fail, this.bufferList.length is 0 "),s("stop recording fail, this.bufferList.length is 0 ");t&&this.setFileName(t);const r=new Uint8Array([70,76,86,1,0,0,0,0,9,0,0,0,0]);this.hasVideo&&(r[4]|=1),this.hasAudio&&(r[4]|=4);let a=[r];if(this.flvMetaData){const e=this._createFlvPacket(this.flvMetaData,He),t=this._createFlvTag(e);a.push(t)}if(this.videoSequenceHeader){const e=this._createFlvPacket(this.videoSequenceHeader,Ge),t=this._createFlvTag(e);a.push(t)}if(this.aacSequenceHeader){const e=this._createFlvPacket(this.aacSequenceHeader,ze),t=this._createFlvTag(e);a.push(t)}const o=function(e){const t=e[0].constructor;return e.reduce(((e,i)=>{const s=new t((0|e.byteLength)+(0|i.byteLength));return s.set(e,0),s.set(i,0|e.byteLength),s}),new t)}(a.concat(this.bufferList));this.player.debug.log(this.TAG_NAME,"stop recording");const n=new Blob([o],{type:"application/octet-stream"});if(e===At)i(n),this.player.emit(nt.recordBlob,n);else{i();Da((this.fileName||aa())+"."+E,n)}this._reset(),this.player.emit(nt.recording,!1)}))}getTotalDuration(){let e=0;return null!==this.startTime&&null!==this.currentTime&&(e=this.currentTime-this.startTime),Math.round(e/1e3)}getType(){return E}getToTalByteLength(){return this.totalByteLength}}const Qn={init:0,findFirstStartCode:1,findSecondStartCode:2};class Xn extends So{constructor(e){super(),this.player=e,this.isDestroyed=!1,this.reset()}destroy(){this.isDestroyed=!1,this.off(),this.reset()}reset(){this.stats=Qn.init,this.tempBuffer=new Uint8Array(0),this.parsedOffset=0,this.versionLayer=0}dispatch(e,t){let i=new Uint8Array(this.tempBuffer.length+e.length);for(i.set(this.tempBuffer,0),i.set(e,this.tempBuffer.length),this.tempBuffer=i;!this.isDestroyed;){if(this.state==Qn.Init){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(!(!1&this.tempBuffer[this.parsedOffset+1])){this.versionLayer=this.tempBuffer[this.parsedOffset+1],this.state=Qn.findFirstStartCode,this.fisrtStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Qn.findFirstStartCode){let e=!1;for(;this.tempBuffer.length-this.parsedOffset>=2&&!this.isDestroyed;)if(255==this.tempBuffer[this.parsedOffset]){if(this.tempBuffer[this.parsedOffset+1]==this.versionLayer){this.state=Qn.findSecondStartCode,this.secondStartCodeOffset=this.parsedOffset,this.parsedOffset+=2,e=!0;break}this.parsedOffset++}else this.parsedOffset++;if(e)continue;break}if(this.state==Qn.findSecondStartCode){let e=this.tempBuffer.slice(this.fisrtStartCodeOffset,this.secondStartCodeOffset);this.emit("data",e,t),this.tempBuffer=this.tempBuffer.slice(this.secondStartCodeOffset),this.fisrtStartCodeOffset=0,this.parsedOffset=2,this.state=Qn.findFirstStartCode}}}}class Zn extends Wn{constructor(e){super(e),this.TAG_NAME="recorderWasmMP4",this._reset(),this.wasmMp4Recorder=new window.JessibucaProMp4Recorder({debug:e._opt.debug,debugLevel:e._opt.debugLevel,debugUuid:e._opt.debugUuid,decoder:e._opt.wasmMp4RecorderDecoder}),this.wasmMp4Recorder.on("recordingTimestamp",(e=>{this._recordingTimestamp=e/1e3})),this.mp3Demuxer=null,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.mp3Demuxer&&(this.mp3Demuxer.destroy(),this.mp3Demuxer=null),this._reset(),this.player.debug.log(this.TAG_NAME,"destroy")}_reset(){super._reset(),this.cacheTrack={},this.audioCacheTrack={},this.totalDuration=0,this.totalAudioDuration=0,this.totalByteLength=0,this.totalAudioByteLength=0,this.hasAudio=!1,this.hasVideo=!1}getType(){return S}isWasmMp4(){return!0}getTotalDuration(){return this.totalDuration/1e3}getToTalByteLength(){return this.totalByteLength+this.totalAudioByteLength}startRecord(){const e=this.player.debug,t=this.player.getAudioInfo(),i=this.player.getVideoInfo(),s={};if(this.codecId){const e={type:this.codecId,width:i.width,height:i.height,extraData:this.metaInfo.avcc};s.video=e,this.hasVideo=!0}if(t.encTypeCode){const e={type:t.encTypeCode,sampleRate:t.sampleRate,channels:t.channels,extraData:this.audioMetaInfo.extraData,depth:t.depth};this.audioCodeId=t.encTypeCode,s.audio=e,this.hasAudio=!0}this.wasmMp4Recorder.startRecord(s).then((()=>{this._isRecording=!0,this.player.emit(nt.recording,!0),e.log(this.TAG_NAME,"start recording"),this.player.emit(nt.recordStart),this.startRecordingInterval()})).catch((t=>{e.error(this.TAG_NAME,"startRecord error",t),this.player.emitError(nt.recordCreateError,t)}))}startRecordingInterval(){this.stopRecordingInterval(),this.recordingInterval=window.setInterval((()=>{this.player.emit(nt.recordingTimestamp,this.recordTime)}),1e3)}stopRecordAndSave(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:yt,t=arguments.length>1?arguments[1]:void 0;return new Promise(((i,s)=>this.isRecording?0===this.totalDuration?(this.player.debug.error(this.TAG_NAME,"stop recording fail, totalDuration is 0 "),s("stop recording fail, totalDuration is 0 ")):(t&&this.setFileName(t),void this.wasmMp4Recorder.stopRecord().then((t=>{if(e===At)i(t),this.player.emit(nt.recordBlob,t);else{i();Da((this.fileName||aa())+"."+S,t)}})).catch((e=>{this.player.debug.error(this.TAG_NAME,"stopRecord error",e),s(e)})).finally((()=>{this._reset(),this.player.emit(nt.recording,!1)}))):(this.player.debug.error(this.TAG_NAME,"stop recording fail, isRecording is false "),s("stop recording fail, isRecording is false "))))}handleAddAudioTrack(e,t){this.audioCodeId===Tt?(this.mp3Demuxer||(this.mp3Demuxer=new Xn(this.player),this.mp3Demuxer.on("data",((e,t)=>{this._handleAddAudioTrack(e,t)}))),this.mp3Demuxer.dispatch(e,t)):this._handleAddAudioTrack(e,t)}_handleAddAudioTrack(e,t){po(this.hasAudio)||(this.audioCacheTrack.id&&t>=this.audioCacheTrack.dts?(this.audioCacheTrack.duration=t-this.audioCacheTrack.dts,this.totalAudioDuration+=this.audioCacheTrack.duration,this.totalAudioByteLength+=this.audioCacheTrack.payload.byteLength,this.wasmMp4Recorder.sendAudioFrame(this.audioCacheTrack.payload,this.audioCacheTrack.dts)):this.audioCacheTrack={},this.audioCacheTrack={id:2,payload:e,dts:t})}handleAddNaluTrack(e,t,i,s){po(this.hasVideo)||(this.cacheTrack.id&&i>=this.cacheTrack.dts?(this.cacheTrack.duration=i-this.cacheTrack.dts,this.totalDuration+=this.cacheTrack.duration,this.totalByteLength+=this.cacheTrack.payload.byteLength,this.wasmMp4Recorder.sendVideoFrame(this.cacheTrack.payload,this.cacheTrack.isIFrame,this.cacheTrack.dts,this.cacheTrack.cts)):this.cacheTrack={},this.cacheTrack={id:1,payload:e,isIFrame:t,dts:i,cts:s})}}class el{constructor(e){return new(el.getLoaderFactory(e._opt))(e)}static getLoaderFactory(e){if(e.recordType===S){if(e.useWasm||e.useMSE||e.useWCS)return window.JessibucaProMp4Recorder&&e.mp4RecordUseWasm?Zn:Kn}else if(e.recordType===E)return Yn;return Jn}}function tl(e,t,i){let s=e;if(t+i=128){t.push(String.fromCharCode(65535&e)),s+=2;continue}}}else if(i[s]<240){if(tl(i,s,2)){let e=(15&i[s])<<12|(63&i[s+1])<<6|63&i[s+2];if(e>=2048&&55296!=(63488&e)){t.push(String.fromCharCode(65535&e)),s+=3;continue}}}else if(i[s]<248&&tl(i,s,3)){let e=(7&i[s])<<18|(63&i[s+1])<<12|(63&i[s+2])<<6|63&i[s+3];if(e>65536&&e<1114112){e-=65536,t.push(String.fromCharCode(e>>>10|55296)),t.push(String.fromCharCode(1023&e|56320)),s+=4;continue}}t.push(String.fromCharCode(65533)),++s}return t.join("")}let sl=function(){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}();class rl{static parseScriptData(e,t,i){let s={};try{let r=rl.parseValue(e,t,i),a=rl.parseValue(e,t+r.size,i-r.size);s[r.data]=a.data}catch(e){console.error("AMF",e.toString())}return s}static parseObject(e,t,i){let s=rl.parseString(e,t,i),r=rl.parseValue(e,t+s.size,i-s.size),a=r.objectEnd;return{data:{name:s.data,value:r.data},size:s.size+r.size,objectEnd:a}}static parseVariable(e,t,i){return rl.parseObject(e,t,i)}static parseString(e,t,i){let s,r=new DataView(e,t,i).getUint16(0,!sl);return s=r>0?il(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}static parseLongString(e,t,i){let s,r=new DataView(e,t,i).getUint32(0,!sl);return s=r>0?il(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}static parseDate(e,t,i){let s=new DataView(e,t,i),r=s.getFloat64(0,!sl);return r+=60*s.getInt16(8,!sl)*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){let s,r=new DataView(e,t,i),a=1,o=r.getUint8(0),n=!1;try{switch(o){case 0:s=r.getFloat64(1,!sl),a+=8;break;case 1:s=!!r.getUint8(1),a+=1;break;case 2:{let r=rl.parseString(e,t+1,i-1);s=r.data,a+=r.size;break}case 3:{s={};let o=0;for(9==(16777215&r.getUint32(i-4,!sl))&&(o=3);a{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te)}this.decoderWorker=new Worker(t),this._initDecoderWorker(),e.debug.log("decoderWorker",`init and decoder url is ${t}`),e.on(nt.visibilityChange,(()=>{this.updateWorkConfig({key:"visibility",value:e.visibility})}))}destroy(){return new Promise(((e,t)=>{if(this.player.loaded)if(this.player.debug.log("decoderWorker","has loaded and post message to destroy"),this.decoderWorker){const t={};this.player.isMseDecoderUseWorker()&&(t.isVideoInited=this.player.isMseVideoStateInited()),this.decoderWorker.postMessage({cmd:qe,options:t}),this.destroyResolve=e,this.decoderWorkerCloseTimeout=setTimeout((()=>{this.player.debug.warn("decoderWorker","send close but not response and destroy directly"),this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this._destroy(),setTimeout((()=>{e()}),0)}),2e3)}else this.player.debug.warn("decoderWorker","has loaded but decoderWorker is null and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0);else this.player.debug.log("decoderWorker","has not loaded and destroy directly"),this._destroy(),setTimeout((()=>{e()}),0)}))}_destroy(){this.decoderWorkerCloseTimeout&&(clearTimeout(this.decoderWorkerCloseTimeout),this.decoderWorkerCloseTimeout=null),this.workerUrl&&(window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.decoderWorker&&(this.decoderWorker.terminate(),this.decoderWorker.onerror=null,this.decoderWorker.onmessageerror=null,this.decoderWorker.onmessage=null,this.decoderWorker=null),this.player.debug.log("decoderWorker","destroy"),this.destroyResolve&&(this.destroyResolve(),this.destroyResolve=null)}_initDecoderWorker(){const{debug:e,events:{proxy:t}}=this.player;this.decoderWorker.onerror=e=>{this.player.debug.error("decoderWorker","onerror",e),this.player.emitError(ct.decoderWorkerInitError,e)},this.decoderWorker.onmessageerror=e=>{this.player.debug.error("decoderWorker","onmessageerror",e)},this.decoderWorker.onmessage=t=>{const i=t.data;switch(i.cmd){case re:e.log("decoderWorker","onmessage:",re),this.decoderWorker&&this._initWork(),this.player.loaded||this.player.emit(nt.load),this.player.emit(nt.decoderWorkerInit);break;case ue:e.log("decoderWorker","onmessage:",ue,i.code),this.player._times.decodeStart||(this.player._times.decodeStart=aa()),this.player.video.updateVideoInfo({encTypeCode:i.code});break;case pe:e.log("decoderWorker","onmessage:",pe,i.codecId),this.player.recorder&&this.player.recorder.initMetaData(i.buffer,i.codecId),this.player.video.updateVideoInfo({encTypeCode:i.codecId});break;case de:e.log("decoderWorker","onmessage:",de,i.code),this.player.audio&&this.player.audio.updateAudioInfo({encTypeCode:i.code});break;case ce:e.log("decoderWorker","onmessage:",ce),this.player.recorder&&this.player.recorder.initAudioAacExtraData(i.buffer);break;case ae:if(e.log("decoderWorker","onmessage:",ae,`width:${i.w},height:${i.h}`),La(i.w)||La(i.h))return void this.player.emitError(ct.videoInfoError,`video width ${i.w} or height ${i.h} is empty`);if(this.player.video.updateVideoInfo({width:i.w,height:i.h}),!this.player._opt.openWebglAlignment&&i.w/2%4!=0&&this.player.getRenderType()===$)return void this.player.emitError(ct.webglAlignmentError);this.player.video.initCanvasViewSize(),this.player._opt.playType===_&&(this.player.video.initFps(),this.player.video.initVideoDelay());break;case le:if(e.log("decoderWorker","onmessage:",le,`channels:${i.channels},sampleRate:${i.sampleRate}`),i.channels>2)return void this.player.emitError(ct.audioChannelError,`audio channel is ${i.channels}, max is 2`);this.player.audio&&(this.player.audio.updateAudioInfo(i),this.player._opt.playType===b?this.player.audio.initScriptNode():this.player._opt.playType===_&&this.player.audio.initScriptNodeDelay());break;case oe:if(!this.player.video)return void e.warn("decoderWorker","onmessage render but video is null");if(this.player.isPlayer()){if(po(this.player.video.getHasInit()))return void e.warn("decoderWorker","onmessage render but video has not init");this.player.video.render(i),this.player.handleRender(),this.player.emit(nt.timeUpdate,i.ts),this.player.updateStats({dfps:!0,buf:i.delay}),this.player._times.videoStart||(this.player._times.videoStart=aa(),this.player.handlePlayToRenderTimes())}else this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),po(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData(i):this.player.video.render$2(i)):!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData(i));break;case fe:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.handleAddNaluTrack(i.buffer,i.isIFrame,i.ts,i.cts);break;case he:this.player.recorder&&this.player.recorder.isRecording&&this.player._opt.recordType===S&&this.player.recorder.isWasmMp4()&&this.player.recorder.handleAddAudioTrack(i.buffer,i.ts);break;case me:const{webcodecsDecoder:t,mseDecoder:s}=this.player;this.player.updateStats({buf:i.delay});const r=new Uint8Array(i.payload);this.player._opt.useWCS&&!this.player._opt.useOffscreen?t.decodeVideo(r,i.ts,i.isIFrame,i.cts):this.player._opt.useMSE&&s.decodeVideo(r,i.ts,i.isIFrame,i.cts);break;case ge:if(this.player._opt.useMSE){const e=new Uint8Array(i.payload);this.player.mseDecoder.decodeAudio(e,i.ts,i.cts)}break;case ne:if(!this.player.audio)return void e.warn("decoderWorker","onmessage playAudio but audio is null");(this.player.playing&&this.player.audio||!this.player.video)&&(this.player._opt.hasVideo||this.player.handleRender(),(this.player._opt.playType===b||this.player._opt.playType===_&&(po(this.player.playbackPause)||!this.player.playback.isPlaybackPauseClearCache&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender))&&this.player.audio.play(i.buffer,i.ts));break;case Ae:if(i.type===nt.streamSuccess)this.player.stream?this.player.stream.emit(nt.streamSuccess):e.warn("decoderWorker","onmessage and workerFetch response stream success but stream is null");else if(i.type===nt.streamRate)this.player.emit(nt.kBps,(i.value/1024).toFixed(2));else if(i.type===nt.streamEnd)this.player?(i.value===f&&this.player.emit(nt.websocketClose,i.msg),this.player.stream?this.player.stream.emit(nt.streamEnd,i.msg):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player.stream is null")):e&&e.warn("decoderWorker","onmessage and workerFetch response stream end but player is null");else if(i.type===ct.websocketError)this.player&&this.player.stream?this.player.stream.emit(ct.websocketError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response websocket error but stream is null");else if(i.type===ct.fetchError)this.player&&this.player.stream?this.player.stream.emit(ct.fetchError,i.value):e&&e.warn("decoderWorker","onmessage and workerFetch response fetch error but stream is null");else if(i.type===nt.streamAbps)this.player.updateStats({abps:i.value});else if(i.type===nt.streamVbps)this.player._times.demuxStart||(this.player._times.demuxStart=aa()),this.player.updateStats({vbps:i.value});else if(i.type===nt.streamDts)this.player.updateStats({dts:i.value});else if(i.type===nt.netBuf)this.player.updateStats({netBuf:i.value});else if(i.type===nt.networkDelayTimeout)this.player.emit(nt.networkDelayTimeout,i.value);else if(i.type===nt.streamStats){const e=JSON.parse(i.value);this.player.updateStats({workerStats:e})}else i.type===nt.websocketOpen&&this.player.emit(nt.websocketOpen);break;case be:this.player&&(this.player.videoIframeIntervalTs=i.value);break;case ve:this.player&&this.player.updateStats({isDropping:!0});break;case Ie:this.player.decoderCheckFirstIFrame();break;case Se:this.player&&this.player.video&&this.player.video.setStreamFps(i.value);break;case ye:i.message&&-1!==i.message.indexOf(Oe)&&this.player.emitError(ct.wasmDecodeError,"");break;case we:this.player.emitError(ct.wasmDecodeVideoNoResponseError);break;case ke:this.player.emitError(ct.simdH264DecodeVideoWidthIsTooLarge);break;case Ee:this.player.emitError(ct.wasmWidthOrHeightChange);break;case Te:this.player.emitError(ct.simdDecodeError);break;case _e:e.log("decoderWorker","onmessage:",_e);break;case Ce:e.log("decoderWorker","onmessage:",Ce),this._destroy();break;case xe:this.player&&this.player.pushTempStream(i.buffer);break;case Re:this.player&&this.player.emit(nt.videoSEI,{ts:i.ts,data:new Uint8Array(i.buffer)});break;case De:if(this.player){if(this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addMetaData(e)}const e=al(new Uint8Array(i.buffer));e&&e.onMetaData&&this.player.updateMetaData(e.onMetaData)}break;case Le:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addAACSequenceHeader(e,i.ts)}break;case Pe:if(this.player&&this.player.isRecordTypeFlv()){const e=new Uint8Array(i.buffer);this.player.recorder.addVideoSequenceHeader(e,i.ts)}break;case Be:if(this.player&&this.player.isRecordTypeFlv()&&this.player.recording){const e=new Uint8Array(i.buffer);i.type===je?this.player.recorder.addVideo(e,i.ts):i.type===Ne&&this.player.recorder.addAudio(e,i.ts)}break;case Me:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Me),this.player.video.$videoElement.srcObject=i.mseHandle);break;case Ue:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Ue,i.value),this.player._mseWorkerData.firstRenderTime=Number(i.value));break;case Fe:this.player&&(this.player.debug.log("decoderWorker","onmessage:",Fe,i.value,i.msg),this.player.emitError(i.value,i.msg));break;default:this.player[i.cmd]&&this.player[i.cmd](i)}}}_initWork(){const e={debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid,useOffscreen:this.player._opt.useOffscreen,useWCS:this.player._opt.useWCS,useMSE:this.player._opt.useMSE,videoBuffer:this.player._opt.videoBuffer,videoBufferDelay:this.player._opt.videoBufferDelay,openWebglAlignment:this.player._opt.openWebglAlignment,playType:this.player._opt.playType,hasAudio:this.player._opt.hasAudio,hasVideo:this.player._opt.hasVideo,playbackRate:1,playbackForwardMaxRateDecodeIFrame:this.player._opt.playbackForwardMaxRateDecodeIFrame,playbackIsCacheBeforeDecodeForFpsRender:this.player._opt.playbackConfig.isCacheBeforeDecodeForFpsRender,sampleRate:this.player.audio&&this.player.audio.audioContext&&this.player.audio.audioContext.sampleRate||0,audioBufferSize:this.player.audio&&this.player.audio.getAudioBufferSize()||1024,networkDelay:this.player._opt.networkDelay,visibility:this.player.visibility,useSIMD:this.player._opt.useSIMD,recordType:this.player._opt.recordType,checkFirstIFrame:this.player._opt.checkFirstIFrame,isM7sCrypto:this.player._opt.isM7sCrypto,isXorCrypto:this.player._opt.isXorCrypto,isSm4Crypto:this.player._opt.isSm4Crypto,sm4CryptoKey:this.player._opt.sm4CryptoKey,m7sCryptoAudio:this.player._opt.m7sCryptoAudio,isFlv:this.player._opt.isFlv,isFmp4:this.player._opt.isFmp4,isMpeg4:this.player._opt.isMpeg4,isTs:this.player._opt.isTs,isNakedFlow:this.player._opt.isNakedFlow,isHls265:this.player.isUseHls265(),isFmp4Private:this.player._opt.isFmp4Private,isEmitSEI:this.player._opt.isEmitSEI,isRecordTypeFlv:this.player.isRecordTypeFlv(),isWasmMp4:this.player.recorder&&this.player.recorder.isWasmMp4()||!1,isChrome:Ja(),isDropSameTimestampGop:this.player._opt.isDropSameTimestampGop,mseDecodeAudio:this.player._opt.mseDecodeAudio,nakedFlowH265DemuxUseNew:this.player._opt.nakedFlowH265DemuxUseNew,mseDecoderUseWorker:this.player._opt.mseDecoderUseWorker,mseAutoCleanupMinBackwardDuration:this.player._opt.mseAutoCleanupMinBackwardDuration,mseAutoCleanupMaxBackwardDuration:this.player._opt.mseAutoCleanupMaxBackwardDuration,mseCorrectTimeDuration:this.player._opt.mseCorrectTimeDuration,mseCorrectAudioTimeDuration:this.player._opt.mseCorrectAudioTimeDuration};this.decoderWorker.postMessage({cmd:Ve,opt:JSON.stringify(e)}),this.player._opt.isM7sCrypto&&(this.updateWorkConfig({key:"cryptoKey",value:this.player._opt.cryptoKey}),this.updateWorkConfig({key:"cryptoIV",value:this.player._opt.cryptoIV}))}decodeVideo(e,t,i){this.player._opt.playType===b?this.player.isUseHls265()?this._decodeVideoNoDelay(e,t,i):this._decodeVideo(e,t,i):this.player._opt.playType===_&&(this.player.video.rate>=this.player._opt.playbackForwardMaxRateDecodeIFrame?i&&(this.player.debug.log("decoderWorker",`current rate is ${this.player.video.rate},only decode i frame`),this._decodeVideoNoDelay(e,t,i)):1===this.player.video.rate?this._decodeVideo(e,t,i):this._decodeVideoNoDelay(e,t,i))}_decodeVideo(e,t,i){const s={type:je,ts:Math.max(t,0),isIFrame:i};this.decoderWorker.postMessage({cmd:$e,buffer:e,options:s},[e.buffer])}_decodeVideoNoDelay(e,t,i){this.decoderWorker.postMessage({cmd:Je,buffer:e,ts:Math.max(t,0),isIFrame:i},[e.buffer])}decodeAudio(e,t){this.player._opt.playType===b?this.player._opt.useWCS||this.player._opt.useMSE||this.player.isUseHls265()?this._decodeAudioNoDelay(e,t):this._decodeAudio(e,t):this.player._opt.playType===_&&(1===this.player.video.rate?this._decodeAudio(e,t):this._decodeAudioNoDelay(e,t))}_decodeAudio(e,t){const i={type:Ne,ts:Math.max(t,0)};this.decoderWorker.postMessage({cmd:$e,buffer:e,options:i},[e.buffer])}_decodeAudioNoDelay(e,t){this.decoderWorker.postMessage({cmd:We,buffer:e,ts:Math.max(t,0)},[e.buffer])}updateWorkConfig(e){this.decoderWorker&&this.decoderWorker.postMessage({cmd:Ke,key:e.key,value:e.value})}workerFetchStream(e){const{_opt:t}=this.player,i={protocol:t.protocol,isFlv:t.isFlv,isFmp4:t.isFmp4,isMpeg4:t.isMpeg4,isNakedFlow:t.isNakedFlow,isTs:t.isTs};this.decoderWorker.postMessage({cmd:Qe,url:e,opt:JSON.stringify(i)})}clearWorkBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.decoderWorker.postMessage({cmd:Ye,needClear:e})}workerSendMessage(e){this.decoderWorker.postMessage({cmd:Xe,message:e})}updateVideoTimestamp(e){this.decoderWorker.postMessage({cmd:Ze,message:e})}}var nl,ll="application/json, text/javascript",dl="text/html",hl=/^(?:text|application)\/xml/i,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,ul=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,pl=/^\s*$/,fl={},ml={},gl="",yl={type:"GET",beforeSend:Al,success:Al,error:Al,complete:Al,context:null,xhr:function(){return new window.XMLHttpRequest},accepts:{json:ll,xml:"application/xml, text/xml",html:dl,text:"text/plain","*":"*/".concat("*")},crossDomain:!1,timeout:0,username:null,password:null,processData:!0,promise:Al,contentType:"application/x-www-form-urlencoded; charset=UTF-8"};function Al(){}var bl=function(e,t){"object"==typeof e&&(t=e,e=void 0);var i=Cl({},t=t||{});for(var s in yl)void 0===i[s]&&(i[s]=yl[s]);try{var r={},a=new Promise((function(e,t){r.resolve=e,r.reject=t}));a.resolve=r.resolve,a.reject=r.reject,i.promise=a}catch(e){i.promise={resolve:Al,reject:Al}}var o=ul.exec(window.location.href.toLowerCase())||[];i.url=((e||i.url||window.location.href)+"").replace(/#.*$/,"").replace(/^\/\//,o[1]+"//");var n=i.url;i.crossDomain||(i.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(i.url)&&RegExp.$2!==window.location.href);var l=i.dataType;if("jsonp"===l){if(!/=\?/.test(i.url)){var d=(i.jsonp||"callback")+"=?";i.url=El(i.url,d)}return function(e){var t,i=e.jsonpCallback||"jsonp"+Dl(),s=window.document.createElement("script"),r={abort:function(){i in window&&(window[i]=Al)}},a=window.document.getElementsByTagName("head")[0]||window.document.documentElement;function o(i){window.clearTimeout(t),r.abort(),Sl(i.type,r,i.type,e),n()}s.onerror=function(e){o(e)},window[i]=function(i){window.clearTimeout(t),vl(i,r,e),n()},Tl(e),s.src=e.url.replace(/=\?/,"="+i),s.src=El(s.src,"_="+(new Date).getTime()),s.async=!0,e.scriptCharset&&(s.charset=e.scriptCharset);a.insertBefore(s,a.firstChild),e.timeout>0&&(t=window.setTimeout((function(){r.abort(),Sl("timeout",r,"timeout",e),n()}),e.timeout));function n(){s.clearAttributes?s.clearAttributes():s.onload=s.onreadystatechange=s.onerror=null,s.parentNode&&s.parentNode.removeChild(s),s=null,delete window[i]}return e.promise.abort=function(){r.abort()},e.promise.xhr=r,e.promise}(i)}Tl(i);var h=i.accepts[l]||i.accepts["*"],c={};/^([\w-]+:)\/\//.test(i.url)?RegExp.$1:window.location.protocol;var u,p=yl.xhr();i.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest"),i.ifModified&&(fl[n]&&(c["If-Modified-Since"]=fl[n]),ml[n]&&(c["If-None-Match"]=ml[n])),h&&(c.Accept=h,h.indexOf(",")>-1&&(h=h.split(",",2)[0]),p.overrideMimeType&&p.overrideMimeType(h));var f=!/^(?:GET|HEAD)$/.test(i.type.toUpperCase());if((i.data&&f&&!1!==i.contentType||t.contentType)&&(c["Content-Type"]=i.contentType),!1===i.cache&&!f){var m=/([?&])_=[^&]*/;i.url=m.test(n)?n.replace(m,"$1_="+Dl()):n+(/\?/.test(n)?"&":"?")+"_="+Dl()}i.headers=Cl(c,i.headers||{}),p.onreadystatechange=function(){if(4===p.readyState){var e;clearTimeout(u);var t=!1;if(p.status>=200&&p.status<300||304===p.status){if(gl=p.getAllResponseHeaders(),i.ifModified){var s=wl("Last-Modified");s&&(fl[n]=s),(s=wl("etag"))&&(ml[n]=s)}l=l||function(e){return e&&(e===dl?"html":e===ll?"json":hl.test(e)&&"xml")||"text"}(p.getResponseHeader("content-type")),e=p.responseText;try{"xml"===l?e=p.responseXML:"json"===l&&(e=pl.test(e)?null:JSON.parse(e))}catch(e){t=e}t?Sl(t,"parseerror",p,i):vl(e,p,i)}else Sl(null,"error",p,i)}};var g=!("async"in i)||i.async;if(p.open(i.type,i.url,g,i.username,i.password),i.xhrFields)for(var y in i.xhrFields)p[y]=i.xhrFields[y];for(var y in i.mimeType&&p.overrideMimeType&&p.overrideMimeType(i.mimeType),i.headers)void 0!==i.headers[y]&&p.setRequestHeader(y,i.headers[y]+"");return!1===function(e,t){var i=t.context;if(!1===t.beforeSend.call(i,e,t))return!1}(p,i)?(p.abort(),!1):(i.timeout>0&&(u=window.setTimeout((function(){p.onreadystatechange=Al,p.abort(),Sl(null,"timeout",p,i)}),i.timeout)),p.send(i.data?i.data:null),i.promise.abort=function(){p.abort()},i.promise)};function vl(e,t,i){var s=i.context,r="success";i.success.call(s,e,r,t),i.promise.resolve(e,r,t),_l(r,t,i)}function _l(e,t,i){var s=i.context;i.complete.call(s,t,e)}function Sl(e,t,i,s){var r=s.context;s.error.call(r,i,t,e),s.promise.reject(i,t,e),_l(t,i,s)}function wl(e){var t;if(!nl){for(nl={};t=cl.exec(gl);)nl[t[1].toLowerCase()]=t[2];t=nl[e.toLowerCase()]}return null===t?null:t}function El(e,t){return(e+"&"+t).replace(/[&?]{1,2}/,"?")}function Tl(e){!xl(e)||e.data instanceof FormData||!e.processData||(e.data=function(e,t){var i=[];return i.add=function(e,t){this.push(encodeURIComponent(e)+"="+encodeURIComponent(t))},kl(i,e,t),i.join("&").replace("%20","+")}(e.data)),!e.data||e.type&&"GET"!==e.type.toUpperCase()||(e.url=El(e.url,e.data))}function kl(e,t,i,s){var r=function(e){return"[object Array]"===Object.prototype.toString.call(e)}(t);for(var a in t){var o=t[a];s&&(a=i?s:s+"["+(r?"":a)+"]"),!s&&r?e.add(o.name,o.value):(i?r(o):xl(o))?kl(e,o,i,a):e.add(a,o)}}function Cl(e){for(var t=Array.prototype.slice,i=t.call(arguments,1),s=0,r=i.length;s255)return!1;return!0}function Bl(e,t){if(e.buffer&&"Uint8Array"===e.name)return t&&(e=e.slice?e.slice():Array.prototype.slice.call(e)),e;if(Array.isArray(e)){if(!Pl(e))throw new Error("Array contains invalid value: "+e);return new Uint8Array(e)}if(Ll(e.length)&&Pl(e))return new Uint8Array(e);throw new Error("unsupported array-like object")}function Il(e){return new Uint8Array(e)}function Ml(e,t,i,s,r){null==s&&null==r||(e=e.slice?e.slice(s,r):Array.prototype.slice.call(e,s,r)),t.set(e,i)}bl.get=function(e,t,i,s){return Rl(t)&&(s=s||i,i=t,t=void 0),bl({url:e,data:t,success:i,dataType:s})},bl.post=function(e,t,i,s){return Rl(t)&&(s=s||i,i=t,t=void 0),bl({type:"POST",url:e,data:t,success:i,dataType:s})},bl.getJSON=function(e,t,i){return Rl(t)&&(i=t,t=void 0),bl({url:e,data:t,success:i,dataType:"json"})},bl.ajaxSetup=function(e,t){return t?Cl(Cl(e,yl),t):Cl(yl,e)};var Ul={toBytes:function(e){var t=[],i=0;for(e=encodeURI(e);i191&&s<224?(t.push(String.fromCharCode((31&s)<<6|63&e[i+1])),i+=2):(t.push(String.fromCharCode((15&s)<<12|(63&e[i+1])<<6|63&e[i+2])),i+=3)}return t.join("")}},Fl=function(){var e="0123456789abcdef";return{toBytes:function(e){for(var t=[],i=0;i>4]+e[15&r])}return i.join("")}}}(),Ol={16:10,24:12,32:14},Nl=[1,2,4,8,16,32,64,128,27,54,108,216,171,77,154,47,94,188,99,198,151,53,106,212,179,125,250,239,197,145],jl=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22],zl=[82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],Gl=[3328402341,4168907908,4000806809,4135287693,4294111757,3597364157,3731845041,2445657428,1613770832,33620227,3462883241,1445669757,3892248089,3050821474,1303096294,3967186586,2412431941,528646813,2311702848,4202528135,4026202645,2992200171,2387036105,4226871307,1101901292,3017069671,1604494077,1169141738,597466303,1403299063,3832705686,2613100635,1974974402,3791519004,1033081774,1277568618,1815492186,2118074177,4126668546,2211236943,1748251740,1369810420,3521504564,4193382664,3799085459,2883115123,1647391059,706024767,134480908,2512897874,1176707941,2646852446,806885416,932615841,168101135,798661301,235341577,605164086,461406363,3756188221,3454790438,1311188841,2142417613,3933566367,302582043,495158174,1479289972,874125870,907746093,3698224818,3025820398,1537253627,2756858614,1983593293,3084310113,2108928974,1378429307,3722699582,1580150641,327451799,2790478837,3117535592,0,3253595436,1075847264,3825007647,2041688520,3059440621,3563743934,2378943302,1740553945,1916352843,2487896798,2555137236,2958579944,2244988746,3151024235,3320835882,1336584933,3992714006,2252555205,2588757463,1714631509,293963156,2319795663,3925473552,67240454,4269768577,2689618160,2017213508,631218106,1269344483,2723238387,1571005438,2151694528,93294474,1066570413,563977660,1882732616,4059428100,1673313503,2008463041,2950355573,1109467491,537923632,3858759450,4260623118,3218264685,2177748300,403442708,638784309,3287084079,3193921505,899127202,2286175436,773265209,2479146071,1437050866,4236148354,2050833735,3362022572,3126681063,840505643,3866325909,3227541664,427917720,2655997905,2749160575,1143087718,1412049534,999329963,193497219,2353415882,3354324521,1807268051,672404540,2816401017,3160301282,369822493,2916866934,3688947771,1681011286,1949973070,336202270,2454276571,201721354,1210328172,3093060836,2680341085,3184776046,1135389935,3294782118,965841320,831886756,3554993207,4068047243,3588745010,2345191491,1849112409,3664604599,26054028,2983581028,2622377682,1235855840,3630984372,2891339514,4092916743,3488279077,3395642799,4101667470,1202630377,268961816,1874508501,4034427016,1243948399,1546530418,941366308,1470539505,1941222599,2546386513,3421038627,2715671932,3899946140,1042226977,2521517021,1639824860,227249030,260737669,3765465232,2084453954,1907733956,3429263018,2420656344,100860677,4160157185,470683154,3261161891,1781871967,2924959737,1773779408,394692241,2579611992,974986535,664706745,3655459128,3958962195,731420851,571543859,3530123707,2849626480,126783113,865375399,765172662,1008606754,361203602,3387549984,2278477385,2857719295,1344809080,2782912378,59542671,1503764984,160008576,437062935,1707065306,3622233649,2218934982,3496503480,2185314755,697932208,1512910199,504303377,2075177163,2824099068,1841019862,739644986],Hl=[2781242211,2230877308,2582542199,2381740923,234877682,3184946027,2984144751,1418839493,1348481072,50462977,2848876391,2102799147,434634494,1656084439,3863849899,2599188086,1167051466,2636087938,1082771913,2281340285,368048890,3954334041,3381544775,201060592,3963727277,1739838676,4250903202,3930435503,3206782108,4149453988,2531553906,1536934080,3262494647,484572669,2923271059,1783375398,1517041206,1098792767,49674231,1334037708,1550332980,4098991525,886171109,150598129,2481090929,1940642008,1398944049,1059722517,201851908,1385547719,1699095331,1587397571,674240536,2704774806,252314885,3039795866,151914247,908333586,2602270848,1038082786,651029483,1766729511,3447698098,2682942837,454166793,2652734339,1951935532,775166490,758520603,3000790638,4004797018,4217086112,4137964114,1299594043,1639438038,3464344499,2068982057,1054729187,1901997871,2534638724,4121318227,1757008337,0,750906861,1614815264,535035132,3363418545,3988151131,3201591914,1183697867,3647454910,1265776953,3734260298,3566750796,3903871064,1250283471,1807470800,717615087,3847203498,384695291,3313910595,3617213773,1432761139,2484176261,3481945413,283769337,100925954,2180939647,4037038160,1148730428,3123027871,3813386408,4087501137,4267549603,3229630528,2315620239,2906624658,3156319645,1215313976,82966005,3747855548,3245848246,1974459098,1665278241,807407632,451280895,251524083,1841287890,1283575245,337120268,891687699,801369324,3787349855,2721421207,3431482436,959321879,1469301956,4065699751,2197585534,1199193405,2898814052,3887750493,724703513,2514908019,2696962144,2551808385,3516813135,2141445340,1715741218,2119445034,2872807568,2198571144,3398190662,700968686,3547052216,1009259540,2041044702,3803995742,487983883,1991105499,1004265696,1449407026,1316239930,504629770,3683797321,168560134,1816667172,3837287516,1570751170,1857934291,4014189740,2797888098,2822345105,2754712981,936633572,2347923833,852879335,1133234376,1500395319,3084545389,2348912013,1689376213,3533459022,3762923945,3034082412,4205598294,133428468,634383082,2949277029,2398386810,3913789102,403703816,3580869306,2297460856,1867130149,1918643758,607656988,4049053350,3346248884,1368901318,600565992,2090982877,2632479860,557719327,3717614411,3697393085,2249034635,2232388234,2430627952,1115438654,3295786421,2865522278,3633334344,84280067,33027830,303828494,2747425121,1600795957,4188952407,3496589753,2434238086,1486471617,658119965,3106381470,953803233,334231800,3005978776,857870609,3151128937,1890179545,2298973838,2805175444,3056442267,574365214,2450884487,550103529,1233637070,4289353045,2018519080,2057691103,2399374476,4166623649,2148108681,387583245,3664101311,836232934,3330556482,3100665960,3280093505,2955516313,2002398509,287182607,3413881008,4238890068,3597515707,975967766],Vl=[1671808611,2089089148,2006576759,2072901243,4061003762,1807603307,1873927791,3310653893,810573872,16974337,1739181671,729634347,4263110654,3613570519,2883997099,1989864566,3393556426,2191335298,3376449993,2106063485,4195741690,1508618841,1204391495,4027317232,2917941677,3563566036,2734514082,2951366063,2629772188,2767672228,1922491506,3227229120,3082974647,4246528509,2477669779,644500518,911895606,1061256767,4144166391,3427763148,878471220,2784252325,3845444069,4043897329,1905517169,3631459288,827548209,356461077,67897348,3344078279,593839651,3277757891,405286936,2527147926,84871685,2595565466,118033927,305538066,2157648768,3795705826,3945188843,661212711,2999812018,1973414517,152769033,2208177539,745822252,439235610,455947803,1857215598,1525593178,2700827552,1391895634,994932283,3596728278,3016654259,695947817,3812548067,795958831,2224493444,1408607827,3513301457,0,3979133421,543178784,4229948412,2982705585,1542305371,1790891114,3410398667,3201918910,961245753,1256100938,1289001036,1491644504,3477767631,3496721360,4012557807,2867154858,4212583931,1137018435,1305975373,861234739,2241073541,1171229253,4178635257,33948674,2139225727,1357946960,1011120188,2679776671,2833468328,1374921297,2751356323,1086357568,2408187279,2460827538,2646352285,944271416,4110742005,3168756668,3066132406,3665145818,560153121,271589392,4279952895,4077846003,3530407890,3444343245,202643468,322250259,3962553324,1608629855,2543990167,1154254916,389623319,3294073796,2817676711,2122513534,1028094525,1689045092,1575467613,422261273,1939203699,1621147744,2174228865,1339137615,3699352540,577127458,712922154,2427141008,2290289544,1187679302,3995715566,3100863416,339486740,3732514782,1591917662,186455563,3681988059,3762019296,844522546,978220090,169743370,1239126601,101321734,611076132,1558493276,3260915650,3547250131,2901361580,1655096418,2443721105,2510565781,3828863972,2039214713,3878868455,3359869896,928607799,1840765549,2374762893,3580146133,1322425422,2850048425,1823791212,1459268694,4094161908,3928346602,1706019429,2056189050,2934523822,135794696,3134549946,2022240376,628050469,779246638,472135708,2800834470,3032970164,3327236038,3894660072,3715932637,1956440180,522272287,1272813131,3185336765,2340818315,2323976074,1888542832,1044544574,3049550261,1722469478,1222152264,50660867,4127324150,236067854,1638122081,895445557,1475980887,3117443513,2257655686,3243809217,489110045,2662934430,3778599393,4162055160,2561878936,288563729,1773916777,3648039385,2391345038,2493985684,2612407707,505560094,2274497927,3911240169,3460925390,1442818645,678973480,3749357023,2358182796,2717407649,2306869641,219617805,3218761151,3862026214,1120306242,1756942440,1103331905,2578459033,762796589,252780047,2966125488,1425844308,3151392187,372911126],$l=[1667474886,2088535288,2004326894,2071694838,4075949567,1802223062,1869591006,3318043793,808472672,16843522,1734846926,724270422,4278065639,3621216949,2880169549,1987484396,3402253711,2189597983,3385409673,2105378810,4210693615,1499065266,1195886990,4042263547,2913856577,3570689971,2728590687,2947541573,2627518243,2762274643,1920112356,3233831835,3082273397,4261223649,2475929149,640051788,909531756,1061110142,4160160501,3435941763,875846760,2779116625,3857003729,4059105529,1903268834,3638064043,825316194,353713962,67374088,3351728789,589522246,3284360861,404236336,2526454071,84217610,2593830191,117901582,303183396,2155911963,3806477791,3958056653,656894286,2998062463,1970642922,151591698,2206440989,741110872,437923380,454765878,1852748508,1515908788,2694904667,1381168804,993742198,3604373943,3014905469,690584402,3823320797,791638366,2223281939,1398011302,3520161977,0,3991743681,538992704,4244381667,2981218425,1532751286,1785380564,3419096717,3200178535,960056178,1246420628,1280103576,1482221744,3486468741,3503319995,4025428677,2863326543,4227536621,1128514950,1296947098,859002214,2240123921,1162203018,4193849577,33687044,2139062782,1347481760,1010582648,2678045221,2829640523,1364325282,2745433693,1077985408,2408548869,2459086143,2644360225,943212656,4126475505,3166494563,3065430391,3671750063,555836226,269496352,4294908645,4092792573,3537006015,3452783745,202118168,320025894,3974901699,1600119230,2543297077,1145359496,387397934,3301201811,2812801621,2122220284,1027426170,1684319432,1566435258,421079858,1936954854,1616945344,2172753945,1330631070,3705438115,572679748,707427924,2425400123,2290647819,1179044492,4008585671,3099120491,336870440,3739122087,1583276732,185277718,3688593069,3772791771,842159716,976899700,168435220,1229577106,101059084,606366792,1549591736,3267517855,3553849021,2897014595,1650632388,2442242105,2509612081,3840161747,2038008818,3890688725,3368567691,926374254,1835907034,2374863873,3587531953,1313788572,2846482505,1819063512,1448540844,4109633523,3941213647,1701162954,2054852340,2930698567,134748176,3132806511,2021165296,623210314,774795868,471606328,2795958615,3031746419,3334885783,3907527627,3722280097,1953799400,522133822,1263263126,3183336545,2341176845,2324333839,1886425312,1044267644,3048588401,1718004428,1212733584,50529542,4143317495,235803164,1633788866,892690282,1465383342,3115962473,2256965911,3250673817,488449850,2661202215,3789633753,4177007595,2560144171,286339874,1768537042,3654906025,2391705863,2492770099,2610673197,505291324,2273808917,3924369609,3469625735,1431699370,673740880,3755965093,2358021891,2711746649,2307489801,218961690,3217021541,3873845719,1111672452,1751693520,1094828930,2576986153,757954394,252645662,2964376443,1414855848,3149649517,370555436],Wl=[1374988112,2118214995,437757123,975658646,1001089995,530400753,2902087851,1273168787,540080725,2910219766,2295101073,4110568485,1340463100,3307916247,641025152,3043140495,3736164937,632953703,1172967064,1576976609,3274667266,2169303058,2370213795,1809054150,59727847,361929877,3211623147,2505202138,3569255213,1484005843,1239443753,2395588676,1975683434,4102977912,2572697195,666464733,3202437046,4035489047,3374361702,2110667444,1675577880,3843699074,2538681184,1649639237,2976151520,3144396420,4269907996,4178062228,1883793496,2403728665,2497604743,1383856311,2876494627,1917518562,3810496343,1716890410,3001755655,800440835,2261089178,3543599269,807962610,599762354,33778362,3977675356,2328828971,2809771154,4077384432,1315562145,1708848333,101039829,3509871135,3299278474,875451293,2733856160,92987698,2767645557,193195065,1080094634,1584504582,3178106961,1042385657,2531067453,3711829422,1306967366,2438237621,1908694277,67556463,1615861247,429456164,3602770327,2302690252,1742315127,2968011453,126454664,3877198648,2043211483,2709260871,2084704233,4169408201,0,159417987,841739592,504459436,1817866830,4245618683,260388950,1034867998,908933415,168810852,1750902305,2606453969,607530554,202008497,2472011535,3035535058,463180190,2160117071,1641816226,1517767529,470948374,3801332234,3231722213,1008918595,303765277,235474187,4069246893,766945465,337553864,1475418501,2943682380,4003061179,2743034109,4144047775,1551037884,1147550661,1543208500,2336434550,3408119516,3069049960,3102011747,3610369226,1113818384,328671808,2227573024,2236228733,3535486456,2935566865,3341394285,496906059,3702665459,226906860,2009195472,733156972,2842737049,294930682,1206477858,2835123396,2700099354,1451044056,573804783,2269728455,3644379585,2362090238,2564033334,2801107407,2776292904,3669462566,1068351396,742039012,1350078989,1784663195,1417561698,4136440770,2430122216,775550814,2193862645,2673705150,1775276924,1876241833,3475313331,3366754619,270040487,3902563182,3678124923,3441850377,1851332852,3969562369,2203032232,3868552805,2868897406,566021896,4011190502,3135740889,1248802510,3936291284,699432150,832877231,708780849,3332740144,899835584,1951317047,4236429990,3767586992,866637845,4043610186,1106041591,2144161806,395441711,1984812685,1139781709,3433712980,3835036895,2664543715,1282050075,3240894392,1181045119,2640243204,25965917,4203181171,4211818798,3009879386,2463879762,3910161971,1842759443,2597806476,933301370,1509430414,3943906441,3467192302,3076639029,3776767469,2051518780,2631065433,1441952575,404016761,1942435775,1408749034,1610459739,3745345300,2017778566,3400528769,3110650942,941896748,3265478751,371049330,3168937228,675039627,4279080257,967311729,135050206,3635733660,1683407248,2076935265,3576870512,1215061108,3501741890],Jl=[1347548327,1400783205,3273267108,2520393566,3409685355,4045380933,2880240216,2471224067,1428173050,4138563181,2441661558,636813900,4233094615,3620022987,2149987652,2411029155,1239331162,1730525723,2554718734,3781033664,46346101,310463728,2743944855,3328955385,3875770207,2501218972,3955191162,3667219033,768917123,3545789473,692707433,1150208456,1786102409,2029293177,1805211710,3710368113,3065962831,401639597,1724457132,3028143674,409198410,2196052529,1620529459,1164071807,3769721975,2226875310,486441376,2499348523,1483753576,428819965,2274680428,3075636216,598438867,3799141122,1474502543,711349675,129166120,53458370,2592523643,2782082824,4063242375,2988687269,3120694122,1559041666,730517276,2460449204,4042459122,2706270690,3446004468,3573941694,533804130,2328143614,2637442643,2695033685,839224033,1973745387,957055980,2856345839,106852767,1371368976,4181598602,1033297158,2933734917,1179510461,3046200461,91341917,1862534868,4284502037,605657339,2547432937,3431546947,2003294622,3182487618,2282195339,954669403,3682191598,1201765386,3917234703,3388507166,0,2198438022,1211247597,2887651696,1315723890,4227665663,1443857720,507358933,657861945,1678381017,560487590,3516619604,975451694,2970356327,261314535,3535072918,2652609425,1333838021,2724322336,1767536459,370938394,182621114,3854606378,1128014560,487725847,185469197,2918353863,3106780840,3356761769,2237133081,1286567175,3152976349,4255350624,2683765030,3160175349,3309594171,878443390,1988838185,3704300486,1756818940,1673061617,3403100636,272786309,1075025698,545572369,2105887268,4174560061,296679730,1841768865,1260232239,4091327024,3960309330,3497509347,1814803222,2578018489,4195456072,575138148,3299409036,446754879,3629546796,4011996048,3347532110,3252238545,4270639778,915985419,3483825537,681933534,651868046,2755636671,3828103837,223377554,2607439820,1649704518,3270937875,3901806776,1580087799,4118987695,3198115200,2087309459,2842678573,3016697106,1003007129,2802849917,1860738147,2077965243,164439672,4100872472,32283319,2827177882,1709610350,2125135846,136428751,3874428392,3652904859,3460984630,3572145929,3593056380,2939266226,824852259,818324884,3224740454,930369212,2801566410,2967507152,355706840,1257309336,4148292826,243256656,790073846,2373340630,1296297904,1422699085,3756299780,3818836405,457992840,3099667487,2135319889,77422314,1560382517,1945798516,788204353,1521706781,1385356242,870912086,325965383,2358957921,2050466060,2388260884,2313884476,4006521127,901210569,3990953189,1014646705,1503449823,1062597235,2031621326,3212035895,3931371469,1533017514,350174575,2256028891,2177544179,1052338372,741876788,1606591296,1914052035,213705253,2334669897,1107234197,1899603969,3725069491,2631447780,2422494913,1635502980,1893020342,1950903388,1120974935],ql=[2807058932,1699970625,2764249623,1586903591,1808481195,1173430173,1487645946,59984867,4199882800,1844882806,1989249228,1277555970,3623636965,3419915562,1149249077,2744104290,1514790577,459744698,244860394,3235995134,1963115311,4027744588,2544078150,4190530515,1608975247,2627016082,2062270317,1507497298,2200818878,567498868,1764313568,3359936201,2305455554,2037970062,1047239e3,1910319033,1337376481,2904027272,2892417312,984907214,1243112415,830661914,861968209,2135253587,2011214180,2927934315,2686254721,731183368,1750626376,4246310725,1820824798,4172763771,3542330227,48394827,2404901663,2871682645,671593195,3254988725,2073724613,145085239,2280796200,2779915199,1790575107,2187128086,472615631,3029510009,4075877127,3802222185,4107101658,3201631749,1646252340,4270507174,1402811438,1436590835,3778151818,3950355702,3963161475,4020912224,2667994737,273792366,2331590177,104699613,95345982,3175501286,2377486676,1560637892,3564045318,369057872,4213447064,3919042237,1137477952,2658625497,1119727848,2340947849,1530455833,4007360968,172466556,266959938,516552836,0,2256734592,3980931627,1890328081,1917742170,4294704398,945164165,3575528878,958871085,3647212047,2787207260,1423022939,775562294,1739656202,3876557655,2530391278,2443058075,3310321856,547512796,1265195639,437656594,3121275539,719700128,3762502690,387781147,218828297,3350065803,2830708150,2848461854,428169201,122466165,3720081049,1627235199,648017665,4122762354,1002783846,2117360635,695634755,3336358691,4234721005,4049844452,3704280881,2232435299,574624663,287343814,612205898,1039717051,840019705,2708326185,793451934,821288114,1391201670,3822090177,376187827,3113855344,1224348052,1679968233,2361698556,1058709744,752375421,2431590963,1321699145,3519142200,2734591178,188127444,2177869557,3727205754,2384911031,3215212461,2648976442,2450346104,3432737375,1180849278,331544205,3102249176,4150144569,2952102595,2159976285,2474404304,766078933,313773861,2570832044,2108100632,1668212892,3145456443,2013908262,418672217,3070356634,2594734927,1852171925,3867060991,3473416636,3907448597,2614737639,919489135,164948639,2094410160,2997825956,590424639,2486224549,1723872674,3157750862,3399941250,3501252752,3625268135,2555048196,3673637356,1343127501,4130281361,3599595085,2957853679,1297403050,81781910,3051593425,2283490410,532201772,1367295589,3926170974,895287692,1953757831,1093597963,492483431,3528626907,1446242576,1192455638,1636604631,209336225,344873464,1015671571,669961897,3375740769,3857572124,2973530695,3747192018,1933530610,3464042516,935293895,3454686199,2858115069,1863638845,3683022916,4085369519,3292445032,875313188,1080017571,3279033885,621591778,1233856572,2504130317,24197544,3017672716,3835484340,3247465558,2220981195,3060847922,1551124588,1463996600],Kl=[4104605777,1097159550,396673818,660510266,2875968315,2638606623,4200115116,3808662347,821712160,1986918061,3430322568,38544885,3856137295,718002117,893681702,1654886325,2975484382,3122358053,3926825029,4274053469,796197571,1290801793,1184342925,3556361835,2405426947,2459735317,1836772287,1381620373,3196267988,1948373848,3764988233,3385345166,3263785589,2390325492,1480485785,3111247143,3780097726,2293045232,548169417,3459953789,3746175075,439452389,1362321559,1400849762,1685577905,1806599355,2174754046,137073913,1214797936,1174215055,3731654548,2079897426,1943217067,1258480242,529487843,1437280870,3945269170,3049390895,3313212038,923313619,679998e3,3215307299,57326082,377642221,3474729866,2041877159,133361907,1776460110,3673476453,96392454,878845905,2801699524,777231668,4082475170,2330014213,4142626212,2213296395,1626319424,1906247262,1846563261,562755902,3708173718,1040559837,3871163981,1418573201,3294430577,114585348,1343618912,2566595609,3186202582,1078185097,3651041127,3896688048,2307622919,425408743,3371096953,2081048481,1108339068,2216610296,0,2156299017,736970802,292596766,1517440620,251657213,2235061775,2933202493,758720310,265905162,1554391400,1532285339,908999204,174567692,1474760595,4002861748,2610011675,3234156416,3693126241,2001430874,303699484,2478443234,2687165888,585122620,454499602,151849742,2345119218,3064510765,514443284,4044981591,1963412655,2581445614,2137062819,19308535,1928707164,1715193156,4219352155,1126790795,600235211,3992742070,3841024952,836553431,1669664834,2535604243,3323011204,1243905413,3141400786,4180808110,698445255,2653899549,2989552604,2253581325,3252932727,3004591147,1891211689,2487810577,3915653703,4237083816,4030667424,2100090966,865136418,1229899655,953270745,3399679628,3557504664,4118925222,2061379749,3079546586,2915017791,983426092,2022837584,1607244650,2118541908,2366882550,3635996816,972512814,3283088770,1568718495,3499326569,3576539503,621982671,2895723464,410887952,2623762152,1002142683,645401037,1494807662,2595684844,1335535747,2507040230,4293295786,3167684641,367585007,3885750714,1865862730,2668221674,2960971305,2763173681,1059270954,2777952454,2724642869,1320957812,2194319100,2429595872,2815956275,77089521,3973773121,3444575871,2448830231,1305906550,4021308739,2857194700,2516901860,3518358430,1787304780,740276417,1699839814,1592394909,2352307457,2272556026,188821243,1729977011,3687994002,274084841,3594982253,3613494426,2701949495,4162096729,322734571,2837966542,1640576439,484830689,1202797690,3537852828,4067639125,349075736,3342319475,4157467219,4255800159,1030690015,1155237496,2951971274,1757691577,607398968,2738905026,499347990,3794078908,1011452712,227885567,2818666809,213114376,3034881240,1455525988,3414450555,850817237,1817998408,3092726480],Yl=[0,235474187,470948374,303765277,941896748,908933415,607530554,708780849,1883793496,2118214995,1817866830,1649639237,1215061108,1181045119,1417561698,1517767529,3767586992,4003061179,4236429990,4069246893,3635733660,3602770327,3299278474,3400528769,2430122216,2664543715,2362090238,2193862645,2835123396,2801107407,3035535058,3135740889,3678124923,3576870512,3341394285,3374361702,3810496343,3977675356,4279080257,4043610186,2876494627,2776292904,3076639029,3110650942,2472011535,2640243204,2403728665,2169303058,1001089995,899835584,666464733,699432150,59727847,226906860,530400753,294930682,1273168787,1172967064,1475418501,1509430414,1942435775,2110667444,1876241833,1641816226,2910219766,2743034109,2976151520,3211623147,2505202138,2606453969,2302690252,2269728455,3711829422,3543599269,3240894392,3475313331,3843699074,3943906441,4178062228,4144047775,1306967366,1139781709,1374988112,1610459739,1975683434,2076935265,1775276924,1742315127,1034867998,866637845,566021896,800440835,92987698,193195065,429456164,395441711,1984812685,2017778566,1784663195,1683407248,1315562145,1080094634,1383856311,1551037884,101039829,135050206,437757123,337553864,1042385657,807962610,573804783,742039012,2531067453,2564033334,2328828971,2227573024,2935566865,2700099354,3001755655,3168937228,3868552805,3902563182,4203181171,4102977912,3736164937,3501741890,3265478751,3433712980,1106041591,1340463100,1576976609,1408749034,2043211483,2009195472,1708848333,1809054150,832877231,1068351396,766945465,599762354,159417987,126454664,361929877,463180190,2709260871,2943682380,3178106961,3009879386,2572697195,2538681184,2236228733,2336434550,3509871135,3745345300,3441850377,3274667266,3910161971,3877198648,4110568485,4211818798,2597806476,2497604743,2261089178,2295101073,2733856160,2902087851,3202437046,2968011453,3936291284,3835036895,4136440770,4169408201,3535486456,3702665459,3467192302,3231722213,2051518780,1951317047,1716890410,1750902305,1113818384,1282050075,1584504582,1350078989,168810852,67556463,371049330,404016761,841739592,1008918595,775550814,540080725,3969562369,3801332234,4035489047,4269907996,3569255213,3669462566,3366754619,3332740144,2631065433,2463879762,2160117071,2395588676,2767645557,2868897406,3102011747,3069049960,202008497,33778362,270040487,504459436,875451293,975658646,675039627,641025152,2084704233,1917518562,1615861247,1851332852,1147550661,1248802510,1484005843,1451044056,933301370,967311729,733156972,632953703,260388950,25965917,328671808,496906059,1206477858,1239443753,1543208500,1441952575,2144161806,1908694277,1675577880,1842759443,3610369226,3644379585,3408119516,3307916247,4011190502,3776767469,4077384432,4245618683,2809771154,2842737049,3144396420,3043140495,2673705150,2438237621,2203032232,2370213795],Ql=[0,185469197,370938394,487725847,741876788,657861945,975451694,824852259,1483753576,1400783205,1315723890,1164071807,1950903388,2135319889,1649704518,1767536459,2967507152,3152976349,2801566410,2918353863,2631447780,2547432937,2328143614,2177544179,3901806776,3818836405,4270639778,4118987695,3299409036,3483825537,3535072918,3652904859,2077965243,1893020342,1841768865,1724457132,1474502543,1559041666,1107234197,1257309336,598438867,681933534,901210569,1052338372,261314535,77422314,428819965,310463728,3409685355,3224740454,3710368113,3593056380,3875770207,3960309330,4045380933,4195456072,2471224067,2554718734,2237133081,2388260884,3212035895,3028143674,2842678573,2724322336,4138563181,4255350624,3769721975,3955191162,3667219033,3516619604,3431546947,3347532110,2933734917,2782082824,3099667487,3016697106,2196052529,2313884476,2499348523,2683765030,1179510461,1296297904,1347548327,1533017514,1786102409,1635502980,2087309459,2003294622,507358933,355706840,136428751,53458370,839224033,957055980,605657339,790073846,2373340630,2256028891,2607439820,2422494913,2706270690,2856345839,3075636216,3160175349,3573941694,3725069491,3273267108,3356761769,4181598602,4063242375,4011996048,3828103837,1033297158,915985419,730517276,545572369,296679730,446754879,129166120,213705253,1709610350,1860738147,1945798516,2029293177,1239331162,1120974935,1606591296,1422699085,4148292826,4233094615,3781033664,3931371469,3682191598,3497509347,3446004468,3328955385,2939266226,2755636671,3106780840,2988687269,2198438022,2282195339,2501218972,2652609425,1201765386,1286567175,1371368976,1521706781,1805211710,1620529459,2105887268,1988838185,533804130,350174575,164439672,46346101,870912086,954669403,636813900,788204353,2358957921,2274680428,2592523643,2441661558,2695033685,2880240216,3065962831,3182487618,3572145929,3756299780,3270937875,3388507166,4174560061,4091327024,4006521127,3854606378,1014646705,930369212,711349675,560487590,272786309,457992840,106852767,223377554,1678381017,1862534868,1914052035,2031621326,1211247597,1128014560,1580087799,1428173050,32283319,182621114,401639597,486441376,768917123,651868046,1003007129,818324884,1503449823,1385356242,1333838021,1150208456,1973745387,2125135846,1673061617,1756818940,2970356327,3120694122,2802849917,2887651696,2637442643,2520393566,2334669897,2149987652,3917234703,3799141122,4284502037,4100872472,3309594171,3460984630,3545789473,3629546796,2050466060,1899603969,1814803222,1730525723,1443857720,1560382517,1075025698,1260232239,575138148,692707433,878443390,1062597235,243256656,91341917,409198410,325965383,3403100636,3252238545,3704300486,3620022987,3874428392,3990953189,4042459122,4227665663,2460449204,2578018489,2226875310,2411029155,3198115200,3046200461,2827177882,2743944855],Xl=[0,218828297,437656594,387781147,875313188,958871085,775562294,590424639,1750626376,1699970625,1917742170,2135253587,1551124588,1367295589,1180849278,1265195639,3501252752,3720081049,3399941250,3350065803,3835484340,3919042237,4270507174,4085369519,3102249176,3051593425,2734591178,2952102595,2361698556,2177869557,2530391278,2614737639,3145456443,3060847922,2708326185,2892417312,2404901663,2187128086,2504130317,2555048196,3542330227,3727205754,3375740769,3292445032,3876557655,3926170974,4246310725,4027744588,1808481195,1723872674,1910319033,2094410160,1608975247,1391201670,1173430173,1224348052,59984867,244860394,428169201,344873464,935293895,984907214,766078933,547512796,1844882806,1627235199,2011214180,2062270317,1507497298,1423022939,1137477952,1321699145,95345982,145085239,532201772,313773861,830661914,1015671571,731183368,648017665,3175501286,2957853679,2807058932,2858115069,2305455554,2220981195,2474404304,2658625497,3575528878,3625268135,3473416636,3254988725,3778151818,3963161475,4213447064,4130281361,3599595085,3683022916,3432737375,3247465558,3802222185,4020912224,4172763771,4122762354,3201631749,3017672716,2764249623,2848461854,2331590177,2280796200,2431590963,2648976442,104699613,188127444,472615631,287343814,840019705,1058709744,671593195,621591778,1852171925,1668212892,1953757831,2037970062,1514790577,1463996600,1080017571,1297403050,3673637356,3623636965,3235995134,3454686199,4007360968,3822090177,4107101658,4190530515,2997825956,3215212461,2830708150,2779915199,2256734592,2340947849,2627016082,2443058075,172466556,122466165,273792366,492483431,1047239e3,861968209,612205898,695634755,1646252340,1863638845,2013908262,1963115311,1446242576,1530455833,1277555970,1093597963,1636604631,1820824798,2073724613,1989249228,1436590835,1487645946,1337376481,1119727848,164948639,81781910,331544205,516552836,1039717051,821288114,669961897,719700128,2973530695,3157750862,2871682645,2787207260,2232435299,2283490410,2667994737,2450346104,3647212047,3564045318,3279033885,3464042516,3980931627,3762502690,4150144569,4199882800,3070356634,3121275539,2904027272,2686254721,2200818878,2384911031,2570832044,2486224549,3747192018,3528626907,3310321856,3359936201,3950355702,3867060991,4049844452,4234721005,1739656202,1790575107,2108100632,1890328081,1402811438,1586903591,1233856572,1149249077,266959938,48394827,369057872,418672217,1002783846,919489135,567498868,752375421,209336225,24197544,376187827,459744698,945164165,895287692,574624663,793451934,1679968233,1764313568,2117360635,1933530610,1343127501,1560637892,1243112415,1192455638,3704280881,3519142200,3336358691,3419915562,3907448597,3857572124,4075877127,4294704398,3029510009,3113855344,2927934315,2744104290,2159976285,2377486676,2594734927,2544078150],Zl=[0,151849742,303699484,454499602,607398968,758720310,908999204,1059270954,1214797936,1097159550,1517440620,1400849762,1817998408,1699839814,2118541908,2001430874,2429595872,2581445614,2194319100,2345119218,3034881240,3186202582,2801699524,2951971274,3635996816,3518358430,3399679628,3283088770,4237083816,4118925222,4002861748,3885750714,1002142683,850817237,698445255,548169417,529487843,377642221,227885567,77089521,1943217067,2061379749,1640576439,1757691577,1474760595,1592394909,1174215055,1290801793,2875968315,2724642869,3111247143,2960971305,2405426947,2253581325,2638606623,2487810577,3808662347,3926825029,4044981591,4162096729,3342319475,3459953789,3576539503,3693126241,1986918061,2137062819,1685577905,1836772287,1381620373,1532285339,1078185097,1229899655,1040559837,923313619,740276417,621982671,439452389,322734571,137073913,19308535,3871163981,4021308739,4104605777,4255800159,3263785589,3414450555,3499326569,3651041127,2933202493,2815956275,3167684641,3049390895,2330014213,2213296395,2566595609,2448830231,1305906550,1155237496,1607244650,1455525988,1776460110,1626319424,2079897426,1928707164,96392454,213114376,396673818,514443284,562755902,679998e3,865136418,983426092,3708173718,3557504664,3474729866,3323011204,4180808110,4030667424,3945269170,3794078908,2507040230,2623762152,2272556026,2390325492,2975484382,3092726480,2738905026,2857194700,3973773121,3856137295,4274053469,4157467219,3371096953,3252932727,3673476453,3556361835,2763173681,2915017791,3064510765,3215307299,2156299017,2307622919,2459735317,2610011675,2081048481,1963412655,1846563261,1729977011,1480485785,1362321559,1243905413,1126790795,878845905,1030690015,645401037,796197571,274084841,425408743,38544885,188821243,3613494426,3731654548,3313212038,3430322568,4082475170,4200115116,3780097726,3896688048,2668221674,2516901860,2366882550,2216610296,3141400786,2989552604,2837966542,2687165888,1202797690,1320957812,1437280870,1554391400,1669664834,1787304780,1906247262,2022837584,265905162,114585348,499347990,349075736,736970802,585122620,972512814,821712160,2595684844,2478443234,2293045232,2174754046,3196267988,3079546586,2895723464,2777952454,3537852828,3687994002,3234156416,3385345166,4142626212,4293295786,3841024952,3992742070,174567692,57326082,410887952,292596766,777231668,660510266,1011452712,893681702,1108339068,1258480242,1343618912,1494807662,1715193156,1865862730,1948373848,2100090966,2701949495,2818666809,3004591147,3122358053,2235061775,2352307457,2535604243,2653899549,3915653703,3764988233,4219352155,4067639125,3444575871,3294430577,3746175075,3594982253,836553431,953270745,600235211,718002117,367585007,484830689,133361907,251657213,2041877159,1891211689,1806599355,1654886325,1568718495,1418573201,1335535747,1184342925];function ed(e){for(var t=[],i=0;i>2,this._Ke[i][t%4]=a[t],this._Kd[e-i][t%4]=a[t];for(var o,n=0,l=r;l>16&255]<<24^jl[o>>8&255]<<16^jl[255&o]<<8^jl[o>>24&255]^Nl[n]<<24,n+=1,8!=r)for(t=1;t>8&255]<<8^jl[o>>16&255]<<16^jl[o>>24&255]<<24;for(t=r/2+1;t>2,h=l%4,this._Ke[d][h]=a[t],this._Kd[e-d][h]=a[t++],l++}for(var d=1;d>24&255]^Ql[o>>16&255]^Xl[o>>8&255]^Zl[255&o]},td.prototype.encrypt=function(e){if(16!=e.length)throw new Error("invalid plaintext size (must be 16 bytes)");for(var t=this._Ke.length-1,i=[0,0,0,0],s=ed(e),r=0;r<4;r++)s[r]^=this._Ke[0][r];for(var a=1;a>24&255]^Hl[s[(r+1)%4]>>16&255]^Vl[s[(r+2)%4]>>8&255]^$l[255&s[(r+3)%4]]^this._Ke[a][r];s=i.slice()}var o,n=Il(16);for(r=0;r<4;r++)o=this._Ke[t][r],n[4*r]=255&(jl[s[r]>>24&255]^o>>24),n[4*r+1]=255&(jl[s[(r+1)%4]>>16&255]^o>>16),n[4*r+2]=255&(jl[s[(r+2)%4]>>8&255]^o>>8),n[4*r+3]=255&(jl[255&s[(r+3)%4]]^o);return n},td.prototype.decrypt=function(e){if(16!=e.length)throw new Error("invalid ciphertext size (must be 16 bytes)");for(var t=this._Kd.length-1,i=[0,0,0,0],s=ed(e),r=0;r<4;r++)s[r]^=this._Kd[0][r];for(var a=1;a>24&255]^Jl[s[(r+3)%4]>>16&255]^ql[s[(r+2)%4]>>8&255]^Kl[255&s[(r+1)%4]]^this._Kd[a][r];s=i.slice()}var o,n=Il(16);for(r=0;r<4;r++)o=this._Kd[t][r],n[4*r]=255&(zl[s[r]>>24&255]^o>>24),n[4*r+1]=255&(zl[s[(r+3)%4]>>16&255]^o>>16),n[4*r+2]=255&(zl[s[(r+2)%4]>>8&255]^o>>8),n[4*r+3]=255&(zl[255&s[(r+1)%4]]^o);return n};var id=function(e){if(!(this instanceof id))throw Error("AES must be instanitated with `new`");this.description="Electronic Code Block",this.name="ecb",this._aes=new td(e)};id.prototype.encrypt=function(e){if((e=Bl(e)).length%16!=0)throw new Error("invalid plaintext size (must be multiple of 16 bytes)");for(var t=Il(e.length),i=Il(16),s=0;sNumber.MAX_SAFE_INTEGER)throw new Error("integer value out of safe range");for(var t=15;t>=0;--t)this._counter[t]=e%256,e=parseInt(e/256)},od.prototype.setBytes=function(e){if(16!=(e=Bl(e,!0)).length)throw new Error("invalid counter bytes size (must be 16 bytes)");this._counter=e},od.prototype.increment=function(){for(var e=15;e>=0;e--){if(255!==this._counter[e]){this._counter[e]++;break}this._counter[e]=0}};var nd=function(e,t){if(!(this instanceof nd))throw Error("AES must be instanitated with `new`");this.description="Counter",this.name="ctr",t instanceof od||(t=new od(t)),this._counter=t,this._remainingCounter=null,this._remainingCounterIndex=16,this._aes=new td(e)};nd.prototype.encrypt=function(e){for(var t=Bl(e,!0),i=0;i16)throw new Error("PKCS#7 padding byte out of range");for(var i=e.length-t,s=0;s>>2]>>>24-a%4*8&255;t[s+a>>>2]|=o<<24-(s+a)%4*8}else for(var n=0;n>>2]=i[n>>>2];return this.sigBytes+=r,this},clamp:function(){var t=this.words,i=this.sigBytes;t[i>>>2]&=4294967295<<32-i%4*8,t.length=e.ceil(i/4)},clone:function(){var e=l.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],i=0;i>>2]>>>24-r%4*8&255;s.push((a>>>4).toString(16)),s.push((15&a).toString(16))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>3]|=parseInt(e.substr(s,2),16)<<24-s%8*4;return new d.init(i,t/2)}},u=h.Latin1={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>24-r%4*8&255;s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var t=e.length,i=[],s=0;s>>2]|=(255&e.charCodeAt(s))<<24-s%4*8;return new d.init(i,t)}},p=h.Utf8={stringify:function(e){try{return decodeURIComponent(escape(u.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return u.parse(unescape(encodeURIComponent(e)))}},f=n.BufferedBlockAlgorithm=l.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=p.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(t){var i,s=this._data,r=s.words,a=s.sigBytes,o=this.blockSize,n=a/(4*o),l=(n=t?e.ceil(n):e.max((0|n)-this._minBufferSize,0))*o,h=e.min(4*l,a);if(l){for(var c=0;c>>2]|=e[r]<<24-r%4*8;t.call(this,s,i)}else t.apply(this,arguments)};s.prototype=e}}(),i.lib.WordArray)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.WordArray,s=e.enc;function r(e){return e<<8&4278255360|e>>>8&16711935}s.Utf16=s.Utf16BE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],r=0;r>>2]>>>16-r%4*8&65535;s.push(String.fromCharCode(a))}return s.join("")},parse:function(e){for(var i=e.length,s=[],r=0;r>>1]|=e.charCodeAt(r)<<16-r%2*16;return t.create(s,2*i)}},s.Utf16LE={stringify:function(e){for(var t=e.words,i=e.sigBytes,s=[],a=0;a>>2]>>>16-a%4*8&65535);s.push(String.fromCharCode(o))}return s.join("")},parse:function(e){for(var i=e.length,s=[],a=0;a>>1]|=r(e.charCodeAt(a)<<16-a%2*16);return t.create(s,2*i)}}}(),i.enc.Utf16)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.WordArray;function s(e,i,s){for(var r=[],a=0,o=0;o>>6-o%4*2;r[a>>>2]|=n<<24-a%4*8,a++}return t.create(r,a)}e.enc.Base64={stringify:function(e){var t=e.words,i=e.sigBytes,s=this._map;e.clamp();for(var r=[],a=0;a>>2]>>>24-a%4*8&255)<<16|(t[a+1>>>2]>>>24-(a+1)%4*8&255)<<8|t[a+2>>>2]>>>24-(a+2)%4*8&255,n=0;n<4&&a+.75*n>>6*(3-n)&63));var l=s.charAt(64);if(l)for(;r.length%4;)r.push(l);return r.join("")},parse:function(e){var t=e.length,i=this._map,r=this._reverseMap;if(!r){r=this._reverseMap=[];for(var a=0;a>>6-o%4*2;r[a>>>2]|=n<<24-a%4*8,a++}return t.create(r,a)}e.enc.Base64url={stringify:function(e,t){void 0===t&&(t=!0);var i=e.words,s=e.sigBytes,r=t?this._safe_map:this._map;e.clamp();for(var a=[],o=0;o>>2]>>>24-o%4*8&255)<<16|(i[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|i[o+2>>>2]>>>24-(o+2)%4*8&255,l=0;l<4&&o+.75*l>>6*(3-l)&63));var d=r.charAt(64);if(d)for(;a.length%4;)a.push(d);return a.join("")},parse:function(e,t){void 0===t&&(t=!0);var i=e.length,r=t?this._safe_map:this._map,a=this._reverseMap;if(!a){a=this._reverseMap=[];for(var o=0;o>>24)|4278255360&(r<<24|r>>>8)}var a=this._hash.words,o=e[t+0],l=e[t+1],p=e[t+2],f=e[t+3],m=e[t+4],g=e[t+5],y=e[t+6],A=e[t+7],b=e[t+8],v=e[t+9],_=e[t+10],S=e[t+11],w=e[t+12],E=e[t+13],T=e[t+14],k=e[t+15],C=a[0],x=a[1],R=a[2],D=a[3];C=d(C,x,R,D,o,7,n[0]),D=d(D,C,x,R,l,12,n[1]),R=d(R,D,C,x,p,17,n[2]),x=d(x,R,D,C,f,22,n[3]),C=d(C,x,R,D,m,7,n[4]),D=d(D,C,x,R,g,12,n[5]),R=d(R,D,C,x,y,17,n[6]),x=d(x,R,D,C,A,22,n[7]),C=d(C,x,R,D,b,7,n[8]),D=d(D,C,x,R,v,12,n[9]),R=d(R,D,C,x,_,17,n[10]),x=d(x,R,D,C,S,22,n[11]),C=d(C,x,R,D,w,7,n[12]),D=d(D,C,x,R,E,12,n[13]),R=d(R,D,C,x,T,17,n[14]),C=h(C,x=d(x,R,D,C,k,22,n[15]),R,D,l,5,n[16]),D=h(D,C,x,R,y,9,n[17]),R=h(R,D,C,x,S,14,n[18]),x=h(x,R,D,C,o,20,n[19]),C=h(C,x,R,D,g,5,n[20]),D=h(D,C,x,R,_,9,n[21]),R=h(R,D,C,x,k,14,n[22]),x=h(x,R,D,C,m,20,n[23]),C=h(C,x,R,D,v,5,n[24]),D=h(D,C,x,R,T,9,n[25]),R=h(R,D,C,x,f,14,n[26]),x=h(x,R,D,C,b,20,n[27]),C=h(C,x,R,D,E,5,n[28]),D=h(D,C,x,R,p,9,n[29]),R=h(R,D,C,x,A,14,n[30]),C=c(C,x=h(x,R,D,C,w,20,n[31]),R,D,g,4,n[32]),D=c(D,C,x,R,b,11,n[33]),R=c(R,D,C,x,S,16,n[34]),x=c(x,R,D,C,T,23,n[35]),C=c(C,x,R,D,l,4,n[36]),D=c(D,C,x,R,m,11,n[37]),R=c(R,D,C,x,A,16,n[38]),x=c(x,R,D,C,_,23,n[39]),C=c(C,x,R,D,E,4,n[40]),D=c(D,C,x,R,o,11,n[41]),R=c(R,D,C,x,f,16,n[42]),x=c(x,R,D,C,y,23,n[43]),C=c(C,x,R,D,v,4,n[44]),D=c(D,C,x,R,w,11,n[45]),R=c(R,D,C,x,k,16,n[46]),C=u(C,x=c(x,R,D,C,p,23,n[47]),R,D,o,6,n[48]),D=u(D,C,x,R,A,10,n[49]),R=u(R,D,C,x,T,15,n[50]),x=u(x,R,D,C,g,21,n[51]),C=u(C,x,R,D,w,6,n[52]),D=u(D,C,x,R,f,10,n[53]),R=u(R,D,C,x,_,15,n[54]),x=u(x,R,D,C,l,21,n[55]),C=u(C,x,R,D,b,6,n[56]),D=u(D,C,x,R,k,10,n[57]),R=u(R,D,C,x,y,15,n[58]),x=u(x,R,D,C,E,21,n[59]),C=u(C,x,R,D,m,6,n[60]),D=u(D,C,x,R,S,10,n[61]),R=u(R,D,C,x,p,15,n[62]),x=u(x,R,D,C,v,21,n[63]),a[0]=a[0]+C|0,a[1]=a[1]+x|0,a[2]=a[2]+R|0,a[3]=a[3]+D|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;i[r>>>5]|=128<<24-r%32;var a=e.floor(s/4294967296),o=s;i[15+(r+64>>>9<<4)]=16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8),i[14+(r+64>>>9<<4)]=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t.sigBytes=4*(i.length+1),this._process();for(var n=this._hash,l=n.words,d=0;d<4;d++){var h=l[d];l[d]=16711935&(h<<8|h>>>24)|4278255360&(h<<24|h>>>8)}return n},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function d(e,t,i,s,r,a,o){var n=e+(t&i|~t&s)+r+o;return(n<>>32-a)+t}function h(e,t,i,s,r,a,o){var n=e+(t&s|i&~s)+r+o;return(n<>>32-a)+t}function c(e,t,i,s,r,a,o){var n=e+(t^i^s)+r+o;return(n<>>32-a)+t}function u(e,t,i,s,r,a,o){var n=e+(i^(t|~s))+r+o;return(n<>>32-a)+t}t.MD5=a._createHelper(l),t.HmacMD5=a._createHmacHelper(l)}(Math),i.MD5)})),Ir((function(e,t){var i,s,r,a,o,n,l,d;e.exports=(s=(i=d=dd).lib,r=s.WordArray,a=s.Hasher,o=i.algo,n=[],l=o.SHA1=a.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],a=i[2],o=i[3],l=i[4],d=0;d<80;d++){if(d<16)n[d]=0|e[t+d];else{var h=n[d-3]^n[d-8]^n[d-14]^n[d-16];n[d]=h<<1|h>>>31}var c=(s<<5|s>>>27)+l+n[d];c+=d<20?1518500249+(r&a|~r&o):d<40?1859775393+(r^a^o):d<60?(r&a|r&o|a&o)-1894007588:(r^a^o)-899497514,l=o,o=a,a=r<<30|r>>>2,r=s,s=c}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+a|0,i[3]=i[3]+o|0,i[4]=i[4]+l|0},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=Math.floor(i/4294967296),t[15+(s+64>>>9<<4)]=i,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}}),i.SHA1=a._createHelper(l),i.HmacSHA1=a._createHmacHelper(l),d.SHA1)})),Ir((function(e,t){var i;e.exports=(i=dd,function(e){var t=i,s=t.lib,r=s.WordArray,a=s.Hasher,o=t.algo,n=[],l=[];!function(){function t(t){for(var i=e.sqrt(t),s=2;s<=i;s++)if(!(t%s))return!1;return!0}function i(e){return 4294967296*(e-(0|e))|0}for(var s=2,r=0;r<64;)t(s)&&(r<8&&(n[r]=i(e.pow(s,.5))),l[r]=i(e.pow(s,1/3)),r++),s++}();var d=[],h=o.SHA256=a.extend({_doReset:function(){this._hash=new r.init(n.slice(0))},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],a=i[2],o=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=0;p<64;p++){if(p<16)d[p]=0|e[t+p];else{var f=d[p-15],m=(f<<25|f>>>7)^(f<<14|f>>>18)^f>>>3,g=d[p-2],y=(g<<15|g>>>17)^(g<<13|g>>>19)^g>>>10;d[p]=m+d[p-7]+y+d[p-16]}var A=s&r^s&a^r&a,b=(s<<30|s>>>2)^(s<<19|s>>>13)^(s<<10|s>>>22),v=u+((n<<26|n>>>6)^(n<<21|n>>>11)^(n<<7|n>>>25))+(n&h^~n&c)+l[p]+d[p];u=c,c=h,h=n,n=o+v|0,o=a,a=r,r=s,s=v+(b+A)|0}i[0]=i[0]+s|0,i[1]=i[1]+r|0,i[2]=i[2]+a|0,i[3]=i[3]+o|0,i[4]=i[4]+n|0,i[5]=i[5]+h|0,i[6]=i[6]+c|0,i[7]=i[7]+u|0},_doFinalize:function(){var t=this._data,i=t.words,s=8*this._nDataBytes,r=8*t.sigBytes;return i[r>>>5]|=128<<24-r%32,i[14+(r+64>>>9<<4)]=e.floor(s/4294967296),i[15+(r+64>>>9<<4)]=s,t.sigBytes=4*i.length,this._process(),this._hash},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});t.SHA256=a._createHelper(h),t.HmacSHA256=a._createHmacHelper(h)}(Math),i.SHA256)})),Ir((function(e,t){var i,s,r,a,o,n;e.exports=(s=(i=n=dd).lib.WordArray,r=i.algo,a=r.SHA256,o=r.SHA224=a.extend({_doReset:function(){this._hash=new s.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=a._doFinalize.call(this);return e.sigBytes-=4,e}}),i.SHA224=a._createHelper(o),i.HmacSHA224=a._createHmacHelper(o),n.SHA224)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.Hasher,s=e.x64,r=s.Word,a=s.WordArray,o=e.algo;function n(){return r.create.apply(r,arguments)}var l=[n(1116352408,3609767458),n(1899447441,602891725),n(3049323471,3964484399),n(3921009573,2173295548),n(961987163,4081628472),n(1508970993,3053834265),n(2453635748,2937671579),n(2870763221,3664609560),n(3624381080,2734883394),n(310598401,1164996542),n(607225278,1323610764),n(1426881987,3590304994),n(1925078388,4068182383),n(2162078206,991336113),n(2614888103,633803317),n(3248222580,3479774868),n(3835390401,2666613458),n(4022224774,944711139),n(264347078,2341262773),n(604807628,2007800933),n(770255983,1495990901),n(1249150122,1856431235),n(1555081692,3175218132),n(1996064986,2198950837),n(2554220882,3999719339),n(2821834349,766784016),n(2952996808,2566594879),n(3210313671,3203337956),n(3336571891,1034457026),n(3584528711,2466948901),n(113926993,3758326383),n(338241895,168717936),n(666307205,1188179964),n(773529912,1546045734),n(1294757372,1522805485),n(1396182291,2643833823),n(1695183700,2343527390),n(1986661051,1014477480),n(2177026350,1206759142),n(2456956037,344077627),n(2730485921,1290863460),n(2820302411,3158454273),n(3259730800,3505952657),n(3345764771,106217008),n(3516065817,3606008344),n(3600352804,1432725776),n(4094571909,1467031594),n(275423344,851169720),n(430227734,3100823752),n(506948616,1363258195),n(659060556,3750685593),n(883997877,3785050280),n(958139571,3318307427),n(1322822218,3812723403),n(1537002063,2003034995),n(1747873779,3602036899),n(1955562222,1575990012),n(2024104815,1125592928),n(2227730452,2716904306),n(2361852424,442776044),n(2428436474,593698344),n(2756734187,3733110249),n(3204031479,2999351573),n(3329325298,3815920427),n(3391569614,3928383900),n(3515267271,566280711),n(3940187606,3454069534),n(4118630271,4000239992),n(116418474,1914138554),n(174292421,2731055270),n(289380356,3203993006),n(460393269,320620315),n(685471733,587496836),n(852142971,1086792851),n(1017036298,365543100),n(1126000580,2618297676),n(1288033470,3409855158),n(1501505948,4234509866),n(1607167915,987167468),n(1816402316,1246189591)],d=[];!function(){for(var e=0;e<80;e++)d[e]=n()}();var h=o.SHA512=t.extend({_doReset:function(){this._hash=new a.init([new r.init(1779033703,4089235720),new r.init(3144134277,2227873595),new r.init(1013904242,4271175723),new r.init(2773480762,1595750129),new r.init(1359893119,2917565137),new r.init(2600822924,725511199),new r.init(528734635,4215389547),new r.init(1541459225,327033209)])},_doProcessBlock:function(e,t){for(var i=this._hash.words,s=i[0],r=i[1],a=i[2],o=i[3],n=i[4],h=i[5],c=i[6],u=i[7],p=s.high,f=s.low,m=r.high,g=r.low,y=a.high,A=a.low,b=o.high,v=o.low,_=n.high,S=n.low,w=h.high,E=h.low,T=c.high,k=c.low,C=u.high,x=u.low,R=p,D=f,L=m,P=g,B=y,I=A,M=b,U=v,F=_,O=S,N=w,j=E,z=T,G=k,H=C,V=x,$=0;$<80;$++){var W,J,q=d[$];if($<16)J=q.high=0|e[t+2*$],W=q.low=0|e[t+2*$+1];else{var K=d[$-15],Y=K.high,Q=K.low,X=(Y>>>1|Q<<31)^(Y>>>8|Q<<24)^Y>>>7,Z=(Q>>>1|Y<<31)^(Q>>>8|Y<<24)^(Q>>>7|Y<<25),ee=d[$-2],te=ee.high,ie=ee.low,se=(te>>>19|ie<<13)^(te<<3|ie>>>29)^te>>>6,re=(ie>>>19|te<<13)^(ie<<3|te>>>29)^(ie>>>6|te<<26),ae=d[$-7],oe=ae.high,ne=ae.low,le=d[$-16],de=le.high,he=le.low;J=(J=(J=X+oe+((W=Z+ne)>>>0>>0?1:0))+se+((W+=re)>>>0>>0?1:0))+de+((W+=he)>>>0>>0?1:0),q.high=J,q.low=W}var ce,ue=F&N^~F&z,pe=O&j^~O&G,fe=R&L^R&B^L&B,me=D&P^D&I^P&I,ge=(R>>>28|D<<4)^(R<<30|D>>>2)^(R<<25|D>>>7),ye=(D>>>28|R<<4)^(D<<30|R>>>2)^(D<<25|R>>>7),Ae=(F>>>14|O<<18)^(F>>>18|O<<14)^(F<<23|O>>>9),be=(O>>>14|F<<18)^(O>>>18|F<<14)^(O<<23|F>>>9),ve=l[$],_e=ve.high,Se=ve.low,we=H+Ae+((ce=V+be)>>>0>>0?1:0),Ee=ye+me;H=z,V=G,z=N,G=j,N=F,j=O,F=M+(we=(we=(we=we+ue+((ce+=pe)>>>0>>0?1:0))+_e+((ce+=Se)>>>0>>0?1:0))+J+((ce+=W)>>>0>>0?1:0))+((O=U+ce|0)>>>0>>0?1:0)|0,M=B,U=I,B=L,I=P,L=R,P=D,R=we+(ge+fe+(Ee>>>0>>0?1:0))+((D=ce+Ee|0)>>>0>>0?1:0)|0}f=s.low=f+D,s.high=p+R+(f>>>0>>0?1:0),g=r.low=g+P,r.high=m+L+(g>>>0

>>0?1:0),A=a.low=A+I,a.high=y+B+(A>>>0>>0?1:0),v=o.low=v+U,o.high=b+M+(v>>>0>>0?1:0),S=n.low=S+O,n.high=_+F+(S>>>0>>0?1:0),E=h.low=E+j,h.high=w+N+(E>>>0>>0?1:0),k=c.low=k+G,c.high=T+z+(k>>>0>>0?1:0),x=u.low=x+V,u.high=C+H+(x>>>0>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;return t[s>>>5]|=128<<24-s%32,t[30+(s+128>>>10<<5)]=Math.floor(i/4294967296),t[31+(s+128>>>10<<5)]=i,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=t.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32});e.SHA512=t._createHelper(h),e.HmacSHA512=t._createHmacHelper(h)}(),i.SHA512)})),Ir((function(e,t){var i,s,r,a,o,n,l,d;e.exports=(s=(i=d=dd).x64,r=s.Word,a=s.WordArray,o=i.algo,n=o.SHA512,l=o.SHA384=n.extend({_doReset:function(){this._hash=new a.init([new r.init(3418070365,3238371032),new r.init(1654270250,914150663),new r.init(2438529370,812702999),new r.init(355462360,4144912697),new r.init(1731405415,4290775857),new r.init(2394180231,1750603025),new r.init(3675008525,1694076839),new r.init(1203062813,3204075428)])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=16,e}}),i.SHA384=n._createHelper(l),i.HmacSHA384=n._createHmacHelper(l),d.SHA384)})),Ir((function(e,t){var i;e.exports=(i=dd,function(e){var t=i,s=t.lib,r=s.WordArray,a=s.Hasher,o=t.x64.Word,n=t.algo,l=[],d=[],h=[];!function(){for(var e=1,t=0,i=0;i<24;i++){l[e+5*t]=(i+1)*(i+2)/2%64;var s=(2*e+3*t)%5;e=t%5,t=s}for(e=0;e<5;e++)for(t=0;t<5;t++)d[e+5*t]=t+(2*e+3*t)%5*5;for(var r=1,a=0;a<24;a++){for(var n=0,c=0,u=0;u<7;u++){if(1&r){var p=(1<>>24)|4278255360&(a<<24|a>>>8),o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),(x=i[r]).high^=o,x.low^=a}for(var n=0;n<24;n++){for(var u=0;u<5;u++){for(var p=0,f=0,m=0;m<5;m++)p^=(x=i[u+5*m]).high,f^=x.low;var g=c[u];g.high=p,g.low=f}for(u=0;u<5;u++){var y=c[(u+4)%5],A=c[(u+1)%5],b=A.high,v=A.low;for(p=y.high^(b<<1|v>>>31),f=y.low^(v<<1|b>>>31),m=0;m<5;m++)(x=i[u+5*m]).high^=p,x.low^=f}for(var _=1;_<25;_++){var S=(x=i[_]).high,w=x.low,E=l[_];E<32?(p=S<>>32-E,f=w<>>32-E):(p=w<>>64-E,f=S<>>64-E);var T=c[d[_]];T.high=p,T.low=f}var k=c[0],C=i[0];for(k.high=C.high,k.low=C.low,u=0;u<5;u++)for(m=0;m<5;m++){var x=i[_=u+5*m],R=c[_],D=c[(u+1)%5+5*m],L=c[(u+2)%5+5*m];x.high=R.high^~D.high&L.high,x.low=R.low^~D.low&L.low}x=i[0];var P=h[n];x.high^=P.high,x.low^=P.low}},_doFinalize:function(){var t=this._data,i=t.words;this._nDataBytes;var s=8*t.sigBytes,a=32*this.blockSize;i[s>>>5]|=1<<24-s%32,i[(e.ceil((s+1)/a)*a>>>5)-1]|=128,t.sigBytes=4*i.length,this._process();for(var o=this._state,n=this.cfg.outputLength/8,l=n/8,d=[],h=0;h>>24)|4278255360&(u<<24|u>>>8),p=16711935&(p<<8|p>>>24)|4278255360&(p<<24|p>>>8),d.push(p),d.push(u)}return new r.init(d,n)},clone:function(){for(var e=a.clone.call(this),t=e._state=this._state.slice(0),i=0;i<25;i++)t[i]=t[i].clone();return e}});t.SHA3=a._createHelper(u),t.HmacSHA3=a._createHmacHelper(u)}(Math),i.SHA3)})),Ir((function(e,t){var i;e.exports=(i=dd,function(e){var t=i,s=t.lib,r=s.WordArray,a=s.Hasher,o=t.algo,n=r.create([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13]),l=r.create([5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11]),d=r.create([11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6]),h=r.create([8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]),c=r.create([0,1518500249,1859775393,2400959708,2840853838]),u=r.create([1352829926,1548603684,1836072691,2053994217,0]),p=o.RIPEMD160=a.extend({_doReset:function(){this._hash=r.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var i=0;i<16;i++){var s=t+i,r=e[s];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}var a,o,p,v,_,S,w,E,T,k,C,x=this._hash.words,R=c.words,D=u.words,L=n.words,P=l.words,B=d.words,I=h.words;for(S=a=x[0],w=o=x[1],E=p=x[2],T=v=x[3],k=_=x[4],i=0;i<80;i+=1)C=a+e[t+L[i]]|0,C+=i<16?f(o,p,v)+R[0]:i<32?m(o,p,v)+R[1]:i<48?g(o,p,v)+R[2]:i<64?y(o,p,v)+R[3]:A(o,p,v)+R[4],C=(C=b(C|=0,B[i]))+_|0,a=_,_=v,v=b(p,10),p=o,o=C,C=S+e[t+P[i]]|0,C+=i<16?A(w,E,T)+D[0]:i<32?y(w,E,T)+D[1]:i<48?g(w,E,T)+D[2]:i<64?m(w,E,T)+D[3]:f(w,E,T)+D[4],C=(C=b(C|=0,I[i]))+k|0,S=k,k=T,T=b(E,10),E=w,w=C;C=x[1]+p+T|0,x[1]=x[2]+v+k|0,x[2]=x[3]+_+S|0,x[3]=x[4]+a+w|0,x[4]=x[0]+o+E|0,x[0]=C},_doFinalize:function(){var e=this._data,t=e.words,i=8*this._nDataBytes,s=8*e.sigBytes;t[s>>>5]|=128<<24-s%32,t[14+(s+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),e.sigBytes=4*(t.length+1),this._process();for(var r=this._hash,a=r.words,o=0;o<5;o++){var n=a[o];a[o]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}return r},clone:function(){var e=a.clone.call(this);return e._hash=this._hash.clone(),e}});function f(e,t,i){return e^t^i}function m(e,t,i){return e&t|~e&i}function g(e,t,i){return(e|~t)^i}function y(e,t,i){return e&i|t&~i}function A(e,t,i){return e^(t|~i)}function b(e,t){return e<>>32-t}t.RIPEMD160=a._createHelper(p),t.HmacRIPEMD160=a._createHmacHelper(p)}(),i.RIPEMD160)})),Ir((function(e,t){var i,s,r;e.exports=(s=(i=dd).lib.Base,r=i.enc.Utf8,void(i.algo.HMAC=s.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=r.parse(t));var i=e.blockSize,s=4*i;t.sigBytes>s&&(t=e.finalize(t)),t.clamp();for(var a=this._oKey=t.clone(),o=this._iKey=t.clone(),n=a.words,l=o.words,d=0;d>>2];e.sigBytes-=t}};s.BlockCipher=h.extend({cfg:h.cfg.extend({mode:p,padding:f}),reset:function(){var e;h.reset.call(this);var t=this.cfg,i=t.iv,s=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=s.createEncryptor:(e=s.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,i&&i.words):(this._mode=e.call(s,this,i&&i.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4});var m=s.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),g=(t.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,i=e.salt;return(i?a.create([1398893684,1701076831]).concat(i).concat(t):t).toString(l)},parse:function(e){var t,i=l.parse(e),s=i.words;return 1398893684==s[0]&&1701076831==s[1]&&(t=a.create(s.slice(2,4)),s.splice(0,4),i.sigBytes-=16),m.create({ciphertext:i,salt:t})}},y=s.SerializableCipher=r.extend({cfg:r.extend({format:g}),encrypt:function(e,t,i,s){s=this.cfg.extend(s);var r=e.createEncryptor(i,s),a=r.finalize(t),o=r.cfg;return m.create({ciphertext:a,key:i,iv:o.iv,algorithm:e,mode:o.mode,padding:o.padding,blockSize:e.blockSize,formatter:s.format})},decrypt:function(e,t,i,s){return s=this.cfg.extend(s),t=this._parse(t,s.format),e.createDecryptor(i,s).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),A=(t.kdf={}).OpenSSL={execute:function(e,t,i,s,r){if(s||(s=a.random(8)),r)o=d.create({keySize:t+i,hasher:r}).compute(e,s);else var o=d.create({keySize:t+i}).compute(e,s);var n=a.create(o.words.slice(t),4*i);return o.sigBytes=4*t,m.create({key:o,iv:n,salt:s})}},b=s.PasswordBasedCipher=y.extend({cfg:y.cfg.extend({kdf:A}),encrypt:function(e,t,i,s){var r=(s=this.cfg.extend(s)).kdf.execute(i,e.keySize,e.ivSize,s.salt,s.hasher);s.iv=r.iv;var a=y.encrypt.call(this,e,t,r.key,s);return a.mixIn(r),a},decrypt:function(e,t,i,s){s=this.cfg.extend(s),t=this._parse(t,s.format);var r=s.kdf.execute(i,e.keySize,e.ivSize,t.salt,s.hasher);return s.iv=r.iv,y.decrypt.call(this,e,t,r.key,s)}})}())})),Ir((function(e,t){var i;e.exports=((i=dd).mode.CFB=function(){var e=i.lib.BlockCipherMode.extend();function t(e,t,i,s){var r,a=this._iv;a?(r=a.slice(0),this._iv=void 0):r=this._prevBlock,s.encryptBlock(r,0);for(var o=0;o>24&255)){var t=e>>16&255,i=e>>8&255,s=255&e;255===t?(t=0,255===i?(i=0,255===s?s=0:++s):++i):++t,e=0,e+=t<<16,e+=i<<8,e+=s}else e+=1<<24;return e}function s(e){return 0===(e[0]=t(e[0]))&&(e[1]=t(e[1])),e}var r=e.Encryptor=e.extend({processBlock:function(e,t){var i=this._cipher,r=i.blockSize,a=this._iv,o=this._counter;a&&(o=this._counter=a.slice(0),this._iv=void 0),s(o);var n=o.slice(0);i.encryptBlock(n,0);for(var l=0;l>>2]|=r<<24-a%4*8,e.sigBytes+=r},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Ansix923)})),Ir((function(e,t){var i;e.exports=((i=dd).pad.Iso10126={pad:function(e,t){var s=4*t,r=s-e.sigBytes%s;e.concat(i.lib.WordArray.random(r-1)).concat(i.lib.WordArray.create([r<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},i.pad.Iso10126)})),Ir((function(e,t){var i;e.exports=((i=dd).pad.Iso97971={pad:function(e,t){e.concat(i.lib.WordArray.create([2147483648],1)),i.pad.ZeroPadding.pad(e,t)},unpad:function(e){i.pad.ZeroPadding.unpad(e),e.sigBytes--}},i.pad.Iso97971)})),Ir((function(e,t){var i;e.exports=((i=dd).pad.ZeroPadding={pad:function(e,t){var i=4*t;e.clamp(),e.sigBytes+=i-(e.sigBytes%i||i)},unpad:function(e){var t=e.words,i=e.sigBytes-1;for(i=e.sigBytes-1;i>=0;i--)if(t[i>>>2]>>>24-i%4*8&255){e.sigBytes=i+1;break}}},i.pad.ZeroPadding)})),Ir((function(e,t){var i;e.exports=((i=dd).pad.NoPadding={pad:function(){},unpad:function(){}},i.pad.NoPadding)})),Ir((function(e,t){var i;e.exports=(i=dd,function(e){var t=i,s=t.lib.CipherParams,r=t.enc.Hex;t.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){var t=r.parse(e);return s.create({ciphertext:t})}}}(),i.format.Hex)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo,r=[],a=[],o=[],n=[],l=[],d=[],h=[],c=[],u=[],p=[];!function(){for(var e=[],t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;var i=0,s=0;for(t=0;t<256;t++){var f=s^s<<1^s<<2^s<<3^s<<4;f=f>>>8^255&f^99,r[i]=f,a[f]=i;var m=e[i],g=e[m],y=e[g],A=257*e[f]^16843008*f;o[i]=A<<24|A>>>8,n[i]=A<<16|A>>>16,l[i]=A<<8|A>>>24,d[i]=A,A=16843009*y^65537*g^257*m^16843008*i,h[f]=A<<24|A>>>8,c[f]=A<<16|A>>>16,u[f]=A<<8|A>>>24,p[f]=A,i?(i=m^e[e[e[y^m]]],s^=e[e[s]]):i=s=1}}();var f=[0,1,2,4,8,16,32,64,128,27,54],m=s.AES=t.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,i=e.sigBytes/4,s=4*((this._nRounds=i+6)+1),a=this._keySchedule=[],o=0;o6&&o%i==4&&(d=r[d>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d]):(d=r[(d=d<<8|d>>>24)>>>24]<<24|r[d>>>16&255]<<16|r[d>>>8&255]<<8|r[255&d],d^=f[o/i|0]<<24),a[o]=a[o-i]^d);for(var n=this._invKeySchedule=[],l=0;l>>24]]^c[r[d>>>16&255]]^u[r[d>>>8&255]]^p[r[255&d]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,n,l,d,r)},decryptBlock:function(e,t){var i=e[t+1];e[t+1]=e[t+3],e[t+3]=i,this._doCryptBlock(e,t,this._invKeySchedule,h,c,u,p,a),i=e[t+1],e[t+1]=e[t+3],e[t+3]=i},_doCryptBlock:function(e,t,i,s,r,a,o,n){for(var l=this._nRounds,d=e[t]^i[0],h=e[t+1]^i[1],c=e[t+2]^i[2],u=e[t+3]^i[3],p=4,f=1;f>>24]^r[h>>>16&255]^a[c>>>8&255]^o[255&u]^i[p++],g=s[h>>>24]^r[c>>>16&255]^a[u>>>8&255]^o[255&d]^i[p++],y=s[c>>>24]^r[u>>>16&255]^a[d>>>8&255]^o[255&h]^i[p++],A=s[u>>>24]^r[d>>>16&255]^a[h>>>8&255]^o[255&c]^i[p++];d=m,h=g,c=y,u=A}m=(n[d>>>24]<<24|n[h>>>16&255]<<16|n[c>>>8&255]<<8|n[255&u])^i[p++],g=(n[h>>>24]<<24|n[c>>>16&255]<<16|n[u>>>8&255]<<8|n[255&d])^i[p++],y=(n[c>>>24]<<24|n[u>>>16&255]<<16|n[d>>>8&255]<<8|n[255&h])^i[p++],A=(n[u>>>24]<<24|n[d>>>16&255]<<16|n[h>>>8&255]<<8|n[255&c])^i[p++],e[t]=m,e[t+1]=g,e[t+2]=y,e[t+3]=A},keySize:8});e.AES=t._createHelper(m)}(),i.AES)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib,s=t.WordArray,r=t.BlockCipher,a=e.algo,o=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4],n=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32],l=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],d=[{0:8421888,268435456:32768,536870912:8421378,805306368:2,1073741824:512,1342177280:8421890,1610612736:8389122,1879048192:8388608,2147483648:514,2415919104:8389120,2684354560:33280,2952790016:8421376,3221225472:32770,3489660928:8388610,3758096384:0,4026531840:33282,134217728:0,402653184:8421890,671088640:33282,939524096:32768,1207959552:8421888,1476395008:512,1744830464:8421378,2013265920:2,2281701376:8389120,2550136832:33280,2818572288:8421376,3087007744:8389122,3355443200:8388610,3623878656:32770,3892314112:514,4160749568:8388608,1:32768,268435457:2,536870913:8421888,805306369:8388608,1073741825:8421378,1342177281:33280,1610612737:512,1879048193:8389122,2147483649:8421890,2415919105:8421376,2684354561:8388610,2952790017:33282,3221225473:514,3489660929:8389120,3758096385:32770,4026531841:0,134217729:8421890,402653185:8421376,671088641:8388608,939524097:512,1207959553:32768,1476395009:8388610,1744830465:2,2013265921:33282,2281701377:32770,2550136833:8389122,2818572289:514,3087007745:8421888,3355443201:8389120,3623878657:0,3892314113:33280,4160749569:8421378},{0:1074282512,16777216:16384,33554432:524288,50331648:1074266128,67108864:1073741840,83886080:1074282496,100663296:1073758208,117440512:16,134217728:540672,150994944:1073758224,167772160:1073741824,184549376:540688,201326592:524304,218103808:0,234881024:16400,251658240:1074266112,8388608:1073758208,25165824:540688,41943040:16,58720256:1073758224,75497472:1074282512,92274688:1073741824,109051904:524288,125829120:1074266128,142606336:524304,159383552:0,176160768:16384,192937984:1074266112,209715200:1073741840,226492416:540672,243269632:1074282496,260046848:16400,268435456:0,285212672:1074266128,301989888:1073758224,318767104:1074282496,335544320:1074266112,352321536:16,369098752:540688,385875968:16384,402653184:16400,419430400:524288,436207616:524304,452984832:1073741840,469762048:540672,486539264:1073758208,503316480:1073741824,520093696:1074282512,276824064:540688,293601280:524288,310378496:1074266112,327155712:16384,343932928:1073758208,360710144:1074282512,377487360:16,394264576:1073741824,411041792:1074282496,427819008:1073741840,444596224:1073758224,461373440:524304,478150656:0,494927872:16400,511705088:1074266128,528482304:540672},{0:260,1048576:0,2097152:67109120,3145728:65796,4194304:65540,5242880:67108868,6291456:67174660,7340032:67174400,8388608:67108864,9437184:67174656,10485760:65792,11534336:67174404,12582912:67109124,13631488:65536,14680064:4,15728640:256,524288:67174656,1572864:67174404,2621440:0,3670016:67109120,4718592:67108868,5767168:65536,6815744:65540,7864320:260,8912896:4,9961472:256,11010048:67174400,12058624:65796,13107200:65792,14155776:67109124,15204352:67174660,16252928:67108864,16777216:67174656,17825792:65540,18874368:65536,19922944:67109120,20971520:256,22020096:67174660,23068672:67108868,24117248:0,25165824:67109124,26214400:67108864,27262976:4,28311552:65792,29360128:67174400,30408704:260,31457280:65796,32505856:67174404,17301504:67108864,18350080:260,19398656:67174656,20447232:0,21495808:65540,22544384:67109120,23592960:256,24641536:67174404,25690112:65536,26738688:67174660,27787264:65796,28835840:67108868,29884416:67109124,30932992:67174400,31981568:4,33030144:65792},{0:2151682048,65536:2147487808,131072:4198464,196608:2151677952,262144:0,327680:4198400,393216:2147483712,458752:4194368,524288:2147483648,589824:4194304,655360:64,720896:2147487744,786432:2151678016,851968:4160,917504:4096,983040:2151682112,32768:2147487808,98304:64,163840:2151678016,229376:2147487744,294912:4198400,360448:2151682112,425984:0,491520:2151677952,557056:4096,622592:2151682048,688128:4194304,753664:4160,819200:2147483648,884736:4194368,950272:4198464,1015808:2147483712,1048576:4194368,1114112:4198400,1179648:2147483712,1245184:0,1310720:4160,1376256:2151678016,1441792:2151682048,1507328:2147487808,1572864:2151682112,1638400:2147483648,1703936:2151677952,1769472:4198464,1835008:2147487744,1900544:4194304,1966080:64,2031616:4096,1081344:2151677952,1146880:2151682112,1212416:0,1277952:4198400,1343488:4194368,1409024:2147483648,1474560:2147487808,1540096:64,1605632:2147483712,1671168:4096,1736704:2147487744,1802240:2151678016,1867776:4160,1933312:2151682048,1998848:4194304,2064384:4198464},{0:128,4096:17039360,8192:262144,12288:536870912,16384:537133184,20480:16777344,24576:553648256,28672:262272,32768:16777216,36864:537133056,40960:536871040,45056:553910400,49152:553910272,53248:0,57344:17039488,61440:553648128,2048:17039488,6144:553648256,10240:128,14336:17039360,18432:262144,22528:537133184,26624:553910272,30720:536870912,34816:537133056,38912:0,43008:553910400,47104:16777344,51200:536871040,55296:553648128,59392:16777216,63488:262272,65536:262144,69632:128,73728:536870912,77824:553648256,81920:16777344,86016:553910272,90112:537133184,94208:16777216,98304:553910400,102400:553648128,106496:17039360,110592:537133056,114688:262272,118784:536871040,122880:0,126976:17039488,67584:553648256,71680:16777216,75776:17039360,79872:537133184,83968:536870912,88064:17039488,92160:128,96256:553910272,100352:262272,104448:553910400,108544:0,112640:553648128,116736:16777344,120832:262144,124928:537133056,129024:536871040},{0:268435464,256:8192,512:270532608,768:270540808,1024:268443648,1280:2097152,1536:2097160,1792:268435456,2048:0,2304:268443656,2560:2105344,2816:8,3072:270532616,3328:2105352,3584:8200,3840:270540800,128:270532608,384:270540808,640:8,896:2097152,1152:2105352,1408:268435464,1664:268443648,1920:8200,2176:2097160,2432:8192,2688:268443656,2944:270532616,3200:0,3456:270540800,3712:2105344,3968:268435456,4096:268443648,4352:270532616,4608:270540808,4864:8200,5120:2097152,5376:268435456,5632:268435464,5888:2105344,6144:2105352,6400:0,6656:8,6912:270532608,7168:8192,7424:268443656,7680:270540800,7936:2097160,4224:8,4480:2105344,4736:2097152,4992:268435464,5248:268443648,5504:8200,5760:270540808,6016:270532608,6272:270540800,6528:270532616,6784:8192,7040:2105352,7296:2097160,7552:0,7808:268435456,8064:268443656},{0:1048576,16:33555457,32:1024,48:1049601,64:34604033,80:0,96:1,112:34603009,128:33555456,144:1048577,160:33554433,176:34604032,192:34603008,208:1025,224:1049600,240:33554432,8:34603009,24:0,40:33555457,56:34604032,72:1048576,88:33554433,104:33554432,120:1025,136:1049601,152:33555456,168:34603008,184:1048577,200:1024,216:34604033,232:1,248:1049600,256:33554432,272:1048576,288:33555457,304:34603009,320:1048577,336:33555456,352:34604032,368:1049601,384:1025,400:34604033,416:1049600,432:1,448:0,464:34603008,480:33554433,496:1024,264:1049600,280:33555457,296:34603009,312:1,328:33554432,344:1048576,360:1025,376:34604032,392:33554433,408:34603008,424:0,440:34604033,456:1049601,472:1024,488:33555456,504:1048577},{0:134219808,1:131072,2:134217728,3:32,4:131104,5:134350880,6:134350848,7:2048,8:134348800,9:134219776,10:133120,11:134348832,12:2080,13:0,14:134217760,15:133152,2147483648:2048,2147483649:134350880,2147483650:134219808,2147483651:134217728,2147483652:134348800,2147483653:133120,2147483654:133152,2147483655:32,2147483656:134217760,2147483657:2080,2147483658:131104,2147483659:134350848,2147483660:0,2147483661:134348832,2147483662:134219776,2147483663:131072,16:133152,17:134350848,18:32,19:2048,20:134219776,21:134217760,22:134348832,23:131072,24:0,25:131104,26:134348800,27:134219808,28:134350880,29:133120,30:2080,31:134217728,2147483664:131072,2147483665:2048,2147483666:134348832,2147483667:133152,2147483668:32,2147483669:134348800,2147483670:134217728,2147483671:134219808,2147483672:134350880,2147483673:134217760,2147483674:134219776,2147483675:0,2147483676:133120,2147483677:2080,2147483678:131104,2147483679:134350848}],h=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],c=a.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],i=0;i<56;i++){var s=o[i]-1;t[i]=e[s>>>5]>>>31-s%32&1}for(var r=this._subKeys=[],a=0;a<16;a++){var d=r[a]=[],h=l[a];for(i=0;i<24;i++)d[i/6|0]|=t[(n[i]-1+h)%28]<<31-i%6,d[4+(i/6|0)]|=t[28+(n[i+24]-1+h)%28]<<31-i%6;for(d[0]=d[0]<<1|d[0]>>>31,i=1;i<7;i++)d[i]=d[i]>>>4*(i-1)+3;d[7]=d[7]<<5|d[7]>>>27}var c=this._invSubKeys=[];for(i=0;i<16;i++)c[i]=r[15-i]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,i){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),p.call(this,2,858993459),p.call(this,8,16711935),u.call(this,1,1431655765);for(var s=0;s<16;s++){for(var r=i[s],a=this._lBlock,o=this._rBlock,n=0,l=0;l<8;l++)n|=d[l][((o^r[l])&h[l])>>>0];this._lBlock=o,this._rBlock=a^n}var c=this._lBlock;this._lBlock=this._rBlock,this._rBlock=c,u.call(this,1,1431655765),p.call(this,8,16711935),p.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){var i=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=i,this._lBlock^=i<>>e^this._lBlock)&t;this._lBlock^=i,this._rBlock^=i<192.");var t=e.slice(0,2),i=e.length<4?e.slice(0,2):e.slice(2,4),r=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=c.createEncryptor(s.create(t)),this._des2=c.createEncryptor(s.create(i)),this._des3=c.createEncryptor(s.create(r))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2});e.TripleDES=r._createHelper(f)}(),i.TripleDES)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=s.RC4=t.extend({_doReset:function(){for(var e=this._key,t=e.words,i=e.sigBytes,s=this._S=[],r=0;r<256;r++)s[r]=r;r=0;for(var a=0;r<256;r++){var o=r%i,n=t[o>>>2]>>>24-o%4*8&255;a=(a+s[r]+n)%256;var l=s[r];s[r]=s[a],s[a]=l}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=a.call(this)},keySize:8,ivSize:0});function a(){for(var e=this._S,t=this._i,i=this._j,s=0,r=0;r<4;r++){i=(i+e[t=(t+1)%256])%256;var a=e[t];e[t]=e[i],e[i]=a,s|=e[(e[t]+e[i])%256]<<24-8*r}return this._i=t,this._j=i,s}e.RC4=t._createHelper(r);var o=s.RC4Drop=r.extend({cfg:r.cfg.extend({drop:192}),_doReset:function(){r._doReset.call(this);for(var e=this.cfg.drop;e>0;e--)a.call(this)}});e.RC4Drop=t._createHelper(o)}(),i.RC4)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],a=[],o=[],n=s.Rabbit=t.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,i=0;i<4;i++)e[i]=16711935&(e[i]<<8|e[i]>>>24)|4278255360&(e[i]<<24|e[i]>>>8);var s=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],r=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];for(this._b=0,i=0;i<4;i++)l.call(this);for(i=0;i<8;i++)r[i]^=s[i+4&7];if(t){var a=t.words,o=a[0],n=a[1],d=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(r[0]^=d,r[1]^=c,r[2]^=h,r[3]^=u,r[4]^=d,r[5]^=c,r[6]^=h,r[7]^=u,i=0;i<4;i++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);o[i]=l^d}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.Rabbit=t._createHelper(n)}(),i.Rabbit)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.StreamCipher,s=e.algo,r=[],a=[],o=[],n=s.RabbitLegacy=t.extend({_doReset:function(){var e=this._key.words,t=this.cfg.iv,i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],s=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]];this._b=0;for(var r=0;r<4;r++)l.call(this);for(r=0;r<8;r++)s[r]^=i[r+4&7];if(t){var a=t.words,o=a[0],n=a[1],d=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),h=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),c=d>>>16|4294901760&h,u=h<<16|65535&d;for(s[0]^=d,s[1]^=c,s[2]^=h,s[3]^=u,s[4]^=d,s[5]^=c,s[6]^=h,s[7]^=u,r=0;r<4;r++)l.call(this)}},_doProcessBlock:function(e,t){var i=this._X;l.call(this),r[0]=i[0]^i[5]>>>16^i[3]<<16,r[1]=i[2]^i[7]>>>16^i[5]<<16,r[2]=i[4]^i[1]>>>16^i[7]<<16,r[3]=i[6]^i[3]>>>16^i[1]<<16;for(var s=0;s<4;s++)r[s]=16711935&(r[s]<<8|r[s]>>>24)|4278255360&(r[s]<<24|r[s]>>>8),e[t+s]^=r[s]},blockSize:4,ivSize:2});function l(){for(var e=this._X,t=this._C,i=0;i<8;i++)a[i]=t[i];for(t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0>>0?1:0)|0,this._b=t[7]>>>0>>0?1:0,i=0;i<8;i++){var s=e[i]+t[i],r=65535&s,n=s>>>16,l=((r*r>>>17)+r*n>>>15)+n*n,d=((4294901760&s)*s|0)+((65535&s)*s|0);o[i]=l^d}e[0]=o[0]+(o[7]<<16|o[7]>>>16)+(o[6]<<16|o[6]>>>16)|0,e[1]=o[1]+(o[0]<<8|o[0]>>>24)+o[7]|0,e[2]=o[2]+(o[1]<<16|o[1]>>>16)+(o[0]<<16|o[0]>>>16)|0,e[3]=o[3]+(o[2]<<8|o[2]>>>24)+o[1]|0,e[4]=o[4]+(o[3]<<16|o[3]>>>16)+(o[2]<<16|o[2]>>>16)|0,e[5]=o[5]+(o[4]<<8|o[4]>>>24)+o[3]|0,e[6]=o[6]+(o[5]<<16|o[5]>>>16)+(o[4]<<16|o[4]>>>16)|0,e[7]=o[7]+(o[6]<<8|o[6]>>>24)+o[5]|0}e.RabbitLegacy=t._createHelper(n)}(),i.RabbitLegacy)})),Ir((function(e,t){var i;e.exports=(i=dd,function(){var e=i,t=e.lib.BlockCipher,s=e.algo;const r=16,a=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],o=[[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946],[1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055],[3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504],[976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462]];var n={pbox:[],sbox:[]};function l(e,t){let i=t>>24&255,s=t>>16&255,r=t>>8&255,a=255&t,o=e.sbox[0][i]+e.sbox[1][s];return o^=e.sbox[2][r],o+=e.sbox[3][a],o}function d(e,t,i){let s,a=t,o=i;for(let t=0;t1;--t)a^=e.pbox[t],o=l(e,a)^o,s=a,a=o,o=s;return s=a,a=o,o=s,o^=e.pbox[1],a^=e.pbox[0],{left:a,right:o}}function c(e,t,i){for(let t=0;t<4;t++){e.sbox[t]=[];for(let i=0;i<256;i++)e.sbox[t][i]=o[t][i]}let s=0;for(let o=0;o=i&&(s=0);let n=0,l=0,h=0;for(let t=0;t>>2]|=e[i]<<24-i%4*8;return hd.lib.WordArray.create(t,e.length)}const pd=16,fd=[214,144,233,254,204,225,61,183,22,182,20,194,40,251,44,5,43,103,154,118,42,190,4,195,170,68,19,38,73,134,6,153,156,66,80,244,145,239,152,122,51,84,11,67,237,207,172,98,228,179,28,169,201,8,232,149,128,223,148,250,117,143,63,166,71,7,167,252,243,115,23,186,131,89,60,25,230,133,79,168,104,107,129,178,113,100,218,139,248,235,15,75,112,86,157,53,30,36,14,94,99,88,209,162,37,34,124,59,1,33,120,135,212,0,70,87,159,211,39,82,76,54,2,231,160,196,200,158,234,191,138,210,64,199,56,181,163,247,242,206,249,97,21,161,224,174,93,164,155,52,26,85,173,147,50,48,245,140,177,227,29,246,226,46,130,102,202,96,192,41,35,171,13,83,78,111,213,219,55,69,222,253,142,47,3,255,106,114,109,108,91,81,141,27,175,146,187,221,188,127,17,217,92,65,31,16,90,216,10,193,49,136,165,205,123,189,45,116,208,18,184,229,180,176,137,105,151,74,12,150,119,126,101,185,241,9,197,110,198,132,24,240,125,236,58,220,77,32,121,238,95,62,215,203,57,72],md=[462357,472066609,943670861,1415275113,1886879365,2358483617,2830087869,3301692121,3773296373,4228057617,404694573,876298825,1347903077,1819507329,2291111581,2762715833,3234320085,3705924337,4177462797,337322537,808926789,1280531041,1752135293,2223739545,2695343797,3166948049,3638552301,4110090761,269950501,741554753,1213159005,1684763257];function gd(e){const t=[];for(let i=0,s=e.length;i1===(e=e.toString(16)).length?"0"+e:e)).join("")}function Ad(e){const t=[];for(let i=0,s=e.length;i>>6),t.push(128|63&s);else if(s<=55295||s>=57344&&s<=65535)t.push(224|s>>>12),t.push(128|s>>>6&63),t.push(128|63&s);else{if(!(s>=65536&&s<=1114111))throw t.push(s),new Error("input is not supported");i++,t.push(240|s>>>18&28),t.push(128|s>>>12&63),t.push(128|s>>>6&63),t.push(128|63&s)}}return t}function bd(e){const t=[];for(let i=0,s=e.length;i=240&&e[i]<=247?(t.push(String.fromCodePoint(((7&e[i])<<18)+((63&e[i+1])<<12)+((63&e[i+2])<<6)+(63&e[i+3]))),i+=3):e[i]>=224&&e[i]<=239?(t.push(String.fromCodePoint(((15&e[i])<<12)+((63&e[i+1])<<6)+(63&e[i+2]))),i+=2):e[i]>=192&&e[i]<=223?(t.push(String.fromCodePoint(((31&e[i])<<6)+(63&e[i+1]))),i++):t.push(String.fromCodePoint(e[i]));return t.join("")}function vd(e,t){const i=31&t;return e<>>32-i}function _d(e){return(255&fd[e>>>24&255])<<24|(255&fd[e>>>16&255])<<16|(255&fd[e>>>8&255])<<8|255&fd[255&e]}function Sd(e){return e^vd(e,2)^vd(e,10)^vd(e,18)^vd(e,24)}function wd(e){return e^vd(e,13)^vd(e,23)}function Ed(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[4*t],r[1]=255&e[4*t+1],r[2]=255&e[4*t+2],r[3]=255&e[4*t+3],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];for(let e,t=0;t<32;t+=4)e=s[1]^s[2]^s[3]^i[t+0],s[0]^=Sd(_d(e)),e=s[2]^s[3]^s[0]^i[t+1],s[1]^=Sd(_d(e)),e=s[3]^s[0]^s[1]^i[t+2],s[2]^=Sd(_d(e)),e=s[0]^s[1]^s[2]^i[t+3],s[3]^=Sd(_d(e));for(let e=0;e<16;e+=4)t[e]=s[3-e/4]>>>24&255,t[e+1]=s[3-e/4]>>>16&255,t[e+2]=s[3-e/4]>>>8&255,t[e+3]=255&s[3-e/4]}function Td(e,t,i){const s=new Array(4),r=new Array(4);for(let t=0;t<4;t++)r[0]=255&e[0+4*t],r[1]=255&e[1+4*t],r[2]=255&e[2+4*t],r[3]=255&e[3+4*t],s[t]=r[0]<<24|r[1]<<16|r[2]<<8|r[3];s[0]^=2746333894,s[1]^=1453994832,s[2]^=1736282519,s[3]^=2993693404;for(let e,i=0;i<32;i+=4)e=s[1]^s[2]^s[3]^md[i+0],t[i+0]=s[0]^=wd(_d(e)),e=s[2]^s[3]^s[0]^md[i+1],t[i+1]=s[1]^=wd(_d(e)),e=s[3]^s[0]^s[1]^md[i+2],t[i+2]=s[2]^=wd(_d(e)),e=s[0]^s[1]^s[2]^md[i+3],t[i+3]=s[3]^=wd(_d(e));if(0===i)for(let e,i=0;i<16;i++)e=t[i],t[i]=t[31-i],t[31-i]=e}function kd(e,t,i){let{padding:s="pkcs#7",mode:r,iv:a=[],output:o="string"}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("cbc"===r&&("string"==typeof a&&(a=gd(a)),16!==a.length))throw new Error("iv is invalid");if("string"==typeof t&&(t=gd(t)),16!==t.length)throw new Error("key is invalid");if(e="string"==typeof e?0!==i?Ad(e):gd(e):[...e],("pkcs#5"===s||"pkcs#7"===s)&&0!==i){const t=pd-e.length%pd;for(let i=0;i=pd;){const t=e.slice(c,c+16),s=new Array(16);if("cbc"===r)for(let e=0;ee)return this.preDelayTimestamp-e>1e3&&this.player.debug.warn("CommonDemux",`getDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return ${this.delay}`),this.preDelayTimestamp=e,this.delay;if(this.firstTimestamp){if(e){const t=Date.now()-this.startTimestamp,i=e-this.firstTimestamp;t>=i?(this.isStreamTsMoreThanLocal=!1,this.delay=t-i):(this.isStreamTsMoreThanLocal=!0,this.delay=i-t)}}else this.firstTimestamp=e,this.startTimestamp=Date.now(),this.delay=-1;return this.preDelayTimestamp=e,this.delay}getDelayNotUpdateDelay(e,t){if(!e||!this.player.isDemuxDecodeFirstIIframeInit())return-1;if(t===Ne)return this.pushLatestDelay;if(this.preDelayTimestamp&&this.preDelayTimestamp-e>1e3)return this.player.debug.warn("CommonDemux",`getDelayNotUpdateDelay() and preDelayTimestamp is ${this.preDelayTimestamp} > timestamp is ${e} more than ${this.preDelayTimestamp-e}ms and return -1`),-1;if(this.firstTimestamp){let t=-1;if(e){const i=Date.now()-this.startTimestamp,s=e-this.firstTimestamp;t=i>=s?i-s:s-i}return t}return-1}resetDelay(){this.firstTimestamp=null,this.startTimestamp=null,this.delay=-1,this.dropping=!1}resetAllDelay(){this.resetDelay(),this.preDelayTimestamp=null}initInterval(){this.player.isUseHls265()?this.player.debug.log("CommonDemux","initInterval() and is hls and support hls265 so return"):-1===this.player.getStreamType().indexOf(y)?this.player.isPlaybackCacheBeforeDecodeForFpsRender()?this.player.debug.log("CommonDemux","initInterval() and playback and playbackIsCacheBeforeDecodeForFpsRender is true so return"):(this.player.debug.log("CommonDemux","setInterval()"),this._loop(),this.stopId=setInterval((()=>{let e=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=e);const t=e-this.preLoopTimestamp;this.updateHistoryIntervalDiffTimeList(t),t>100&&this.player.debug.warn("CommonDemux",`loop demux diff time is ${t}`),this._loop(),this.preLoopTimestamp=(new Date).getTime()}),20)):this.player.debug.log("CommonDemux","initInterval() and is worker stream so return")}clearStopInterval(){this.stopId&&(clearInterval(this.stopId),this.stopId=null)}updateHistoryIntervalDiffTimeList(e){this.historyIntervalDiffTimeList.length>5&&this.historyIntervalDiffTimeList.shift(),this.historyIntervalDiffTimeList.push(e)}isHistoryIntervalDiffTimeAllLarge(){if(this.historyIntervalDiffTimeList.length<5)return!1;for(let e=0;e{let e=null;this.bufferList.length&&(e=this.bufferList.shift(),this._doDecoderDecode(e))};e();const t=Math.ceil(1e3/(this.playbackStreamFps*this.player.getPlaybackRate()));this.player.debug.log("CommonDemux",`initPlaybackCacheLoop() and fragDuration is ${t}, playbackStreamFps is ${this.playbackStreamFps}, playbackRate is ${this.player.getPlaybackRate()}`),this.stopId=setInterval(e,t)}_loop(){let e;const t=this.player._opt.videoBuffer,i=this.player._opt.videoBufferDelay,s=this.player._opt.playType===b;if(this.bufferList.length){if(this.isPushDropping)return void this.player.debug.warn("CommonDemux",`_loop isPushDropping is true and bufferList length is ${this.bufferList.length}`);if(this.dropping){for(e=this.bufferList.shift(),this.player.debug.warn("CommonDemux",`_loop is dropping and data.ts is ${e.ts}, data.type is ${e.type}, data.isIFrame is ${e.isIFrame}, delay is ${this.delay} ,buffer list is ${this.bufferList.length}`);!e.isIFrame&&this.bufferList.length;)e=this.bufferList.shift();const t=this.getDelayNotUpdateDelay(e.ts,e.type);e.isIFrame&&t<=this.getNotDroppingDelayTs()&&(this.player.debug.log("CommonDemux",`_loop data isIFrame is true and delay is ${this.delay}`),this.dropping=!1,this._doDecoderDecode(e),this._decodeNext(e))}else if(this.player.isPlayback()||this.player.isPlayUseMSE()||0===t)for(;this.bufferList.length;)e=this.bufferList.shift(),this._doDecoderDecode(e);else if(e=this.bufferList[0],-1===this.getDelay(e.ts,e.type))this.player.debug.log("CommonDemux",`delay is -1 and data.ts is ${e.ts} data.type is ${e.type}`),this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e);else if(this.delay>i+t&&s)this.hasIframeInBufferList()?(this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay}, set dropping is true`),this.resetAllDelay(),this.dropping=!0,this.player.updateStats({isDropping:!0})):(this.bufferList.shift(),this._doDecoderDecode(e),this._decodeNext(e));else for(;this.bufferList.length;){if(e=this.bufferList[0],!(this.getDelay(e.ts,e.type)>t)){this.delay<0&&this.player.debug.warn("CommonDemux",`_loop delay is ${this.delay} bufferList is ${this.bufferList}`);break}this.bufferList.shift(),this._doDecoderDecode(e)}}else-1!==this.delay&&this.player.debug.log("CommonDemux","loop() bufferList is empty and reset delay"),this.resetAllDelay()}_doDecode(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;const a=this.player;let o={ts:i,cts:r,type:t,isIFrame:!1};this.player.isPlayer()?(t===je&&a._opt.playType===b&&this.calcNetworkDelay(i),a._opt.useWCS&&!a._opt.useOffscreen||a._opt.useMSE?(t===je&&(o.isIFrame=s),this.pushBuffer(e,o)):t===je?a.decoderWorker&&a.decoderWorker.decodeVideo(e,i,s):t===Ne&&a._opt.hasAudio&&a.decoderWorker&&a.decoderWorker.decodeAudio(e,i)):this.player.isPlayback()&&(t===je&&(o.isIFrame=s),this.player.isPlaybackOnlyDecodeIFrame()?t===je&&s&&this.pushBuffer(e,o):this.player.isPlaybackCacheBeforeDecodeForFpsRender()||1===this.player.getPlaybackRate()?this.pushBuffer(e,o):this.pushBuffer(e,o,!1))}_doDecodeByHls(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,a=!1;if(t===Ne&&zr(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer audio ts is ${i}, isAacCodecPacket is true`),a=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(t,i)}let o=!1;if(t===je&&s&&co(e)&&(this.player.debug.log("CommonDemux",`hls pushBuffer video ts is ${i}, isVideoSequenceHeader is true`),o=!0,this.player.isRecordTypeFlv())){const t=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(t,i)}this.player.recording&&po(o)&&po(a)&&this.handleRecording(e,t,i,s,r),t===je?this._doDecoderDecode({ts:i,cts:r,payload:e,type:je,isIFrame:s}):t===Ne&&this._doDecoderDecode({ts:i,payload:e,type:Ne})}_doDecodeByFmp4(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByTs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_doDecodeByPs(e,t,i,s){let r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;this._doDecode(e,t,i,s,r)}_decodeNext(e){const t=e.ts;if(0===this.bufferList.length)return;let i=this.bufferList[0];const s=i.ts-t,r=e.type===je&&i.type===Ne,a=e.type===je&&co(e.payload);(s<=20||r||a)&&(this.player.debug.log("CommonDemux",`decode data type is ${e.type} and\n ts is ${t} next data type is ${i.type} ts is ${i.ts}\n diff is ${s} and isVideoAndNextAudio is ${r} and isVideoSqeHeader is ${a}`),this.bufferList.shift(),this._doDecoderDecode(i))}_doDecoderDecode(e){const t=this.player,{webcodecsDecoder:i,mseDecoder:s}=t;this.player.isPlayer()&&this.player.updateStats({buf:this.delay}),e.type===Ne?t._opt.hasAudio&&(t._opt.useMSE&&t._opt.mseDecodeAudio?s.decodeAudio(e.payload,e.ts):t.decoderWorker&&t.decoderWorker.decodeAudio(e.payload,e.ts)):e.type===je&&(t._opt.isEmitSEI&&this.findSei(e.payload,e.ts),t._opt.useWCS&&!t._opt.useOffscreen?i.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t._opt.useMSE?s.decodeVideo(e.payload,e.ts,e.isIFrame,e.cts):t.decoderWorker&&t.decoderWorker.decodeVideo(e.payload,e.ts,e.isIFrame))}pushBuffer(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const s=this.player._opt.videoBuffer,r=this.player._opt.videoBufferDelay,a=this.player.isPlayer();if(t.type===Ne&&zr(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() audio ts is ${t.ts}, isAacCodecPacket is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addAACSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:Ne})}else if(t.type===je&&t.isIFrame&&co(e)){if(this.player.debug.log("CommonDemux",`pushBuffer() video ts is ${t.ts}, isVideoSequenceHeader is true`),this.player.isRecordTypeFlv()){const i=new Uint8Array(e);this.player.recorder.addVideoSequenceHeader(i,t.ts)}this._doDecoderDecode({ts:t.ts,payload:e,type:je,isIFrame:t.isIFrame,cts:t.cts})}else{if(this.player.recording&&this.handleRecording(e,t.type,t.ts,t.isIFrame,t.cts),a){if(this.preTimestampDuration>0&&this.preTimestamp>0&&t.type===je){const e=t.ts-this.preTimestamp,i=this.preTimestampDuration+this.preTimestampDuration/2;e>=i&&this.player.debug.log("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${e} and preTimestampDuration is ${this.preTimestampDuration} and maxDiff is ${i}\n maybe trigger black screen or flower screen`)}if(this.preTimestamp>0&&t.tsX&&(this.player.debug.warn("CommonDemux",`pushBuffer() video\n ts is ${t.ts}, preTimestamp is ${this.preTimestamp},\n diff is ${this.preTimestamp-t.ts} more than 3600000\n and resetAllDelay()`),this.resetAllDelay()),t.ts<=this.preTimestamp&&this.preTimestamp>0&&t.type===je&&(this.player.debug.warn("CommonDemux",`pushBuffer() video and isIFrame is ${t.isIFrame} and\n ts is ${t.ts} less than (or equal) preTimestamp is ${this.preTimestamp} and\n payloadBufferSize is ${e.byteLength} and prevPayloadBufferSize is ${this.prevPayloadBufferSize}`),this.player._opt.isDropSameTimestampGop&&po(t.isIFrame)&&this.player.isDemuxDecodeFirstIIframeInit())){const e=this.hasIframeInBufferList(),t=po(this.isPushDropping);return this.player.debug.log("CommonDemux",`pushBuffer(), isDropSameTimestampGop is true and\n hasIframe is ${e} and isNotPushDropping is ${t} and next drop buffer`),void(e&&t?this.dropBuffer$2():this.clearBuffer(!0))}if(this.player.isDemuxDecodeFirstIIframeInit()){let e=this.getDelayNotUpdateDelay(t.ts,t.type);this.pushLatestDelay=e;const i=r+s;this.player._opt.useMSE?e>i&&this.delay0&&this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, pushLatestDelay is ${e} > ${r+s}, bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):e>i&&this.delay0&&this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, pushLatestDelay is ${e} > ${r+s},bufferList is ${this.bufferList.length}, delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()),this.isHistoryIntervalDiffTimeAllLarge()&&po(this.player.visibility)&&(this.player._opt.useMSE?this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useMSE, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()):this.hasIframeInBufferList()&&!1===this.isPushDropping&&(this.player.debug.warn("CommonDemux",`useWCS, page visibility is false and\n history interval diff is ${this.historyIntervalDiffTimeList.join(",")} and\n bufferList is ${this.bufferList.length},\n delay is ${this.delay} and dropBuffer$2()`),this.dropBuffer$2()))}t.type===je&&(this.preTimestamp>0&&(this.preTimestampDuration=t.ts-this.preTimestamp),this.prevPayloadBufferSize=e.byteLength,this.preTimestamp=t.ts)}if(i?t.type===Ne?this.bufferList.push({ts:t.ts,payload:e,type:Ne}):t.type===je&&this.bufferList.push({ts:t.ts,cts:t.cts,payload:e,type:je,isIFrame:t.isIFrame}):t.type===je?this._doDecoderDecode({ts:t.ts,cts:t.cts,payload:e,type:je,isIFrame:t.isIFrame}):t.type===Ne&&this._doDecoderDecode({ts:t.ts,payload:e,type:Ne}),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&(La(this.playbackStreamVideoFps)||La(this.playbackStreamAudioFps))){let e=this.playbackStreamVideoFps,t=this.playbackStreamAudioFps;if(La(this.playbackStreamVideoFps)&&(e=ro(this.bufferList,je),e>0&&(this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),this.playbackStreamFps=t?e+t:e,po(this.player._opt.hasAudio)&&(this.player.debug.log(this.TAG_NAME,"playbackCacheBeforeDecodeForFpsRender,_opt.hasAudio is false and set streamAudioFps is 0"),this.playbackStreamAudioFps=0),this.initPlaybackCacheLoop())),La(this.playbackStreamAudioFps)&&(t=ro(this.bufferList,Ne),t>0&&(this.playbackStreamAudioFps=t,this.playbackStreamFps=e?e+t:t,this.initPlaybackCacheLoop())),La(this.playbackStreamVideoFps)&&La(this.playbackStreamAudioFps)){const i=this.bufferList.map((e=>({type:e.type,ts:e.ts})));this.player.debug.log("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, calc streamAudioFps is ${t}, streamVideoFps is ${e}, bufferListLength is ${this.bufferList.length} and ts list is ${JSON.stringify(i)}`)}const i=this.getAudioBufferLength()>0,s=i?60:40;this.bufferList.length>=s&&(this.debug.warn("CommonDemux",`playbackCacheBeforeDecodeForFpsRender, bufferListLength is ${this.bufferList.length} more than ${s}, and hasAudio is ${i} an set streamFps is 25`),this.playbackStreamVideoFps=e,this.player.video&&this.player.video.setStreamFps(this.playbackStreamVideoFps),i?(this.playbackStreamAudioFps=25,this.playbackStreamFps=this.playbackStreamVideoFps+this.playbackStreamAudioFps):this.playbackStreamFps=this.playbackStreamVideoFps,this.initPlaybackCacheLoop())}}}dropBuffer$2(){if(this.bufferList.length>0){let e=this.bufferList.findIndex((e=>uo(e.isIFrame)&&e.type===je));if(this.isAllIframeInBufferList())for(let t=0;t=this.getNotDroppingDelayTs()){this.player.debug.log("CommonDemux",`dropBuffer$2() isAllIframeInBufferList() is true, and index is ${t} and tempDelay is ${s} and notDroppingDelayTs is ${this.getNotDroppingDelayTs()}`),e=t;break}}if(e>=0){this.isPushDropping=!0,this.player.updateStats({isDropping:!0});const t=this.bufferList.length;this.bufferList=this.bufferList.slice(e);const i=this.bufferList.shift();this.resetAllDelay(),this.getDelay(i.ts,i.type),this._doDecoderDecode(i),this.isPushDropping=!1,this.player.debug.log("CommonDemux",`dropBuffer$2() iFrameIndex is ${e},and old bufferList length is ${t} ,and new bufferList length is ${this.bufferList.length} and new delay is ${this.delay} `)}else this.isPushDropping=!1}0===this.bufferList.length&&(this.isPushDropping=!1)}clearBuffer(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.player.debug.log("CommonDemux",`clearBuffer,buffer length is ${this.bufferList.length}, need clear is ${e} and _opt.checkFirstIFrame is ${this.player._opt.checkFirstIFrame}`),e&&(this.bufferList=[]),this.player.isPlayer()&&(this.resetAllDelay(),uo(this.player._opt.checkFirstIFrame)&&(this.dropping=!0,this.player.updateStats({isDropping:!0}))),this.player.decoderCheckFirstIFrame()}calcNetworkDelay(e){if(!(this.player.isDemuxDecodeFirstIIframeInit()&&e>0))return;null===this.bufferStartDts?(this.bufferStartDts=e,this.bufferStartLocalTs=aa()):et?i-t:0;s>this.player._opt.networkDelay&&this.player._opt.playType===b&&(this.player.debug.warn("CommonDemux",`delay is more than networkDelay and now dts:${e},start dts is ${this.bufferStartDts}, vs start is ${t},local diff is ${i} ,delay is ${s}, _opt.networkDelay is ${this.player._opt.networkDelay}`),this.player.emit(nt.networkDelayTimeout,s)),this.player.updateStats({netBuf:s})}calcIframeIntervalTimestamp(e){if(null===this.preIframeTs)this.preIframeTs=e;else if(this.preIframeTs{t.type===je&&(e+=1)})),e}getAudioBufferLength(){let e=0;return this.bufferList.forEach((t=>{t.type===Ne&&(e+=1)})),e}hasIframeInBufferList(){return this.bufferList.some((e=>e.type===je&&e.isIFrame))}isAllIframeInBufferList(){const e=this.getVideoBufferLength();let t=0;return this.bufferList.forEach((e=>{e.type===je&&e.isIFrame&&(t+=1)})),e===t}getInputByteLength(){return 0}getIsStreamTsMoreThanLocal(){return this.isStreamTsMoreThanLocal}close(){}reset(){}findSei(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],s=4;Ba(this.nalUnitSize)&&(s=this.nalUnitSize);const r=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:4;if(e.length<4)return;const i=e.length,s=[];let r,a=0;for(;a+t>>=8),a+=t,r){if(a+r>i)break;s.push(e.subarray(a,a+r)),a+=r}return s}(e.slice(5),s);if(po(i)){const e=this.player.getVideoInfo();e&&e.encType&&(i=e.encType===wt)}r.forEach((e=>{const s=i?e[0]>>>1&63:31&e[0];(i&&(s===qt||s===Jt)||po(i)&&s===Bt)&&this.player.emit(nt.videoSEI,{ts:t,data:e})}))}handleRecording(e,t,i,s,r){if(this.player.isRecordTypeFlv()){const s=new Uint8Array(e);t===je?this.player.recorder.addVideo(s,i):t===Ne&&this.player.recorder.addAudio(s,i)}else if(this.player.isRecordTypeMp4()){const a=new Uint8Array(e);if(this.player.recorder.isWasmMp4()){if(t===je)this.player.recorder.handleAddNaluTrack(a.slice(5),s,i,r);else if(t===Ne){const t=new Uint8Array(e);this.player.recorder.handleAddAudioTrack(Gr(t)?t.slice(2):t.slice(1),i)}}else t===je&&this.player.recorder.handleAddNaluTrack(a.slice(5),s,i,r)}}updateNalUnitSize(e){const t=15&e[0];this.player.video.updateVideoInfo({encTypeCode:t});const i=t===_t;this.nalUnitSize=function(e,t){let i=null;return t?e.length>=28&&(i=1+(3&e[26])):e.length>=12&&(i=1+(3&e[9])),i}(e,i),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader is true and isHevc is ${i} and nalUnitSize is ${this.nalUnitSize}`)}cryptoPayload(e,t){let i=e,s=this.player;if(s._opt.isM7sCrypto)if(s._opt.cryptoKey&&s._opt.cryptoKey.byteLength>0&&s._opt.cryptoIV&&s._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();t.encTypeCode?i=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t=new Uint8Array(t),i=new Uint8Array(i);const r=e.byteLength;let a=5;for(;ar)break;let n=e[a+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=e.slice(a+4+2,a+4+o);let r=new ld.ModeOfOperation.ctr(t,new ld.Counter(i));const n=r.decrypt(s);r=null,e.set(n,a+4+2)}a=a+4+o}return e}(e,s._opt.cryptoKey,s._opt.cryptoIV,t.encTypeCode===_t):s.debug.warn(this.TAG_NAME,`videoInfo.encTypeCode is ${t.encTypeCode}`)}else s.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${s._opt.cryptoKey&&s._opt.cryptoKey.byteLength} or cryptoIV.length is ${s._opt.cryptoIV&&s._opt.cryptoIV.byteLength} null`);else if(s._opt.isSm4Crypto)s._opt.sm4CryptoKey&&t?i=function(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const s=e.byteLength;let r=5;for(;rs)break;let o=e[r+4],n=!1;if(i?(o=o>>>1&63,n=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(o)):(o&=31,n=1===o||5===o),n){const i=kd(e.slice(r+4+2,r+4+a),t,0,{padding:"none",output:"array"});e.set(i,r+4+2)}r=r+4+a}return e}(e,s._opt.sm4CryptoKey):s._opt.sm4CryptoKey||s.debug.error(this.TAG_NAME,"isSm4Crypto opt.sm4CryptoKey is null");else if(s._opt.isXorCrypto)if(s._opt.cryptoKey&&s._opt.cryptoKey.byteLength>0&&s._opt.cryptoIV&&s._opt.cryptoIV.byteLength>0){const t=this.player.video.getVideoInfo();i=function(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=e.byteLength;let a=5;for(;ar)break;let n=e[a+4],l=!1;if(s?(n=n>>>1&63,l=[0,1,2,3,4,5,6,7,8,9,16,17,18,19,20,21].includes(n)):(n&=31,l=1===n||5===n),l){const s=xd(e.slice(a+4,a+4+o),t,i);e.set(s,a+4)}a=a+4+o}return e}(e,s._opt.cryptoKey,s._opt.cryptoIV,t.encTypeCode===_t)}else s.debug.error(this.TAG_NAME,"isXorCrypto opt.xorCryptoKey is null");return i}cryptoPayloadAudio(e){let t=e,i=this.player;if(i._opt.isM7sCrypto)if(i._opt.cryptoKey&&i._opt.cryptoKey.byteLength>0&&i._opt.cryptoIV&&i._opt.cryptoIV.byteLength>0){e[0]>>4===Et&&(t=function(e,t,i){if(e.byteLength<=30)return e;const s=e.slice(32);let r=new ld.ModeOfOperation.ctr(t,new ld.Counter(i));const a=r.decrypt(s);return r=null,e.set(a,32),e}(e,i._opt.cryptoKey,i._opt.cryptoIV))}else i.debug.error(this.TAG_NAME,`isM7sCrypto cryptoKey.length is ${i._opt.cryptoKey&&i._opt.cryptoKey.byteLength} or cryptoIV.length is ${i._opt.cryptoIV&&i._opt.cryptoIV.byteLength} null`);return t}_decodeEnhancedH265Video(e,t){const i=e[0],s=48&i,r=15&i,a=e.slice(1,5),o=new ArrayBuffer(4),n=new Uint32Array(o),l="a"==String.fromCharCode(a[0]);if(r===yr){if(s===vr){const t=e.slice(5);if(l);else{const e=new Uint8Array(5+t.length);e.set([28,0,0,0,0],0),e.set(t,5),this.updateNalUnitSize(e),this.player.debug.log(this.TAG_NAME,`demux() isVideoSequenceHeader(enhancedH265) is true and nalUnitSize is ${this.nalUnitSize}`),this._doDecode(e,je,0,!0,0)}}}else if(r===Ar){let i=e,r=0;const a=s===vr;if(a&&this.calcIframeIntervalTimestamp(t),l);else{n[0]=e[4],n[1]=e[3],n[2]=e[2],n[3]=0,r=n[0];i=jn(e.slice(8),a),i=this.cryptoPayload(i,a),this._doDecode(i,je,t,a,r)}}else if(r===br){const i=s===vr,r=e.slice(5);i&&this.calcIframeIntervalTimestamp(t);let a=jn(r,i);a=this.cryptoPayload(a,i),this._doDecode(a,je,t,i,0)}}_isEnhancedH265Header(e){return 128==(128&e)}}var Ld=function(e,t,i,s){return new(i||(i=Promise))((function(r,a){function o(e){try{l(s.next(e))}catch(e){a(e)}}function n(e){try{l(s.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,n)}l((s=s.apply(e,t||[])).next())}))};const Pd=Symbol(32),Bd=Symbol(16),Id=Symbol(8);class Md{constructor(e){this.g=e,this.consumed=0,e&&(this.need=e.next().value)}setG(e){this.g=e,this.demand(e.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(e,t){return t&&this.consume(),this.need=e,this.flush()}read(e){return Ld(this,void 0,void 0,(function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise(((t,i)=>{var s;this.reject=i,this.resolve=e=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(e)};this.demand(e,!0)||null===(s=this.pull)||void 0===s||s.call(this,e)}))}))}readU32(){return this.read(Pd)}readU16(){return this.read(Bd)}readU8(){return this.read(Id)}close(){var e;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),null===(e=this.reject)||void 0===e||e.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let e=null;const t=this.buffer.subarray(this.consumed);let i=0;const s=e=>t.length<(i=e);if("number"==typeof this.need){if(s(this.need))return;e=t.subarray(0,i)}else if(this.need===Pd){if(s(4))return;e=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Bd){if(s(2))return;e=t[0]<<8|t[1]}else if(this.need===Id){if(s(1))return;e=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(s(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,i)),e=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(s(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,i)),e=this.need}return this.consumed+=i,this.g?this.demand(this.g.next(e).value,!0):this.resolve&&this.resolve(e),e}write(e){if(e instanceof Uint8Array?this.malloc(e.length).set(e):"buffer"in e?this.malloc(e.byteLength).set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)):this.malloc(e.byteLength).set(new Uint8Array(e)),!this.g&&!this.resolve)return new Promise((e=>this.pull=e));this.flush()}writeU32(e){this.malloc(4).set([e>>24&255,e>>16&255,e>>8&255,255&e]),this.flush()}writeU16(e){this.malloc(2).set([e>>8&255,255&e]),this.flush()}writeU8(e){this.malloc(1)[0]=e,this.flush()}malloc(e){if(this.buffer){const t=this.buffer.length,i=t+e;if(i<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,i);else{const e=new Uint8Array(i);e.set(this.buffer),this.buffer=e}return this.buffer.subarray(t,i)}return this.buffer=new Uint8Array(e),this.buffer}}Md.U32=Pd,Md.U16=Bd,Md.U8=Id;class Ud extends Dd{constructor(e){super(e),this.TAG_NAME="FlvDemux",this.input=new Md(this.demux()),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.input=null,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.input?this.input.write(e):this.player&&this.player.debug.warn(this.TAG_NAME,"dispatch() this.input is null")}*demux(){yield 9;const e=new ArrayBuffer(4),t=new Uint8Array(e),i=new Uint32Array(e),s=this.player;for(;;){if(!this.input)return;t[3]=0;const e=yield 15,r=e[4];t[0]=e[7],t[1]=e[6],t[2]=e[5];const a=i[0];t[0]=e[10],t[1]=e[9],t[2]=e[8],t[3]=e[11];let o=i[0];const n=(yield a).slice();if(!s)return;switch(r){case ze:if(s._opt.hasAudio&&(s.updateStats({abps:n.byteLength}),n.byteLength>0)){let e=n;uo(this.player._opt.m7sCryptoAudio)&&(e=this.cryptoPayloadAudio(n)),this._doDecode(e,Ne,o)}break;case Ge:if(s._opt.hasVideo&&n.length>=6){let e=o;s.updateStats({vbps:n.byteLength,dts:e}),s._times.demuxStart||(s._times.demuxStart=aa());const t=n[0];if(this._isEnhancedH265Header(t))this._decodeEnhancedH265Video(n,e);else{const e=15&t;let s=(t>>4&15)===js;const r=e===vt;if(po(e===_t||r))return void this.player.debug.warn(this.TAG_NAME,`demux() codecId is ${e} and ignore`);s&&(this.calcIframeIntervalTimestamp(o),null===this.nalUnitSize&&co(n)&&this.updateNalUnitSize(n)),i[0]=n[4],i[1]=n[3],i[2]=n[2],i[3]=0;let a=i[0],l=this.cryptoPayload(n,s);this._doDecode(l,je,o,s,a)}}else n.length<6&&s.debug.warn(this.TAG_NAME,`payload.length is ${n.length} less than 6 and ignore`);break;case He:if(this.player.isRecordTypeFlv()){const e=new Uint8Array(n);this.player.recorder.addMetaData(e)}const e=al(n);e&&e.onMetaData&&s.updateMetaData(e.onMetaData);break;default:s.debug.log(this.TAG_NAME,`demux() type is ${r}`)}}}close(){this.input=null}getInputByteLength(){let e=0;return this.input&&this.input.buffer&&(e=this.input.buffer.byteLength),e}}class Fd extends Dd{constructor(e){super(e),this.TAG_NAME="M7sDemux",e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){const t=this.player,i=new DataView(e),s=i.getUint8(0),r=i.getUint32(1,!1),a=new ArrayBuffer(4),o=new Uint32Array(a);switch(s){case Ne:if(t._opt.hasAudio){const i=new Uint8Array(e,5);t.updateStats({abps:i.byteLength}),i.byteLength>0&&this._doDecode(i,s,r)}break;case je:if(t._opt.hasVideo)if(t._times.demuxStart||(t._times.demuxStart=aa()),i.byteLength>=11){const a=new Uint8Array(e,5);let n=r;t.updateStats({vbps:a.byteLength,dts:n});const l=a[0];if(this._isEnhancedH265Header(l))this._decodeEnhancedH265Video(a,r);else{const e=i.getUint8(5)>>4==1;e&&this.calcIframeIntervalTimestamp(r),o[0]=a[4],o[1]=a[3],o[2]=a[2],o[3]=0;let t=o[0],n=this.cryptoPayload(a,e);this._doDecode(n,s,r,e,t)}}else this.player.debug.warn(this.TAG_NAME,"dispatch","dv byteLength is",i.byteLength,"and return")}}}class Od extends Ud{constructor(e){super(e),e.debug.log("WebTransportDemux","init")}destroy(){this.player.debug.log("WebTransportDemux","destroy"),super.destroy()}}var Nd,jd=Ir((function(e){e.exports=function(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e},e.exports.__esModule=!0,e.exports.default=e.exports})),zd=(Nd=jd)&&Nd.__esModule&&Object.prototype.hasOwnProperty.call(Nd,"default")?Nd.default:Nd;class Gd extends Dd{constructor(e){super(e),zd(this,"TAG_NAME","NakedFlowDemux"),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.lastBuf=null,this.vps=null,this.sps=null,this.pps=null,this.streamVideoType=null,this.streamAudioType=null,this.tempNaluBufferList=new Uint8Array(0),this.localDts=0,this.localAudioDts=0,this.isSendSeqHeader=!1,this.isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}dispatch(e){this.player;const t=new Uint8Array(e);this.extractNALu$2(t)}addNaluToBuffer(e){const t=e.byteLength+this.tempNaluBufferList.byteLength,i=new Uint8Array(t);i.set(this.tempNaluBufferList,0),i.set(e,this.tempNaluBufferList.byteLength),this.tempNaluBufferList=i}downloadNakedFlowFile(){const e=new Blob([this.tempNaluBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".h264",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadTempNalu",e)}}getNaluDts(){const e=this.player._opt.nakedFlowFps;return this.localDts=this.localDts+parseInt(1e3/e),this.localDts}getNaluAudioDts(){const e=this.player.audio.audioContext.sampleRate,t=this.player.audio.audioBufferSize;return this.localDts+parseInt(t/e*1e3)}extractNALu(e){let t,i,s=0,r=e.byteLength,a=0,o=[];for(;s1)for(let e=0;e>1,i!==jt&&i!==Gt&&i!==Vt||(t=wt)),t}(t)),this.streamVideoType===St){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","naluList.length === 0");const s=[];if(i.forEach((e=>{const t=Cn(e);t===Rt||t===xt?this.handleVideoH264Nalu(e):Rn(t)&&s.push(e)})),1===s.length)this.handleVideoH264Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=Cn(e[0]);for(let i=1;i{this.handleVideoH264Nalu(e)}))}}else if(this.streamVideoType===wt)if(this.player._opt.nakedFlowH265DemuxUseNew){const e=this.handleAddNaluStartCode(t),i=this.extractNALu(e);if(0===i.length)return void this.player.debug.warn(this.TAG_NAME,"handleVideoNalu","h265 naluList.length === 0");const s=[];if(i.forEach((e=>{const t=zn(e);t===Vt||t===Gt||t===jt?this.handleVideoH265Nalu(e):Gn(t)&&s.push(e)})),1===s.length)this.handleVideoH265Nalu(s[0]);else{const e=function(e){if(0===e.length)return!1;const t=zn(e[0]);for(let i=1;i{this.handleVideoH265Nalu(e)}))}}else{zn(t)===Vt?this.extractH265PPS(t):this.handleVideoH265Nalu(t)}else this.player.debug.error(this.TAG_NAME," this.streamVideoType is null")}extractH264PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{xn(Cn(e))?this.extractH264SEI(e):this.handleVideoH264Nalu(e)}))}extractH265PPS(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{const t=zn(e);t===Wt?this.extractH265SEI(e):this.handleVideoH265Nalu(e)}))}extractH264SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH264Nalu(e)}))}extractH265SEI(e){const t=this.handleAddNaluStartCode(e);this.extractNALu(t).forEach((e=>{this.handleVideoH265Nalu(e)}))}handleAddNaluStartCode(e){const t=[0,0,0,1],i=new Uint8Array(e.length+t.length);return i.set(t),i.set(e,t.length),i}handleAudioAACNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=kt.AAC);let t=new Uint8Array(e);const i=t.slice(0,7);if(t=t.slice(7),!this.isSendAACSeqHeader){const e=(192&i[2])>>6,t=(60&i[2])>>2,s=(1&i[2])<<2|(192&i[3])>>6,r=new Uint8Array([175,0,e<<3|(14&t)>>1,(1&t)<<7|s<<3]);this.isSendAACSeqHeader=!0,this._doDecode(r,Ne,0,!1,0)}const s=this.getNaluAudioDts(),r=new Uint8Array(t.length+2);r.set([175,1],0),r.set(t,2),this._doDecode(r,Ne,s,!1,0)}handleAudioG711ANalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=kt.ALAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([114],0),s.set(t,1),this._doDecode(s,Ne,i,!1,0)}handleAudioG711UNalu(e){if(!e||e.byteLength<1)return;this.streamAudioType||(this.streamAudioType=kt.MULAW);let t=new Uint8Array(e);const i=this.getNaluAudioDts(),s=new Uint8Array(t.length+1);s.set([130],0),s.set(t,1),this._doDecode(s,Ne,i,!1,0)}handleVideoH264Nalu(e){const t=Cn(e);switch(t){case xt:this.sps=e;break;case Rt:this.pps=e}if(this.isSendSeqHeader){if(this.sps&&this.pps){const e=Tn({sps:this.sps,pps:this.pps}),t=this.getNaluDts();this._doDecode(e,je,t,!0,0),this.sps=null,this.pps=null}if(Rn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=aa());const i=Dn(t),s=this.getNaluDts(),r=function(e,t){let i=[];i[0]=t?23:39,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,je,s,i,0)}else this.player.debug.warn(this.TAG_NAME,`handleVideoH264Nalu is avc seq head nalType is ${t}`)}else if(this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Tn({sps:this.sps,pps:this.pps});this._doDecode(e,je,0,!0,0),this.sps=null,this.pps=null}}handleVideoH264NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=aa());const i=this.getNaluDts(),s=kn(e.reduce(((e,t)=>{const i=ea(e),s=ea(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,je,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH264NaluList isSendSeqHeader is false")}handleVideoH265Nalu(e){const t=zn(e);switch(t){case jt:this.vps=e;break;case Gt:this.sps=e;break;case Vt:this.pps=e}if(this.isSendSeqHeader){if(this.vps&&this.sps&&this.pps){const e=Nn({vps:this.vps,sps:this.sps,pps:this.pps}),t=this.getNaluDts();this._doDecode(e,je,t,!0,0),this.vps=null,this.sps=null,this.pps=null}if(Gn(t)){this.player._times.demuxStart||(this.player._times.demuxStart=aa());const i=Hn(t),s=this.getNaluDts(),r=function(e,t){let i=[];i[0]=t?28:44,i[1]=1,i[2]=0,i[3]=0,i[4]=0,i[5]=e.byteLength>>24&255,i[6]=e.byteLength>>16&255,i[7]=e.byteLength>>8&255,i[8]=255&e.byteLength;const s=new Uint8Array(i.length+e.byteLength);return s.set(i,0),s.set(e,i.length),s}(e,i);this._preDoDecode(r,je,s,i,0)}}else if(this.vps&&this.sps&&this.pps){this.isSendSeqHeader=!0;const e=Nn({vps:this.vps,sps:this.sps,pps:this.pps});this._doDecode(e,je,0,!0,0),this.vps=null,this.sps=null,this.pps=null}}handleVideoH265NaluList(e,t,i){if(this.isSendSeqHeader){this.player._times.demuxStart||(this.player._times.demuxStart=aa());const i=this.getNaluDts(),s=jn(e.reduce(((e,t)=>{const i=ea(e),s=ea(t),r=new Uint8Array(i.byteLength+s.byteLength);return r.set(i,0),r.set(s,i.byteLength),r})),t);this._preDoDecode(s,je,i,t,0)}else this.player.debug.warn(this.TAG_NAME,"handleVideoH265NaluList isSendSeqHeader is false")}_preDoDecode(e,t,i,s,r){this.player.updateStats({vbps:e.byteLength,dts:i}),s&&this.calcIframeIntervalTimestamp(i),this._doDecode(e,je,i,s,r)}getInputByteLength(){let e=0;return this.lastBuf&&(e=this.lastBuf.byteLength),e}}class Hd extends Dd{constructor(e){super(e),this.player=e,e.debug.log("EmptyDemux","init")}destroy(){super.destroy(),this.player.debug.log("EmptyDemux","destroy")}}var Vd=Ir((function(e,t){var s,r,a,o=(s=new Date,r=4,a={setLogLevel:function(e){r=e==this.debug?1:e==this.info?2:e==this.warn?3:(this.error,4)},debug:function(e,t){void 0===console.debug&&(console.debug=console.log),1>=r&&console.debug("["+o.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},log:function(e,t){this.debug(e.msg)},info:function(e,t){2>=r&&console.info("["+o.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},warn:function(e,t){3>=r&&console.warn("["+o.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)},error:function(e,t){4>=r&&console.error("["+o.getDurationString(new Date-s,1e3)+"]","["+e+"]",t)}},a);o.getDurationString=function(e,t){var i;function s(e,t){for(var i=(""+e).split(".");i[0].length0){for(var i="",s=0;s0&&(i+=","),i+="["+o.getDurationString(e.start(s))+","+o.getDurationString(e.end(s))+"]";return i}return"(empty)"},t.Log=o;var n=function(e){if(!(e instanceof ArrayBuffer))throw"Needs an array buffer";this.buffer=e,this.dataview=new DataView(e),this.position=0};n.prototype.getPosition=function(){return this.position},n.prototype.getEndPosition=function(){return this.buffer.byteLength},n.prototype.getLength=function(){return this.buffer.byteLength},n.prototype.seek=function(e){var t=Math.max(0,Math.min(this.buffer.byteLength,e));return this.position=isNaN(t)||!isFinite(t)?0:t,!0},n.prototype.isEos=function(){return this.getPosition()>=this.getEndPosition()},n.prototype.readAnyInt=function(e,t){var i=0;if(this.position+e<=this.buffer.byteLength){switch(e){case 1:i=t?this.dataview.getInt8(this.position):this.dataview.getUint8(this.position);break;case 2:i=t?this.dataview.getInt16(this.position):this.dataview.getUint16(this.position);break;case 3:if(t)throw"No method for reading signed 24 bits values";i=this.dataview.getUint8(this.position)<<16,i|=this.dataview.getUint8(this.position+1)<<8,i|=this.dataview.getUint8(this.position+2);break;case 4:i=t?this.dataview.getInt32(this.position):this.dataview.getUint32(this.position);break;case 8:if(t)throw"No method for reading signed 64 bits values";i=this.dataview.getUint32(this.position)<<32,i|=this.dataview.getUint32(this.position+4);break;default:throw"readInt method not implemented for size: "+e}return this.position+=e,i}throw"Not enough bytes in buffer"},n.prototype.readUint8=function(){return this.readAnyInt(1,!1)},n.prototype.readUint16=function(){return this.readAnyInt(2,!1)},n.prototype.readUint24=function(){return this.readAnyInt(3,!1)},n.prototype.readUint32=function(){return this.readAnyInt(4,!1)},n.prototype.readUint64=function(){return this.readAnyInt(8,!1)},n.prototype.readString=function(e){if(this.position+e<=this.buffer.byteLength){for(var t="",i=0;ithis._byteLength&&(this._byteLength=t);else{for(i<1&&(i=1);t>i;)i*=2;var s=new ArrayBuffer(i),r=new Uint8Array(this._buffer);new Uint8Array(s,0,r.length).set(r),this.buffer=s,this._byteLength=t}}},l.prototype._trimAlloc=function(){if(this._byteLength!=this._buffer.byteLength){var e=new ArrayBuffer(this._byteLength),t=new Uint8Array(e),i=new Uint8Array(this._buffer,0,t.length);t.set(i),this.buffer=e}},l.BIG_ENDIAN=!1,l.LITTLE_ENDIAN=!0,l.prototype._byteLength=0,Object.defineProperty(l.prototype,"byteLength",{get:function(){return this._byteLength-this._byteOffset}}),Object.defineProperty(l.prototype,"buffer",{get:function(){return this._trimAlloc(),this._buffer},set:function(e){this._buffer=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(l.prototype,"byteOffset",{get:function(){return this._byteOffset},set:function(e){this._byteOffset=e,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._buffer.byteLength}}),Object.defineProperty(l.prototype,"dataView",{get:function(){return this._dataView},set:function(e){this._byteOffset=e.byteOffset,this._buffer=e.buffer,this._dataView=new DataView(this._buffer,this._byteOffset),this._byteLength=this._byteOffset+e.byteLength}}),l.prototype.seek=function(e){var t=Math.max(0,Math.min(this.byteLength,e));this.position=isNaN(t)||!isFinite(t)?0:t},l.prototype.isEof=function(){return this.position>=this._byteLength},l.prototype.mapUint8Array=function(e){this._realloc(1*e);var t=new Uint8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},l.prototype.readInt32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Int32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Int16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Int8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readUint32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Uint32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint16Array=function(e,t){e=null==e?this.byteLength-this.position/2:e;var i=new Uint16Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readUint8Array=function(e){e=null==e?this.byteLength-this.position:e;var t=new Uint8Array(e);return l.memcpy(t.buffer,0,this.buffer,this.byteOffset+this.position,e*t.BYTES_PER_ELEMENT),this.position+=t.byteLength,t},l.prototype.readFloat64Array=function(e,t){e=null==e?this.byteLength-this.position/8:e;var i=new Float64Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readFloat32Array=function(e,t){e=null==e?this.byteLength-this.position/4:e;var i=new Float32Array(e);return l.memcpy(i.buffer,0,this.buffer,this.byteOffset+this.position,e*i.BYTES_PER_ELEMENT),l.arrayToNative(i,null==t?this.endianness:t),this.position+=i.byteLength,i},l.prototype.readInt32=function(e){var t=this._dataView.getInt32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readInt16=function(e){var t=this._dataView.getInt16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readInt8=function(){var e=this._dataView.getInt8(this.position);return this.position+=1,e},l.prototype.readUint32=function(e){var t=this._dataView.getUint32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readUint16=function(e){var t=this._dataView.getUint16(this.position,null==e?this.endianness:e);return this.position+=2,t},l.prototype.readUint8=function(){var e=this._dataView.getUint8(this.position);return this.position+=1,e},l.prototype.readFloat32=function(e){var t=this._dataView.getFloat32(this.position,null==e?this.endianness:e);return this.position+=4,t},l.prototype.readFloat64=function(e){var t=this._dataView.getFloat64(this.position,null==e?this.endianness:e);return this.position+=8,t},l.endianness=new Int8Array(new Int16Array([1]).buffer)[0]>0,l.memcpy=function(e,t,i,s,r){var a=new Uint8Array(e,t,r),o=new Uint8Array(i,s,r);a.set(o)},l.arrayToNative=function(e,t){return t==this.endianness?e:this.flipArrayEndianness(e)},l.nativeToEndian=function(e,t){return this.endianness==t?e:this.flipArrayEndianness(e)},l.flipArrayEndianness=function(e){for(var t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=0;ir;s--,r++){var a=t[r];t[r]=t[s],t[s]=a}return e},l.prototype.failurePosition=0,String.fromCharCodeUint8=function(e){for(var t=[],i=0;i>16),this.writeUint8((65280&e)>>8),this.writeUint8(255&e)},l.prototype.adjustUint32=function(e,t){var i=this.position;this.seek(e),this.writeUint32(t),this.seek(i)},l.prototype.mapInt32Array=function(e,t){this._realloc(4*e);var i=new Int32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapInt16Array=function(e,t){this._realloc(2*e);var i=new Int16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapInt8Array=function(e){this._realloc(1*e);var t=new Int8Array(this._buffer,this.byteOffset+this.position,e);return this.position+=1*e,t},l.prototype.mapUint32Array=function(e,t){this._realloc(4*e);var i=new Uint32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i},l.prototype.mapUint16Array=function(e,t){this._realloc(2*e);var i=new Uint16Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=2*e,i},l.prototype.mapFloat64Array=function(e,t){this._realloc(8*e);var i=new Float64Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=8*e,i},l.prototype.mapFloat32Array=function(e,t){this._realloc(4*e);var i=new Float32Array(this._buffer,this.byteOffset+this.position,e);return l.arrayToNative(i,null==t?this.endianness:t),this.position+=4*e,i};var h=function(e){this.buffers=[],this.bufferIndex=-1,e&&(this.insertBuffer(e),this.bufferIndex=0)};(h.prototype=new l(new ArrayBuffer,0,l.BIG_ENDIAN)).initialized=function(){var e;return this.bufferIndex>-1||(this.buffers.length>0?0===(e=this.buffers[0]).fileStart?(this.buffer=e,this.bufferIndex=0,o.debug("MultiBufferStream","Stream ready for parsing"),!0):(o.warn("MultiBufferStream","The first buffer should have a fileStart of 0"),this.logBufferLevel(),!1):(o.warn("MultiBufferStream","No buffer to start parsing from"),this.logBufferLevel(),!1))},ArrayBuffer.concat=function(e,t){o.debug("ArrayBuffer","Trying to create a new buffer of size: "+(e.byteLength+t.byteLength));var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(new Uint8Array(e),0),i.set(new Uint8Array(t),e.byteLength),i.buffer},h.prototype.reduceBuffer=function(e,t,i){var s;return(s=new Uint8Array(i)).set(new Uint8Array(e,t,i)),s.buffer.fileStart=e.fileStart+t,s.buffer.usedBytes=0,s.buffer},h.prototype.insertBuffer=function(e){for(var t=!0,i=0;is.byteLength){this.buffers.splice(i,1),i--;continue}o.warn("MultiBufferStream","Buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+") already appended, ignoring")}else e.fileStart+e.byteLength<=s.fileStart||(e=this.reduceBuffer(e,0,s.fileStart-e.fileStart)),o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.splice(i,0,e),0===i&&(this.buffer=e);t=!1;break}if(e.fileStart0)){t=!1;break}e=this.reduceBuffer(e,r,a)}}t&&(o.debug("MultiBufferStream","Appending new buffer (fileStart: "+e.fileStart+" - Length: "+e.byteLength+")"),this.buffers.push(e),0===i&&(this.buffer=e))},h.prototype.logBufferLevel=function(e){var t,i,s,r,a,n=[],l="";for(s=0,r=0,t=0;t0&&(l+=a.end-1+"]");var d=e?o.info:o.debug;0===this.buffers.length?d("MultiBufferStream","No more buffer in memory"):d("MultiBufferStream",this.buffers.length+" stored buffer(s) ("+s+"/"+r+" bytes), continuous ranges: "+l)},h.prototype.cleanBuffers=function(){var e,t;for(e=0;e"+this.buffer.byteLength+")"),!0}return!1}return!1},h.prototype.findPosition=function(e,t,i){var s,r=null,a=-1;for(s=!0===e?0:this.bufferIndex;s=t?(o.debug("MultiBufferStream","Found position in existing buffer #"+a),a):-1},h.prototype.findEndContiguousBuf=function(e){var t,i,s,r=void 0!==e?e:this.bufferIndex;if(i=this.buffers[r],this.buffers.length>r+1)for(t=r+1;t>3;return 31===s&&i.data.length>=2&&(s=32+((7&i.data[0])<<3)+((224&i.data[1])>>5)),s}return null},i.DecoderConfigDescriptor=function(e){i.Descriptor.call(this,4,e)},i.DecoderConfigDescriptor.prototype=new i.Descriptor,i.DecoderConfigDescriptor.prototype.parse=function(e){this.oti=e.readUint8(),this.streamType=e.readUint8(),this.upStream=0!=(this.streamType>>1&1),this.streamType=this.streamType>>>2,this.bufferSize=e.readUint24(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32(),this.size-=13,this.parseRemainingDescriptors(e)},i.DecoderSpecificInfo=function(e){i.Descriptor.call(this,5,e)},i.DecoderSpecificInfo.prototype=new i.Descriptor,i.SLConfigDescriptor=function(e){i.Descriptor.call(this,6,e)},i.SLConfigDescriptor.prototype=new i.Descriptor,this};t.MPEG4DescriptorParser=c;var u={ERR_INVALID_DATA:-1,ERR_NOT_ENOUGH_DATA:0,OK:1,BASIC_BOXES:["mdat","idat","free","skip","meco","strk"],FULL_BOXES:["hmhd","nmhd","iods","xml ","bxml","ipro","mere"],CONTAINER_BOXES:[["moov",["trak","pssh"]],["trak"],["edts"],["mdia"],["minf"],["dinf"],["stbl",["sgpd","sbgp"]],["mvex",["trex"]],["moof",["traf"]],["traf",["trun","sgpd","sbgp"]],["vttc"],["tref"],["iref"],["mfra",["tfra"]],["meco"],["hnti"],["hinf"],["strk"],["strd"],["sinf"],["rinf"],["schi"],["trgr"],["udta",["kind"]],["iprp",["ipma"]],["ipco"],["grpl"],["j2kH"],["etyp",["tyco"]]],boxCodes:[],fullBoxCodes:[],containerBoxCodes:[],sampleEntryCodes:{},sampleGroupEntryCodes:[],trackGroupTypes:[],UUIDBoxes:{},UUIDs:[],initialize:function(){u.FullBox.prototype=new u.Box,u.ContainerBox.prototype=new u.Box,u.SampleEntry.prototype=new u.Box,u.TrackGroupTypeBox.prototype=new u.FullBox,u.BASIC_BOXES.forEach((function(e){u.createBoxCtor(e)})),u.FULL_BOXES.forEach((function(e){u.createFullBoxCtor(e)})),u.CONTAINER_BOXES.forEach((function(e){u.createContainerBoxCtor(e[0],null,e[1])}))},Box:function(e,t,i){this.type=e,this.size=t,this.uuid=i},FullBox:function(e,t,i){u.Box.call(this,e,t,i),this.flags=0,this.version=0},ContainerBox:function(e,t,i){u.Box.call(this,e,t,i),this.boxes=[]},SampleEntry:function(e,t,i,s){u.ContainerBox.call(this,e,t),this.hdr_size=i,this.start=s},SampleGroupEntry:function(e){this.grouping_type=e},TrackGroupTypeBox:function(e,t){u.FullBox.call(this,e,t)},createBoxCtor:function(e,t){u.boxCodes.push(e),u[e+"Box"]=function(t){u.Box.call(this,e,t)},u[e+"Box"].prototype=new u.Box,t&&(u[e+"Box"].prototype.parse=t)},createFullBoxCtor:function(e,t){u[e+"Box"]=function(t){u.FullBox.call(this,e,t)},u[e+"Box"].prototype=new u.FullBox,u[e+"Box"].prototype.parse=function(e){this.parseFullHeader(e),t&&t.call(this,e)}},addSubBoxArrays:function(e){if(e){this.subBoxNames=e;for(var t=e.length,i=0;ii?(o.error("BoxParser","Box of type '"+h+"' has a size "+d+" greater than its container size "+i),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):0!==d&&n+d>e.getEndPosition()?(e.seek(n),o.info("BoxParser","Not enough data in stream to parse the entire '"+h+"' box"),{code:u.ERR_NOT_ENOUGH_DATA,type:h,size:d,hdr_size:l,start:n}):t?{code:u.OK,type:h,size:d,hdr_size:l,start:n}:(u[h+"Box"]?s=new u[h+"Box"](d):"uuid"!==h?(o.warn("BoxParser","Unknown box type: '"+h+"'"),(s=new u.Box(h,d)).has_unparsed_data=!0):u.UUIDBoxes[a]?s=new u.UUIDBoxes[a](d):(o.warn("BoxParser","Unknown uuid type: '"+a+"'"),(s=new u.Box(h,d)).uuid=a,s.has_unparsed_data=!0),s.hdr_size=l,s.start=n,s.write===u.Box.prototype.write&&"mdat"!==s.type&&(o.info("BoxParser","'"+c+"' box writing not yet implemented, keeping unparsed data in memory for later write"),s.parseDataAndRewind(e)),s.parse(e),(r=e.getPosition()-(s.start+s.size))<0?(o.warn("BoxParser","Parsing of box '"+c+"' did not read the entire indicated box data size (missing "+-r+" bytes), seeking forward"),e.seek(s.start+s.size)):r>0&&(o.error("BoxParser","Parsing of box '"+c+"' read "+r+" more bytes than the indicated box data size, seeking backwards"),0!==s.size&&e.seek(s.start+s.size)),{code:u.OK,box:s,size:s.size})},u.Box.prototype.parse=function(e){"mdat"!=this.type?this.data=e.readUint8Array(this.size-this.hdr_size):0===this.size?e.seek(e.getEndPosition()):e.seek(this.start+this.size)},u.Box.prototype.parseDataAndRewind=function(e){this.data=e.readUint8Array(this.size-this.hdr_size),e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseDataAndRewind=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=4,e.position-=this.size-this.hdr_size},u.FullBox.prototype.parseFullHeader=function(e){this.version=e.readUint8(),this.flags=e.readUint24(),this.hdr_size+=4},u.FullBox.prototype.parse=function(e){this.parseFullHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.ContainerBox.prototype.parse=function(e){for(var t,i;e.getPosition()>10&31,t[1]=this.language>>5&31,t[2]=31&this.language,this.languageString=String.fromCharCode(t[0]+96,t[1]+96,t[2]+96)},u.SAMPLE_ENTRY_TYPE_VISUAL="Visual",u.SAMPLE_ENTRY_TYPE_AUDIO="Audio",u.SAMPLE_ENTRY_TYPE_HINT="Hint",u.SAMPLE_ENTRY_TYPE_METADATA="Metadata",u.SAMPLE_ENTRY_TYPE_SUBTITLE="Subtitle",u.SAMPLE_ENTRY_TYPE_SYSTEM="System",u.SAMPLE_ENTRY_TYPE_TEXT="Text",u.SampleEntry.prototype.parseHeader=function(e){e.readUint8Array(6),this.data_reference_index=e.readUint16(),this.hdr_size+=8},u.SampleEntry.prototype.parse=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size)},u.SampleEntry.prototype.parseDataAndRewind=function(e){this.parseHeader(e),this.data=e.readUint8Array(this.size-this.hdr_size),this.hdr_size-=8,e.position-=this.size-this.hdr_size},u.SampleEntry.prototype.parseFooter=function(e){u.ContainerBox.prototype.parse.call(this,e)},u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_HINT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,(function(e){var t;this.parseHeader(e),e.readUint16(),e.readUint16(),e.readUint32Array(3),this.width=e.readUint16(),this.height=e.readUint16(),this.horizresolution=e.readUint32(),this.vertresolution=e.readUint32(),e.readUint32(),this.frame_count=e.readUint16(),t=Math.min(31,e.readUint8()),this.compressorname=e.readString(t),t<31&&e.readString(31-t),this.depth=e.readUint16(),e.readUint16(),this.parseFooter(e)})),u.createMediaSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,(function(e){this.parseHeader(e),e.readUint32Array(2),this.channel_count=e.readUint16(),this.samplesize=e.readUint16(),e.readUint16(),e.readUint16(),this.samplerate=e.readUint32()/65536,this.parseFooter(e)})),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avc4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"av01"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dav1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hev1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"hvt1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"lhe1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvh1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"dvhe"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvc1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvi1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvs1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vvcN"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp08"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"vp09"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"avs3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"j2ki"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjp2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"mjpg"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"uncv"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mp4a"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ac-4"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"ec-3"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"Opus"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mha2"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm1"),u.createSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"mhm2"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_VISUAL,"encv"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_AUDIO,"enca"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SUBTITLE,"encu"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_SYSTEM,"encs"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_TEXT,"enct"),u.createEncryptedSampleEntryCtor(u.SAMPLE_ENTRY_TYPE_METADATA,"encm"),u.createBoxCtor("a1lx",(function(e){var t=16*(1+(1&(1&e.readUint8())));this.layer_size=[];for(var i=0;i<3;i++)this.layer_size[i]=16==t?e.readUint16():e.readUint32()})),u.createBoxCtor("a1op",(function(e){this.op_index=e.readUint8()})),u.createFullBoxCtor("auxC",(function(e){this.aux_type=e.readCString();var t=this.size-this.hdr_size-(this.aux_type.length+1);this.aux_subtype=e.readUint8Array(t)})),u.createBoxCtor("av1C",(function(e){var t=e.readUint8();if(t>>7&!1)o.error("av1C marker problem");else if(this.version=127&t,1===this.version)if(t=e.readUint8(),this.seq_profile=t>>5&7,this.seq_level_idx_0=31&t,t=e.readUint8(),this.seq_tier_0=t>>7&1,this.high_bitdepth=t>>6&1,this.twelve_bit=t>>5&1,this.monochrome=t>>4&1,this.chroma_subsampling_x=t>>3&1,this.chroma_subsampling_y=t>>2&1,this.chroma_sample_position=3&t,t=e.readUint8(),this.reserved_1=t>>5&7,0===this.reserved_1){if(this.initial_presentation_delay_present=t>>4&1,1===this.initial_presentation_delay_present)this.initial_presentation_delay_minus_one=15&t;else if(this.reserved_2=15&t,0!==this.reserved_2)return void o.error("av1C reserved_2 parsing problem");var i=this.size-this.hdr_size-4;this.configOBUs=e.readUint8Array(i)}else o.error("av1C reserved_1 parsing problem");else o.error("av1C version "+this.version+" not supported")})),u.createBoxCtor("avcC",(function(e){var t,i;for(this.configurationVersion=e.readUint8(),this.AVCProfileIndication=e.readUint8(),this.profile_compatibility=e.readUint8(),this.AVCLevelIndication=e.readUint8(),this.lengthSizeMinusOne=3&e.readUint8(),this.nb_SPS_nalus=31&e.readUint8(),i=this.size-this.hdr_size-6,this.SPS=[],t=0;t0&&(this.ext=e.readUint8Array(i))})),u.createBoxCtor("btrt",(function(e){this.bufferSizeDB=e.readUint32(),this.maxBitrate=e.readUint32(),this.avgBitrate=e.readUint32()})),u.createFullBoxCtor("ccst",(function(e){var t=e.readUint8();this.all_ref_pics_intra=128==(128&t),this.intra_pred_used=64==(64&t),this.max_ref_per_pic=(63&t)>>2,e.readUint24()})),u.createBoxCtor("cdef",(function(e){var t;for(this.channel_count=e.readUint16(),this.channel_indexes=[],this.channel_types=[],this.channel_associations=[],t=0;t=32768&&this.component_type_urls.push(e.readCString())}})),u.createFullBoxCtor("co64",(function(e){var t,i;if(t=e.readUint32(),this.chunk_offsets=[],0===this.version)for(i=0;i>7}else("rICC"===this.colour_type||"prof"===this.colour_type)&&(this.ICC_profile=e.readUint8Array(this.size-4))})),u.createFullBoxCtor("cprt",(function(e){this.parseLanguage(e),this.notice=e.readCString()})),u.createFullBoxCtor("cslg",(function(e){0===this.version&&(this.compositionToDTSShift=e.readInt32(),this.leastDecodeToDisplayDelta=e.readInt32(),this.greatestDecodeToDisplayDelta=e.readInt32(),this.compositionStartTime=e.readInt32(),this.compositionEndTime=e.readInt32())})),u.createFullBoxCtor("ctts",(function(e){var t,i;if(t=e.readUint32(),this.sample_counts=[],this.sample_offsets=[],0===this.version)for(i=0;i>6,this.bsid=t>>1&31,this.bsmod=(1&t)<<2|i>>6&3,this.acmod=i>>3&7,this.lfeon=i>>2&1,this.bit_rate_code=3&i|s>>5&7})),u.createBoxCtor("dec3",(function(e){var t=e.readUint16();this.data_rate=t>>3,this.num_ind_sub=7&t,this.ind_subs=[];for(var i=0;i>6,s.bsid=r>>1&31,s.bsmod=(1&r)<<4|a>>4&15,s.acmod=a>>1&7,s.lfeon=1&a,s.num_dep_sub=o>>1&15,s.num_dep_sub>0&&(s.chan_loc=(1&o)<<8|e.readUint8())}})),u.createFullBoxCtor("dfLa",(function(e){var t=[],i=["STREAMINFO","PADDING","APPLICATION","SEEKTABLE","VORBIS_COMMENT","CUESHEET","PICTURE","RESERVED"];for(this.parseFullHeader(e);;){var s=e.readUint8(),r=Math.min(127&s,i.length-1);if(r?e.readUint8Array(e.readUint24()):(e.readUint8Array(13),this.samplerate=e.readUint32()>>12,e.readUint8Array(20)),t.push(i[r]),128&s)break}this.numMetadataBlocks=t.length+" ("+t.join(", ")+")"})),u.createBoxCtor("dimm",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("dmed",(function(e){this.bytessent=e.readUint64()})),u.createBoxCtor("dOps",(function(e){if(this.Version=e.readUint8(),this.OutputChannelCount=e.readUint8(),this.PreSkip=e.readUint16(),this.InputSampleRate=e.readUint32(),this.OutputGain=e.readInt16(),this.ChannelMappingFamily=e.readUint8(),0!==this.ChannelMappingFamily){this.StreamCount=e.readUint8(),this.CoupledCount=e.readUint8(),this.ChannelMapping=[];for(var t=0;t=4;)this.compatible_brands[i]=e.readString(4),t-=4,i++})),u.createFullBoxCtor("hdlr",(function(e){0===this.version&&(e.readUint32(),this.handler=e.readString(4),e.readUint32Array(3),this.name=e.readString(this.size-this.hdr_size-20),"\0"===this.name[this.name.length-1]&&(this.name=this.name.slice(0,-1)))})),u.createBoxCtor("hvcC",(function(e){var t,i,s,r;this.configurationVersion=e.readUint8(),r=e.readUint8(),this.general_profile_space=r>>6,this.general_tier_flag=(32&r)>>5,this.general_profile_idc=31&r,this.general_profile_compatibility=e.readUint32(),this.general_constraint_indicator=e.readUint8Array(6),this.general_level_idc=e.readUint8(),this.min_spatial_segmentation_idc=4095&e.readUint16(),this.parallelismType=3&e.readUint8(),this.chroma_format_idc=3&e.readUint8(),this.bit_depth_luma_minus8=7&e.readUint8(),this.bit_depth_chroma_minus8=7&e.readUint8(),this.avgFrameRate=e.readUint16(),r=e.readUint8(),this.constantFrameRate=r>>6,this.numTemporalLayers=(13&r)>>3,this.temporalIdNested=(4&r)>>2,this.lengthSizeMinusOne=3&r,this.nalu_arrays=[];var a=e.readUint8();for(t=0;t>7,o.nalu_type=63&r;var n=e.readUint16();for(i=0;i>4&15,this.length_size=15&t,t=e.readUint8(),this.base_offset_size=t>>4&15,1===this.version||2===this.version?this.index_size=15&t:this.index_size=0,this.items=[];var i=0;if(this.version<2)i=e.readUint16();else{if(2!==this.version)throw"version of iloc box not supported";i=e.readUint32()}for(var s=0;s>7,this.axis=1&t})),u.createFullBoxCtor("infe",(function(e){if(0!==this.version&&1!==this.version||(this.item_ID=e.readUint16(),this.item_protection_index=e.readUint16(),this.item_name=e.readCString(),this.content_type=e.readCString(),this.content_encoding=e.readCString()),1===this.version)return this.extension_type=e.readString(4),o.warn("BoxParser","Cannot parse extension type"),void e.seek(this.start+this.size);this.version>=2&&(2===this.version?this.item_ID=e.readUint16():3===this.version&&(this.item_ID=e.readUint32()),this.item_protection_index=e.readUint16(),this.item_type=e.readString(4),this.item_name=e.readCString(),"mime"===this.item_type?(this.content_type=e.readCString(),this.content_encoding=e.readCString()):"uri "===this.item_type&&(this.item_uri_type=e.readCString()))})),u.createFullBoxCtor("ipma",(function(e){var t,i;for(entry_count=e.readUint32(),this.associations=[],t=0;t>7==1,1&this.flags?o.property_index=(127&a)<<8|e.readUint8():o.property_index=127&a}}})),u.createFullBoxCtor("iref",(function(e){var t,i;for(this.references=[];e.getPosition()>7,s.assignment_type=127&r,s.assignment_type){case 0:s.grouping_type=e.readString(4);break;case 1:s.grouping_type=e.readString(4),s.grouping_type_parameter=e.readUint32();break;case 2:case 3:break;case 4:s.sub_track_id=e.readUint32();break;default:o.warn("BoxParser","Unknown leva assignement type")}}})),u.createBoxCtor("lsel",(function(e){this.layer_id=e.readUint16()})),u.createBoxCtor("maxr",(function(e){this.period=e.readUint32(),this.bytes=e.readUint32()})),p.prototype.toString=function(){return"("+this.x+","+this.y+")"},u.createBoxCtor("mdcv",(function(e){this.display_primaries=[],this.display_primaries[0]=new p(e.readUint16(),e.readUint16()),this.display_primaries[1]=new p(e.readUint16(),e.readUint16()),this.display_primaries[2]=new p(e.readUint16(),e.readUint16()),this.white_point=new p(e.readUint16(),e.readUint16()),this.max_display_mastering_luminance=e.readUint32(),this.min_display_mastering_luminance=e.readUint32()})),u.createFullBoxCtor("mdhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.parseLanguage(e),e.readUint16()})),u.createFullBoxCtor("mehd",(function(e){1&this.flags&&(o.warn("BoxParser","mehd box incorrectly uses flags set to 1, converting version to 1"),this.version=1),1==this.version?this.fragment_duration=e.readUint64():this.fragment_duration=e.readUint32()})),u.createFullBoxCtor("meta",(function(e){this.boxes=[],u.ContainerBox.prototype.parse.call(this,e)})),u.createFullBoxCtor("mfhd",(function(e){this.sequence_number=e.readUint32()})),u.createFullBoxCtor("mfro",(function(e){this._size=e.readUint32()})),u.createFullBoxCtor("mskC",(function(e){this.bits_per_pixel=e.readUint8()})),u.createFullBoxCtor("mvhd",(function(e){1==this.version?(this.creation_time=e.readUint64(),this.modification_time=e.readUint64(),this.timescale=e.readUint32(),this.duration=e.readUint64()):(this.creation_time=e.readUint32(),this.modification_time=e.readUint32(),this.timescale=e.readUint32(),this.duration=e.readUint32()),this.rate=e.readUint32(),this.volume=e.readUint16()>>8,e.readUint16(),e.readUint32Array(2),this.matrix=e.readUint32Array(9),e.readUint32Array(6),this.next_track_id=e.readUint32()})),u.createBoxCtor("npck",(function(e){this.packetssent=e.readUint32()})),u.createBoxCtor("nump",(function(e){this.packetssent=e.readUint64()})),u.createFullBoxCtor("padb",(function(e){var t=e.readUint32();this.padbits=[];for(var i=0;i0){var t=e.readUint32();this.kid=[];for(var i=0;i0&&(this.data=e.readUint8Array(s))})),u.createFullBoxCtor("clef",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("enof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createFullBoxCtor("prof",(function(e){this.width=e.readUint32(),this.height=e.readUint32()})),u.createContainerBoxCtor("tapt",null,["clef","prof","enof"]),u.createBoxCtor("rtp ",(function(e){this.descriptionformat=e.readString(4),this.sdptext=e.readString(this.size-this.hdr_size-4)})),u.createFullBoxCtor("saio",(function(e){1&this.flags&&(this.aux_info_type=e.readUint32(),this.aux_info_type_parameter=e.readUint32());var t=e.readUint32();this.offset=[];for(var i=0;i>7,this.avgRateFlag=t>>6&1,this.durationFlag&&(this.duration=e.readUint32()),this.avgRateFlag&&(this.accurateStatisticsFlag=e.readUint8(),this.avgBitRate=e.readUint16(),this.avgFrameRate=e.readUint16()),this.dependency=[];for(var i=e.readUint8(),s=0;s>7,this.num_leading_samples=127&t})),u.createSampleGroupCtor("rash",(function(e){if(this.operation_point_count=e.readUint16(),this.description_length!==2+(1===this.operation_point_count?2:6*this.operation_point_count)+9)o.warn("BoxParser","Mismatch in "+this.grouping_type+" sample group length"),this.data=e.readUint8Array(this.description_length-2);else{if(1===this.operation_point_count)this.target_rate_share=e.readUint16();else{this.target_rate_share=[],this.available_bitrate=[];for(var t=0;t>4,this.skip_byte_block=15&t,this.isProtected=e.readUint8(),this.Per_Sample_IV_Size=e.readUint8(),this.KID=u.parseHex16(e),this.constant_IV_size=0,this.constant_IV=0,1===this.isProtected&&0===this.Per_Sample_IV_Size&&(this.constant_IV_size=e.readUint8(),this.constant_IV=e.readUint8Array(this.constant_IV_size))})),u.createSampleGroupCtor("stsa",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("sync",(function(e){var t=e.readUint8();this.NAL_unit_type=63&t})),u.createSampleGroupCtor("tele",(function(e){var t=e.readUint8();this.level_independently_decodable=t>>7})),u.createSampleGroupCtor("tsas",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("tscl",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createSampleGroupCtor("vipr",(function(e){o.warn("BoxParser","Sample Group type: "+this.grouping_type+" not fully parsed")})),u.createFullBoxCtor("sbgp",(function(e){this.grouping_type=e.readString(4),1===this.version?this.grouping_type_parameter=e.readUint32():this.grouping_type_parameter=0,this.entries=[];for(var t=e.readUint32(),i=0;i>6,this.sample_depends_on[s]=t>>4&3,this.sample_is_depended_on[s]=t>>2&3,this.sample_has_redundancy[s]=3&t})),u.createFullBoxCtor("senc"),u.createFullBoxCtor("sgpd",(function(e){this.grouping_type=e.readString(4),o.debug("BoxParser","Found Sample Groups of type "+this.grouping_type),1===this.version?this.default_length=e.readUint32():this.default_length=0,this.version>=2&&(this.default_group_description_index=e.readUint32()),this.entries=[];for(var t=e.readUint32(),i=0;i>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=e.readUint32(),r=e.readUint32(),s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}})),u.SingleItemTypeReferenceBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.SingleItemTypeReferenceBox.prototype=new u.Box,u.SingleItemTypeReferenceBox.prototype.parse=function(e){this.from_item_ID=e.readUint16();var t=e.readUint16();this.references=[];for(var i=0;i>4&15,this.sample_sizes[t+1]=15&s}else if(8===this.field_size)for(t=0;t0)for(i=0;i>4&15,this.default_skip_byte_block=15&t}this.default_isProtected=e.readUint8(),this.default_Per_Sample_IV_Size=e.readUint8(),this.default_KID=u.parseHex16(e),1===this.default_isProtected&&0===this.default_Per_Sample_IV_Size&&(this.default_constant_IV_size=e.readUint8(),this.default_constant_IV=e.readUint8Array(this.default_constant_IV_size))})),u.createFullBoxCtor("tfdt",(function(e){1==this.version?this.baseMediaDecodeTime=e.readUint64():this.baseMediaDecodeTime=e.readUint32()})),u.createFullBoxCtor("tfhd",(function(e){var t=0;this.track_id=e.readUint32(),this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET?(this.base_data_offset=e.readUint64(),t+=8):this.base_data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DESC?(this.default_sample_description_index=e.readUint32(),t+=4):this.default_sample_description_index=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_DUR?(this.default_sample_duration=e.readUint32(),t+=4):this.default_sample_duration=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_SIZE?(this.default_sample_size=e.readUint32(),t+=4):this.default_sample_size=0,this.size-this.hdr_size>t&&this.flags&u.TFHD_FLAG_SAMPLE_FLAGS?(this.default_sample_flags=e.readUint32(),t+=4):this.default_sample_flags=0})),u.createFullBoxCtor("tfra",(function(e){this.track_ID=e.readUint32(),e.readUint24();var t=e.readUint8();this.length_size_of_traf_num=t>>4&3,this.length_size_of_trun_num=t>>2&3,this.length_size_of_sample_num=3&t,this.entries=[];for(var i=e.readUint32(),s=0;s>8,e.readUint16(),this.matrix=e.readInt32Array(9),this.width=e.readUint32(),this.height=e.readUint32()})),u.createBoxCtor("tmax",(function(e){this.time=e.readUint32()})),u.createBoxCtor("tmin",(function(e){this.time=e.readUint32()})),u.createBoxCtor("totl",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpay",(function(e){this.bytessent=e.readUint32()})),u.createBoxCtor("tpyl",(function(e){this.bytessent=e.readUint64()})),u.TrackGroupTypeBox.prototype.parse=function(e){this.parseFullHeader(e),this.track_group_id=e.readUint32()},u.createTrackGroupCtor("msrc"),u.TrackReferenceTypeBox=function(e,t,i,s){u.Box.call(this,e,t),this.hdr_size=i,this.start=s},u.TrackReferenceTypeBox.prototype=new u.Box,u.TrackReferenceTypeBox.prototype.parse=function(e){this.track_ids=e.readUint32Array((this.size-this.hdr_size)/4)},u.trefBox.prototype.parse=function(e){for(var t,i;e.getPosition()t&&this.flags&u.TRUN_FLAGS_DATA_OFFSET?(this.data_offset=e.readInt32(),t+=4):this.data_offset=0,this.size-this.hdr_size>t&&this.flags&u.TRUN_FLAGS_FIRST_FLAG?(this.first_sample_flags=e.readUint32(),t+=4):this.first_sample_flags=0,this.sample_duration=[],this.sample_size=[],this.sample_flags=[],this.sample_composition_time_offset=[],this.size-this.hdr_size>t)for(var i=0;i>7&1,this.block_pad_lsb=i>>6&1,this.block_little_endian=i>>5&1,this.block_reversed=i>>4&1,this.pad_unknown=i>>3&1,this.pixel_size=e.readUint32(),this.row_align_size=e.readUint32(),this.tile_align_size=e.readUint32(),this.num_tile_cols_minus_one=e.readUint32(),this.num_tile_rows_minus_one=e.readUint32()}})),u.createFullBoxCtor("url ",(function(e){1!==this.flags&&(this.location=e.readCString())})),u.createFullBoxCtor("urn ",(function(e){this.name=e.readCString(),this.size-this.hdr_size-this.name.length-1>0&&(this.location=e.readCString())})),u.createUUIDBox("a5d40b30e81411ddba2f0800200c9a66",!0,!1,(function(e){this.LiveServerManifest=e.readString(this.size-this.hdr_size).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")})),u.createUUIDBox("d08a4f1810f34a82b6c832d8aba183d3",!0,!1,(function(e){this.system_id=u.parseHex16(e);var t=e.readUint32();t>0&&(this.data=e.readUint8Array(t))})),u.createUUIDBox("a2394f525a9b4f14a2446c427c648df4",!0,!1),u.createUUIDBox("8974dbce7be74c5184f97148f9882554",!0,!1,(function(e){this.default_AlgorithmID=e.readUint24(),this.default_IV_size=e.readUint8(),this.default_KID=u.parseHex16(e)})),u.createUUIDBox("d4807ef2ca3946958e5426cb9e46a79f",!0,!1,(function(e){this.fragment_count=e.readUint8(),this.entries=[];for(var t=0;t>4,this.chromaSubsampling=t>>1&7,this.videoFullRangeFlag=1&t,this.colourPrimaries=e.readUint8(),this.transferCharacteristics=e.readUint8(),this.matrixCoefficients=e.readUint8(),this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize)):(this.profile=e.readUint8(),this.level=e.readUint8(),t=e.readUint8(),this.bitDepth=t>>4&15,this.colorSpace=15&t,t=e.readUint8(),this.chromaSubsampling=t>>4&15,this.transferFunction=t>>1&7,this.videoFullRangeFlag=1&t,this.codecIntializationDataSize=e.readUint16(),this.codecIntializationData=e.readUint8Array(this.codecIntializationDataSize))})),u.createBoxCtor("vttC",(function(e){this.text=e.readString(this.size-this.hdr_size)})),u.createFullBoxCtor("vvcC",(function(e){var t,i,s={held_bits:void 0,num_held_bits:0,stream_read_1_bytes:function(e){this.held_bits=e.readUint8(),this.num_held_bits=8},stream_read_2_bytes:function(e){this.held_bits=e.readUint16(),this.num_held_bits=16},extract_bits:function(e){var t=this.held_bits>>this.num_held_bits-e&(1<1){for(s.stream_read_1_bytes(e),this.ptl_sublayer_present_mask=0,i=this.num_sublayers-2;i>=0;--i){var o=s.extract_bits(1);this.ptl_sublayer_present_mask|=o<1;++i)s.extract_bits(1);for(this.sublayer_level_idc=[],i=this.num_sublayers-2;i>=0;--i)this.ptl_sublayer_present_mask&1<>=1;t+=u.decimalToHex(s,0),t+=".",0===this.hvcC.general_tier_flag?t+="L":t+="H",t+=this.hvcC.general_level_idc;var r=!1,a="";for(e=5;e>=0;e--)(this.hvcC.general_constraint_indicator[e]||r)&&(a="."+u.decimalToHex(this.hvcC.general_constraint_indicator[e],0)+a,r=!0);t+=a}return t},u.vvc1SampleEntry.prototype.getCodec=u.vvi1SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this);if(this.vvcC){t+="."+this.vvcC.general_profile_idc,this.vvcC.general_tier_flag?t+=".H":t+=".L",t+=this.vvcC.general_level_idc;var i="";if(this.vvcC.general_constraint_info){var s,r=[],a=0;for(a|=this.vvcC.ptl_frame_only_constraint<<7,a|=this.vvcC.ptl_multilayer_enabled<<6,e=0;e>2&63,r.push(a),a&&(s=e),a=this.vvcC.general_constraint_info[e]>>2&3;if(void 0===s)i=".CA";else{i=".C";var o="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",n=0,l=0;for(e=0;e<=s;++e)for(n=n<<8|r[e],l+=8;l>=5;){i+=o[n>>l-5&31],n&=(1<<(l-=5))-1}l&&(i+=o[31&(n<<=5-l)])}}t+=i}return t},u.mp4aSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);if(this.esds&&this.esds.esd){var t=this.esds.esd.getOTI(),i=this.esds.esd.getAudioConfig();return e+"."+u.decimalToHex(t)+(i?"."+i:"")}return e},u.stxtSampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this);return this.mime_format?e+"."+this.mime_format:e},u.vp08SampleEntry.prototype.getCodec=u.vp09SampleEntry.prototype.getCodec=function(){var e=u.SampleEntry.prototype.getCodec.call(this),t=this.vpcC.level;0==t&&(t="00");var i=this.vpcC.bitDepth;return 8==i&&(i="08"),e+".0"+this.vpcC.profile+"."+t+"."+i},u.av01SampleEntry.prototype.getCodec=function(){var e,t=u.SampleEntry.prototype.getCodec.call(this),i=this.av1C.seq_level_idx_0;return i<10&&(i="0"+i),2===this.av1C.seq_profile&&1===this.av1C.high_bitdepth?e=1===this.av1C.twelve_bit?"12":"10":this.av1C.seq_profile<=2&&(e=1===this.av1C.high_bitdepth?"10":"08"),t+"."+this.av1C.seq_profile+"."+i+(this.av1C.seq_tier_0?"H":"M")+"."+e},u.Box.prototype.writeHeader=function(e,t){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),o.debug("BoxWriter","Writing box "+this.type+" of size: "+this.size+" at position "+e.getPosition()+(t||"")),this.size>d?e.writeUint32(1):(this.sizePosition=e.getPosition(),e.writeUint32(this.size)),e.writeString(this.type,null,4),"uuid"===this.type&&e.writeUint8Array(this.uuid),this.size>d&&e.writeUint64(this.size)},u.FullBox.prototype.writeHeader=function(e){this.size+=4,u.Box.prototype.writeHeader.call(this,e," v="+this.version+" f="+this.flags),e.writeUint8(this.version),e.writeUint24(this.flags)},u.Box.prototype.write=function(e){"mdat"===this.type?this.data&&(this.size=this.data.length,this.writeHeader(e),e.writeUint8Array(this.data)):(this.size=this.data?this.data.length:0,this.writeHeader(e),this.data&&e.writeUint8Array(this.data))},u.ContainerBox.prototype.write=function(e){this.size=0,this.writeHeader(e);for(var t=0;t=2&&e.writeUint32(this.default_sample_description_index),e.writeUint32(this.entries.length),t=0;t0)for(t=0;t+1t?1:0,this.flags=0,this.size=4,1===this.version&&(this.size+=4),this.writeHeader(e),1===this.version?e.writeUint64(this.baseMediaDecodeTime):e.writeUint32(this.baseMediaDecodeTime)},u.tfhdBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&(this.size+=8),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&(this.size+=4),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&(this.size+=4),this.writeHeader(e),e.writeUint32(this.track_id),this.flags&u.TFHD_FLAG_BASE_DATA_OFFSET&&e.writeUint64(this.base_data_offset),this.flags&u.TFHD_FLAG_SAMPLE_DESC&&e.writeUint32(this.default_sample_description_index),this.flags&u.TFHD_FLAG_SAMPLE_DUR&&e.writeUint32(this.default_sample_duration),this.flags&u.TFHD_FLAG_SAMPLE_SIZE&&e.writeUint32(this.default_sample_size),this.flags&u.TFHD_FLAG_SAMPLE_FLAGS&&e.writeUint32(this.default_sample_flags)},u.tkhdBox.prototype.write=function(e){this.version=0,this.size=80,this.writeHeader(e),e.writeUint32(this.creation_time),e.writeUint32(this.modification_time),e.writeUint32(this.track_id),e.writeUint32(0),e.writeUint32(this.duration),e.writeUint32(0),e.writeUint32(0),e.writeInt16(this.layer),e.writeInt16(this.alternate_group),e.writeInt16(this.volume<<8),e.writeUint16(0),e.writeInt32Array(this.matrix),e.writeUint32(this.width),e.writeUint32(this.height)},u.trexBox.prototype.write=function(e){this.version=0,this.flags=0,this.size=20,this.writeHeader(e),e.writeUint32(this.track_id),e.writeUint32(this.default_sample_description_index),e.writeUint32(this.default_sample_duration),e.writeUint32(this.default_sample_size),e.writeUint32(this.default_sample_flags)},u.trunBox.prototype.write=function(e){this.version=0,this.size=4,this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.size+=4),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&(this.size+=4),this.flags&u.TRUN_FLAGS_DURATION&&(this.size+=4*this.sample_duration.length),this.flags&u.TRUN_FLAGS_SIZE&&(this.size+=4*this.sample_size.length),this.flags&u.TRUN_FLAGS_FLAGS&&(this.size+=4*this.sample_flags.length),this.flags&u.TRUN_FLAGS_CTS_OFFSET&&(this.size+=4*this.sample_composition_time_offset.length),this.writeHeader(e),e.writeUint32(this.sample_count),this.flags&u.TRUN_FLAGS_DATA_OFFSET&&(this.data_offset_position=e.getPosition(),e.writeInt32(this.data_offset)),this.flags&u.TRUN_FLAGS_FIRST_FLAG&&e.writeUint32(this.first_sample_flags);for(var t=0;t-1||e[i]instanceof u.Box||t[i]instanceof u.Box||void 0===e[i]||void 0===t[i]||"function"==typeof e[i]||"function"==typeof t[i]||e.subBoxNames&&e.subBoxNames.indexOf(i.slice(0,4))>-1||t.subBoxNames&&t.subBoxNames.indexOf(i.slice(0,4))>-1||"data"===i||"start"===i||"size"===i||"creation_time"===i||"modification_time"===i||u.DIFF_PRIMITIVE_ARRAY_PROP_NAMES.indexOf(i)>-1||e[i]===t[i]))return!1;return!0},u.boxEqual=function(e,t){if(!u.boxEqualFields(e,t))return!1;for(var i=0;i1)for(t=1;t-1&&this.fragmentedTracks.splice(t,1)},y.prototype.setExtractionOptions=function(e,t,i){var s=this.getTrackById(e);if(s){var r={};this.extractedTracks.push(r),r.id=e,r.user=t,r.trak=s,s.nextSample=0,r.nb_samples=1e3,r.samples=[],i&&i.nbSamples&&(r.nb_samples=i.nbSamples)}},y.prototype.unsetExtractionOptions=function(e){for(var t=-1,i=0;i-1&&this.extractedTracks.splice(t,1)},y.prototype.parse=function(){var e,t;if(!this.restoreParsePosition||this.restoreParsePosition())for(;;){if(this.hasIncompleteMdat&&this.hasIncompleteMdat()){if(this.processIncompleteMdat())continue;return}if(this.saveParsePosition&&this.saveParsePosition(),(e=u.parseOneBox(this.stream,false)).code===u.ERR_NOT_ENOUGH_DATA){if(this.processIncompleteBox){if(this.processIncompleteBox(e))continue;return}return}var i;switch(i="uuid"!==(t=e.box).type?t.type:t.uuid,this.boxes.push(t),i){case"mdat":this.mdats.push(t);break;case"moof":this.moofs.push(t);break;case"moov":this.moovStartFound=!0,0===this.mdats.length&&(this.isProgressive=!0);default:void 0!==this[i]&&o.warn("ISOFile","Duplicate Box of type: "+i+", overriding previous occurrence"),this[i]=t}this.updateUsedBytes&&this.updateUsedBytes(t,e)}},y.prototype.checkBuffer=function(e){if(null==e)throw"Buffer must be defined and non empty";if(void 0===e.fileStart)throw"Buffer must have a fileStart property";return 0===e.byteLength?(o.warn("ISOFile","Ignoring empty buffer (fileStart: "+e.fileStart+")"),this.stream.logBufferLevel(),!1):(o.info("ISOFile","Processing buffer (fileStart: "+e.fileStart+")"),e.usedBytes=0,this.stream.insertBuffer(e),this.stream.logBufferLevel(),!!this.stream.initialized()||(o.warn("ISOFile","Not ready to start parsing"),!1))},y.prototype.appendBuffer=function(e,t){var i;if(this.checkBuffer(e))return this.parse(),this.moovStartFound&&!this.moovStartSent&&(this.moovStartSent=!0,this.onMoovStart&&this.onMoovStart()),this.moov?(this.sampleListBuilt||(this.buildSampleLists(),this.sampleListBuilt=!0),this.updateSampleLists(),this.onReady&&!this.readySent&&(this.readySent=!0,this.onReady(this.getInfo())),this.processSamples(t),this.nextSeekPosition?(i=this.nextSeekPosition,this.nextSeekPosition=void 0):i=this.nextParsePosition,this.stream.getEndFilePositionAfter&&(i=this.stream.getEndFilePositionAfter(i))):i=this.nextParsePosition?this.nextParsePosition:0,this.sidx&&this.onSidx&&!this.sidxSent&&(this.onSidx(this.sidx),this.sidxSent=!0),this.meta&&(this.flattenItemInfo&&!this.itemListBuilt&&(this.flattenItemInfo(),this.itemListBuilt=!0),this.processItems&&this.processItems(this.onItem)),this.stream.cleanBuffers&&(o.info("ISOFile","Done processing buffer (fileStart: "+e.fileStart+") - next buffer to fetch should have a fileStart position of "+i),this.stream.logBufferLevel(),this.stream.cleanBuffers(),this.stream.logBufferLevel(!0),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize())),i},y.prototype.getInfo=function(){var e,t,i,s,r,a,o={},n=new Date("1904-01-01T00:00:00Z").getTime();if(this.moov)for(o.hasMoov=!0,o.duration=this.moov.mvhd.duration,o.timescale=this.moov.mvhd.timescale,o.isFragmented=null!=this.moov.mvex,o.isFragmented&&this.moov.mvex.mehd&&(o.fragment_duration=this.moov.mvex.mehd.fragment_duration),o.isProgressive=this.isProgressive,o.hasIOD=null!=this.moov.iods,o.brands=[],o.brands.push(this.ftyp.major_brand),o.brands=o.brands.concat(this.ftyp.compatible_brands),o.created=new Date(n+1e3*this.moov.mvhd.creation_time),o.modified=new Date(n+1e3*this.moov.mvhd.modification_time),o.tracks=[],o.audioTracks=[],o.videoTracks=[],o.subtitleTracks=[],o.metadataTracks=[],o.hintTracks=[],o.otherTracks=[],e=0;e0?o.mime+='video/mp4; codecs="':o.audioTracks&&o.audioTracks.length>0?o.mime+='audio/mp4; codecs="':o.mime+='application/mp4; codecs="',e=0;e=i.samples.length)&&(o.info("ISOFile","Sending fragmented data on track #"+s.id+" for samples ["+Math.max(0,i.nextSample-s.nb_samples)+","+(i.nextSample-1)+"]"),o.info("ISOFile","Sample data size in memory: "+this.getAllocatedSampleDataSize()),this.onSegment&&this.onSegment(s.id,s.user,s.segmentStream.buffer,i.nextSample,e||i.nextSample>=i.samples.length),s.segmentStream=null,s!==this.fragmentedTracks[t]))break}}if(null!==this.onSamples)for(t=0;t=i.samples.length)&&(o.debug("ISOFile","Sending samples on track #"+a.id+" for sample "+i.nextSample),this.onSamples&&this.onSamples(a.id,a.user,a.samples),a.samples=[],a!==this.extractedTracks[t]))break}}}},y.prototype.getBox=function(e){var t=this.getBoxes(e,!0);return t.length?t[0]:null},y.prototype.getBoxes=function(e,t){var i=[];return y._sweep.call(this,e,i,t),i},y._sweep=function(e,t,i){for(var s in this.type&&this.type==e&&t.push(this),this.boxes){if(t.length&&i)return;y._sweep.call(this.boxes[s],e,t,i)}},y.prototype.getTrackSamplesInfo=function(e){var t=this.getTrackById(e);return t?t.samples:void 0},y.prototype.getTrackSample=function(e,t){var i=this.getTrackById(e);return this.getSample(i,t)},y.prototype.releaseUsedSamples=function(e,t){var i=0,s=this.getTrackById(e);s.lastValidSample||(s.lastValidSample=0);for(var r=s.lastValidSample;re*r.timescale){d=s-1;break}t&&r.is_sync&&(l=s)}for(t&&(d=l),e=i.samples[d].cts,i.nextSample=d;i.samples[d].alreadyRead===i.samples[d].size&&i.samples[d+1];)d++;return a=i.samples[d].offset+i.samples[d].alreadyRead,o.info("ISOFile","Seeking to "+(t?"RAP":"")+" sample #"+i.nextSample+" on track "+i.tkhd.track_id+", time "+o.getDurationString(e,n)+" and offset: "+a),{offset:a,time:e/n}},y.prototype.getTrackDuration=function(e){var t;return e.samples?((t=e.samples[e.samples.length-1]).cts+t.duration)/t.timescale:1/0},y.prototype.seek=function(e,t){var i,s,r,a=this.moov,n={offset:1/0,time:1/0};if(this.moov){for(r=0;rthis.getTrackDuration(i)||((s=this.seekTrack(e,t,i)).offset-1){o=l;break}switch(o){case"Visual":if(r.add("vmhd").set("graphicsmode",0).set("opcolor",[0,0,0]),a.set("width",t.width).set("height",t.height).set("horizresolution",72<<16).set("vertresolution",72<<16).set("frame_count",1).set("compressorname",t.type+" Compressor").set("depth",24),t.avcDecoderConfigRecord){var c=new u.avcCBox;c.parse(new n(t.avcDecoderConfigRecord)),a.addBox(c)}else if(t.hevcDecoderConfigRecord){var p=new u.hvcCBox;p.parse(new n(t.hevcDecoderConfigRecord)),a.addBox(p)}break;case"Audio":r.add("smhd").set("balance",t.balance||0),a.set("channel_count",t.channel_count||2).set("samplesize",t.samplesize||16).set("samplerate",t.samplerate||65536);break;case"Hint":r.add("hmhd");break;case"Subtitle":if(r.add("sthd"),"stpp"===t.type)a.set("namespace",t.namespace||"nonamespace").set("schema_location",t.schema_location||"").set("auxiliary_mime_types",t.auxiliary_mime_types||"");break;default:r.add("nmhd")}t.description&&a.addBox(t.description),t.description_boxes&&t.description_boxes.forEach((function(e){a.addBox(e)})),r.add("dinf").add("dref").addEntry((new u["url Box"]).set("flags",1));var f=r.add("stbl");return f.add("stsd").addEntry(a),f.add("stts").set("sample_counts",[]).set("sample_deltas",[]),f.add("stsc").set("first_chunk",[]).set("samples_per_chunk",[]).set("sample_description_index",[]),f.add("stco").set("chunk_offsets",[]),f.add("stsz").set("sample_sizes",[]),this.moov.mvex.add("trex").set("track_id",t.id).set("default_sample_description_index",t.default_sample_description_index||1).set("default_sample_duration",t.default_sample_duration||0).set("default_sample_size",t.default_sample_size||0).set("default_sample_flags",t.default_sample_flags||0),this.buildTrakSampleLists(i),t.id}},u.Box.prototype.computeSize=function(e){var t=e||new l;t.endianness=l.BIG_ENDIAN,this.write(t)},y.prototype.addSample=function(e,t,i){var s=i||{},r={},a=this.getTrackById(e);if(null!==a){r.number=a.samples.length,r.track_id=a.tkhd.track_id,r.timescale=a.mdia.mdhd.timescale,r.description_index=s.sample_description_index?s.sample_description_index-1:0,r.description=a.mdia.minf.stbl.stsd.entries[r.description_index],r.data=t,r.size=t.byteLength,r.alreadyRead=r.size,r.duration=s.duration||1,r.cts=s.cts||0,r.dts=s.dts||0,r.is_sync=s.is_sync||!1,r.is_leading=s.is_leading||0,r.depends_on=s.depends_on||0,r.is_depended_on=s.is_depended_on||0,r.has_redundancy=s.has_redundancy||0,r.degradation_priority=s.degradation_priority||0,r.offset=0,r.subsamples=s.subsamples,a.samples.push(r),a.samples_size+=r.size,a.samples_duration+=r.duration,void 0===a.first_dts&&(a.first_dts=s.dts),this.processSamples();var o=this.createSingleSampleMoof(r);return this.addBox(o),o.computeSize(),o.trafs[0].truns[0].data_offset=o.size+8,this.add("mdat").data=new Uint8Array(t),r}},y.prototype.createSingleSampleMoof=function(e){var t=0;t=e.is_sync?1<<25:65536;var i=new u.moofBox;i.add("mfhd").set("sequence_number",this.nextMoofNumber),this.nextMoofNumber++;var s=i.add("traf"),r=this.getTrackById(e.track_id);return s.add("tfhd").set("track_id",e.track_id).set("flags",u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),s.add("tfdt").set("baseMediaDecodeTime",e.dts-(r.first_dts||0)),s.add("trun").set("flags",u.TRUN_FLAGS_DATA_OFFSET|u.TRUN_FLAGS_DURATION|u.TRUN_FLAGS_SIZE|u.TRUN_FLAGS_FLAGS|u.TRUN_FLAGS_CTS_OFFSET).set("data_offset",0).set("first_sample_flags",0).set("sample_count",1).set("sample_duration",[e.duration]).set("sample_size",[e.size]).set("sample_flags",[t]).set("sample_composition_time_offset",[e.cts-e.dts]),i},y.prototype.lastMoofIndex=0,y.prototype.samplesDataSize=0,y.prototype.resetTables=function(){var e,t,i,s,r,a;for(this.initial_duration=this.moov.mvhd.duration,this.moov.mvhd.duration=0,e=0;e=2&&(l=r[o].grouping_type+"/0",(n=new d(r[o].grouping_type,0)).is_fragment=!0,t.sample_groups_info[l]||(t.sample_groups_info[l]=n))}else for(o=0;o=2&&(l=s[o].grouping_type+"/0",n=new d(s[o].grouping_type,0),e.sample_groups_info[l]||(e.sample_groups_info[l]=n))},y.setSampleGroupProperties=function(e,t,i,s){var r,a;for(r in t.sample_groups=[],s){var o;if(t.sample_groups[r]={},t.sample_groups[r].grouping_type=s[r].grouping_type,t.sample_groups[r].grouping_type_parameter=s[r].grouping_type_parameter,i>=s[r].last_sample_in_run&&(s[r].last_sample_in_run<0&&(s[r].last_sample_in_run=0),s[r].entry_index++,s[r].entry_index<=s[r].sbgp.entries.length-1&&(s[r].last_sample_in_run+=s[r].sbgp.entries[s[r].entry_index].sample_count)),s[r].entry_index<=s[r].sbgp.entries.length-1?t.sample_groups[r].group_description_index=s[r].sbgp.entries[s[r].entry_index].group_description_index:t.sample_groups[r].group_description_index=-1,0!==t.sample_groups[r].group_description_index)o=s[r].fragment_description?s[r].fragment_description:s[r].description,t.sample_groups[r].group_description_index>0?(a=t.sample_groups[r].group_description_index>65535?(t.sample_groups[r].group_description_index>>16)-1:t.sample_groups[r].group_description_index-1,o&&a>=0&&(t.sample_groups[r].description=o.entries[a])):o&&o.version>=2&&o.default_group_description_index>0&&(t.sample_groups[r].description=o.entries[o.default_group_description_index-1])}},y.process_sdtp=function(e,t,i){t&&(e?(t.is_leading=e.is_leading[i],t.depends_on=e.sample_depends_on[i],t.is_depended_on=e.sample_is_depended_on[i],t.has_redundancy=e.sample_has_redundancy[i]):(t.is_leading=0,t.depends_on=0,t.is_depended_on=0,t.has_redundancy=0))},y.prototype.buildSampleLists=function(){var e,t;for(e=0;eb&&(v++,b<0&&(b=0),b+=a.sample_counts[v]),t>0?(e.samples[t-1].duration=a.sample_deltas[v],e.samples_duration+=e.samples[t-1].duration,k.dts=e.samples[t-1].dts+e.samples[t-1].duration):k.dts=0,o?(t>=_&&(S++,_<0&&(_=0),_+=o.sample_counts[S]),k.cts=e.samples[t].dts+o.sample_offsets[S]):k.cts=k.dts,n?(t==n.sample_numbers[w]-1?(k.is_sync=!0,w++):(k.is_sync=!1,k.degradation_priority=0),d&&d.entries[E].sample_delta+T==t+1&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta,E++)):k.is_sync=!0,y.process_sdtp(e.mdia.minf.stbl.sdtp,k,k.number),k.degradation_priority=u?u.priority[t]:0,d&&d.entries[E].sample_delta+T==t&&(k.subsamples=d.entries[E].subsamples,T+=d.entries[E].sample_delta),(h.length>0||c.length>0)&&y.setSampleGroupProperties(e,k,t,e.sample_groups_info)}t>0&&(e.samples[t-1].duration=Math.max(e.mdia.mdhd.duration-e.samples[t-1].dts,0),e.samples_duration+=e.samples[t-1].duration)}},y.prototype.updateSampleLists=function(){var e,t,i,s,r,a,o,n,l,d,h,c,p,f,m;if(void 0!==this.moov)for(;this.lastMoofIndex0&&y.initSampleGroups(c,h,h.sbgps,c.mdia.minf.stbl.sgpds,h.sgpds),t=0;t0?f.dts=c.samples[c.samples.length-2].dts+c.samples[c.samples.length-2].duration:(h.tfdt?f.dts=h.tfdt.baseMediaDecodeTime:f.dts=0,c.first_traf_merged=!0),f.cts=f.dts,g.flags&u.TRUN_FLAGS_CTS_OFFSET&&(f.cts=f.dts+g.sample_composition_time_offset[i]),m=o,g.flags&u.TRUN_FLAGS_FLAGS?m=g.sample_flags[i]:0===i&&g.flags&u.TRUN_FLAGS_FIRST_FLAG&&(m=g.first_sample_flags),f.is_sync=!(m>>16&1),f.is_leading=m>>26&3,f.depends_on=m>>24&3,f.is_depended_on=m>>22&3,f.has_redundancy=m>>20&3,f.degradation_priority=65535&m;var A=!!(h.tfhd.flags&u.TFHD_FLAG_BASE_DATA_OFFSET),b=!!(h.tfhd.flags&u.TFHD_FLAG_DEFAULT_BASE_IS_MOOF),v=!!(g.flags&u.TRUN_FLAGS_DATA_OFFSET),_=0;_=A?h.tfhd.base_data_offset:b||0===t?d.start:n,f.offset=0===t&&0===i?v?_+g.data_offset:_:n,n=f.offset+f.size,(h.sbgps.length>0||h.sgpds.length>0||c.mdia.minf.stbl.sbgps.length>0||c.mdia.minf.stbl.sgpds.length>0)&&y.setSampleGroupProperties(c,f,f.number_in_traf,h.sample_groups_info)}}if(h.subs){c.has_fragment_subsamples=!0;var S=h.first_sample_index;for(t=0;t-1))return null;var a=(i=this.stream.buffers[r]).byteLength-(s.offset+s.alreadyRead-i.fileStart);if(s.size-s.alreadyRead<=a)return o.debug("ISOFile","Getting sample #"+t+" data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+(s.size-s.alreadyRead)+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,s.size-s.alreadyRead),i.usedBytes+=s.size-s.alreadyRead,this.stream.logBufferLevel(),s.alreadyRead=s.size,s;if(0===a)return null;o.debug("ISOFile","Getting sample #"+t+" partial data (alreadyRead: "+s.alreadyRead+" offset: "+(s.offset+s.alreadyRead-i.fileStart)+" read size: "+a+" full size: "+s.size+")"),l.memcpy(s.data.buffer,s.alreadyRead,i,s.offset+s.alreadyRead-i.fileStart,a),s.alreadyRead+=a,i.usedBytes+=a,this.stream.logBufferLevel()}},y.prototype.releaseSample=function(e,t){var i=e.samples[t];return i.data?(this.samplesDataSize-=i.size,i.data=null,i.alreadyRead=0,i.size):0},y.prototype.getAllocatedSampleDataSize=function(){return this.samplesDataSize},y.prototype.getCodecs=function(){var e,t="";for(e=0;e0&&(t+=","),t+=this.moov.traks[e].mdia.minf.stbl.stsd.entries[0].getCodec()}return t},y.prototype.getTrexById=function(e){var t;if(!this.moov||!this.moov.mvex)return null;for(t=0;t0&&(i.protection=a.ipro.protections[a.iinf.item_infos[e].protection_index-1]),a.iinf.item_infos[e].item_type?i.type=a.iinf.item_infos[e].item_type:i.type="mime",i.content_type=a.iinf.item_infos[e].content_type,i.content_encoding=a.iinf.item_infos[e].content_encoding;if(a.grpl)for(e=0;e0&&u.property_index-1-1))return null;var n=(t=this.stream.buffers[a]).byteLength-(r.offset+r.alreadyRead-t.fileStart);if(!(r.length-r.alreadyRead<=n))return o.debug("ISOFile","Getting item #"+e+" extent #"+s+" partial data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+n+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,n),r.alreadyRead+=n,i.alreadyRead+=n,t.usedBytes+=n,this.stream.logBufferLevel(),null;o.debug("ISOFile","Getting item #"+e+" extent #"+s+" data (alreadyRead: "+r.alreadyRead+" offset: "+(r.offset+r.alreadyRead-t.fileStart)+" read size: "+(r.length-r.alreadyRead)+" full extent size: "+r.length+" full item size: "+i.size+")"),l.memcpy(i.data.buffer,i.alreadyRead,t,r.offset+r.alreadyRead-t.fileStart,r.length-r.alreadyRead),t.usedBytes+=r.length-r.alreadyRead,this.stream.logBufferLevel(),i.alreadyRead+=r.length-r.alreadyRead,r.alreadyRead=r.length}}return i.alreadyRead===i.size?i:null},y.prototype.releaseItem=function(e){var t=this.items[e];if(t.data){this.itemsDataSize-=t.size,t.data=null,t.alreadyRead=0;for(var i=0;i0?this.moov.traks[e].samples[0].duration:0),t.push(s)}return t},u.Box.prototype.printHeader=function(e){this.size+=8,this.size>d&&(this.size+=8),"uuid"===this.type&&(this.size+=16),e.log(e.indent+"size:"+this.size),e.log(e.indent+"type:"+this.type)},u.FullBox.prototype.printHeader=function(e){this.size+=4,u.Box.prototype.printHeader.call(this,e),e.log(e.indent+"version:"+this.version),e.log(e.indent+"flags:"+this.flags)},u.Box.prototype.print=function(e){this.printHeader(e)},u.ContainerBox.prototype.print=function(e){this.printHeader(e);for(var t=0;t>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"next_track_id: "+this.next_track_id)},u.tkhdBox.prototype.print=function(e){u.FullBox.prototype.printHeader.call(this,e),e.log(e.indent+"creation_time: "+this.creation_time),e.log(e.indent+"modification_time: "+this.modification_time),e.log(e.indent+"track_id: "+this.track_id),e.log(e.indent+"duration: "+this.duration),e.log(e.indent+"volume: "+(this.volume>>8)),e.log(e.indent+"matrix: "+this.matrix.join(", ")),e.log(e.indent+"layer: "+this.layer),e.log(e.indent+"alternate_group: "+this.alternate_group),e.log(e.indent+"width: "+this.width),e.log(e.indent+"height: "+this.height)};var A={createFile:function(e,t){var i=void 0===e||e,s=new y(t);return s.discardMdatData=!i,s}};t.createFile=A.createFile}));function $d(e){return e.reduce(((e,t)=>256*e+t))}function Wd(e){const t=[101,103,119,99],i=e.length-28,s=e.slice(i,i+t.length);return t.every(((e,t)=>e===s[t]))}Vd.Log,Vd.MP4BoxStream,Vd.DataStream,Vd.MultiBufferStream,Vd.MPEG4DescriptorParser,Vd.BoxParser,Vd.XMLSubtitlein4Parser,Vd.Textin4Parser,Vd.ISOFile,Vd.createFile;class Jd{constructor(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=new Uint8Array([30,158,90,33,244,57,83,165,2,70,35,87,215,231,226,108]),this.t=this.n.slice().reverse()}destroy(){this.s=null,this.a=null,this.l=0,this.c=0,this.u=1/0,this.A=!1,this.d=!1,this.r=4194304,this.n=null,this.t=null}transport(e){if(!this.s&&this.l>50)return e;if(this.l++,this.d)return e;const t=new Uint8Array(e);if(this.A){if(!(this.c~e))}(e.slice(i+32,i+32+t))]}return null}(t,this.t);if(!i)return e;const s=function(e){try{if("object"!=typeof WebAssembly||"function"!=typeof WebAssembly.instantiate)throw null;{const e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(!(e instanceof WebAssembly.Module&&new WebAssembly.Instance(e)instanceof WebAssembly.Instance))throw null}}catch(e){return new Error("video_error_4")}let t;try{t={env:{__handle_stack_overflow:()=>e(new Error("video_error_1")),memory:new WebAssembly.Memory({initial:256,maximum:256})}}}catch(e){return new Error("video_error_5")}return t}(e);if(s instanceof Error)return console.error(s.message),this.d=!0,e;this.A=!0,this.u=i[1],Wd(t)&&this.c++,WebAssembly.instantiate(i[2],s).then((e=>{if(!function(e){return"function"==typeof e.parse&&"object"==typeof e.memory}(e.instance.exports))return this.d=!0,void console.error("video_error_3");this.s=e.instance.exports,this.a=new Uint8Array(this.s.memory.buffer)})).catch((e=>{this.d=!0,console.error("video_error_6")}))}return e}}class qd extends Dd{constructor(e){super(e),this.TAG_NAME="Fmp4Loader",this.player=e,this.mp4Box=Vd.createFile(),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.transportDescarmber=null,this.player._opt.isFmp4Private&&(this.transportDescarmber=new Jd),this._listenMp4Box(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.mp4Box&&(this.mp4Box.stop(),this.mp4Box.flush(),this.mp4Box.destroy(),this.mp4Box=null),this.transportDescarmber&&(this.transportDescarmber.destroy(),this.transportDescarmber=null),this.tempFmp4List=[],this.offset=0,this.videoTrackId=null,this.audioTrackId=null,this.isHevc=!1,this.player.debug.log(this.TAG_NAME,"destroy")}_listenMp4Box(){this.mp4Box.onReady=this.onReady.bind(this),this.mp4Box.onError=this.onError.bind(this),this.mp4Box.onSamples=this.onSamples.bind(this)}onReady(e){this.player.debug.log(this.TAG_NAME,"onReady",e);const t=e.videoTracks[0],i=e.audioTracks[0];if(t){this.videoTrackId=t.id;const e=this.getSeqHeader(t);e&&(this.player.debug.log(this.TAG_NAME,"seqHeader",e),this._doDecodeByFmp4(e,je,0,!0,0)),this.mp4Box.setExtractionOptions(t.id)}if(i&&this.player._opt.hasAudio){this.audioTrackId=i.id;const e=i.audio||{},t=Nr.indexOf(e.sample_rate),s=i.codec.replace("mp4a.40.","");this.mp4Box.setExtractionOptions(i.id);const r={profile:parseInt(s,10),sampleRate:t,channel:e.channel_count},a=jr(r);this.player.debug.log(this.TAG_NAME,"aacADTSHeader",a,"config",r),this._doDecodeByFmp4(a,Ne,0,!1,0)}this.mp4Box.start()}onError(e){this.player.debug.error(this.TAG_NAME,"mp4Box onError",e)}onSamples(e,t,i){if(e===this.videoTrackId)for(const t of i){const i=t.data,s=t.is_sync,r=1e3*t.cts/t.timescale;t.duration,t.timescale,this.player.updateStats({vbps:i.byteLength,dts:r}),s&&this.calcIframeIntervalTimestamp(r);let a=null;a=this.isHevc?jn(i,s):kn(i,s);let o=this.cryptoPayload(a,s);this._doDecodeByFmp4(o,je,r,s,0),this.mp4Box.releaseUsedSamples(e,t.number)}else if(e===this.audioTrackId){if(this.player._opt.hasAudio)for(const t of i){const i=t.data;this.player.updateStats({abps:i.byteLength});const s=1e3*t.cts/t.timescale;t.duration,t.timescale;const r=new Uint8Array(i.byteLength+2);r.set([175,1],0),r.set(i,2),this._doDecodeByFmp4(r,Ne,s,!1,0),this.mp4Box.releaseUsedSamples(e,t.number)}}else this.player.debug.warn(this.TAG_NAME,"onSamples() trackId error",e)}getSeqHeader(e){const t=this.mp4Box.getTrackById(e.id);for(const e of t.mdia.minf.stbl.stsd.entries)if(e.avcC||e.hvcC){const t=new Vd.DataStream(void 0,0,Vd.DataStream.BIG_ENDIAN);let i=[];e.avcC?(e.avcC.write(t),i=[23,0,0,0,0]):(this.isHevc=!0,e.hvcC.write(t),i=[28,0,0,0,0]);const s=new Uint8Array(t.buffer,8),r=new Uint8Array(i.length+s.length);return r.set(i,0),r.set(s,i.length),r}return null}dispatch(e){let t=new Uint8Array(e);this.transportDescarmber&&(t=this.transportDescarmber.transport(t)),t.buffer.fileStart=this.offset,this.offset+=t.byteLength,this.mp4Box.appendBuffer(t.buffer)}downloadFmp4File(){const e=new Blob(this.tempFmp4List,{type:'video/mp4; codecs="avc1.640028,mp4a.40.2"'}),t=URL.createObjectURL(e),i=document.createElement("a");i.href=t,i.download=aa()+".fmp4",i.click(),URL.revokeObjectURL(t)}getInputByteLength(){let e=0;return this.mp4Box&&(e=this.mp4Box.getAllocatedSampleDataSize()),e}}class Kd extends Dd{constructor(e){super(e),zd(this,"LOG_NAME","Mpeg4Loader"),this.player=e,this.player.debug.log(this.LOG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.LOG_NAME,"destroy")}}function Yd(){for(var e=arguments.length,t=new Array(e),i=0;ie+t.byteLength),0));let r=0;return t.forEach((e=>{s.set(e,r),r+=e.byteLength})),s}const Qd=3,Xd=4,Zd=6,eh=15,th=17,ih=129,sh=135,rh=21,ah=134,oh=27,nh=36;class lh{constructor(){this.slices=[],this.total_length=0,this.expected_length=0,this.random_access_indicator=0}}class dh{constructor(){this.pid=null,this.data=null,this.stream_type=null,this.random_access_indicator=null}}class hh{constructor(){this.pid=null,this.stream_id=null,this.len=null,this.data=null,this.pts=null,this.nearest_pts=null,this.dts=null}}const ch=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];class uh{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&&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,s=e.length-1,r=0,a=0,o=s;for(t=e[r]&&t=6?(s=5,t=new Array(4),o=r-3):(s=2,t=new Array(2),o=r):-1!==n.indexOf("android")?(s=2,t=new Array(2),o=r):(s=5,o=r,t=new Array(4),r>=6?o=r-3:1===a&&(s=2,t=new Array(2),o=r)),t[0]=s<<3,t[0]|=(15&r)>>>1,t[1]=(15&r)<<7,t[1]|=(15&a)<<3,5===s&&(t[1]|=(15&o)>>>1,t[2]=(1&o)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=ch[r],this.sampling_index=r,this.channel_count=a,this.object_type=s,this.original_object_type=i,this.codec_mimetype="mp4a.40."+s,this.original_codec_mimetype="mp4a.40."+i}}class fh extends Dd{constructor(e){super(e),this.player=e,this.TAG_NAME="TsLoaderV2",this.first_parse_=!0,this.tsPacketSize=0,this.syncOffset=0,this.pmt_=null,this.config_=null,this.media_info_=new uh,this.timescale_=90,this.duration_=0,this.pat_={version_number:0,network_pid:0,program_map_pid:{}},this.current_program_=null,this.current_pmt_pid_=-1,this.program_pmt_map_={},this.pes_slice_queues_={},this.section_slice_queues_={},this.video_metadata_={vps:null,sps:null,pps:null,details:null},this.audio_metadata_={codec:null,audio_object_type:null,sampling_freq_index:null,sampling_frequency:null,channel_config:null},this.last_pcr_=null,this.audio_last_sample_pts_=void 0,this.aac_last_incomplete_data_=null,this.has_video_=!1,this.has_audio_=!1,this.video_init_segment_dispatched_=!1,this.audio_init_segment_dispatched_=!1,this.video_metadata_changed_=!1,this.audio_metadata_changed_=!1,this.loas_previous_frame=null,this.video_track_={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this.audio_track_={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._remainingPacketData=null,this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.media_info_=null,this.pes_slice_queues_=null,this.section_slice_queues_=null,this.video_metadata_=null,this.audio_metadata_=null,this.aac_last_incomplete_data_=null,this.video_track_=null,this.audio_track_=null,this._remainingPacketData=null,super.destroy()}probe(e){let t=new Uint8Array(e),i=-1,s=188;if(t.byteLength<=3*s)return{needMoreData:!0};for(;-1===i;){let e=Math.min(1e3,t.byteLength-3*s);for(let r=0;r=4&&(i-=4),{match:!0,consumed:0,ts_packet_size:s,sync_offset:i})}_initPmt(){return{program_number:0,version_number:0,pcr_pid:0,pid_stream_type:{},common_pids:{h264:void 0,h265:void 0,adts_aac:void 0,loas_aac:void 0,opus:void 0,ac3:void 0,eac3:void 0,mp3:void 0},pes_private_data_pids:{},timed_id3_pids:{},synchronous_klv_pids:{},asynchronous_klv_pids:{},scte_35_pids:{},smpte2038_pids:{}}}dispatch(e){let t=new Uint8Array(e);this._remainingPacketData&&(t=Yd(this._remainingPacketData,t),this._remainingPacketData=null);let i=t.buffer;const s=this.parseChunks(i);s?this._remainingPacketData=t.subarray(s):t.length>>6;i[1];let a=(31&i[1])<<8|i[2],o=(48&i[3])>>>4,n=15&i[3],l=!(!this.pmt_||this.pmt_.pcr_pid!==a),d={},h=4;if(2==o||3==o){let e=i[4];if(e>0&&(l||3==o)){if(d.discontinuity_indicator=(128&i[5])>>>7,d.random_access_indicator=(64&i[5])>>>6,d.elementary_stream_priority_indicator=(32&i[5])>>>5,(16&i[5])>>>4){let e=300*(i[6]<<25|i[7]<<17|i[8]<<9|i[9]<<1|i[10]>>>7)+((1&i[10])<<8|i[11]);this.last_pcr_=e}}if(2==o||5+e===188){t+=188,204===this.tsPacketSize&&(t+=16);continue}h=5+e}if(1==o||3==o)if(0===a||a===this.current_pmt_pid_||null!=this.pmt_&&this.pmt_.pid_stream_type[a]===ah){let i=188-h;this.handleSectionSlice(e,t+h,i,{pid:a,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}else if(null!=this.pmt_&&null!=this.pmt_.pid_stream_type[a]){let i=188-h,s=this.pmt_.pid_stream_type[a];a!==this.pmt_.common_pids.h264&&a!==this.pmt_.common_pids.h265&&a!==this.pmt_.common_pids.adts_aac&&a!==this.pmt_.common_pids.loas_aac&&a!==this.pmt_.common_pids.ac3&&a!==this.pmt_.common_pids.eac3&&a!==this.pmt_.common_pids.opus&&a!==this.pmt_.common_pids.mp3&&!0!==this.pmt_.pes_private_data_pids[a]&&!0!==this.pmt_.timed_id3_pids[a]&&!0!==this.pmt_.synchronous_klv_pids[a]&&!0!==this.pmt_.asynchronous_klv_pids[a]||this.handlePESSlice(e,t+h,i,{pid:a,stream_type:s,payload_unit_start_indicator:r,continuity_conunter:n,random_access_indicator:d.random_access_indicator})}t+=188,204===this.tsPacketSize&&(t+=16)}return this.dispatchAudioVideoMediaSegment(),t}handleSectionSlice(e,t,i,s){let r=new Uint8Array(e,t,i),a=this.section_slice_queues_[s.pid];if(s.payload_unit_start_indicator){let o=r[0];if(null!=a&&0!==a.total_length){let r=new Uint8Array(e,t+1,Math.min(i,o));a.slices.push(r),a.total_length+=r.byteLength,a.total_length===a.expected_length?this.emitSectionSlices(a,s):this.clearSlices(a,s)}for(let n=1+o;n=a.expected_length&&this.clearSlices(a,s),n+=l.byteLength}}else if(null!=a&&0!==a.total_length){let r=new Uint8Array(e,t,Math.min(i,a.expected_length-a.total_length));a.slices.push(r),a.total_length+=r.byteLength,a.total_length===a.expected_length?this.emitSectionSlices(a,s):a.total_length>=a.expected_length&&this.clearSlices(a,s)}}handlePESSlice(e,t,i,s){let r=new Uint8Array(e,t,i),a=r[0]<<16|r[1]<<8|r[2];r[3];let o=r[4]<<8|r[5];if(s.payload_unit_start_indicator){if(1!==a)return void this.player.debug.warn(this.TAG_NAME,`handlePESSlice: packet_start_code_prefix should be 1 but with value ${a}`);let e=this.pes_slice_queues_[s.pid];e&&(0===e.expected_length||e.expected_length===e.total_length?this.emitPESSlices(e,s):this.clearSlices(e,s)),this.pes_slice_queues_[s.pid]=new lh,this.pes_slice_queues_[s.pid].random_access_indicator=s.random_access_indicator}if(null==this.pes_slice_queues_[s.pid])return;let n=this.pes_slice_queues_[s.pid];n.slices.push(r),s.payload_unit_start_indicator&&(n.expected_length=0===o?0:o+6),n.total_length+=r.byteLength,n.expected_length>0&&n.expected_length===n.total_length?this.emitPESSlices(n,s):n.expected_length>0&&n.expected_length>>6,n=t[8];2!==o&&3!==o||(i=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,a=3===o?536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2:i);let l,d=9+n;if(0!==r){if(r<3+n)return void this.player.debug.warn(this.TAG_NAME,"Malformed PES: PES_packet_length < 3 + PES_header_data_length");l=r-3-n}else l=t.byteLength-d;let h=t.subarray(d,d+l);switch(e.stream_type){case Qd:case Xd:this.parseMP3Payload(h,i);break;case Zd:this.pmt_.common_pids.opus===e.pid?this.parseOpusPayload(h,i):this.pmt_.common_pids.ac3===e.pid?this.parseAC3Payload(h,i):this.pmt_.common_pids.eac3===e.pid?this.parseEAC3Payload(h,i):this.pmt_.asynchronous_klv_pids[e.pid]?this.parseAsynchronousKLVMetadataPayload(h,e.pid,s):this.pmt_.smpte2038_pids[e.pid]?this.parseSMPTE2038MetadataPayload(h,i,a,e.pid,s):this.parsePESPrivateDataPayload(h,i,a,e.pid,s);break;case eh:this.parseADTSAACPayload(h,i);break;case th:this.parseLOASAACPayload(h,i);break;case ih:this.parseAC3Payload(h,i);break;case sh:this.parseEAC3Payload(h,i);break;case rh:this.pmt_.timed_id3_pids[e.pid]?this.parseTimedID3MetadataPayload(h,i,a,e.pid,s):this.pmt_.synchronous_klv_pids[e.pid]&&this.parseSynchronousKLVMetadataPayload(h,i,a,e.pid,s);break;case oh:this.parseH264Payload(h,i,a,e.random_access_indicator);break;case nh:this.parseH265Payload(h,i,a,e.random_access_indicator)}}else if((188===s||191===s||240===s||241===s||255===s||242===s||248===s)&&e.stream_type===Zd){let i,a=6;i=0!==r?r:t.byteLength-a;let o=t.subarray(a,a+i);this.parsePESPrivateDataPayload(o,void 0,void 0,e.pid,s)}}else this.player.debug.error(this.TAG_NAME,`parsePES: packet_start_code_prefix should be 1 but with value ${i}`)}parsePAT(e){let t=e[0];if(0!==t)return void Log.e(this.TAG,`parsePAT: table_id ${t} is not corresponded to PAT!`);let i=(15&e[1])<<8|e[2];e[3],e[4];let s=(62&e[5])>>>1,r=1&e[5],a=e[6];e[7];let o=null;if(1===r&&0===a)o={version_number:0,network_pid:0,program_pmt_pid:{}},o.version_number=s;else if(o=this.pat_,null==o)return;let n=i-5-4,l=-1,d=-1;for(let t=8;t<8+n;t+=4){let i=e[t]<<8|e[t+1],s=(31&e[t+2])<<8|e[t+3];0===i?o.network_pid=s:(o.program_pmt_pid[i]=s,-1===l&&(l=i),-1===d&&(d=s))}1===r&&0===a&&(null==this.pat_&&this.player.debug.log(this.TAG_NAME,`Parsed first PAT: ${JSON.stringify(o)}`),this.pat_=o,this.current_program_=l,this.current_pmt_pid_=d)}parsePMT(e){let t=e[0];if(2!==t)return void this.player.debug.error(this.TAG_NAME,`parsePMT: table_id ${t} is not corresponded to PMT!`);let i,s=(15&e[1])<<8|e[2],r=e[3]<<8|e[4],a=(62&e[5])>>>1,o=1&e[5],n=e[6];if(e[7],1===o&&0===n)i=this._initPmt(),i.program_number=r,i.version_number=a,this.program_pmt_map_[r]=i;else if(i=this.program_pmt_map_[r],null==i)return;i.pcr_pid=(31&e[8])<<8|e[9];let l=(15&e[10])<<8|e[11],d=12+l,h=s-9-l-4;for(let t=d;t0){for(let s=t+5;s0)for(let s=t+5;s1&&(this.player.debug.warn(this.TAG_NAME,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,a=new Qr(e),o=null,n=s;for(;null!=(o=a.readNextAACFrame());){i=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(o.data.length+2);s.set([175,1],0),s.set(o.data,2);let a={payload:s,length:s.byteLength,pts:t,dts:t,type:Ne};this.audio_track_.samples.push(a),this.audio_track_.length+=s.byteLength,n+=i}a.hasIncompleteData()&&(this.aac_last_incomplete_data_=a.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseLOASAACPayload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;if(this.aac_last_incomplete_data_){let t=new Uint8Array(e.byteLength+this.aac_last_incomplete_data_.byteLength);t.set(this.aac_last_incomplete_data_,0),t.set(e,this.aac_last_incomplete_data_.byteLength),e=t}let i,s;if(null!=t&&(s=t/this.timescale_),"aac"===this.audio_metadata_.codec){if(null==t&&null!=this.audio_last_sample_pts_)i=1024/this.audio_metadata_.sampling_frequency*1e3,s=this.audio_last_sample_pts_+i;else if(null==t)return void this.player.debug.warn(this.TAG_NAME,"AAC: Unknown pts");if(this.aac_last_incomplete_data_&&this.audio_last_sample_pts_){i=1024/this.audio_metadata_.sampling_frequency*1e3;let e=this.audio_last_sample_pts_+i;Math.abs(e-s)>1&&(this.player.debug.warn(this.TAG,`AAC: Detected pts overlapped, expected: ${e}ms, PES pts: ${s}ms`),s=e)}}let r,a=new Xr(e),o=null,n=s;for(;null!=(o=a.readNextAACFrame(La(this.loas_previous_frame)?void 0:this.loas_previous_frame));){this.loas_previous_frame=o,i=1024/o.sampling_frequency*1e3;const e={codec:"aac",data:o};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"aac",audio_object_type:o.audio_object_type,sampling_freq_index:o.sampling_freq_index,sampling_frequency:o.sampling_frequency,channel_config:o.channel_config},this.dispatchAudioInitSegment(e)):this.detectAudioMetadataChange(e)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(e)),r=n;let t=Math.floor(n);const s=new Uint8Array(o.data.length+2);s.set([175,1],0),s.set(o.data,2);let a={payload:s,length:s.byteLength,pts:t,dts:t,type:Ne};this.audio_track_.samples.push(a),this.audio_track_.length+=s.byteLength,n+=i}a.hasIncompleteData()&&(this.aac_last_incomplete_data_=a.getIncompleteData()),r&&(this.audio_last_sample_pts_=r)}parseAC3Payload(e,t){}parseEAC3Payload(e,t){}parseOpusPayload(e,t){}parseMP3Payload(e,t){if(this.has_video_&&!this.video_init_segment_dispatched_)return;let i=[44100,48e3,32e3,0],s=[22050,24e3,16e3,0],r=[11025,12e3,8e3,0],a=e[1]>>>3&3,o=(6&e[1])>>1;e[2];let n=(12&e[2])>>>2,l=3!==(e[3]>>>6&3)?2:1,d=0,h=34;switch(a){case 0:d=r[n];break;case 2:d=s[n];break;case 3:d=i[n]}switch(o){case 1:h=34;break;case 2:h=33;break;case 3:h=32}const c={};c.object_type=h,c.sample_rate=d,c.channel_count=l,c.data=e;const u={codec:"mp3",data:c};0==this.audio_init_segment_dispatched_?(this.audio_metadata_={codec:"mp3",object_type:h,sample_rate:d,channel_count:l},this.dispatchAudioInitSegment(u)):this.detectAudioMetadataChange(u)&&(this.dispatchAudioMediaSegment(),this.dispatchAudioInitSegment(u));let p={payload:e,length:e.byteLength,pts:t/this.timescale_,dts:t/this.timescale_,type:Ne};this.audio_track_.samples.push(p),this.audio_track_.length+=e.byteLength}detectAudioMetadataChange(e){if(e.codec!==this.audio_metadata_.codec)return this.player.debug.log(this.TAG_NAME,`Audio: Audio Codecs changed from ${this.audio_metadata_.codec} to ${e.codec}`),!0;if("aac"===e.codec&&"aac"===this.audio_metadata_.codec){const t=e.data;if(t.audio_object_type!==this.audio_metadata_.audio_object_type)return this.player.debug.log(this.TAG_NAME,`AAC: AudioObjectType changed from ${this.audio_metadata_.audio_object_type} to ${t.audio_object_type}`),!0;if(t.sampling_freq_index!==this.audio_metadata_.sampling_freq_index)return this.player.debug.log(this.TAG_NAME,`AAC: SamplingFrequencyIndex changed from ${this.audio_metadata_.sampling_freq_index} to ${t.sampling_freq_index}`),!0;if(t.channel_config!==this.audio_metadata_.channel_config)return this.player.debug.log(this.TAG_NAME,`AAC: Channel configuration changed from ${this.audio_metadata_.channel_config} to ${t.channel_config}`),!0}else if("ac-3"===e.codec&&"ac-3"===this.audio_metadata_.codec){const t=e.data;if(t.sampling_frequency!==this.audio_metadata_.sampling_frequency)return this.player.debug.log(this.TAG_NAME,`AC3: Sampling Frequency changed from ${this.audio_metadata_.sampling_frequency} to ${t.sampling_frequency}`),!0;if(t.bit_stream_identification!==this.audio_metadata_.bit_stream_identification)return this.player.debug.log(this.TAG_NAME,`AC3: Bit Stream Identification changed from ${this.audio_metadata_.bit_stream_identification} to ${t.bit_stream_identification}`),!0;if(t.bit_stream_mode!==this.audio_metadata_.bit_stream_mode)return this.player.debug.log(this.TAG_NAME,`AC3: BitStream Mode changed from ${this.audio_metadata_.bit_stream_mode} to ${t.bit_stream_mode}`),!0;if(t.channel_mode!==this.audio_metadata_.channel_mode)return this.player.debug.log(this.TAG_NAME,`AC3: Channel Mode changed from ${this.audio_metadata_.channel_mode} to ${t.channel_mode}`),!0;if(t.low_frequency_effects_channel_on!==this.audio_metadata_.low_frequency_effects_channel_on)return this.player.debug.log(this.TAG_NAME,`AC3: Low Frequency Effects Channel On changed from ${this.audio_metadata_.low_frequency_effects_channel_on} to ${t.low_frequency_effects_channel_on}`),!0}else if("opus"===e.codec&&"opus"===this.audio_metadata_.codec){const t=e.meta;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debug.log(this.TAG_NAME,`Opus: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debug.log(this.TAG_NAME,`Opus: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}else if("mp3"===e.codec&&"mp3"===this.audio_metadata_.codec){const t=e.data;if(t.object_type!==this.audio_metadata_.object_type)return this.player.debug.log(this.TAG_NAME,`MP3: AudioObjectType changed from ${this.audio_metadata_.object_type} to ${t.object_type}`),!0;if(t.sample_rate!==this.audio_metadata_.sample_rate)return this.player.debug.log(this.TAG_NAME,`MP3: SamplingFrequencyIndex changed from ${this.audio_metadata_.sample_rate} to ${t.sample_rate}`),!0;if(t.channel_count!==this.audio_metadata_.channel_count)return this.player.debug.log(this.TAG_NAME,`MP3: Channel count changed from ${this.audio_metadata_.channel_count} to ${t.channel_count}`),!0}return!1}dispatchAudioInitSegment(e){let t={type:"audio"};t.id=this.audio_track_.id,t.timescale=1e3,t.duration=this.duration_;let i="";if("aac"===this.audio_metadata_.codec){let s="aac"===e.codec?e.data:null,r=new ph(s);t.audioSampleRate=r.sampling_rate,t.audioSampleRateIndex=r.sampling_index,t.channelCount=r.channel_count,t.codec=r.codec_mimetype,t.originalCodec=r.original_codec_mimetype,t.config=r.config,t.refSampleDuration=1024/t.audioSampleRate*t.timescale,i=Et;const a=jr({profile:this.player._opt.mseDecodeAudio?r.object_type:r.original_object_type,sampleRate:t.audioSampleRateIndex,channel:t.channelCount});console.error("aacADTSHeader",`profile: ${r.object_type}, sampleRate: ${t.audioSampleRateIndex}, channel: ${t.channelCount}`),this._doDecodeByTs(a,Ne,0,!1,0)}else"ac-3"===this.audio_metadata_.codec||"ec-3"===this.audio_metadata_.codec||"opus"===this.audio_metadata_.codec||"mp3"===this.audio_metadata_.codec&&(t.audioSampleRate=this.audio_metadata_.sample_rate,t.channelCount=this.audio_metadata_.channel_count,t.codec="mp3",t.originalCodec="mp3",t.config=void 0,i=Tt);0==this.audio_init_segment_dispatched_&&this.player.debug.log(this.TAG_NAME,`Generated first AudioSpecificConfig for mimeType: ${t.codec}`),this.audio_init_segment_dispatched_=!0,this.video_metadata_changed_=!1;let s=this.media_info_;s.hasAudio=!0,s.audioCodec=t.originalCodec,s.audioSampleRate=t.audioSampleRate,s.audioChannelCount=t.channelCount,s.hasVideo&&s.videoCodec?s.mimeType=`video/mp2t; codecs="${s.videoCodec},${s.audioCodec}"`:s.mimeType=`video/mp2t; codecs="${s.audioCodec}"`,i&&this.player.audio.updateAudioInfo({encTypeCode:i,channels:t.channelCount,sampleRate:t.audioSampleRate})}dispatchPESPrivateDataDescriptor(e,t,i){}parsePESPrivateDataPayload(e,t,i,s,r){let a=new hh;if(a.pid=s,a.stream_id=r,a.len=e.byteLength,a.data=e,null!=t){let e=Math.floor(t/this.timescale_);a.pts=e}else a.nearest_pts=this.getNearestTimestampMilliseconds();if(null!=i){let e=Math.floor(i/this.timescale_);a.dts=e}}parseTimedID3MetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`Timed ID3 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseSynchronousKLVMetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`Synchronous KLV Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}parseAsynchronousKLVMetadataPayload(e,t,i){this.player.debug.log(this.TAG_NAME,`Asynchronous KLV Metadata: pid=${t}, stream_id=${i}`)}parseSMPTE2038MetadataPayload(e,t,i,s,r){this.player.debug.log(this.TAG_NAME,`SMPTE 2038 Metadata: pid=${s}, pts=${t}, dts=${i}, stream_id=${r}`)}getNearestTimestampMilliseconds(){if(null!=this.audio_last_sample_pts_)return Math.floor(this.audio_last_sample_pts_);if(null!=this.last_pcr_){return Math.floor(this.last_pcr_/300/this.timescale_)}}_preDoDecode(){const e=this.video_track_,t=this.audio_track_;let i=e.samples;t.samples.length>0&&(i=e.samples.concat(t.samples),i=i.sort(((e,t)=>e.dts-t.dts))),i.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,e.type===je?this._doDecodeVideo({...e,payload:t}):e.type===Ne&&this._doDecodeAudio({...e,payload:t})})),e.samples=[],e.length=0,t.samples=[],t.length=0}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?jn(t,e.isIFrame):kn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength}),e.isIFrame&&this.calcIframeIntervalTimestamp(e.dts);let s=this.cryptoPayload(i,e.isIFrame);this._doDecodeByTs(s,je,e.dts,e.isIFrame,e.cts)}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=t;uo(this.player._opt.m7sCryptoAudio)&&(i=this.cryptoPayloadAudio(t)),this._doDecodeByTs(i,Ne,e.dts,!1,0)}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}class mh{constructor(e){return new(mh.getLoaderFactory(e))(e)}static getLoaderFactory(e){const t=e._opt.demuxType;return t===k?Fd:t===T||e.isWebrtcH265()?Ud:t===R?Od:t===D?Gd:t===L?qd:t===P?Kd:t===I?fh:Hd}}class gh extends So{constructor(e){super(),this.player=e,this.TAG_NAME="Webcodecs",this.hasInit=!1,this.isDecodeFirstIIframe=!!po(e._opt.checkFirstIFrame),this.isInitInfo=!1,this.prevTimestamp=null,this.decodeDiffTimestamp=null,this.prevDts=null,this.decoder=null,this.isWidthOrHeightChanged=!1,this.initDecoder(),e.debug.log(this.TAG_NAME,"init")}destroy(){this.decoder&&(po(this.isDecodeStateClosed())&&this.decoder.close(),this.decoder=null),this.prevTimestamp=null,this.decodeDiffTimestamp=null,this.prevDts=null,this.hasInit=!1,this.isInitInfo=!1,this.isDecodeFirstIIframe=!1,this.isWidthOrHeightChanged=!1,this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}initDecoder(){const e=this;this.decoder=new VideoDecoder({output(t){e.handleDecode(t)},error(t){e.handleError(t)}})}handleDecode(e){this.isInitInfo||(this.player.video.updateVideoInfo({width:e.codedWidth,height:e.codedHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0),this.player.isPlayer()?(this.player.updateStats({dfps:!0}),this.player._times.videoStart||(this.player._times.videoStart=aa(),this.player.handlePlayToRenderTimes()),this.player.video.render({videoFrame:e,ts:e.timestamp}),this.player.handleRender()):this.player.isPlayback()&&(this.player.updateStats({dfps:!0}),po(this.player.playbackPause)?(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this.player.playback.isUseFpsRender?this.player.video.pushData({videoFrame:e,ts:e.timestamp}):this.player.video.render$2({videoFrame:e,ts:e.timestamp})):po(this.player.playback.isPlaybackPauseClearCache)&&this.player.playback.isCacheBeforeDecodeForFpsRender&&this.player.playback.isUseFpsRender&&this.player.video.pushData({videoFrame:e,ts:e.timestamp}))}handleError(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder handleError:",e.code,e);const t=e.toString();-1!==t.indexOf(ls)?this.player.emitError(ct.webcodecsUnsupportedConfigurationError,t):-1!==t.indexOf(ds)||-1!==t.indexOf(hs)||-1!==t.indexOf(cs)?this.player.emitError(ct.webcodecsDecodeError,t):-1!==t.indexOf(us)&&this.player.emitError(ct.webcodecsH265NotSupport)}decodeVideo(e,t,i,s){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(this.isDecodeStateClosed())return void this.player.debug.warn(this.TAG_NAME,"VideoDecoder isDecodeStateClosed true");if(i&&0===e[1]){const t=15&e[0];let i={};if(t===vt){i=En(e.slice(5))}else t===_t&&(i=Un(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(ct.wcsWidthOrHeightChange))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(co(e))return void this.player.debug.warn(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let s=!1,r=(new Date).getTime();this.prevTimestamp||(this.prevTimestamp=r,s=!0);const a=r-this.prevTimestamp;this.decodeDiffTimestamp=a,a>500&&!s&&this.player.isPlayer()&&this.player.debug.warn(this.TAG_NAME,"decodeVideo diff time is ",a);const o=e.slice(5),n=new EncodedVideoChunk({data:o,timestamp:t,type:i?li:di});this.player.emit(nt.timeUpdate,t);try{this.decoder.decode(n)}catch(e){this.player.debug.error(this.TAG_NAME,"VideoDecoder",e);const t=e.toString();(-1!==t.indexOf(os)||-1!==t.indexOf(ns))&&this.player.emitError(ct.webcodecsDecodeError)}this.prevTimestamp=(new Date).getTime()}else this.player.debug.log(this.TAG_NAME,"VideoDecoder first frame is not iFrame");else if(i&&e[1]===vs){const t=15&e[0];if(this.player.video.updateVideoInfo({encTypeCode:t}),t===_t&&!Ca()){const e=ga();return this.player.debug.warn(this.TAG_NAME,"WebcodecsDecoder not support hevc decode",e.type,e.version),void this.player.emitError(ct.webcodecsH265NotSupport)}this.player._times.decodeStart||(this.player._times.decodeStart=aa());let i=null,s=null;const r=e.slice(5);if(t===vt?(s=En(r),i={codec:s.codec,description:r}):t===_t&&(s=Fn(r),i={codec:s.codec,description:r}),!i||i&&!i.codec)return this.player.debug.warn(this.TAG_NAME,"decodeVideo and webcodecs configure is",JSON.stringify(i)),void this.player.emitError(ct.webcodecsDecodeConfigureError);s&&s.codecWidth&&s.codecHeight&&(i.codedHeight=s.codecHeight,i.codedWidth=s.codecWidth),this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,t),this.player.debug.log(this.TAG_NAME,`decoder.configure() and codec is ${i.codec}`);try{this.decoder.configure(i),this.hasInit=!0}catch(e){this.player.debug.log(this.TAG_NAME,"configure error",e.code,e);-1!==e.toString().indexOf(us)?this.player.emitError(ct.webcodecsH265NotSupport):this.player.emitError(ct.webcodecsDecodeConfigureError)}}}getDecodeDiffTimes(){return this.decodeDiffTimestamp}isDecodeStateClosed(){return"closed"===this.decoder.state}isDecodeStateConfigured(){return"configured"===this.decoder.state}isDecodeStateUnConfigured(){return"unconfigured"===this.decoder.state}}const yh={play:"播放",pause:"暂停",audio:"",mute:"",screenshot:"截图",loading:"",fullscreen:"全屏",fullscreenExit:"退出全屏",record:"录制",recordStop:"停止录制",narrow:"缩小",expand:"放大",ptz:"操作盘",ptzActive:"操作盘激活",zoom:"电子放大",zoomStop:"关闭电子放大",close:"关闭",performance:"性能面板",performanceActive:"性能面板激活",face:"人脸识别",faceActive:"人脸识别激活",object:"物品识别",objectActive:"物品识别激活",occlusion:"遮挡物检查",occlusionActive:"遮挡物检查激活",logSave:"保存日志"};var Ah=Object.keys(yh).reduce(((e,t)=>(e[t]=`\n \n ${yh[t]?`${yh[t]}`:""}\n`,e)),{});function bh(e,t){let i=!1;return e.forEach((e=>{i||e.startTimestamp<=t&&e.endTimestamp>t&&(i=!0)})),i}function vh(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0;const s=e.length,r=t.length,a=Math.max(s,r),o=2e3,n=Math.ceil(a/o);let l=0,d=0;function h(){let r="",a="";for(let i=0;i\n ${i.title}\n \n `);const o=t[d];o&&(a+=`\n

\n `),d+=1}r&&i.$playbackTimeListOne.insertAdjacentHTML("beforeend",r),a&&i.$playbackTimeListSecond.insertAdjacentHTML("beforeend",a),l+=1,l0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){const r=s%60==0;let a=!1;i&&(a=bh(e,ja(i,s))),t.push({title:Oa(s),timestamp:s,dataType:"min",hasRecord:a,isStart:r})}return t}(e);vh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0})}return e}(),t)}function Sh(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<1440;s++){let r=60*s,a=r%1800==0,o=!1;i&&(o=bh(e,za(i,r))),t.push({title:Na(r),timestamp:r,dataType:"second",hasRecord:o,isStart:a});let n=60*s+30;a=n%1800==0,i&&(o=bh(e,za(i,n))),t.push({title:Na(n),timestamp:n,dataType:"second",hasRecord:o,isStart:a})}return t}(e);vh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00",s=t+":30";t<10&&(i="0"+i,s="0"+s),e.push({title:i,hour:t,min:0,second:0}),e.push({title:s,hour:t,min:30,second:0})}return e}(),t)}function wh(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<144;s++)for(let r=0;r<60;r++){let a=10*r+600*s,o=a%600==0,n=!1;i&&(n=bh(e,za(i,a))),t.push({title:Na(a),timestamp:a,dataType:"second",isStart:o,hasRecord:n})}return t}(e);vh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0});for(let s=1;s<6;s++){let r=s+"0";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0})}}return e}(),t)}function Eh(e,t){const i=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=[];const i=(e[0]||{}).startTimestamp;for(let s=0;s<288;s++)for(let r=0;r<60;r++){let a=5*r+300*s,o=a%300==0,n=!1;i&&(n=bh(e,za(i,a))),t.push({title:Na(a),timestamp:a,dataType:"second",isStart:o,hasRecord:n})}return t}(e);vh(i,function(){let e=[];for(let t=0;t<24;t++){let i=t+":00";t<10&&(i="0"+i),e.push({title:i,hour:t,min:0,second:0}),e.push({title:i.replace(":00",":05"),hour:t,min:5,second:0});for(let s=1;s<6;s++){let r=s+"0",a=s+"5";e.push({title:i.replace(":00",":"+r),hour:t,min:10*s,second:0}),e.push({title:i.replace(":00",":"+a),hour:t,min:10*s+5,second:0})}}return e}(),t)}function Th(e){const t=Math.floor(e/3600),i=Math.floor((e-3600*t)/60),s=Math.floor(e-3600*t-60*i);return(t>0?[t,i,s]:[i,s]).map((e=>e<10?`0${e}`:String(e))).join(":")}function kh(e,t,i){const s=e.$playbackProgress,{left:r}=s.getBoundingClientRect(),a=oa((ua()?i.touches[0].clientX:i.pageX)-r,0,s.clientWidth),o=parseInt(a/s.clientWidth*t,10);return{second:o,time:Th(o),width:a,percentage:oa(a/s.clientWidth,0,1)}}function Ch(e,t){return e.classList.add(t)}function xh(e,t){return t instanceof Element?e.appendChild(t):e.insertAdjacentHTML("beforeend",String(t)),e.lastElementChild||e.lastChild}function Rh(e,t,i){return e&&e.style&&Ba(t)&&(e.style[t]=i),e}function Dh(e,t){return e.composedPath&&e.composedPath().indexOf(t)>-1}function Lh(e){let t=!1;return e&&e.parentNode&&(e.parentNode.removeChild(e),t=!0),t}var Ph=(e,t)=>{const{events:{proxy:i}}=e,s=document.createElement("object");s.setAttribute("aria-hidden","true"),s.setAttribute("tabindex",-1),s.type="text/html",s.data="about:blank",na(s,{display:"block",position:"absolute",top:"0",left:"0",height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:"-1"});let r=e.width,a=e.height;const o=wa((()=>{e.width===r&&e.height===a||(r=e.width,a=e.height,e.emit(nt.resize),c())}),500);i(s,"load",(()=>{i(s.contentDocument.defaultView,"resize",(()=>{o()}))})),e.$container.appendChild(s),e.on(nt.destroy,(()=>{e.$container.removeChild(s)})),e.on(nt.volumechange,(()=>{!function(e){if(0===e)na(t.$volumeOn,"display","none"),na(t.$volumeOff,"display","flex"),na(t.$volumeHandle,"top","48px");else if(t.$volumeHandle&&t.$volumePanel){const i=la(t.$volumePanel,"height")||60,s=la(t.$volumeHandle,"height"),r=i-(i-s)*e-s;na(t.$volumeHandle,"top",`${r}px`),na(t.$volumeOn,"display","flex"),na(t.$volumeOff,"display","none")}t.$volumePanelText&&(t.$volumePanelText.innerHTML=parseInt(100*e))}(e.volume)})),e.on(nt.loading,(i=>{na(t.$loading,"display",i?"flex":"none"),(po(e._opt.backgroundLoadingShow)&&uo(i)||po(i))&&na(t.$poster,"display","none"),i&&(na(t.$playBig,"display","none"),na(t.$tipsMessage,"display","none")),i||e._opt.extendDomConfig.showAfterLoading&&t.$extendDom&&na(t.$extendDom,"display","block"),i||e.getRenderType()===$&&po(e._opt.useMSE)&&n()})),e.on(nt.removeLoadingBgImage,(()=>{n()}));const n=()=>{t.$loadingBgImage&&t.$loadingBg&&t.$loadingBgImage.src&&(e.debug&&e.debug.log("Control","remove loading bg image"),t.$loadingBgImage.width=0,t.$loadingBgImage.height=0,t.$loadingBgImage.src="",na(t.$loadingBg,"display","none"))},l=t=>{e.fullscreen?qa(t)===e.$container&&d():d()},d=i=>{let s=Pa(i)?i:e.fullscreen;na(t.$fullscreenExit,"display",s?"flex":"none"),na(t.$fullscreen,"display",s?"none":"flex")},h=()=>e._opt.playType===_&&e._opt.playbackConfig.showControl,c=i=>{ua()&&t.$controls&&e._opt.useWebFullScreen&&setTimeout((()=>{if(e.fullscreen){const i=h()?Yt:Kt;let s=e.height/2-e.width+i/2,r=e.height/2-i/2;if(t.$controls.style.transform=`translateX(${-s}px) translateY(-${r}px) rotate(-90deg)`,t.$zoomControls){const i=156,s=30,r=e.width/2+i/2-s/2;t.$zoomControls.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}if(t.$recording){const i=101,s=20,r=e.width/2+i/2-s/2;t.$recording.style.transform=`translateX(${-r}px) translateY(${e.height/2}px) rotate(-90deg)`}}else t.$controls.style.transform="translateX(0) translateY(0) rotate(0)",t.$zoomControls&&(t.$zoomControls.style.transform="translateX(-50%) translateY(0) rotate(0)"),t.$recording&&(t.$recording.style.transform="translateX(-50%) translateY(0) rotate(0)");i&&i()}),10)};try{Mr.on("change",l),e.events.destroys.push((()=>{Mr.off("change",l)}))}catch(e){}e.on(nt.webFullscreen,(e=>{ua()&&(d(e),c((()=>{p()})))})),e.on(nt.recording,(()=>{e.playing&&(na(t.$record,"display",e.recording?"none":"flex"),na(t.$recordStop,"display",e.recording?"flex":"none"),(e._opt.hasControl||e._opt.isShowRecordingUI)&&(na(t.$recording,"display",e.recording?"flex":"none"),po(e.recording)&&t.$recordingTime&&(t.$recordingTime.innerHTML=Fa(0))))})),e.on(nt.recordingTimestamp,(e=>{t.$recordingTime&&(t.$recordingTime.innerHTML=Fa(e))})),e.on(nt.zooming,(()=>{e.playing&&(na(t.$zoom,"display",e.zooming?"none":"flex"),na(t.$zoomStop,"display",e.zooming?"flex":"none"),(e._opt.hasControl||e._opt.isShowZoomingUI)&&na(t.$zoomControls,"display",e.zooming?"flex":"none"))})),e.on(nt.playing,(e=>{u(e)}));const u=i=>{i||e.isPlayFailedAndPaused&&po(e._opt.playFailedAndPausedShowPlayBtn)?(na(t.$play,"display","none"),na(t.$playBig,"display","none")):(na(t.$play,"display","flex"),na(t.$playBig,"display","block")),na(t.$pause,"display",i?"flex":"none"),na(t.$screenshot,"display",i?"flex":"none"),na(t.$record,"display",i?"flex":"none"),na(t.$qualityMenu,"display",i?"flex":"none"),na(t.$volume,"display",i?"flex":"none"),na(t.$ptz,"display",i?"flex":"none"),na(t.$zoom,"display",i?"flex":"none"),na(t.$scaleMenu,"display",i?"flex":"none"),na(t.$faceDetect,"display",i?"flex":"none"),na(t.$objectDetect,"display",i?"flex":"none"),na(t.$occlusionDetect,"display",i?"flex":"none"),na(t.$controlHtml,"display",i?"flex":"none"),e.isPlayback()&&na(t.$speedMenu,"display",i?"flex":"none"),d(),t.extendBtnList.forEach((e=>{e.$iconWrap&&na(e.$iconWrap,"display",i?"flex":"none"),e.$activeIconWrap&&na(e.$activeIconWrap,"display","none")})),e._opt.showPerformance?na(t.$performanceActive,"display",i?"flex":"none"):(na(t.$performance,"display",i?"flex":"none"),na(t.$performanceActive,"display","none")),na(t.$poster,"display","none"),na(t.$ptzActive,"display","none"),na(t.$recordStop,"display","none"),na(t.$zoomStop,"display","none"),na(t.$faceDetectActive,"display","none"),na(t.$objectDetectActive,"display","none"),i||(t.$speed&&(t.$speed.innerHTML=function(e){if(null==e||""===e)return"0 KB/s";let t=parseFloat(e);return t=t.toFixed(2),t+"KB/s"}("")),na(t.$zoomControls,"display","none"),na(t.$recording,"display","none"),t.$ptzControl&&t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")),p(),i&&f()};e.on(nt.playbackPause,(e=>{u(!e)})),e.on(nt.kBps,(i=>{const s=function(e){if(null==e||""===e||0===parseFloat(e)||"NaN"===e)return"0 KB/s";const t=["KB/s","MB/s","GB/s","TB/s","PB/s","EB/s","ZB/s","YB/s"];let i=0;const s=parseFloat(e);i=Math.floor(Math.log(s)/Math.log(1024));let r=s/Math.pow(1024,i);return r=r.toFixed(2),r+(t[i]||t[0])}(i);t.kbpsShow=s,e._opt.showBandwidth&&(t.$speed&&(t.$speed.innerHTML=s),p())}));const p=()=>{if(h()&&e._opt.playbackConfig.controlType===Q.normal){let i=t.controlsInnerRect.width-t.controlsLeftRect.width-t.controlsRightRect.width-t.controlsPlaybackBtnsRect.width;ua()&&e.webFullscreen&&(i=t.controlsInnerRect.height-t.controlsLeftRect.height-t.controlsRightRect.height-t.controlsPlaybackBtnsRect.height),t.$playbackTimeInner.style.width=i+"px"}},f=()=>{if(!h()||e._opt.playbackConfig.controlType!==Q.normal)return;const i=t.$playbackCurrentTime.style.left;let s=parseInt(i,10);const r=t.controlsPlaybackTimeInner.width;s=s-r/2>0?parseInt(s-r/2,10):0,t.$playbackTimeInner.scrollLeft=s};if(h()){const i=()=>{if(h()){let i=0;const s=e.playback&&e.playback.playingTimestamp;if(s){const r=new Date(s),a=r.getHours(),o=r.getMinutes(),n=r.getSeconds();e.playback.is60Min?i=60*a+o:e.playback.is30Min?i=2*(60*a+o)+parseInt(n/30,10):e.playback.is10Min?i=6*(60*a+o)+parseInt(n/10,10):e.playback.is5Min?i=12*(60*a+o)+parseInt(n/5,10):e.playback.is1Min&&(i=60*(60*a+o)+parseInt(n,10)),t.$playbackCurrentTime.style.left=i+"px"}}},s=e=>{t.$playbackNarrow.classList.remove("disabled"),t.$playbackExpand.classList.remove("disabled"),e===Si&&t.$playbackNarrow.classList.add("disabled"),e===Ti&&t.$playbackExpand.classList.add("disabled")};e.on(nt.playbackTime,(s=>{if(e._opt.playbackConfig.controlType===Q.normal)t.$playbackCurrentTimeText&&(t.$playbackCurrentTimeText.innerText=ba(s,"{h}:{i}:{s}")),i();else if(e._opt.playbackConfig.controlType===Q.simple){const i=(r=s,a=e.playback.totalDuration,oa(r/a,0,1));t.$playbackProgressPlayed.style.width=100*i+"%",t.$playbackProgressIndicator.style.left=`calc(${100*i}% - 7px)`,t.$playbackProgressTime.innerText=`${Th(s)} / ${Th(e.playback.totalDuration)}`}var r,a})),e.on(nt.playbackPrecision,((r,a)=>{h()&&e._opt.playbackConfig.controlType===Q.normal&&(t.$playbackTimeScroll.classList.remove(ki.oneHour,ki.halfHour,ki.fiveMin,ki.tenMin),t.$playbackTimeScroll.classList.add(ki[r]),t.rafId&&(window.cancelAnimationFrame(t.rafId),t.rafId=null),t.changePercisitionInterval&&(clearTimeout(t.changePercisitionInterval),t.changePercisitionInterval=null),t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",t.changePercisitionInterval=setTimeout((()=>{switch(t.$playbackTimeListOne.innerHTML="",t.$playbackTimeListSecond.innerHTML="",r){case Si:_h(a,t);break;case wi:Sh(a,t);break;case Ei:wh(a,t);break;case Ti:Eh(a,t)}i(),e._opt.playbackConfig.showPrecisionBtn&&s(r),f()}),16))})),e.on(nt.resize,(()=>{p()})),e.on(nt.playbackTimeScroll,(()=>{f()})),p()}if(e._opt.operateBtns.quality&&e._opt.qualityConfig.length>0){e.on(nt.streamQualityChange,(e=>{i(e)}));const i=e=>{t.$qualityText.innerText=e,t.$qualityMenuItems.forEach((t=>{const i=t.dataset.quality;t.classList.remove("jb-pro-quality-menu-item-active"),i===e&&t.classList.add("jb-pro-quality-menu-item-active")}))};(()=>{const i=e._opt.qualityConfig||[];let s="";i.forEach((e=>{s+=`\n
${e}
\n `})),s&&(t.$qualityMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$qualityMenuItems",{value:e.$container.querySelectorAll(".jb-pro-quality-menu-item")}))})(),e.streamQuality&&i(e.streamQuality)}if(e._opt.operateBtns.scale&&e._opt.scaleConfig.length>0){e.on(nt.viewResizeChange,(e=>{i(e)}));const i=i=>{const s=e._opt.scaleConfig[i];t.$scaleText.innerText=s,t.$scaleMenuItems.forEach((e=>{const t=e.dataset.scale;e.classList.remove("jb-pro-scale-menu-item-active"),_a(t)===_a(i)&&e.classList.add("jb-pro-scale-menu-item-active")}))};(()=>{const i=e._opt.scaleConfig||[];let s="";i.forEach(((e,t)=>{s+=`\n
${e}
\n `})),s&&(t.$scaleMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$scaleMenuItems",{value:e.$container.querySelectorAll(".jb-pro-scale-menu-item")}))})(),i(e.scaleType)}if(e.isPlayback()&&e._opt.playbackConfig.showRateBtn&&e._opt.playbackConfig.rateConfig.length>0){e.on(nt.playbackRateChange,(e=>{i(e)}));const i=i=>{const s=e._opt.playbackConfig.rateConfig.find((e=>_a(e.value)===_a(i)));s&&(t.$speedText.innerText=s.label,t.$speedMenuItems.forEach((e=>{const t=e.dataset.speed;e.classList.remove("jb-pro-speed-menu-item-active"),_a(t)===_a(i)&&e.classList.add("jb-pro-speed-menu-item-active")})))};(()=>{const i=e._opt.playbackConfig.rateConfig;let s="";i.forEach(((e,t)=>{s+=`\n
${e.label}
\n `})),s&&(t.$speedMenuList.insertAdjacentHTML("beforeend",s),Object.defineProperty(t,"$speedMenuItems",{value:e.$container.querySelectorAll(".jb-pro-speed-menu-item")}))})();const s=e.playback?e.playback.playbackRate:1;i(s)}e.on(nt.stats,(function(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e._opt.showPerformance){na(t.$performancePanel,"display","block"),t.$performancePanel.innerHTML="";const s=ca,r=go(),a=e.getCpuLevel(),o=Ba(a)&&-1!==a?`${lr[a]}`:"",n=e.video&&e.video.videoInfo||{},l=e.audio&&e.audio.audioInfo||{},d=e._times||{},h=e.getRenderType(),c=e.getCanvasRenderType(),u=e.getDecodeType(),p=e.getDemuxType(),f=e.getStreamType(),m=e.getAudioEngineType();let g=e.getRecordingDuration(),y=e.getRecordingByteLength();const A=e.isAudioPlaybackRateSpeed(),b=e.videoIframeIntervalTs;g=Fa(g),y=Ea(y);const v=e.isPlayback()?"录播":"直播";let _=i.isDropping;const S=e._opt.useMSE&&e._opt.mseDecodeAudio,w=e.control?e.control.kbpsShow:"0 KB/s",E=e.getVideoPlaybackQuality(),T=`\n
\n 版本 ${s}\n
\n ${e._opt.isMulti?`\n
\n UUid ${e._opt.debugUuid}\n
\n `:""}\n ${e.isInMulti()?`\n
\n 窗口下标 ${e._opt.multiIndex}\n
\n `:""}\n ${r?`\n
\n 内存大小限制 ${Ea(r.jsHeapSizeLimit)}\n
\n
\n 可使用的内存 ${Ea(r.totalJSHeapSize)}\n
\n
\n 已使用的内存 ${Ea(r.usedJSHeapSize)}\n
\n `:""}\n ${o?`\n
\n CPU压力情况 ${o}\n
\n `:""}\n\n ${r&&r.usedJSHeapSize>r.totalJSHeapSize?'\n
\n 可能内存泄漏 是}\n
\n ':""}\n
\n 播放模式 ${v}\n
\n ${e.isPlayback()?`\n
\n 播放倍率 ${e.playback.rate}倍\n
\n
\n 播放模式 ${e.playback.isUseFpsRender?"固定FPS":"动态FPS"}\n
\n ${e.playback.isUseFpsRender?`\n
\n 固定FPS ${e.video.getStreamFps()}\n
\n `:""}\n `:""}\n
\n 解封装模式 ${M[p]}\n
\n
\n 解码模式 ${u}\n
\n
\n 渲染组件 ${h}\n
\n ${h===$?`\n
\n 渲染引擎 ${c}\n
\n `:""}\n
\n 网络请求组件 ${f}\n
\n
\n 视频格式 ${n.encType||"-"}\n
\n
\n 视频(宽x高) ${n.width||"-"}x${n.height||"-"}\n
\n ${e.isPlayer()?`\n
\n 视频GOP(ms) ${b||"-"}\n
\n `:""}\n
\n 音频格式 ${kt[l.encType]||"-"}\n
\n
\n 音频引擎 ${m||"-"}\n
\n
\n 音频通道 ${l.channels||"-"}\n
\n
\n 音频采样率 ${l.sampleRate||"-"}\n
\n ${e.isPlayer()?`\n
\n 播放器初始化(ms) ${d.playTimestamp}\n
\n
\n 开始请求地址(ms) ${d.streamTimestamp}\n
\n
\n 请求响应(ms) ${d.streamResponseTimestamp}\n
\n
\n 解封装(ms) ${d.demuxTimestamp}\n
\n
\n 解码(ms) ${d.decodeTimestamp}\n
\n
\n 页面开始渲染(ms) ${d.videoTimestamp}\n
\n
\n 初始化到页面渲染(ms) ${d.allTimestamp}\n
\n ${e.recording?`\n
\n 视频录制时间 ${g}\n
\n
\n 视频录制大小 ${y}\n
\n `:""}\n `:""}\n
\n 音频码率(bit) ${i.abps}\n
\n
\n 视频码率(bit) ${i.vbps}\n
\n
\n 视频帧率(fps) ${i.fps}\n
\n
\n 视频峰值帧率(fps) ${i.maxFps}\n
\n
\n 解码帧率(fps) ${i.dfps}\n
\n
\n 音频缓冲帧 ${i.audioBuffer}\n
\n
\n 音频缓冲时长(ms) ${i.audioBufferDelayTs}\n
\n ${e.isPlayer()?`\n
\n 视频待解码帧 ${i.demuxBuffer}\n
\n `:`\n
\n 缓存时长(ms) ${i.playbackCacheDataDuration}\n
\n
\n 视频待渲染帧 ${i.playbackVideoBuffer}\n
\n
\n 视频待解码帧 ${i.demuxBuffer}\n
\n
\n 音频待解码帧 ${i.audioDemuxBuffer}\n
\n `}\n
\n 待解封装数据(byte) ${i.streamBuffer}\n
\n ${e._opt.useMSE?`\n
\n MSE缓冲时长(ms) ${i.mseDelay}\n
\n
\n MSE待解码帧 ${i.msePendingBuffer}\n
\n
\n MSE缓存时长(s) ${i.mseStore}\n
\n
\n MSE解码间隔(ms) ${i.mseDecodeDiffTimes}\n
\n
\n MSE解码时间(ms) ${i.mseTs}\n
\n
\n MSE播放模式 ${i.mseDecodePlaybackRate>1?"加速":"正常"}\n
\n `:""}\n ${e._opt.useWCS?`\n
\n WCS解码间隔(ms) ${i.wcsDecodeDiffTimes}\n
\n `:""}\n ${e.isOldHls()?`
\n HLS缓冲时长(ms) ${i.hlsDelay}\n
\n `:""}\n ${e.isUseHls265()?`
\n HLS缓冲时长(ms) ${i.hlsDelay}\n
\n
\n HLS待解码帧 ${i.hlsDemuxLength}\n
\n
\n HLS待解码视频帧 ${i.hlsDemuxVideoLength}\n
\n
\n HLS待解码音频帧 ${i.hlsDemuxAudioLength}\n
\n `:""}\n ${e.isPlayer()&&E?`\n
\n Video已渲染帧 ${E.renderedVideoFrames}\n
\n
\n Video已丢弃帧 ${E.droppedVideoFrames}\n
\n `:""}\n ${e.isPlayer()?`\n
\n 网络延迟(ms) ${i.netBuf}\n
\n
\n 缓冲时长(ms) ${i.buf}\n
\n
\n 最新缓冲时长(ms) ${i.pushLatestDelay}\n
\n `:""}\n ${e._opt.useMSE||e.isWebrtcH264()||e.isAliyunRtc()?`\n
\n video显示时间(s) ${i.videoCurrentTime}\n
\n
\n video间隔时间(s) ${i.videoCurrentTimeDiff}\n
\n
\n videoBuffer缓存时间(ms) ${i.mseVideoBufferDelayTime}\n
\n `:""}\n
\n 视频显示时间(ms) ${i.currentPts||i.ts}\n
\n ${e._opt.hasAudio&&e.isAudioNotMute()&&po(S)?`\n
\n 音频显示时间(ms) ${i.audioTs}\n
\n ${e._opt.hasVideo?`\n
\n 音视频同步时间戳(ms) ${i.audioSyncVideo}\n
\n `:""}\n
\n 音频播放模式 ${A?"加速":"正常"}\n
\n `:""}\n
\n 视频解码时间(ms) ${i.dts}\n
\n ${e.isPlayer()?`\n
\n 解码前-解码后延迟(ms) ${i.delayTs}\n
\n
\n 总延迟(网络+解码)(ms) ${i.totalDelayTs}\n
\n `:""}\n ${e.isPlayer()&&i.isStreamTsMoreThanLocal?'
\n 是否超过一倍率推流 是\n
\n ':""}\n ${e.isPlayer()?`\n
\n 是否播放流畅 ${i.videoSmooth}\n
\n `:""}\n ${e.isPlayer()?`\n
\n 是否在丢帧 ${_}\n
\n `:""}\n
\n 网速 ${w}\n
\n
\n 播放时长(s) ${Fa(i.pTs)}\n
\n
\n `;t.$performancePanel.insertAdjacentHTML("beforeend",T)}else t.$performancePanel.innerHTML="",na(t.$performancePanel,"display","none")})),e.on(nt.togglePerformancePanel,(e=>{na(t.$performance,"display",e?"none":"flex"),na(t.$performanceActive,"display",e?"flex":"none")})),e.on(nt.faceDetectActive,(e=>{na(t.$faceDetect,"display",e?"none":"flex"),na(t.$faceDetectActive,"display",e?"flex":"none")})),e.on(nt.objectDetectActive,(e=>{na(t.$objectDetect,"display",e?"none":"flex"),na(t.$objectDetectActive,"display",e?"flex":"none")})),e.on(nt.occlusionDetectActive,(e=>{na(t.$occlusionDetect,"display",e?"none":"flex"),na(t.$occlusionDetectActive,"display",e?"flex":"none")}))};function Bh(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===i&&s.firstChild?s.insertBefore(r,s.firstChild):s.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}Bh('@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}@keyframes magentaPulse{0%{background-color:#630030;-webkit-box-shadow:0 0 9px #333}50%{background-color:#a9014b;-webkit-box-shadow:0 0 18px #a9014b}to{background-color:#630030;-webkit-box-shadow:0 0 9px #333}}.jb-pro-container video::-webkit-media-controls{display:none!important}.jb-pro-container .jb-pro-icon{cursor:pointer;width:16px;height:16px;display:inline-block}.jb-pro-container .jb-pro-ptz-controls{position:absolute;width:156px;height:156px;visibility:hidden;opacity:0;border-radius:78px;background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%;transition:visibility .3s,opacity .3s;right:43px;bottom:135px}.jb-pro-container .jb-pro-ptz-controls.show-vertical{right:43px}.jb-pro-container .jb-pro-ptz-controls.show-vertical .jb-pro-ptz-btns{left:0;top:156px}.jb-pro-container .jb-pro-ptz-controls.show-level{right:163px}.jb-pro-container .jb-pro-ptz-controls.show-level .jb-pro-ptz-btns{min-height:156px;left:144px;top:0;display:flex;flex-direction:column;justify-content:center}.jb-pro-container .jb-pro-ptz-controls.jb-pro-ptz-controls-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-bg-active{visibility:hidden;opacity:0;width:156px;height:156px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAAE4CAMAAAD4oR9YAAAAM1BMVEX///////////////////////////9HcEz///////////////////////////////////85yRS0AAAAEXRSTlO5DCgVgZBxAK2fQDRkBR5XTPLKM/gAABnnSURBVHja7F0Jkqs6DGQPO9z/tD8Jq6WWbCCvIjKfzAGmulrW3ooedr6ui+M4TdP++SXPr1l/SdL3aRrHhv7ZyA5qb9xe0L3Am+DrkzeCL/BeX908MezTuPsfOArdgl3KsZuhq99fk/Tx3waum+ByAHua5QbYilkzY1aP728YhrH5InrfBa57OLAtVjpRbYaumex04dq4APeC7vnVSfo/45bXLe33jGscMx3f0A1vyg3t69e2dRL/NeA6wrgdcCvjyPM2U25mXDt9xVD3f/qN0yi3Mm6P20S54vlXtGPS/R3GPSbYOsC4ZAvmJtiaGiL3Zlzx/Ht+Y/KXTJXbqmaqe9za1VYn3N7YpX/OVGev2qduOLIiB7xqOzGuWCiXFVmWtU3368A5lkqeOJI21I5XXaORxVRnxmUTdNnY/4U3riNvHMJts9XRtdXVUttipdzrK/4x7UyY6sK4Gbo+nU21T1zKcd9AGJetlMvyLKvj3zXVfeqQElMljINx3MK4xVQ3xj2Ry7N/6CiMOIfYyVUXWxUyBx7HuZRbcHt9bf/Lb9zsHlzKzabauJaK47iVcC7jJujS33/joKkmxDnM4QiJ4xDjZuT+DXQW3jgxV012qcPuiePhCGfchlv1/P0D6Czmqmuq2gPGkbIS8Q4ZsNU3dGP3Y2+cW1RyKpkrbAnwqhi3iXHFHrU3bFVV5c3vBsCsOALjkXErAW85F3rjFvBm5Kos+TngCOXYG7fA1ojFER7GPUHbmer0tfGPANeROM6pjvDMQSkrsWQ1d564Fbr61964TvSqDa6O0ELmAtvGuc2rrpQrn/aa/qCpYq+6mSpOVhnjWBy38u2JXFl9yL8acg6CV3Ur5yxVZfW4AsRxG+XKssz6n3njVMYR4Eg8sj1yi3tgtroxrpyhG38gc+h8PYddPQ551dVQW5jju2/cG7kXdB946Uy9cbDnQOpxuCCHcq5dHDcht8D2/K67VxPNGtLJd7qDTcgb1zLGbXEcY9z0Fd39GReTzIH1B/2lcxrGTYxj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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-up{transform:rotate(-90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left{transform:rotate(180deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-down{transform:rotate(90deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-up{transform:rotate(-135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-up{transform:rotate(-45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-left-down{transform:rotate(135deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-right-down{transform:rotate(45deg)}.jb-pro-container .jb-pro-ptz-bg-active.jb-pro-ptz-bg-active-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-control{position:absolute;left:53px;top:53px;width:50px;height:50px;background:#fff;border-radius:50%;transition:left .3s,top .3s}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left{left:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-up{top:33px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right{left:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-down{top:73px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-up{top:39px;left:39px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-left-down{left:39px;top:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-up{top:39px;left:67px}.jb-pro-container .jb-pro-ptz-control.jb-pro-ptz-control-right-down{top:67px;left:67px}.jb-pro-container .jb-pro-ptz-icon{position:relative}.jb-pro-container .jb-pro-ptz-icon:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-ptz-btns{display:block;position:absolute;left:0;top:156px;width:156px;box-sizing:border-box;padding:0 30px}.jb-pro-container .jb-pro-ptz-btns .jb-pro-ptz-btn{display:flex;justify-content:space-between}.jb-pro-container .jb-pro-ptz-expand .jb-pro-ptz-expand-icon{display:inline-block;width:28px;height:28px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAANlBMVEVfX19fX19fX19fX19fX19fX19fX19HcExfX19fX19fX1/////Pz8+oqKjCwsKhoaHn5+eWlpaOqTaDAAAAC3RSTlP/3CaKxwJiAELtp4ri/s4AAACuSURBVCjPfZPREoUgCERXBdPRyv7/Z6/Z1aQp9oWJMyYLiKUrOIpAJBdGCldgbzBkPM/QEoTI3jBEPBRDhwEvChe08Q1Ge0ImvIq4Qj8ljrLdH77CyQPWlCdHC0Q1e9rmmuC+oQN9Q4LwcQg40L6eyqm0uEpXSUqe3fKpkkqL+Y/o+07SrahNEO0T0LBsvOitf4xsLqiNTB32wtqaVKosGLO2mhUrS93+PZ4D99wPqzMJVcbEyA8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-expand:hover .jb-pro-ptz-expand-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////i4uLZ2dnIyMjExMS8vLy+iXNeAAAACnRSTlMAYomLxwEm9+NCLo6DKwAAALNJREFUKM99k9kWgyAMRIMmEMLm/39tKaVKFJkXl3sYJ4sAXeQ3ZOcYd0+gRYblFBuFLYoS2ot5lpvYn8zJQ65TO2GVNmdCmQq/qczw4gjpejD14BgmhziEIvCjVRlPioftHW6A7xBB1a8CCUMvsuSqEkPM7eZX6h8GrQ67bYpNIbRL6rb4/k2EfVXKsgmqfQrW9qnGq96a28jGQG1ky2HXpVysyYyeDIhWq7le6ua9P36HD6+2GRi8iBZBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-narrow .jb-pro-ptz-narrow-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/9/f2/v7/y8vLUObqxAAAADXRSTlMA3IrE6SZi9wI+y0gNXAn3CgAAAI5JREFUKM+Fk1kOwyAMBQ04bJHT3P+0JVUMNMWv8zvSk1cipfjAKXHwhR7k6KTjYp7dVuWLug1XWB5wz96T/JD2O3Phmv0k5ypL6lVVFIPYpLOka5WKSSFvS0/BloHYlkza5HkMzrvVLo8ZlRr7mtFYWBBsBQ4BjC//GTxcGVw2PpOVHQ6fJj7qS4936OoN2K4e5yE6N1UAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-narrow:hover .jb-pro-ptz-narrow-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcBAMAAACAI8KnAAAAJ1BMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v7X19ckk9ihAAAACnRSTlMA9+NCAsuKJsRiPv/2GwAAAJlJREFUGNNjYAAC5gxFoTYDBijw1FoFBIumQHjsUavAYGkBmGu0CgqUwRqlYNyFIO2Fq+BAnIGBJQrBXerAwLkKCUxgYELmKjBYIXMXM2Qhc5cxdCFzVzBoIXMXMYAcsRsMdgEdgs4FKT4DBqdAitGMQrMIzRkojlRB9wKaB9G8z+CMGjgshjCuMCjoWNxRAxYt2KGRYgJiAQAnZcjElaB/xwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-far .jb-pro-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAASFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+kpKRzc3ODg4PFxcW1tbXW1tbk5OT29vaVlZVmZmZ8vCMFAAAADHRSTlMAxGJ5Mssm9+NCiYtiH91SAAABAklEQVQoz41T7Q6DIAyEJQooUL55/zddhVazzZjdHyqXXo8DhWCYTWqltNyN+MZLuxP69UGti/vAsl6c0e4L+tQ2yv1AEbvecMhO5cXdYhk+6aO3WGrNAMwentlMz/ZAKIlNoRsqY2wtFWu9t8wasc0iYVN0LkQfrG1zbxNyrIBcntOQrH1Ukkb60QcxYF1xMA2dh8zWj6ZDsLCsIrL4Ds5Hm9FMbCEROWUB0COaLXEIZJKV7CKybGO7UuxjxY2C/TkMbxboKBQCxgMN6MCJQ6Ch/QjOZg/B13LGx8FDTe3IFvl+Bc9XBi3UWoex68qeL/vxmdyxyvz3NJ8f9dDef36HN7koIK2LjxB0AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-aperture-far:hover .jb-pro-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn+/v6cnJzr6+u/v7+xsbGlpaXNzc3b29vqh7uRAAAAC3RSTlMAyRjKA59J/3PzPhe1wxwAAAD2SURBVCjPjZPrssMgCIR1mkYtisD7P+zBCyZpM5mzv5hs0M8VnZvaok9BlXzc3FXbO5z0vtifFC5Kn8OL4UfxwVvuHm61d5Z0b6ZGZZwZpQAUosWsjVZntVS1sH3ZFo1IRVYfGXgx+VGwNkkIVbhq9/jm3cAhaNv1Uk3IA8mNn7D3kbQeWK3TLH2jCthrDFcTMwUWaKiClc9mJtJWhS3SF5BpJqMQW1b3xwnkDahMoHYomkeJRgSENA/MFsKML7fgoCBVbGvM+Cx4JcKWbWHKK/h1ZYS1Jy/nK3u8bB3KhzG5deMxtfv3aO7/Heq+9ms8h9fxHP4AHzAWU9zlWNgAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-aperture-near .jb-pro-ptz-aperture-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////9fX1+FhYWbm5vz8/Nzc3OwsLDi4uLDw8PW1tZmZmYgm6a+AAAAC3RSTlMAYmOLx4kn9+NCIVJiPGAAAAD+SURBVCjPjVPttoMgDMOJAqOU8uH7v+qKFN2c597lF5LTJg1VqQG3aGuM1bNTV0wWDtjpg3pq+IB+npyzcIE9ejsDXzDCrjccs+tOariF3n2OLyw5xko0vh9MDjNb9Q0hp2GK3cixlIApe4/JD9appR8SFxWAUFLg6n63iB1irnY1Jv0mlrok7nUdcZRa1YeshxBA9iijChlxI6iZEaBgSEL2tkRcymPGGJpqlbZ6uDg0WR/F0DwuMpxDkYwiIXA8hO2uMJdGCCK6teB8RQoY8xGfevQjxYQt25qoRwDT25MRBjZ7GtP/P/afa3LHmrflXa+ruf661Hvv+et3eAF6Fh3v+sSUGgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-aperture-near:hover .jb-pro-ptz-aperture-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAM1BMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZn///+qqqq9vb3z8/PMzMzo6Oja2tpXGg+mAAAACnRSTlP/JomLxwJiAONCr+rW2wAAAOtJREFUKM99U9sWhCAInEpLBS///7WLEWy7p9O8qEzCMBIOQ15DAlLYsoegS9yFMKQ93skl4Adh+ZI54Q8pG5nxgKzkgkcsk4zhmQxRyN1OPHqtncjOu5AuppcJ6s1EHTA1YzC3Wgq3YmzGqpsmlwZAo7F8oLEVKoeE6+TbSxK0JJ/3FLOwFnUxzXuoltYDDMLoAlmYXLAWIrkqbdZKs+q4KBfkNV1uwGaBim9TdLWS3R7iGRvCNTPB7JvGlc5EXK8cKbrxooint73RzXh7Msl6Oj/uT/b62O9j8sj6gMXX0Xwf6jP3Zr9DtNAHTYMMXrXSK0YAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-focus-far .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAPFBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX1////92dnbs7OyFhYWjo6Pe3t7Ly8uxsbG8vLyG+Q0EAAAAC3RSTlMAiWJjx9wm/0Lti7mfpe0AAADaSURBVCjPfVMJDoQgDERFC/bg8P9/XUSO6CqTqA0TptNDpSrMpC2A1btRT8wrNKzzjdo03KC3zhkLD9imbeAFhd3sG2kvZQ2v0NknfGBJZKkhBM9MxOxDKBV1N4iHi0TRHYjN01Qi7/kK2PtyNDU7DAEJgDAAN0u1jsQEFEkcVVmrqjeXrkWRmC67eqbgG7bJyvkQSQkvUvec7szpek6t9ubWJSK/uJVSm+APzHKCh++DWWuH4plQKNYOpfappcjy2VvJn9744cjGwx6uyXjBxqs5Xuqsvf/9Dj8rLhRg+bQ5VAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-focus-far:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAOVBMVEWZmZmZmZmZmZmZmZmZmZmZmZmZmZlHcEyZmZmZmZmZmZn///+xsbGoqKjt7e309PTExMTQ0NDe3t774OlGAAAAC3RSTlP/itxixwImAELtp8B2gZgAAADmSURBVCjPjZMLjsUgCEVpq60G8Lf/xQ62gvNeOmZuUiWeKHC1cKnC5iJAdFuwJXgmf+xg2g//G54OPuTOCUOEL8WgMMCLwgPP+Abj2aF38CrnBR7whw6Bo4fWUk7MMrQ2OrpAq0GspTLLgKg1wTailNITZA0EaTkZGjIAY5NwlATah5CGRMJYj50tFtlWiapsLvAPRdtL/WOmET7QzZyl5ywzp7NWsjBJ1odsragJqeJ9HGFNZoLaJw71hMTm0O7NeDE1Z6YsU5rGL69sedmXXz0ToW8PzA/oV09T8OJR32fb7+B17Qe3WwtC9PVbHAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-focus-near .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAARVBMVEVHcExfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1/////t7e2dnZ3W1tbGxsa3t7eDg4Oqqqri4uKTk5NImu/5AAAADXRSTlMAYieJ3MvE/0Lti4oh87zNagAAAOtJREFUKM+NU1sOwyAMY30FtoWS8Lj/UZe2gWpVh2aJH1wcO0mNqbDj4gDc8rLmiscEDdPji3rP8IX5fXLWwQWuaVu4gbKDuyPdsJMz3GLefcIPbJ6PDCEAFDlUAJiORM3NigQFAXAFlqOeRhWJyFFIHxNGvRrN0mp470U++3axGM2RAmXcXqKnkDSN0a9WIk5Sa01MpDXBQAdVtrA8lBhFnnKpsmoo5VBrhszV0KuJ5N2tP92O50iQjpzcctravoihdoi0Q1NrfN56m0VWzFBoje+OrD/s7pr0F0yUr6s5/LvUu/bz+B2ep+IHdMIV2SUZfCsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-focus-near:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAQlBMVEVHcEyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZn////c3Nz09PTp6enR0dHFxcW7u7uwsLAUKT0cAAAADXRSTlMA3IrE6WIm9wI+y0gNQZpqdwAAAOdJREFUKM99U9GShCAMQ8BF3Cmlpfz/r15dAe88l8zwQiQkoRrTEa3zIXhno7lhWxcYWNbtN/fa4Q/218VFDzf4of0O8A/h3TQfOGU/ytsOj9gPVyt8warkmYEQQAgABYDxTKROz88koS6AVIB1fRCNbSI1cVUy15Jq27LGjTtyzipPeWw40/IXQkrHyZSRmqw3LaQgctFNKYzYyGACfEXossLMojFEj7J0WfdwJ3dD9uY2X25tL0Hj45mTR87Y66u9IQFsDS1bL57o7JbUDNIofvpk08eej8kTe3Hz0ZwP9UFfv8OgfgBUByCEUZhYtAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-play .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJWSURBVHgBtZe/b9pAFMefbSYWMjCjdOtmYEYqXVC3umMlBFRiT7qxkexITcdKSDUSYna2iqX+E/DG6LCQgcETUiR+5Pv8I3Kc+McF5ysZ3x2++9x79/zuLFEG9Xq9s/1+r8my/AnVJq4z/2LZfB0Oh1tFUQxd1+208aQ0GAa7kCTpMgRJk4kJXk+nU5NEoe12W8PM/wrAotIx2Z+w3MkE7XQ6Q3S4otNlY5zPUZdL7wiMBUsRIK/fDeWvhQ92XS0HrQia83cCsqoIyMug8gQ9Ho/DpF7FYpEajQa9VTBoyIZxWeEfv6IndSqVSjQYDKhcLtNqtaLtdkuigmGSZVn/XKiqqr9wqyZ1YEtbrRZVKhX3zvX1ei0Eh7Ufa7Xan8C9VRIUg9lyQZfzO19VOOugkBpAgaXRtnq97oLZ5ZvNJm0YQkBZ8m63E7YyKl5ntrrf77vlJCF/qzLlKLZ4NBqRpmmuF2LBlLOyBFYBchDKlIeWyyWNx+PUtS2Qtx+eJA6i2WzmQtMEA+8KnA+73a6N+jkJil1pGAbN5/PMfRBIZsGn3+LFvSABMYiBgpnJgZEeFHQD4EzQrOsWI4N/nrY2uPg/eeefV8WvAKfALOsWJ3jzA++rcqjhB25OXAd244nA62AjV4LGxWLhIBk/oPiF8pc9mUy+BZVnyQEzueEZUb5yjyvhBiX6BCw2YTGvdZNyAkYPZsprT/rgO/K2vDcdQQH7jes7gPcv/kvqyCcKbEVX6PxVAG76QWPGPZAIDcEZqGECTQyokpe9wp8VfNqzyA2L9M+KRzm19l1i6ZQBAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-play:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHgBtZe7buJAFIYPjsVFAok3wBUlYcUDLNvQISUSDVVCA0IUYZ8gmzcgBeIiJLwdFau8QToaQKygovI20CJBARKX/Y/jICPAF3B+yRpjZvzNOWfOzLGLLKrZbAaXy+WdKIq32+1WcrlcQe0vZb1e/8XvQT6ff7fyLpdZh0qlEr+5uXne7XZxMpciCIKMSfzGBBSyCwVMAqxpEXYEhzdeAJYtQ2u12h2aJq4gXadSLpf7aQptNBoPm81GJofEsc5ms9/0zwT9j3K5HHUSyEJ4ovV6vXkSyjHEyvxDXyCAHxGy4hEUq+4JjWQ02O/30xV65rTbQ9lKNEWjEYFAgFKpFMViMbpQnOfFPRSKWxnldrtVaDqdpnA4THalefMDinx8sDOYrY7H45RIJOy6PMibjch3F24AJEmSeo3HY+p2u7RYLEzHwNqogOUcpSvFrk4mk5Zcjry9FZCX1+46qj5dzvEOhUKGfQVyWAyPRCLqojsnEYtohpiSE5rP59TpdEhRFMN+Itw7Q3DpGq1WKxqNRurF90YC75+gnXszulBsVbvdpl6vZwpkwasDNWVw9r3BWlu5Op1OVdBkMrEzTD11RO1exmUJytb0+30aDodkV7DyjT2rBpNrG8zg3WwQW9ZqtS4CatASt/sVhAC/GA3glWk1bqcEo+TPwm0P5QeYySt9jRS9UQe54vF4fqEZkMNCdXivrw4PoJlMZoad5IeDYE7F+0KhcPC+syVotVotIQ5PdLm4CD8CGkJZfAIhzlw3SWRdM+T9q9frLbHnTnUwrfBZfPCiecQG8v3MBHj/HvAm4/P55HMwW1C9tG8a/RmsGH1CnNJ/17UakVMOx7kAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-cruise-pause .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHySURBVHgBxZc7bsJAEIbHdprQJAU1ckln3FM4J4jTIkSMRB9uQDhBlBPECIk2yQ1MSeeIxg0KZQoKKpSCR/4xtsXTNmA7v2ThHe/ut7M7O7sIFEOGYdzO5/OSJEn3KGp4ZDy33ucxP6vVqo86H71ez47qT4iCLZfLJ0EQmhuQKNlo89rtdk06FVqtVjV49kZrr86RicG2TdMcx4LWarUWGjzT5Rqjn7tdsJAi8Ch4C4op1TGl75S8GKwCPOWC6FsRNDKAL5SOZER30HcAhbFFEUFTLBapXC5v2fL5/J7tiOCXofHLlVfikRhRrSqVChUKBXIchyaTiWtrNBruYLjM9jB5jlmup4vFQqMYyuVydKE03vsuVBTFR8pIcFD317REGQlRXBJ5PSl+iktCskgZC57eZA5l/Q/Uy4lTykjYq1++p5EHb1LC9rRdKA7dT8pO64yERG/SmVM8m81OqW7yckr8Ztv2r6Io1whnLawF59fhcLiVY0ejkWsfDAYUJfRfB+snOE85J2KRvym9RGF2Op06vwRbhg9YHgmlIz7E235B2vwC1x1VVdl7jZLT3nVF2q0BsJUg+ODFTDpU0wP3PfC5a2wB+BD7CuqLgws/TQQYn7cyxYfxfdc6ViEUujMAHUlER4cKHfhbATvPjBUG8/UH1xXJDxHoYGQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-cruise-pause:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAH/SURBVHgBxVY7bsJAEJ01CAkJKUhUULmiDSnpoKYINyBuQIgi3AA4QZQKIQq4QaChhhuQCxAXSERUSDSIb944axSS+CPA5kn27o7X+2Z2dz6CXKDT6URXq1UqGAw+Hg6HDB4V4qj8rAsh9N1uN9rv971KpTJ2Wk84kW2322csVv1BYr+gEGMo8Foul7uWc6w+NJvNjKIoHXRVOgMg74K8AXLdFWm73a7BujpdDh3rZH8TCw8JLYlPSFutVh7NG10feigUetA0bcEDxZTiDFU0L+QN1M1mc1z7SBoIBGrkcGkSiQQlk8kTWSQS+SP7D3CzJ76c3A/yi61kodOP6XSaYrEYzWYzWi6XhiybzVI8HjfGLLeDNGxoWpohF8C50CXgwMK+r0gNCuQTENnyitQgRT4BQSOlyFvrKsRdCapC/uPuFqR0G1IZExfkH94NSzkHkk+Ap4wNUiTqPvmH74gUDoe7dOYWr9dr13M5sfNxBnjQ7/dXuVwuDGHG7ieOr9Pp9CTGzudzQz6ZTMgJ2FFtMBh8HvMpx0Ro/UEeBQq2slgsatw/uoxMsBp5A64WG+bgxE9LpVIPpUWDrgv7csUE4nEdlWCNPCC0JJXEF5Wg8MchHs11CWpCVvZVkBfckksyrneHVnMEuQRXitiqPBS4lwpEJYmORkc7Qju0IzPxBZ2t+3mW/JtqAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKgSURBVHgBtZe/jtpAEMYH28WJioIa+URDF8MTkAalO6cH4YIiFbk8QXS8QO6oUlCAkGjDtTRHJBoa4nQ0KBZdJApoEAV/Mp9jkAF7bXPcJ5ndtdf725nZWdYxiijDMBKr1SqhKIqKNpdms9mcRxkjFqZTsVjMy7J8x1WdL9WjC6D97Xb73G63m0HjxULAvnI1T+FlMfxBBPeEwoW73Q6we7pcViwWe8+utwKhDFQZ+IOrGr1eAH9ksOkLdSz8Rd5xu1RzBmfdFkvupwz8dmUgBENeYNAZtFQqGVwY9DZSnTVi6+Decrn8h0JYWSgUKJfLHdrL5ZKm0ykNBgOazWbCd9nNt3CzgoZjpUohlEqlKJPJHN3DJHRdp16vR51Ox/ddTiVkw70NlSTp7rRDMpmkWq1G4/HYvmANSpHghXg8To1Gw/M5W1oGVEZD07TvXNy4O8Btw+GQFouFbV06nabRaGRbhbaf8AzvTiYTr8c32Wz2p8KrSuMgJ7x6IEa4AIuivau9tNlsNGm9XqsBY9gxhOvCCi728wa7OCHhRzQAZl2pVGyXRZEoBAoFCDGs1+v2QooiUfpIHE+LBEL+VatVezVfDcp/whYJhAWBVHFvCEFCfz8op6cpORuxJRokajz98tSRae+97OJnUS/RanQLkwNQ4FrzsA2yyU0Gf/br2e12A90LlwYAkS5Pdrm/wRs+/rh1ChAshuV7wTqAQoTAarVat6gorll8YWvzXBXmbdTUcY3/sK/L+4ppmnPeF/9SCGsvAXIsH8+gDthkMFyepyuJgS0GHh3w5NNOzO0zeMHVD/R64BMDP53d93vBORW+0GVnpvmpS0NBXXDDSacwR9K5kxaPok+NUJ8VDlzlQucJvKNj63G2/U3/E78fZqx/rk0w4ggu8jUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAdCAYAAABWk2cPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAK2SURBVHgBtVa9jtpAEB58/EqArqCBBqehorgTVDQxPVJOiD5QAEJUeYLjniBcgRACKeQJQsQDBBoqkIigookraC1BwT+ZcQBBsNd7Ovgk2LV3vd/M7PyZgBPlclnc7XZPFovFv91uRZPJdL9fktfr9W987udyuRbPWSajDUgm3d3dPSOhBMaQUaAXu93eSKVSCryVtFQqPaBWXznJNMlR8zo3aa1W+7zZbIo4vYd3QBCEQjqdfjEkrVarzyhlAa4EvOt6JpNJ6ZJWKpUnHH7A9VHMZrNfLkjJO9Ecv3Aqwg2A1osevFs4vCQP5SF0Op3g9XrPflar1egzut9vCNVHzPS3j8EkcCAcDkMgELh4PxqNoNvtwmw20/tUXC6XSRyLqqZ7LS80CgaDqiY8IEESiQSIoqi7B53qE40qqVYsolTgdrshEokAeh9IkgRGIDPTPhJYC8SD4eg3k52RQNQi7XQ66txms+kepEUcjUah2Wxqrq9Wq6h5Pp8/4CUzD1osFuqPFwfnIsE1IBKbyDqANIzFYhCPx+EtYPmCGQxAppJlGQaDAVwLaFlBgRtAx7T/SNGNZWCg1WqpoeP3+4EX0+kUJpOJNiEqKWA49HGusA6gwPd4PMCLXq+nu4bpsK+6LVV9YMDlcqnkPKD7JyF1oFD+PSSHV9ZB4/EYQqEQGGE4HEK73dZdR+Ua6nh4gWXtD3AkfCL3+XzHZ4pfyrekIQnHApr2A2oqn4YM1TvDWkr3xbozPVAxJ0KaH1MRFllSvQG3gYztz7FtOct/mLqorZDhulD2BVzWJKW2kTZckVjBnviM8IKUQBtQ40ck/w7vAIUhnvGYz+cvwpHZbGNHkcQMwtXGnICs9YrCF/Q2GHb4e3IJBxLgo44ACsY6afbT4XDUWd09N+kpqOhTDT55Jf9/Z0b4C/UJLQCcLGi1AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-fog-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIjSURBVHgBtZe9UsJAEMc3l1Q0WvAA2NEp1MyInVbGnoE8AVrSqW+gT2CY4QGwpTEFNcaOEqksKKiYcYYP/xsSJoRwx8f5n7nRu9u73+7lbu8waAc5jnM6m81sIcQlqhcoOZTTsHvAZT6fv5um2XZdd6Caz1DBMNm9YRgPMYhKHhx8brVaHu0LrVQqNjx/2wOWlAtnn9MiT4VWq9VHDHii4zXAPFdJsPGPwK1gIwHk7/dC+sXgAsBjroioFZsmpznCuHKLxeIxqqwirdVqvGmcbaOy2SyVSqW1tuFwGJTRaES7CEGd8TJbXOEo4YkjG8BQ27ZT+7rdLrXbbSUcx4+P3oOIVQ4Wr0Cj0aBMJiO1Q6Q1PvsirFzSkeKVqNfrKjM+8xeCybRMbUcrn88HRSasqs2R5kijisWitB+reiKm0+mhaS5VvMwqCdIs1WYKoJZljUmj+NwqobS8D7Wp1+tJ+5EPvkWYD33SIE4S/X5faoOHgCdC+jsdKc5GnJUUGiNIzwrpbjwh76tOpxMAJ5OJyjTwKp7wP/CnvM06LeFzdPwNd4AFihL+Chom/U86/HmiAr4CGOR4M2r0fX9cKBR+8e816deg2WzeRJW15ABPXvgxRXoVPFfiDWbSAhF7iJiXvUyagMmHmZlmGYK/aXn7HPSNAWui3AH4s9EnG8ibiy94DL6l3W8jL3zvetsMpNCEAw4cKGPCc9r8WeGj/YuBMlikP+yn3EGZYjlWAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-fog-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAI5SURBVHgBxZZLjtpAEIbLjUFih8QFnBUrJCIOEHOCROIACStALBhOMMwJMlkgBCyYnCDMCUJWrJCQYB+zBwkJFiBe+QvZyEz86IEezSc1dj/w76pyV5dGEnS73cR6vf4SiUQ+HY9HE0MJu5GmaSNcFrvd7hn3vXK5bIU9TwsTw8Oqh8PhzhGRoIf1tSBxX9F2u12FVfVXiL3ksVgs1khWtNVqfcfljm7HgtW5l1Zrbyh4Fo7FYh8LhcLCGRDu2U6nc69YkDG22+0v98DZ0mazaQgh/tLbUUOMHy9E8eH8treDJ8lkkgzDuBibz+c0m81otVqRBAu4+QO7WecerDSDBB3RbDbrOTcej2kwGFAIvNc5dPVTTLHpv9INpNNpyufzBEsC1yF81dOVf8KslCHIEy4SjUYjIxDLDDoGKYAtDrNW13VT7Pf7azOOJ6lUKnAeySLB7jVIIezmMAS9A/igxIIUwns3VBQ+HpFCLMsKnGcjhX0CKLF2MpnQcrkMXIPzuX+KKax9phthtw6Hw7BlVqVSGel25wntqqy02WxOFnLj+xB6/HNTwmdXTqdTGTHmfKA7lhKSxAOCbPr9g90n82X6AcGfTgVxUTngtKlD+J4UAw/2S6VSzulfJAe8SZ3fiNRiQbTgHvgvI0H4Gxb9IAVwTexVmHmmQbiCD1suHy26En7xaDSa86p/A4ttrpuIT3ohpLcTxw/tAWJ9vzUaSWCLm3DXZzS+z7hELFzYjX/i8fiTu9T04x9LgQk+PbvDKQAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-open .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALxSURBVHgBtVYrrBpBFJ0FFAqBqCIrUXRBk5QaUleewBBIlwSDoW1CUlzz0CSlaJJHA8FgqMBg4CWIKkpRuEfQCDAYAvSeYYfsLgss6fYkk5ndmXvP/c1HYjaQTqdjbrf7PQ0VarLWgBW1Cdput3tutVrdW7qka5OZTEZ1uVwfaBhj9jDf7/ePzWazwe4hVFVVPhwOT3cQnRFLkvS20WjMzRMuCzKFyH7/AxkAg18oQp/ME24LsgENfcwBkJfvQqHQejqd/jr905HJGpnMHIYW3iHGp5AS2df/QabpfiKHfCdCVCN1qh1hv9/PIpEIi0ajLBgMskAgcDZfKBTMYjJVL8+nh7MeS/8ioFiQbDYbtlgseA/lXq+Xt9lsxrrdLkulUmw8Hp/poLB+JC+rkpa7FysiKEokEpyo3+/zBiIrr2EU1kKmWCxariMvsy46IRJWZFBSLpf5GApgvZUSYLlcstFoxMfwHnKQN4Mi+cYdDoe/IGpmslKpxJV0Oh223W7ZLcTjcb6uVqtxLxFayJtkfSga2Sycy+X4YnhlBzAQhGI9euTRqnhAaNjkKA5Unl0yALlD0SC0Au12m/fIvx5nRxsEYV2lUrHMgxmiYMwGwmiE1qzDrSiKSv0r8QMxF2Wdz+fZer3mhXAJCP9gMOCGAiBJJpM8h6jqXq9nWO+hLfGH9ohiVoTFIEbxwFqECMoQInwLy4V3mEMe0SB7YWtMJJzoVK7fLnkgKg65BVBM8Bj5gjHwDORoGNfrdUMu9SDnfl7d+HqAEArFCYNQYoxtAODfJSIBimTWpV2Swxt8PLwiRAgjGrwXuEVGmBNXw6MxP5KXMWYTCKs4U+2COH6g59tCu6uG7A7AYxteCcypVU+EmgVZbcJxkO4HcmplIEQuMcGOTz8nyT6T7on4Npw0mMBzgDnkqUZWNfyzWujQM/FB79lVQh2xeudbZ0VE36mvipzdRagjjtFtnSBlr9nxuS9uGCidk1HPdFp1xcvsGv4CcbeEIeSIw9MAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-open:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgBtVa/SyNREJ7dBLVQELU4bdwrtFJOUCxsXEG0Ue4OK6tLKhEb/QsO/4LzChVtvGvE0sPOxtiYJuFyJBBICtOlSSAQCEnIj5tvyC676ybZYPLB4y373ptv5puZt6uQB1xeXup+v/9zs9lc4qHxK621VFAUJYbRaDSeDw4O7rvZUroQBXw+3zcm0ckbMkx8enh4+It6IWQijYlueiByI95g4oxzQXW+OD8/X1JV9e87yACNbbxeXV0dOxcUJxnn6okfx6l/OOHcnr0hhIzsFcg06jNa8obwbErKOfs+CDIhUdUbxrhJiGrknAW8HB4bGyNN02h+fp6mp6dpcnLStj46OkpbW1vOY1q5XJZ8iqTX19dPnYpkZmZGSObm5qharVI+n5cZ5ENDQzKy2SxFIhFaW1ujTCZDqVTKaabA+z4qrdy9uhHB0PLyskSTSCRkVCoV16gRLfYODw/T7e2tOOQE5zKocmRf3Mggzd7eHvEtQnd3dxSNRl3JgGKxaEaE6HEO553gOllXuQ3W3ch2d3fFyMvLS1siKxYXF0XWh4cHOYfzUMgKpE1t3Y026LouhxCVF8DBhYUFcz9m5HF7e9u5VUOV2pp8dnaWpqamPJMBKysrEh2kNRAOh2VG/q14c7XhILzb3993zYMT2IOCcTo4MTEhkqKgrPCx1gGePxgv6vW6EKJYNjc3qVQqSSG0A+RPJpPiKACS1dVVaQ9UdSwWs+33c6n+47ZYchqKx+NCvLOzI80NiWAMEkFyeM75lx5FdFhD4SCXIEJluxRbTLm4uDjmcv3RLgIYgrfILZBOpymXy0m+UImIDLLCATyHQiFbLq1gB/90bHwrcNPAILwGAaREcz8+Pso6CNsRGZDGx0eS8xXqRgh5DYkgIwZuFQPdyGACfwJ+PHGhnHKUOnkEetS4U72Co/uNWdoC3yovUVqBiD1EZW4fGRk5MwkBjjKIBRoAarXa12AwWLARIpdY4McC9RcnR0dHZjPabhosMOkG9S9S2/8MMLDfRKhljawjoYU4wNXby79OgavxJwrEyFlPhBZinasYH+pPPOMaNL4wMJphJZ553Bt/Zp3wHwTYnvHjbDCuAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-wiper-close .jb-pro-ptz-focus-icon{display:inline-block;width:28px;height:28px;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANOSURBVHgBtVc9TCJBFB52r7jYyCXWnhcbO1aru8RErjGXWBxX2BijGG1svNhJo56VhQU2ViQsgdDQYEFDc5rQ0BDoaMgRGhoKaMhdCHDve+6QZVhgMfglm9mdn/e9v3kz6xEusL+/79c0bcvj8fjpc8V6gCY9VXqK3W73MZFIpN3I80wj03X9il79wh2q/X7fJAXvTdNszkQaDAZXaHF0BrIRcvLKERE/OQ3qYwh/06shXg8vRPl8PlEqlZ4nktoIV8QcgBxwItbfitBOvL6+XioWi2XZp8kXIryaN6FNdpSM8spvthRWUmPaJ25vb4vV1VVRqVSGBCwtLYm1tTUeW1hY4KfVak2hFe+J+B+5+QkfnL2Hh4fI1KAq/OLiQlxeXorl5WWxsbEhNjc3RbvdFrVajVvMkcTlclmk02nRaDTGETfJ1Z+wlTxWLP84zQoEAkwEodlslh+QqZDWY36hUGByp3m9Xu88Ho+HNaokfidCCAIh2kgkMlYQAOtyuZy4vb1lBW9ubnidCioa37klkw0nQrgWgpLJJMfXDUAOBbEO66GAAkOS+tSRk5MTXgjr4FIAMXULrIObz87O1CHv8fHxR03thXAkDhbahezt7TlpzkA8sc7uUngIQIhUgNRr70AWQsu7u7uBEPTBdaqboQTcCIUgXL4DUBzjTrHVDcP4BmVlR6fTYVLg9PSU9yC2CIghEG7HHIC2GluJOGYyGR6DYiDCGEKD/iErNS2sU238QnH9rGqDopDP5zm+EIJ3aL6zs8NEUAKCQSiVwxp4BFaHQqGRwkJoRqPRkEZ7tCjGAAJQHED28PDAVkirsX1kUcAc7FEXWc5c7+iQTltnpyMgHNYgUSSZBL5BhqTBHkVMAZnxKsijMbQ6Vf+/FFe/mFLs6/X6IJZ20t3dXXb34uIihwFuTqVSI3Mt0nPia3LtpVLot461V0FWLiiBZwzMWCx2xOSy5+DgIEya/BRvA1xfvlKxr+JjUBwola/Fy81u7iDCX5JwiJSPHNJm3sQWoTnUp06a57XFIrxW+0dug8guutM8EvEHpxPIJRDDH6qFA2UmrSSrg0SO5HJLjhDdUxue+bLtQG7QqR8ggVvC4beCFHumRMSxVJxEJvEfnFm91YrgD/sAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%;cursor:pointer}.jb-pro-container .jb-pro-ptz-wiper-close:hover .jb-pro-ptz-focus-icon{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAcCAYAAACdz7SqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAANwSURBVHgBtZa/SyNBFMffboJaKAS10SZ7hXqFegGbCyjmUPTAH3eHlZWmULG6u/Kqi/9BLEQRIdoKigf2l1Q2ChGtBLmtFAQloPgL1HvfRyZuJhuzBvOFzezOj/eZee/NZAzyoMXFxYjf7+99enqK8GNxlZVtyhiGYXOZ5vo/MzMzW17sGaVgPp/vN2DkTbZpmqs8wfloNJqh10AZZjEs8QpYAfzx8TE6Ozub9AQFkGf7l55dWLbYTmxqamruRehbAl8CG5UEOvTNmWSmekHCVAgIJVgB9eHHD1bJSTPp7NXe3k68Hejg4CBvdF1dHTU0NFBVVRVdXl7S/f09nZ+fl2BS4Pb29geXMXyIe5eXlxM6FMaHh4dpY2ODGhsbybIsamlpyUFQog/geE5PT2l3d5eurq6KgTPc7x22kpGN5T+3Xl1dXdTa2ipGDw8P5bm7uyvoB3hTU5P0t22b9vb2ZFIu+smxjSOmEbfW2tpaAcJgMpkUQ25ACG4+Ojqi7e1tqq6uprGxMRmvi8P1BaXJLyE34MjIiBja2dmhzs5O8iLAMUGMw3h4yCkOobDYs+YHfXAkEpGBWJ1KJMTUqzAObh4cHNSbAisrK0FTrw0Gg5I4GKiEBAmHwwUzV2pubpZJOV0KD0EIkS6TlxxwViALMcvx8fGcEdQhKzs6OvIGYxLIcEwIxuFSvEP19fXSjpzQ5RsdHf3M5XtV8fDwIFDs0f7+frq+vpYtAjAMwu3oA/X09MgqEcf9/X1pQ/wBQhuyPZ1O56/SNOO+oaGhMAM+6rM5Ozuj4+NjiS+M4B2ZGQqFBHRyckLd3d2USqWor6+Pbm5uZAySqa2tjdbX1+VbU2Z6evoX3JumIoIBHA6ATUxMyCl1cXEhQOxD1ON9c3NT9qjufl2K5a+pqdliA4liHWEc7kOiwMXOvYpvwJA02KOILwS3FoGuoTTlWDKMJJUQ4qwfDmoyAwMDkkiYIBIOsS2iJH7k7MW1JPu3VpbUyYWVw91u4oWtcjyjOSi0tLQU54bvVBnh+vKJry82PnKHAydFDI1UATFwTgHzoIgtZvPW4Cxw1VlX0YtZFhjT6wvOXrgBK+ZnjcqXimHMrbHUZXuSV43kCpE3IUTzvPfjr75s61pYWAgx/Ctndy9/WlxaCsKPzZs+xc8Ww9IvwZT+A8hTw5fcMmXrAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-ptz-arrow{cursor:pointer;position:absolute;width:0;height:0}.jb-pro-container .jb-pro-ptz-arrow-up{left:71px;top:15px;border:7px solid transparent;border-bottom:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right{top:71px;right:15px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left{left:15px;top:71px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-down{left:71px;bottom:15px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-up{transform:rotate(45deg);left:32px;top:33px;border:7px solid transparent;border-right:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-up{transform:rotate(-45deg);right:32px;top:33px;border:7px solid transparent;border-left:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-left-down{transform:rotate(45deg);left:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-ptz-arrow-right-down{transform:rotate(-45deg);right:32px;bottom:33px;border:7px solid transparent;border-top:10px solid #fff}.jb-pro-container .jb-pro-loading-bg{display:none}.jb-pro-container .jb-pro-loading-bg,.jb-pro-container .jb-pro-poster{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:100%;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-play-big{position:absolute;display:none;height:100%;width:100%;z-index:1;background:rgba(0,0,0,.4)}.jb-pro-container .jb-pro-play-big:after{cursor:pointer;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:block;width:48px;height:48px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC");background-repeat:no-repeat;background-position:50%}.jb-pro-container .jb-pro-play-big:hover:after{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==")}.jb-pro-container .jb-pro-recording{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:101px;height:20px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jb-pro-container .jb-pro-recording .jb-pro-recording-red-point{width:8px;height:8px;background:#ff1f1f;border-radius:50%;animation:magentaPulse 1s linear infinite}.jb-pro-container .jb-pro-recording .jb-pro-recording-time{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-recording .jb-pro-recording-stop{height:100%}.jb-pro-container .jb-pro-recording .jb-pro-icon-recordStop{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls{display:none;position:absolute;box-sizing:border-box;left:50%;top:0;padding:0 3px;transform:translateX(-50%);justify-content:space-around;align-items:center;width:156px;height:30px;background:#000;opacity:1;border-radius:0 0 8px 8px;z-index:1}.jb-pro-container .jb-pro-zoom-controls .jb-pro-icon{vertical-align:top}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-narrow{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-tips{font-size:14px;font-weight:500;color:#ddd}.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-expand,.jb-pro-container .jb-pro-zoom-controls .jb-pro-zoom-stop2{width:16px;height:16px;cursor:pointer}.jb-pro-container .jb-pro-loading{display:none;flex-direction:column;justify-content:center;align-items:center;position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;width:100%;height:100%;pointer-events:none}.jb-pro-container .jb-pro-loading-text{line-height:20px;font-size:13px;color:#fff;margin-top:10px}.jb-pro-container .jb-pro-controls{background-color:#161616;box-sizing:border-box;display:flex;flex-direction:column;justify-content:flex-end;position:absolute;z-index:40;left:0;right:0;bottom:0;height:38px;width:100%;padding-left:13px;padding-right:13px;font-size:14px;color:#fff;opacity:0;visibility:hidden;transition:all .2s ease-in-out;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:width .5s ease-in}.jb-pro-container .jb-pro-controls .jb-pro-controls-item{position:relative;display:flex;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-controls-item:hover .icon-title-tips{visibility:visible;opacity:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-face-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-fullscreen-exit,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-microphone-close,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-object-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-occlusion-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-pause,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-performance-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-play,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-ptz-active,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-quality-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-record-stop,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-scale-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-screenshot,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-template-menu,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-volume,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom,.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-zoom-stop{display:none}.jb-pro-container .jb-pro-controls .jb-pro-controls-item.jb-pro-speed{padding:0}.jb-pro-container .jb-pro-controls .jb-pro-controls-item-html{position:relative;display:none;justify-content:center}.jb-pro-container .jb-pro-controls .jb-pro-playback-control-time{position:relative;justify-content:center;padding:0 8px}.jb-pro-container .jb-pro-controls .jb-pro-icon-audio,.jb-pro-container .jb-pro-controls .jb-pro-icon-mute{z-index:1}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom{display:flex;justify-content:space-between;height:100%}.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-left,.jb-pro-container .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-right{display:flex;align-items:center}.jb-pro-container.jb-pro-controls-show .jb-pro-controls{opacity:1;visibility:visible}.jb-pro-container.jb-pro-controls-show-auto-hide .jb-pro-controls{opacity:.8;visibility:visible;display:none}.jb-pro-container.jb-pro-hide-cursor *{cursor:none!important}.jb-pro-container .jb-pro-icon-loading{width:50px;height:50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAIVBMVEVHcEx4eHh4eHh4eHh4eHh3d3d4eHh4eHh4eHh4eHh4eHiqaCaRAAAACnRSTlMAikwX3CxpwZ7zIGi5xgAAAZ9JREFUOMt9lb9Lw0AUx2Njqm4iGEqmEnBxslKUdhJctFMVcW5wKZ0CLpJJQRw6iVqQbg3FtPdX+l5+XHJ3796bQj557773fe8ujtOI+6jz5p84dHjTkYD4+RhT9CIRZWRPJr1bChnbY532GhT4oUpbI6HEuqvgIH9544dh9J4/rpr0Ms8oV3zMNT7X1MXSmaznzfHjM4n72moe5n8ryYrW9rKRvgf0S93JA7yKa9lbzUg3keJb8OVCtwkrFmoO4MnsAuj5rGqnZg+GZXUXkl9NjEui9n3YA9XgpMgakLXz6ujMTIgrCkPVv0Jil8KgKQN/wRN69hLcb1vrbR2nQkxwiZTGQ5Teb7TO8PUaS8Q03sE+zkjP8qbjzgJtEhRbV4gnlkOFeM7hDYNdxPbiYFvKSHN6L2NmY5WzMYPtplZdTxncRvn2sI+DHIoug22jWMaA12Y7BrXzrG8BX32XPMDKWVzw1bdMOnH1KNqNi8toqn7JGumZnStXLi0e4tcP6R3I635Nc/mzsMxl9aux9b78UVmn2pve8u6eR50j9c0/ywzyVl5+z84AAAAASUVORK5CYII=");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;animation-name:rotation;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite}.jb-pro-container .jb-pro-icon-screenshot{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEzMzMzMzMzMzMzMzMzNzc3MzMzMzMzNzc3Nzc3MzMzMzMwv5ahDAAAAC3RSTlMAW+8S2UGVwyyZnOTRhEMAAAEfSURBVDjLzZKxbsJADIYdBQpsSCyVMlXAdEuQYGKpWFk6dWHJgsQ7sMDSpUv3PgITAQT0f7ly57ucQ45KXRAZot+/89k+X4ju9KzL4XOhlm3pR0enYrWViSRPXQIQSASkRSkIJEFRimYCuQAHSW89IOv6SH5TCsuAj68Ab1wDzqkAzqoC7AUAPtgsABgkBBgkCJiNHehGok//KRVsHqd+3Dj1/vukt3AH/Jj05s5/AmyZhFVWXDls44iVvfQWkCvgxU6g9ZdJfCLvjJbYaT3GvjOY4mQSG3SJGjhr/Y1Xohp+TGKqqzexZ/1GVGdNCitt6R8zVvb9d+JmKdl8o5sPWbtxT6zFuJcDQtk92MNmYiXHquYlZlVt1j4P6cd7fgHFW7Nhqu29TwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-screenshot:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEz////////////////////////////////////////////////////////NXt0CAAAADnRSTlMAWe+X2TINXUYZvctoYyuS2NgAAAEVSURBVDjLzZKhDsJADIZLCAsEg8WgEGCWGSwCgZxB4MgEAonB8wQEXoBH4BEWXgPJgEBG0mdgR3u77raRYAgnlq+9+/t3TQF+dKbZcJXSYSnzlViT457lRScKmBqILSFA3GoO8S4E+Ex5JiSJ4CbVdyOQdZNomX9D4dl+ko3NC8vFFmhPy8FIsi0ZlwLBW/LY5BxYYreUSgoFAEmhB5Rc9OCbUoXmTmDadQKTn4y6A/XTaoSKdb6KyGU6RJ7eHgpb3ABinAoil303xB6vQnRahNhXvMdre+fzOgxVrokX4jHAnBh8PALU8Eq8BqgTg/vePF8tpuPy9/NFaalSc273RizarYqfkswjifNMQ/TyTGMv4v87L+ks5gqDbc9OAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-play{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzMzMzMzMzNzc3MzMzPz8/Nzc3MzMzMzMzMzMzMzMzLVn6fAAAACnRSTlMA+duduRUwSGSD8toSsAAAAI9JREFUOMvV07ENgzAQhWG3lLSp6MwCViYIRSpG8AiM4FWMaPymDBKESMF/cQ0S136F353vnLuo3gp1kOYEoCXW4LFKIZAnqAXYICeASoAdzgG+cApwgF4EfwF+oDkCqIwA6gnyAKA8AaizQhsBAjzuqUHofInGIQbjRxXjMrTJuHDestR4Bng4eGrN0929PqNfzC6h06weAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-play:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJFBMVEVHcEz///////////////////////////////////////////8Uel1nAAAAC3RSTlMA+rbVFUecgC7rYhEEz+4AAACbSURBVDjL1dMhDsJAEIXhdeiGpKYWQVKDWc8ReojFc4ReAlPFFQazad7lIGkb0jK/WEPSsZ+YN5mZEP5UrZIP0vgE0Kv3oPlIJlAk8AJM4ASYwAkww2+ABfQg0ImgugPYsfNBVl99kA0AsjOArAPQpRTGHiBB8whxM0y+3skXNltsvMYriIWrpWPA80mFJ5qL3gAfB1/tcAt7rzdiV+HEgs1oBgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEzMzMzHx8fMzMzMzMzOzs7MzMz4IlKVAAAABnRSTlMA6xIU1hVqIuOVAAAAMUlEQVQ4y2NgGFYgLS3RAEQziQFZoxKjEqMSaBJpEAkgIw1ZQlBQRAEs4QhkDeIMDgAWx1gMHyIL4wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-pause:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEVHcEz///////////////////////+3ygHaAAAABnRSTlMA7OgSFBXMmAA4AAAAM0lEQVQ4y2NgGFYgLS3JAUQzi6WlJY5KjEqMSqBJpEEkgIw0ZAklJSUDsISikpLQIM7gAJjhWp6XcaOxAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAHlBMVEVHcEzGxsbMzMzMzMzLy8vMzMzMzMzNzc3MzMzMzMxEZ/aQAAAACXRSTlMADPKKKeBxlV6neZ4mAAAArUlEQVQ4y2NgGDZgJhpowCURAJeYpIQENJEkCgWRgCeShAGyjfgl2EqwS7BFToZJiLg4ICTEImdOh0pwRM6cDJcIjpw5E6aDFeh8B5gECBCUYAkKCoMbNXNSOlyCgUEQ4apJJmxIEkjOVWFgxi4RgEsikGQJnEYp4pLA6VxUDyJLIAUJcRLIwY7qXKSIQvOHWCQODzKIleBPPjgTHM4kijNR48oGkajiYUMykwMAAfmZhUjBISQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-record:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMA8gyMLeRw1x2DBpWGN2QDAAAAt0lEQVQ4y2NgGDbgDBpIwCVRAJc4KIgEZM4EwCU2KSEBHySJCcg29iBJGCBLgHUs24FdYlnNYZiESksDXKJALebMaagES8yZw3CJypgzZ2A6WIHOd4BJgABMgh2XBEtpaBjcqDMHs+ESDFyLEK46aMGGkEB2rgQDJ3aJAFwSUSRL4DQKp+VHcTkXxYMoEkhBQpwEcrCjSCBHFJo/1GIO408MOJMPzgSHM4niTNS4skENqnjYkMzkAEgzyFpeX6L3AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-recordStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAOVBMVEVHcEz///////////////////////////////////////////////////////////////////////99PJZNAAAAEnRSTlMAMPndsnZj1CSYPcmL6wsdoU80pOJLAAABu0lEQVRIx5VV26KEIAhMA++p9f8fezatFDPr8LSrjMxwiWlqzRuMYKW0ENH46c3WuGyVLXEduuO83UyK59fl1jX5EEUXD9DOaSh43XEP5zUIdZ4pAecTofVnWSt3ip4rx7N61vjnY1D30CpH4QQR8vsP+RA5Rs3KpjfMU/pMim/LgbvH7DF2F8sU0owqapKLqgnhuGWwImUagn2zhUX6WQQoYkXG9WxSAJd700/ygsCpAoliaDsPiG48GM1X5Ft/06sfp8DrDE+3DpekWjxM6366fgEcnklC+AIIWYQmPEeAaUmjFOnhCLDfxZRH+w1gU5b/DYjfNcyJ0p7dxX8B+FwxQVtvAGB5ig0d5gFA5KbzS91hI8CenvlHflfN/XvzJQnxbBEko1gbvVnPii+FadSVRUEaYylQfJtpLB+aRG4LY/80yKdUbCraM0lozGR4ewZ0Wtnj1iC7hjWKNnjYmR62W15cLlL3+2pyMR09jccyuyUrHKsvthc5xsY1iWJ0Xk3t+2XP7AnWwrAQmBH6asXubmL1Z5Lz6o992jWiu9lnMSiQsK27FS9NxhCumZgB2fTBPFsFolhZr5B/D3o9sJAI6skAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-recordStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEwimP0imPwimP8imPwimP0imPsimP0imfsimPwimP0imPwimf8imPwimPwimPxLmg1rAAAAD3RSTlMA15sisGUvdz3szYwMT8H+hDJEAAABx0lEQVQ4y3WUO08CQRCADxBQchBiMDE24KswFlw0Wtig/oHzUWglJBZWio3GDjUxlhhrEzT+ABMrO2iptLLVRluDggI+xtmdXW73LkxxNzvfzuzszNwZhhDzdOxqaPGgYrgkOgFczh90ezAJQmpL2v6OHYnqk2aWxOTtAnu/O/Y5XNZXmTZjo3ot7aESwLdFeqAM0MoJkMf9ltwVQJ9PcQN0UFIJogvdJgLQVFMsAlxyBaPmVBDCE8W7qd+2SDsx0q4OwhSrCG134W54jDfKLjDNxaL8/9AAMM/solptRnoALBbwEPWYrOEzLnrZsTGoMW+fBHG2SiLPUNI6KMOH8QS/XsCMBYQekIEv7NGZF/Rht2yqmA4i3UG9O0iTqgMfhirDhRdU8XJZqqEO8tDAqje8IIt1r+I5HmBjfD9AxQ1MgJQRpc6GJRALHOAS1WRlhMs4VaSFzwIWzCUF3op71kdNsNs/FDCuA58YqCQl7IhN3WbDnlLtfjnuON515WM17c7w41QPOuBIzDT5wqi0T4ESGV3gjtTjkuPATwHoX9+cPRlmmvJ57YAir2qKy459QL/UhrS/uAu3xf8KiX3DI+b22t6jc9F/qfaum9E1pJ4AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreen{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAALVBMVEVHcEzMzMzOzs7Pz8/MzMzMzMzNzc3MzMzMzMzMzMzMzMzMzMzNzc3MzMzMzMxdHBitAAAADnRSTlMA8AwGYt0aUcg+til5kgmZywUAAAGWSURBVDjL1VM9SwNBEB12IcGkMagxNktQSZFCYimIJAqKpZ3Vco3YBYs0NkKQgBg4ECtLFSFVCGgQrERBsLayPE0Ip7n5De73BdKLTrE3ezPvze6+GYDfsAQKy/Rz0i/OZJjY9XREuohTKulS+ZFGiADfyZXU5uHktI44VH5apDx554aXwJqloiIwiEsStAjCAsRNF1jCmGqa4Vc+BvS4JkjwzyPE6xiwzsxxeTbZxqjkANSWZFkoIj5bQBl4aBDfkPDNpeRRialB+SRAFz8UU1sAaEUjSCDoJ7iukZJ1V+c01bFczM1pWaa+a0Rp7MHn4V8Z1R9vLLCv9WjKdVFfk77JP+bZdz35YAfKXx6KhKp93abUYVbrj49g9aAYSuFCLbPUwzdCsYEWTloXgw1oGwQbENeuKwxzXhxwAADRMFd+zzRc6AAASY6RH8VjUHaXTrlOpDgCUP3gelc01e2d+f16cWbnQ46BGCRNVsWAWQJVw2xGfUXVv2k1OsLfazXqblzS99u1FwKFvBJioXBY2+r82U75Ab7O0ypVV0wKAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreen:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEz///////////////////////////////////////////////////////////////////+GUsxbAAAAEXRSTlMA3clDHfdfDQbsVG00u4Cqkr04dRsAAAGaSURBVEjH7VXLdsQgCPUBAROdjP//s1UTDUxsz3TRTc+wC94bHsLVmP9hkE8LIdvgupt2tFhcpy2CMZyVxNePEoqDp4hwEGz5PTqWoZNzLrmD9riltBEYzzpZQ8bweXy56Qy6Tivsp5JQYtawuMH3eJlSxIJtdSSa4xer4lMB89pK23mKrwjZVpsRzLq35vEE3+r26h6w5EKppcp3fP2lIpTPWJvoXoobeNI1sM3haHvx56tu2sdElJ54GbnPQ7RZ1sCpl8qPEMXBNQ8vN82jNbzLCPzGSDOZj/2Bqd19R1rELIEbDFrUJfKYdlALbDuDMko/hz7t8DqtCfr8h1Vt4rn7eh/6Ph37ch20aW8McsfGCOXzcr+GOlQG1rJ2HSHUDO/4Mu01qVAqTCpCJfgZ3phTS2pKm5aZOMUbs7Q6nk6L8UzRh6W78jH+gD/VRxHokPuNgUGTaPPR+zDR1mrlvcGgwkAVacSbeoN4Z0rb5/6XLrW/2GTLk2NhXHRKzrqAt9cD4rr4ddvae0NAYgOICdZyvPj4UYRf2BdfbB8iWvnTUwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreenExit{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAG1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxi4XDRAAAACHRSTlMAf3WqJmy+7azWNnMAAADNSURBVDjLxZQ9E4IwDIaLfMzCOTDSOz07OjLir5CR0dmJFVHIzzZtnMzbOzcyZHnuaXpJWmO2ji4GhpAzzZeQzw8FKCj1pMHss9OgpwsGOS0YGOcVUMPsfBVkmJoVCBJW0FFB6SFIaMKAlRGDnEiDkuM00lP3SmL6H5QSh+iIr9ZWVWntUV9Z4qWbHAWrhcUYNLC4Wwm3xb1r2mOQYoVn2EKFAVb81KHiQQq6L3vSUoMBUmSzgCKbVeiL3eTp3Odf8H1sxRAZZNZt/Vt8AHcPQbiQQVF+AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-fullscreenExit:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAe4Fzh7MZbKPtN8gpX19xAAAA3klEQVQ4y8XUIQ7CQBAF0CWhKQHDGtQKQFcURUgqEARBED0Aoqp3IKnoATAEW8MNOACmhQYKcyi6uyjmr+aLqXj56bSbVoh/J3HBxcw0ZfA2c3FiQLGeQcWh1lOVDDJTAeCbCgAR6QqCDj0xCEU5Bl2BIALKMwhdKjGILRUYfCIOEynlvABANk64M5jabJxHfJY2I76yzYu/ZCc0s1WbNYAQ3jxqwMoGHoqWGHpUQajEgcYYcKWFtjLE4FGJQewoxODRDQOqKPPcHl9sfzSXa/0L349tEDsOsp/8+2/xAY+BZBY9KhM5AAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAIVBMVEVHcEzKysrMzMzMzMzMzMzMzMzMzMzMzMzMzMzNzc3MzMz8gU00AAAACnRSTlMAL0jMZKt96hGJsSKv1QAAAJ9JREFUOMvN078KQFAYBfCbJEw2q6SUyWxTnsJT2JTJ6D38Gb6n5PpT6BwbuaNfTnz3fEp9fZwAP7czD0MsGCzBYJcEYsGwBEHQQRB0EII1CMAWdAOzyJUvJ4jyDVyZVHKGpj9guEI2IuhaDFadYnCkIm9I+kPgn8t+kI7kOsT72HcwQnJR9Gofy8DrwwtHK8pLzdeALg5fNb6cdJ1fOjOGYrl5CLFcggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-audio:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAJ1BMVEVHcEz///////////////////////////////////////////////8NopmKAAAADHRSTlMAL0TQf2frEaZYt8E+idL4AAAAnUlEQVQ4y2NgoDdgUcAuzr4Hh4TaGQHsBp3BLsG+BoeE2hnsEkCDsEqADMIqATIImwTYICwSEIPQJFhnBjKInUGSUA2CSPCcOcIwB1ki5xRM4iiDDrKEzQlsEuUF2CVY0jbgkDhjMLQkEkj0IM4gQQ1EHMHOOXMiakRpTiQQtXgTA+7kgzvB4UyiuBM17myAM+Pgzmq4MyfO7EwjAAAEf+BAxqI/agAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-mute{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVHcEzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMztXryaAAAAD3RSTlMAHd4P7ztyiy1OnKhdx7uY2gyAAAAB8ElEQVQ4y72Uu0vDQBzHE45C3SJFaSGjUEiRpJRCBifXokkpSv0DfOBrEKxUUSoFH9ClFAUfU7c4OARRCs5WjThIsJuDlLo4ldvPe8SYxGyCt1zgw+dev+8vHPcvYybvfCR2OgUv2CoLdI62bUn3gq5UJxOomZofXPUNrIChJRklfcDSiKK2bYQ6PiCaREk0EQoYPFYa3F73F+DGsBJLmAjBAMBKakG15KAxqIhd2KuK5reRccBDNbqGJhfSlnNc/kBh4OY+vaoR5QrRC0afKgxMrKdXNKI8yxRENpyd+i0VA6wMm5IOBmORCwfAFjGwolofevbuPrvpGhRgpVaqiJflrLuUQQFRToS9l894EMDe7q6yL7/G5wMATc5mQCiAvQo3HAbwLtyYHQZgTxhohgGUa/CP12EA16W2/Ou4ZEj1dNG9oPMkZGiwJWQ8j+huPoJy9Z/XHTfUFSbAURveCtE5px5vs7hQDKS25FSDn2KR5Up1/lRmIHne7BvKd82LMRJbSjr5M40lmaYZ5/PRpiCpizjJyk+CwOGOzACLpSdz02QxkiuRhd8dNOwkV7zl2YX1mcySKJrQiPkXY9klSt6rkJPRwIlmzrcWSGyzHuTb11V/N0y/S6SdwdCR4m/47OIN7XOQCfwJwHGp8IcfyRdBLEZK4Uxp6wAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-mute:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAP1BMVEVHcEz///////////////////////////////////////////////////////////////////////////////9KjZoYAAAAFHRSTlMAbk2o8o0P5TsGnVojFi/XHcV9urLaq0oAAAIQSURBVEjH3ZZZkqswDEXxLM8T+1/rkw0BuwM0f131+IvDyZVk6SrL8p88QCHp8UAnWmoWoG8AwQRN4/vOiqwUuwWqiob646MMhEW+KnMLMIXffgiZoODBusb7kCzjByF7OOszkOyp4amJ7fWVPwCN6BpyWRypvANPCvi7u4aTXe13YI+KkYA5bMRTSMlLnSyGwisSH40B0FJOrKVB6iAw2U7sGgPgQ/DTPQjitCOZT4Q6gWCtGwGFbSM34ENUNSpAKTACmC31rnRgJwjDdkFAJpfkAsZcAJvCSVQB2FaWWKdB/ATMAHwIUYL21lRBZRDiC5AnsBHBUqxEyaraFMoz0AnvHNa6xDWS34FGgNf6PYAEZoCt+BroUWFVbeb5HbCqSvB2cToyca+Adjlycdawt0C/HeyScl1W/w3gsU3aAd7JF8AuAN6isr7NAogXAFeq59Ec7ifAm49hF8wCMWfVNXAeCAkjEGuBr6R5ZGJzBrl4gGniBME+w8aMMyCsNZtfaemnmYaAQ6I3Rz0fnDhHJxc93Vrr7sHWjP3XRtTba2L3EkdFVaPC6YmXxKI9DGF1YPLdiwfD2r37cL5nDVw+uKzU5K27hsXCXPtyC2uyyl0D0p2TY7VaIvFYWU0Dm8TdOXmrVp52HG4lU4K/N38PpS/Kw70dbmb/sC0WCcQwNNzzjrzUj7veUyIIyL/4m/EP8V829O8zh5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptz{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAM1BMVEVHcEzMzMzMzMzMzMzMzMzMzMzNzc3MzMzNzc3MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxDm1AzAAAAEXRSTlMAHqw+E8It/gjxc03jhGDTlgAjE2kAAAI6SURBVEjHpVbZkoQgDBwg3Of/f+12gtfMbK1Yy4NampCju4Ov1y8ruNyyo9fyCibVlNW6vUu29GpWQwTVdPTernqwffHex0WP4Nro3k+PrMKCvew/PcZ95aoNsY9yua+cGxTZsnf2K7ch4CAdGnWwYx/5LgKZCgxGdrhH3BeqNmnwviFXPZbQJmcM25HJ5n7/Pczr2QqksMJfO7BJOHLKLWFdMiL1QXYRwFagMklb4GB1zS7s8Le3fqH7Q28tVLkKdIzeaOJB2OKtY8KfTQCUa4++dNsLbrqpTR7xguHGt8hfg8P+seuaEkNdBjahzOD7g1cHP21SL2LtMNBKMdTRJjffTX1wVgrsEb1ITJU6QknwYJAcQky2cE02NbzPp70KyKggtpu9xM7Ik+CBIqY+8FrYyRUkrs+MEm1TG6tG9LZxNDNFGDue63TYGgIHqUUcuNhvhyZtn5LnlDq3Juxa4noCuX0scErOpNMDCrVcHPCS5rFGuQR9KZpxnB6CQ0ZO+AIBcTPk3UdbTx1L7jLEEHsMW7ZYm8NlIFyxn8+xdL7MURYEhzd5k2N2TabxIAORwC2r00QQfNSgrnqTJfh7cDmDu9ggtV0EZFr7kGu4KAxtNDln406TLwF9iZCIwn9EfjPuncRHYm5x3NfK3cFAS5kWxljSnTFlPHBAUFg5HsCCVOd9cdwXq+027un2QJlMjqISJutCDceRtTTuT4+1Q3HWHR8cu0fh9sGvADTYH9iLah/9nPz5+/MDJnQfoIVoAnQAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptz:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAQlBMVEVHcEz////////////////////////////////////////////////////////////////////////////////////1bZCPAAAAFXRSTlMAeVoYDS1pBiPv4/g6lkzO2qSxvoixscijAAACi0lEQVRIx51W2ZLcIAwcLnPf+P9/NS2wp5xkq0ziF3ZRC3R0i/l8fvi04oxx89n+RBi1sqB38TKw7lw7lNzDa3U0e57bHhJ4d567HlqGC08eLAj9Gv8XD4/OwtsdhlfCW2s9LfWtuNrMhG1uLWP17Xh14LF4m8dx1OJ9jkm85YCYch5JzDVy81on3MFYkpTNYGmHHloYI+aqlNhlh5ZSvmH1AyBUwPcMX+u/clW3XYvA2YgRGXyZIZX6PXv0l3GlV9Jp9FKcK7mytJIg8xEeBdaBtV4P8tAixexnp73tY7ZBkrk9WEL8t7ZUDqtIA3jXa8sODSeUVqw5aztT+g4QeNAgM0PGTA0+EmfVeUvU0CEW4hX+lt/zseE7jJKDSmi0EUKBhr7EAMKPvNjOA9Fz4Yk/CFgcGRSdkYOHCLRxQfzKRN5SB/b5Ot8SzzQiKqcb6ipFdCfi1JI84OBdxzarhJ8RkpxHOQszl7bpn0GpmnXq6R4OfTkwwlyUWzeQg7rSLNhNUzEUEqJF3DMHeeXgqRIaYwHimLKipK8hMZOYVfJ5oKtIFSgXk5z4KcNx3GOIPGYfPigh9YGHBNQKVKbZhxMnqq+OHfWBHARZfWm1dnfSXfJuXInplse8wy39zkisdQ5kuLY+Bpc5hwGiH8Mx1rE24DFaLqXkfrNVkjk+8JPTPF0bUw+R9MCVuA8ks/xDyF/9orMqpBQeiob5RbIbmv7/TxvoX1Oqa914TsYg7QUWx8Y7R89JQY8mY6Dat1G5GARuMOgYHY9cbL1vNvc++fk67olLk4nrQSl7457OPqdeKn+vEwm4LPzW87DyXvqIyei9znHS+cZz9SxV+Qf8nNbjn37NkDx4+PmCXzHOLUMtjgmUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptzActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcEwgmv8imPwimPwhmP8imP8imPwimPwmmf8imPwimPwhmP0imPwimPwimPwimPsimP0imPoLqfILAAAAEnRSTlMADprCJBnU/gXwh3LiUKxAXjJ/ELXKAAACbklEQVRIx5VW2bbjIAwLa1jM9v8/O7Iht+09MwPlpS2VwLZkJ9f1lxVG1joPdZ0u1ZIxurhv8DH6dMpQI5t439GAEc7xYPgTRnAtV7plReRhd5kDP8+fd+wzt70yPhIJzWT7/6DCJCAYLReZPMIuJC4pClSktHqbNpJO1aTmmAme3cvtWs9NSfq52CPhnJNjlbVHwgmWSWGHeQHcKFjj7fygwidf2fa4mbVOuladcnsoDn9/CKKAWf6HEtpANiJvUp9Fgr0SvocPP/sqjOCK9ktpyCAo4Kt/d4n4/6baseNKAt5XrauPN1A4ZLAd30RUI4kNfELVx+yd3lrXYIg1Bp/B/dGs5N8mPsJoVyiwkofQSlm+K9aiwmoQMDoI4wefoK/rhkESrSuV+BR2i6HZH9juLzxCtBmn6rFmB66gNJQwBOSxncT/N3FAlxAoLQfJDy2+6rMLI3aznl9fhOcGSdZzoNhex2K3TXJEVe3M4Zb6QhHuJc5BWakYIqqietcPw6FK+EHofUHRqtLEQ5X8dKVENXXgEpLOpcjwkFI30YFVHE8fyx2ShZJ/ydTKlZwZ4BCOv/af9uMi0DILe4kieynScgPbhai+DRDckTT6N6zJpI3HMghM3BMg+q9pHmwrbR0Q0D5wc0JHPy0E5Ur7Nf3Rk68LnR0NHfO28/T5P4cNr+uLFR7eEdiNxvMRbd5Onlqsis4iIVdme4di3akWOz+3T0aUnFWHa8QZrO51NO69MeLPafrNuBenxel/3d21j8k/jyxf+75OQabFxOtuT94G3Lpjzb0zBn2Dl0ep/waPidQ/p/XB60Dp7e8F/QO7WSJg4zEzdwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-ptzActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAANlBMVEVHcExru/9ru/9qu/9ru/9ru/9ru/9ru/9svP9ruv9ru/9ru/9ru/9ru/9ru/9ru/9ru/9ru/+3uxEqAAAAEnRSTlMA5q0cR/PC/ggSKtN5OIhaa5izIOiAAAACV0lEQVRIx5VW2ZLjMAiMToNu/f/PboNsJ5PaKWv8kKRkWkDTQF6v/zyUfO+JX9sP1dKKd/v2acQcm992kbo1R4il7iHIif0BRNtCUOozH4cikAdt2YfjRLTnzN15/8I85wFCI2xDzlnyMLO7R0aFoTzbFGB+jIkYLkyePvmW8d2fs2ZfZuv8It9s6zvV5uSr2LmKb9oVh37QvpjYOcf8fcO3Cb1jGqOU0SvTTd6X2KUBLgKdLzaiDtE2n+isTh8/+AX7E6/Vh/NNSyfVm10RXIe1nxXRapmsDQB7SMnkmE0IxgqvUn0jteEf1T2CHXgr0gjZllGk1HoJL7lD7fRpD20CgJcwQ6EdSh3lLK0zVfuqz2WvPlPJh7HqnCQ4MysxoAYQE0vHub/toRuqzRy5pEUvbg62MzlJQn1MHBe1x7WSAddpNDSN1c9wRMhKfi2jrICwAIsQvHkD7Al41bOrBNC1Y7QdmSg15LDokGETJB/imxYJKfmFMDqI3FjUkDS3NSEDjBaxknRYSb+4nj4kC43W2OKrkqGB8jV2Fq03YiWbhHQTpUV1mMHXWYf8HlNX7ZUQRC6iwBAIK0r0ILr1UxqKsPattAkhwSIiMl76bT/Ft/TbTy2jHQoM7Cz9isHVMb6GILl0H4DGivbw7xNc8rAtiJn3O/qvD6JT/wgs7Y370ZSdWmbZWEKiG1lXImldW7Q1jGMbZW9tUVKZmGjjGvf+EXAqzWiX5OfFSHVp/zjbfGPc3whdcbTF67V2N1e79qYMru2/AnzVYFsdWFt/+nOypv8vQvoHou4gOtSrG5EAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performance{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTM7OzszMzM3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzW8hQDoAAAAMdFJOUwC/gO8ra6tUQNmVEKtAA1gAAAE4SURBVDjLzZMhT8RAEIWnpS3tXcWdQ6wgOJIKfFdUICv6AyruB5w4EuSJCwRXgUBWkGArLsEi6JVuaZkfxawguSWz/p7azLdtdt97C3ASagp+PpeXPDjHVx7McMWDCBc8qPCZB4m44YFIeOBh+ckCf9z+sCCYqi8WvA/5Nwu26cfA+JRBs4h7WmX/tr9AXcQHAPdgzEPZh5idTQBOZ3zyiModISKQGxZ7dd85E0SKfMGjM7vXeI/5AE5LvrwpcK9IOrQYB5BlCsFIvjzgrkaSjsBZbmC9XsGsAxfn8gKXpL9sSlnQFBwFTTuaKWXgI5Ar+sfHTrW6DUDO+2jEEtCNQ9wL6gNujMvvdFS3eugxGT51fBXxTvF1wLLngbT0BGphKalAy0MQ3Z4Ha2V7UoMFJKkFVAWcvH4B0OJfd9YsTl0AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performance:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwD2qdfrViyAwW2XORBGtSCsD6SyAAABN0lEQVRIx+2VzQ7DIAyDYfxToH7/p10CbQ+T2s33Rb1MijM3/qDG/EurolD9zSNRggBU0hFelMABmenfADhGkJDhGUFGgiX6I1AAQlDgZK/td8ELtQORiTmIq42I2bYdCD8NjzPmYQxO+rbn2S5qzEUF6YjkgcJude56X3s0SoL7LRAeylyaVPiFq0Jyx230mpeXmXVOHssRbhackhCq25Sny++xcBW1n6Snqw6BTgrqRP6kzfDcgmRLGonDWSf2OecwB491dOrEVZpNsxiyiHzWJ0Z+BbBwzaoWVb49HrqVfSkxHen7WNznLhzl8xpQlT3E9oHUtYaufB+7NY9g9ctbjFfj/h1DwXUrzDltMn1Ql9M814EQWPLmEBg4R7JSzpFQxTmSBMkLvJKOhFHfKEEnv3L/+qw3DuMPzAFH9pIAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performanceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAtUExURUdwTBGW2xKV2hKW3BKW2xGW3BKW2xGW3BGW2xKW2xKV3RGW2xGW2xGW3BKW2+P2IvgAAAAOdFJOUwC/gCvzq1RAleURc9VmrA9rXAAAAT9JREFUOMvNkzFLw1AUhU+SxtTahnZyC+IsIeAenDuE/oJQcS/FTYTi6hKcHYpDZ/EXBME95BeURpM0Me39Db4Mgk/u23umcL8kvHfOucBBKEr5eW95xoMjeuBBlyY86NOQBwt654HrPPHAca/YuUHrDQsG9eybBWa1+GLBqvS3LJiNX0vGJw/R0N6LJ+/f6x9I3uwG0D+luRU0FnmdCtBy6ZM7KvQdjgXwJYuNZVNrFfqF8IX+nFm/oBvyS2iZ8OWxgH4u1IZmU4kgfoa5E77c0jwhoTYCbTRFGE7QrXFCveCURkK/2cRBCp2gFYiyWk7Jw4AgXOmQZMAqa9uAeCP+JsViihtb9OKIPtBUuvy8jeqyHRpMhvc5X0W6Lvg60HrPg0DREySOoqQJKRbByRWbExaqlSoVwB0rwCLFwesHquttxhcsa64AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-performanceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTH3G63zE6n3G7H3F633G7H3F633G633F7H3F7HvG7H3G7H3F6xOzy+EAAAAMdFJOUwC/hKbvK0BT2XURZct0z00AAAE3SURBVDjLzZMhU8NAEIX3LiSUNqI1qBMMChFRgYxAd07E4CI6HQwzEUXgKjC4CH5ABAKJyA+oaHqBJO3+KPaYYSZh9nyfyuyXu7l77x3ASSgu+flYX/HgHOc8kC4wwikPMnzhQaTueKAiHvi43bFg0m4OLPBM9sWCjyb9ZsHm8NkwPiUQT8MjfSX/fn+F/C3syJf9YB7oLsDkjIaiHix5QCNbGBmAFPve+3lXi/0viLB3ZnmDz5g2ICry5daAvCbZhSE2oIsFeC35ssJljiQbgZitIY7nIGu4wLG+xBnpL5tClxQhCANR1Q5TSmCCQK7YjftOVbYNUOxot0EsHl0uwHdFfcD14PJLG9W9HfpMho81X0V8MnwdcHvkgS4cBcqVo6QKHQ9B1a6XY1zAcSiIFg6QlXDy+gEd714RcAqEowAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-face{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTL+/v76+vsDAwL+/v7+/v7+/v8DAwL+/v7+/v96T4QgAAAAJdFJOUwBAgSCbs9hZap+hQJoAAADvSURBVDjLY2AYRkAJCAygbEZBQUEBKJtpJhDAOJpA9kSYxESgKphuIaBuhASqyYzESjC2hDRilQBZ64BFgm2qMLPYNCwSkQpAwlMBWYIRzJsKYrKCxZSRncKSDFYzBSNY2MD2MqRhSFgqgClPAwwJBxwSbAk4jGKZDCKZp2JIsEOcOx0ztjQDYL5ENwsYJKrTsMSvGSgepzVg2pE5qSikPRPT8sopBuDod0ATZ54JsbZyBrJgAVAp1Ax2oPXMykjxYQaLA2CMoERUZQDMrgBUCc8CKIdzAvHJhyQJpLQLSu0TCaV2lPwBSu0KQy+LAwBuJj5UbruNggAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-face:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURUdwTP///////////////////////////////////////////////w2imYoAAAAMdFJOUwBAgBvfrFmcw4wrbtGliFoAAAD2SURBVDjLY2AYRkAJCAygbEZBQUEBKJvpDBDAODpA9kGYxEGgKphuIaBuhASqyYzESjBu79yIVWIP0NoCLBIsR4WZJY5gkYiZACRqFJAlGMG8EyAmK1hMGdkp7M4gkus4RrCwBIApFwwJmwlgqsYAQ6IAIrEAwygHHEaxngJbfhRDgg0sxHoMM7Z0AmC+RAPsJ4S5NE5gid8VoHg8sgHTDh/PzM60HkzLc44bgKMf3RKuMwoQ+dNIgswJDAycUDPYjhgwMCsjxYcJLA6AMYISUTkBMLsaUCVqEqAcngPEJx+SJJDSLii1HySU2lHyByi1Kwy9LA4AqflRBKNSA88AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTBCT2xKV2hGY2hKW2xGW2xGW2xGW2xKX3BGX3BKW23povfoAAAAKdFJOUwBAgRybs9hZLG6hrV9tAAAA80lEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTgmZiFViFtBaBywSbEuFmcWWYZGIUgASXgrIEoxg3lIQkxUspozsFJZkEMmxBCNY2MD2MqRhSFgpgCkvAwwJBxwSbAk4jGJZAbZ8KYYEO8S5yzFjSysA5kt0s5YKc6guwxK/baB4XDYB045Vi4pCyrMwLa9aYgCOfgc0cY5VEGurViIJMhcAlULNYF9mwMCsjBQfZrA4AMYISkRVBcDsCkCV8CqAcrgWEJ98SJJASrug1L6QUGpHyR+g1K4w9LI4ALk0RHtSETFcAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-faceActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAhUExURUdwTHzD63zE6n7H7H3F7H3F633G63zF7H3G7H3F7H3F68TinBIAAAAKdFJOUwBAgR+Z31ipwW4yAjb9AAAA+UlEQVQ4y2NgGEZACQgMoGxGQUFBASibaRUQwDhaQPZCmMRCoCqYbiGgboQEqsmMxEowTmmZiFViFtBaBywSrMuFmSWWYpGoUgASXgrIEowgHtsKEJMDLKaM7BSWYLCaJRjBwloAploxJKwUwJSXAYYE2KUMVRgSrAFgKhTDKPbFIJJ5OYYEG1iIfRlmbGkVwHyJBlhWCDNrrMASvxageFw6AdOOqKCklrQuTMuzlhiAo98BTZx5FcTarJXIgglApVBr2ZYaMDArI8WHKSwOgDGCElFZBTC7GlAlvBKgHK4FxCcfkiSQ0i4otS8klNpR8gcotSsMvSwOAIs+RIlIrewIAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-object{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA51JREFUaEPtmT1oFEEUx9/bnRALGxE70btkZjcR7QMiRisRbCzEQvxCLGyEhCDRBC/RoNaWFgYLFUSwUBAUDKKFFqIQ3OzNJpfCyspS8HaejNyG87J7t7N3l03gttydefP/vbcz8+YNwhZ/cIvrhx5A3hFMjEAQBDwMwzOmAi3LWhBCLDTr5/t+ycSubdtLnPOncX1iAfQAlmXdNBmkru2RVgBSSspg+5kQ4lRjv1iAIAgqRFTIMIju0i2AWNvrAKSUowDwLqP4tACm9rWmbABCiFxXKimlhu0BtPFHtdc19wj4vn/Wtu3XnPOfWVByA5BSngCAuwCwryb8Hud8EhGNltANB/B9/5BlWXcA4GCMx/8g4jjn/H7aaGwYgOd5BxhjcwCgPd/0QcRVAJhM2l3rO3cdQEq5GxFvEdH5VsLX7aKIH8MwLLmu+zapb9cAFhcXt/f3988AwJip8Jj2L2zbLg0MDHxr/NY1gCAIpohIJ2V2BwC0iUd9fX2lQqFQ6cQvtJbICSGOxHhlVOdKjuPMl8vlqzrxI6IdWUAQ8Um1Wp0ZGhryiYghYrUtgDQionxJT0al1IwGkVJeBAANvieNDQB4joglzvmilHIXAIwrpX67rmuUamfKcxoTvnoQ3/dP27Z9g4j2J4C81KBCiC9LS0suY2yMiC7rttoZuQBEQhsiopfT6wAwUvv+hjE2XSwWP0kpRxBxgohO1kPmDhAHEgTBUaVU1XGc98vLy8eVUhoqbpPLPwIx6/wqEV2ovX8AALzZ/Ng0EWgQGa1iLQ8xPYCUyx8YHjt7EWjm2I7sAy0it7ERqNWEDkeiklIJg8pFWwC1ZC6SM9NYc1oXgcaiVlxVYmVlZW8YhlMAcCnFvOkEQPqqRBqASLTneTsZY3pjapZSpwF4Y1nW7ODg4Ie202kTgGiwSqWyrVqtXgOA6Zj0OhGAiF4R0azrup87dqDJAlA/eLlcnkDESQCI0us4gOdEdNtxnK+tfkHjA027AJEgKeUVANBROVd7p3fixwAwJ4T43kp4nR2zylynAOoE/JuAiPiDcx6kFb5pAEwF5zKJ2xXZrH9uc6BTUD0AAGh639Xo6bjUI+G/NglS+p3Y87wCY+y/2ozJSGkuRDLekQFjbEexWPxVryfpjuxhllKhNtwtAESc55xHx9M1hsR0WlcOlFLHTLyv26Ypi5hesyql5oeHh3VBeN2T6TxgCtXN9j2Abno3je0tH4G/KbtRT7VUKs8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-object:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAwdJREFUaEPtmTuIFTEUhv8fLSxsFrET3UIQRHtBRNdKBBsLsRBfiIWNoIisD1xfqLWlhYuFCiJYKAgKLqKFFqIgoiBoYWVlKbjwy4HMJXs3M5Nk7tzZCzfdvZPk/F9OHicnxIgXjrh+jAG69mCpByStB3AgQ+AcybmqdpJmEvv9SvJhqE0QwBm4lGikqD4VAaCMvh+R3NffrgzgB4DJDCPWpC2AYN+LACTtAPAqU3wsQGr/pikPgGSnO5Ukgx0DNJhRzZp27gFJBwE8J/k7B6UzAEl7ANwEsNEJvwVgmmTSFjp0AEnbANwAsDUw4v8AnCZ5O9YbQwOQtBnAdQA28nXlp/NG8HT1G7cOIGkNgKsADtepDnx/C2CG5Muytq0BSFoJ4DKAUxnC+5s8cSCf+j+0CXDBjAJYNgAA6+Keg7AwpldyAXqBHMmpwKjYyThJclbSSQBWfyIT5IF5kuQ3SctJzjcCiBHhxUu2GM24gRx1IGtj+gDw2I34Z0mrbXcC8JdkUqidFecEAj4fZD+A8wA2lYA8NVCSHyRtcGvouKtrg9EJQKHVB7Ht9ByALe7jCwAXSb6TZP+dAbC3D7JzgBDITgDzJF9L2u2gQoectV0yAD7IEffjDgC7plaVJQdgYotdLOYSMwaI2gETr51jD1SN6qDOgSobw/WAywltLxRVhBIxi7LxInaxUCHHFvmCpFkorWInoR8LheqsA2DB3LGIRdPIAznBXC1AIVrSKncwVYXUMQB2Sl8h+SYQOCanVaIBPJAVAM5aqBAIr6sAnjnh78s82aoHQkYlWYwz7YXXIQCLRK+R/Fg3BYcO4HnlhPPKIfefTYX7dm8m+aVOuNdP+1OoSow79KzKL5LfY4UvGYBUwZ0s4qYiazzY7RRqCtfZIm4qfGBrAEDle1e/0FDoUTKvUxiT3gfsaWlBbibFUsyDiKSkBK9nf4LkH19P2RvZ3cxUIVoEmCVZXE97DFXPrJY52JUy+lY3Ji2S8cxq4i3jsahk3QdSodqsPwZoc3Rj+h55D/wH5CHfQHNA9EUAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-objectActive{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA9JJREFUaEPtmU+IE1ccx7+/N7O0BwUn24UeRKOd7LalvS+I6HoSwYsH8SCtLf1jEqWoyLJVMfEP6nlNIgi6eFChCB4UChaU0h7aQ1GQrnFSdw9e/JNs9LTFzPvJZI27m8xk5k02m13I3sK+33vfz/u9N+/7fo+wzP9ometHF6DTGfTMQF+mYNqwd6sKlFLcK++P3WsWF8nkUyr9stAeTcXN624xrgDVAUgcVxmk1lbaGPIFyFocou9fSonYzvo4d4BsYQLgaIhB0EYA174bAFaNWpuFhrthxDsxQQCMrKXUPwGbvfr2BSglYh39UjmwXYCwy2kh4jqegd5M/itdaL8+i5vPwwB1DMDIWNuJcBbA545wAs4V4+YIiJQ+oYsOYGTzGwniDIANLjP+hkCHiglzNGg2Fg3AGB3/Ugj9NBO2+4ujSSaMeJ2uc+PbDhC5aK1GhU6CeY+/8IZz9E+CnSomBn7zim0bQF/m4QqbPkgDOKgufH4EAzdZaKny3vUP6vtqG0BvtnCUwY4p01oFcOIZuCJ7elKvvo9OtLyESMN7IzeViA3VC3TshiY4Wkz2j0Uyj3+aMX5shAIhuia4kn6Z+DSPu6xjiCotAQQRMeuXaJJYpqsgOetbcBV8TZA+ANxgotRU3Hz48SWr7800DjHL6VJyQMlqh/I5jYZvFsTI5XcRa0cA/sLDv98iieMv98X++Sj7aEBCPwjwD9W2LNMdAqhJnQMyc5D9DGBwRhzukK4fK/647q9I1hoE6DDAO+ZBdh6gEaQ3V9hi27JS3tf/u3Hhv20kpQPldsgthQw0fOcnpc3fVK2EhosEmE33x9LJwKxM54Lj/Ap0SeoCBPz+qVw7uxnwmdQFOge8R1n0DDg1ISaxqSbJy0oE2pTvqhStbOK5FQy2ka6vOTVkoL6o5VaVWHX+yVoh7KMAvvPbNq1mQNmNBgGoiV55fry3R+jOweRpqQMBMO4wxImp5Cd/tGynVQBqg0UvT3z4eroyDMaxenvdHIBvE/GJYnzgb69MtjUDboMa2ceHCTQCoGqvPQBuSOZT5WT/fb8luOgANUFGxkoQYVja+Lq2iQm4ygKnS3tj//oJf9+PamUuzBJqJsY59Jz/9wh6+iJpFoIKXzIAqoI7solbFdksvmN7YKGgugAMNH3vqp9pN+vhtq5VMqT2PpAbjwrW59VmVAYL8iASCfdGBvm/bpQPrCvP1eP+RpYrXA5XKgTaBkA0Voqb1eupL4DToFo5YLlVZfadtkHKIqrPrFLIsXL8s0k3LaHuA6pQ7WzfBWjn7Abpe9ln4C11Qo9Pmb2aMgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-objectActive:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA8hJREFUaEPtmU1oU1kUx//nvthx4cJqX3RgGLsQBNG1tq8Z7axkwM0sxIX4hbhwIygibfPMeyapunY5iymzGAURZjEDAwoVm8SPhSiIKAjtQtAmiooLiyb3yEtNm76+5L37kjQp5C2Te879/+65H+eeS1jlH61y/egCtDuCNSOQyH3cWirNHVIXKO6kYvqdenbxqVlLxS8J8Txp6Ne9bDwBnA5IiIRKJ5W2LDHsB2BmC6zqmxk3UkP6AbedJ4CZfTsNcL9qJ077VgHU8r0MID5V2EsCk2HEBwbIFdT8M/aGBkgaelt3KtOB7QKEnU9NsGt7BMyp2cOa4P8tY3M+DE/bAC7cK+xnxmUwtjvCCXzFHtRHiEhpC11xADOTjwG4BCLDY8S/MvhsyoheDRqNFQMwc292QmppEPb7i6MZgEdqna7V9i0HSNx/95MscRLgo/7CXS0IWS6VrFRs8+1ati0DSEzm18kesgGcURa+3OAfSGklY5ueuP9qGYCZzceZySKC1gQAgPkvXtNjpXatn258CmlYSOSSg/qwW+B8usH9SSM6Ec/lTxM7iR/3hgEh4Jpk2Kkh/UVikiP2MBUbAggiYjFfchajtB0QM/fuOFg64D8H8QHQTQ3CsowNT8cffdLnPn8+KyXPpWKb1FLtYJ0tbbU84asCyRYOEmiMwTtq+P63JJAYH9AfxTOFbUTlNXRyPlmTdpsAKlIXQZyDDJJGGbx7/l++BSHM5EDfg7HMm91CRM6B+fdqyA4AWA5iZd/++hWymDaid+OZ/G8EGgXB65DrhAi4Jw3NsORj5VRC4A8AW+tN2Q6KwKJM54b2HcD3EtMFCLojqVw7uxHwGdVQ992OjkC5JqSJPRXw2qlEsMpFo1OonMx9/7gE211z8iirLC1qeVUlxrLvtwgU4wBO+K2bpgCoVSX8ASqiRx682hgp/jBaL6UOBsC3pMTFdCyaaUI6HRyg0llicnptqWfdeTBMd3pdH4D/kyQupgf7HtaKZIj7gDpAdefxzOw5IjECoJxeewEQ6CZBpmwj+thvCq44QEWQmZ09BYjzLHFk4SQm/C2KIm3/svGZn/AFP+qVucYi4BbmbLnOb5rGr+zB6MugwjsGQFVwWxZxoyLr2bdtDTQLqgsAQt33LvdIe6UenvNaJUQqJ3Hi3ut+KSNLajMqfQV5EAnzRuZoEF8ivfZw74dqPbXeyP4MVSoE0DoAmkgafeXrqS+A08CpHBDTPpXRd9oGKYuoPrNqETlhD/w446Ul1H1AFaqV7bsArRzdIL5XfQS+AaeCtE+rbksUAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusion:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-occlusionActive:hover{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-logSave{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAA1RJREFUaEPtmT1oFEEUx9/bFLFKJzG2WiknZObFxlO8RtFC8SuFWlrYGBtRRNCghV9YmFQWgoVaaAS1ULRRRKvbmYBBQezVYBOIGFMkT0ZuYXPufOxdspuDO7jibmfe/H/z3sy8eYvQ4R/scP3QBSjbg8EemJyc3La4uHgUETcx82YAWNum+N8A8IWZrxLR41ZtBQForUeY+Xarg/j6MfMVIrroa5f13AuglOJWDLfQ56aU8mzefk4ApdR9ADiW12ir7RFxXAgxkqe/FUBrvYeZXzQbY+bh3t7ed5VKZTrPQM2eNHYQ8VGGjTtSypOhtq0AcRyPIeKptCEppTfkbAM3AxhbcRwfyYJg5nEiCvKEVZBS6hUA7EoEIeJ+IcTz0JlpbpcFYNrYIBDxlhDijG88lwd+IGJ/YoCZ1xPRd5/BUA/Mzc31VavVWRcEM18jovOuMV0eWLL7tBM+RoBS6isAbEzERFFUHRwc/JD8dnjishDikg2iSIAJADiU8uhdIjqRFuZYEweI6Gmuc8AWs6EhVK/XR3t6eg4zMyKiEQ/MvOSwQsS3iHhhZmbmY61W++UIp/dSyu2FAmit3zDzTjMoItaFEFuVUt8AYCB0ElLtZqWUfYUCZHlQKXUQAJ60AAC2Nbhia8AWglprAoB7jYQwmGXVACSKzRqJomgLAJjvBh/JqgPwCQ7dRAoPIZ/w5HkXIHQGQlOHvCd56PjdEOpoD6TShT/MfD19OXeFQCPnOYeIaxYWFiaGhoZGQ9Pv5nZthVA6XWjkOsMJRGj+b/IhIURtVQCkIUJvYKUCONLf/+67tjuw+T+rLlTYLmSDCDmwbOIbF6CgC1Vba8B3m3JBuMQXDuC4iGQy+MSXAhAKESK+NAAfRKj4UgFsEHnElw5gBGit9wFAUqy9kbco1vY2Gsfxsha2QrbV1K42gIimAPDvw8zTRLQuy0ZhpcU8AMZ7zPws1ee1lHJ3LoDlLu7mAcioZFuLvYWV130AU1NT/fPz8zuyqtWIuFcI8TKXBxo7QaEvOCyQD6SUx20T4K33F/iKKVOj7yrqBWhsiSv6ki8zNBBPCyHGfKEXBGCMrMBr1mZtPxHxEzN/jqLoYbr07oIIBvDNRFnPuwBlzXwybsd74C95KWhPrxIhsgAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-logSave:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAthJREFUaEPtmTuMTUEYx3//TrWdeLRUJCrReISGUBCvLVAqNGiEiASh8IoClUKyBQqPBAWhsREqnYRE9NgoV0T3yci5m9mzc2bmnHvvOXuTO8ktbs7MN//ffPP45hsx4kUjrp8xQNcezPaAmW0EDgFrgLXA0j7F/wG+AlckPW5qKwvAzE4At5p2ktHusqTzGfUWVEkCmJk1MdygzQ1Jp+u2iwKY2X3gcF2jfdS/I8l5O7tUApjZTuBlwNIk8E7STHYvQMCTzs6jgI27ko7l2o4B3AaO+4YkJadcVcdlAGfLzA5WQGR7IgbwGtjuCdoj6UXuyJTrhQBcnQjETUmnUv3FAH4CyzwDKyX9SBnM9QAwIWk2AXFV0tlYnzGAebtPP9OnEPkNWO2J2STpQ+9/xBOXJF2ogmgT4Amw3xNyT9JRX1gEYq+kZyGIoQGY2UXgAPyPt5x4V8qH1TRwDvgk6XdkOr2XtLltgLfA1qLTj5I2mNl3YEWDdTQraaJtgAVryMz2AU8bAFC1Boc5hYKbgJmtB6aKgDCbZdEAeLuOWyPrit+qFMmiA0gJrjr4yu1an0Ip4Z6Hss6hMUBu6FD3JB9PodwRGGkPeOHCX+CafzmPDUAR85wBlrgwQ5LbUueV3AHsaxGbmR8uOAGTPYga8f+0pG2LBWAOosYNrFOAqith6L5bdQee81optG7nHIjE8DlnVlB8EVa3AxCJ4VMAleJbB2gAERXfCUANiKT4zgAyILLEdwoQgcgW3zlAIWA30EvWXq+bFBvESTzQxFZqSyqdAe7i7xIAvTIjaXnIRmupxZoAznvPvTZvJO2oCzDQ5G5NgPKbRGWyt7X0egrAzFwedktFtnqXpFe1PFAsxLYfOEIaH0g6UjUAyXx/i09MQY2pq2gSoPDEsB/5QuJPSnLrMFqyAAqIQT+zloX9Aj4DX4CHfuo9RpANkBqJrr6PAboa+V6/I++Bf0in3kCazcMZAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoom{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAkUExURUdwTMDAwL+/v7+/v7+/v76+vr+/v7+/v7+/v7+/v7+/v7+/vxtcv/AAAAALdFJOUwBVdZCpGdZE7C3B0wnY6AAAAV9JREFUOMt1lDtPwzAQx20ghGwVsHVJhQRDlsywWKqEULsw8FhRJ2iWiglGGJvFCw8xIVVCSEwkKU25L4ftpOHs2Cclsu7v370smxCLecRh+xOH8Ja5kGEs/6dtYf1XONcWZurbwwRCQjYZ9l7uHAPAOBHpI1QC/QSY9g84ldmnAn7Z3htwsfZnvSe54eJd5hlcC7gccxTwSETZEr5+714vLRdfkFraVNtetXLpR7ha+mkHCV1Y/q8ZOW8AgDkecsIaAEIcGbIGyLUq4KcBYl0o7QAB4FZACBMrQKpaJOCZQqyAIhgayYEpgD1DZghXCvBTNJFKmCvgzmhcCEsBwMjSRx6BslYftRX0JLYKrAsLqzDC54EFMwvy58QhMM8hFNq0UpwET+sLC9/4BmEBTytyRCIbDoAEiR1Qp1dbRxfoyv9g3ogaKVuXhVZZbtqX6Ez6H23PxG4CM259QDwt/h8ABfK8nDqSAAAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoom:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwCCyreU7KZVRCDaZnETLwj6WaYVAAABUUlEQVRIx5WV2Q6EIAxFoVBWxf7/184AOnGUsvTBqDmXrqRCzNou1kwGtyZIQNuiD0P6evWTURFUMtIoPO+iVoGIZPkMqkdKA0jZgoJ6suQc2EoiGBldOoQ9HSDk5+GTs1Fqo9IlcEpvNv3qv0MBhSalIFSv3+MCJCY8fUaCxasycrMu9dp5VTUhubXZ6CqsAvn66ZAsx+e8fON37oT3bZ4aiRU0kDlavGSrQI95HPBZACt8FuCL16IruBVkzBeBW+CLYHvyfiDQd96IpHpOMqP++fAq9VMQ7rwrM5+6gjwG/3y/D/m8ylPYpvpAeqO7DfvwMPO9D6jnBabG56YFZx77fEjD+9AyLdYEhp8nxoNh5wmJtfY8AS+wzIZZrJNcC4h3wV8IH1p87Iyfnc6XVaAd7ICHAsebw97zgDSxZ/yvViiPuYUfTe650knM2+7Ywz9yOCklzohLOwAAAABJRU5ErkJggg==") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoomStop{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAzUExURUdwTP///////////////////////////////////////////////////////////////8/RimEAAAAQdFJOUwDjmTC6Y0KBVakX8s8iC3JYR1wyAAABVUlEQVRIx62V2baFIAiGcwJRS97/aU/Zbtht0VzrcJOuvl/AAabpXy1RF0F/m2h2PX5mzucEuO9gMon1MY7KlG8w4LImC1XFQmxDGVkm1DYpXi0qS1gXTEGzKoqNS1ajAxPqJDikFLcFS+aukYJffRfXnAj9kYUXFVi86wzzPjuCFRXBwS3KaC/Pt02Ww7uf1jz3BVYtX/OsyDQFDn7yswPXb+Ovs39eJJWwxrOXV4thgC+//QBf/uMAXwAa4AuRBvgdWR58CB2B+eaRG5e8QO7Jn2sIAvzhbdsDnXzev8q0BengGXv8EciH3y1CY5++yI/BRNx82g/La7lc7b0Am/tUC6n3HoZ4SbDyy5BgzSNivV6wbPXeIPOpHlOU+CjkTQKvQOpXdRdJvn+5xttWQa4EZUOzluonT6+q72X6Zb0+T/lNhQd7hg9vm8LWUhW5gT4iN7c/0ZUo8Q3AttYAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-zoomStop:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAqUExURUdwTBKV2hGW2xKW2xKW2xKW2xGV3BGW2xGW3BGX2xKW3BKW2xCX2xKW2yDN61kAAAANdFJOUwCAVKxm3T/DmhrxKw97YQBGAAABaklEQVQ4y2NgIA6wGqCLMCqAqV4HdIm9F0Ek22UMM9hiG4AkVzQDA+cmx+YyJJnDlw8wMNQaNpfevbu0QgxJgrN3JQPD3VvhjU57kESnOZqvvXuJgcEXxVFMEkDt1w11gZYwoVgue3d5SzaQSgCydZG1TMkBU8vBuq9guBcqNBNDgj0GQrMEb0CVYEmA2ViANRQZ795tQPZduADciXcVUNSthGu4hGrAJawagBIXsWoAClzGqgEocRWrBqDIrQNQDTPRXZ8A0cB41wBNQgGiQfbubTQJAagGDB0GIA0OsnevbkCTCADiu4J374ahW34JqAEIbiXMRJOAgkvMKJYgJBx6717AKiF4F4eOu+jxgQCXGHBIKPDgkBC8JYCURJDtQHYWN4oEcvpZiyR+C9lZtkgSKKG1CyGOGrxItleixjrcLFBWRAYcMIkG9NQMiY67N7AlcxAQwMwA6SBxM2xZQ3jtVRPsRQ83sg8ACMIUxzzE8wsAAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-close:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTP///////////////////////////////////8kBMKEAAAAJdFJOUwCt0igUwJdJePGbgLgAAADcSURBVDjL1ZMxEoIwFESTCaOWFDapqeicnAALTiANnaWlnVewDTMW/7b+aCAb8jkAVIHN2/lsNkrt73lf8M08nnF1pAYFR/dFmAAx7SIoi4iDbRrWDMAuQFzmmxAGbjjJgjj6dCjMCAND/o8RWQMzUgIRKYE/wsC5TJIRR74rBUZaqqXwLZEXT0WTDGwLW1aavJWQir9qadw++NgykWoMNtcykh8Q5EECgr5C+jjpGjHjPGhPU5eVzyfPJitfnUyhPg6ywMKZ7BygcYcsPCj1Kc8uXYPqpeSLs6PnC4w8S+8OJ9MLAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-narrow{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-narrow:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABS1JREFUaEPVmgmoVVUUhr+fosKC5ogGSsqIpKQwMqjIBpsICdMGQ7ISo4wGApugJCoxLClssElpNEuaI5okKjOI5onKhEQrSiKiaKA/Vu3zOu+8c88593qvj7fgcO99e6/h33udtdda+4khThri9tM1ALaPAQ4Btso9GwNfAyuBb7JHUnzvCq0XANuTgePSs00bFr0L3BuPpF/b4BswtSMAyfDzgYPXRznweQ7ID53IaguA7ROBGcC4TpRV8IRL3SNpVrtyGwOwfVYoaaHgW2AZsBT4CliXnt+BXYBd02d8D5c7rIWc+ZJigRpTIwC2rwauKZH6NLBA0jONNQK2jwJOAU4FtijwPgpMkRTga6kWgO2XgSMKkjoyvGiN7d3SwpxZGHsVOEPSmjoElQBsPwScVhAyR9LMOsHtjNu+Hri8wPMBMF7SqipZLQHYvgq4tsA8S1KZK7Vjb+lc24cDsfJ5ul/SlLYBpGjzVIFxsaTw2Z6R7S2BnwoKpkta0Epp6Q7YfqEQKl+XdGjPLM8Jtn088GzuT9/FOyjpkzL9AwCkQ+qB3OSPki9GOrBByPZ1wBU5ZY9LOrkpgDcLJ2zlFvYCke2NgFcK58VkSRFU+lG/HbA9EYg4nNE7kkb3wsg6mSWesEhSMdz2z0Zt3wRcnBO+wVc/0217WMpesyRxraSd6nbgfWC/NOm3OP4lRVowKGQ73sXIeDMaJ+nFvDF9LmQ78pR8nr5U0oRBsTwpLQnn8yTlPeR/F7I9HngiZ/A0SXcPJoDQbftHIHOjLyTt1WoHLgBuyQ3uKylC6KBS8UyS1C/w5F3oRuDSnLWbSPqzynrbkSdFfG6nGstE3inpkbrVsf0Y0OfKVQAWA5OSwJWS9mggPEJuhN5OaLWkqBMqyfZ9QF/4rALwPHBskrZC0pgGwsPFRtbNazH+s6TIfeoA3JqqwH/nVQG4HTg3SVsnadsGwiMznQYMiM91vKmgP7tuXjHVrgJwGXBDTuC2g3kGZHbYXhQVWva7CkCkyg/nAIyRtKJuhXo9bjuSyOFJzypJ2ff/XCqHdBTwXs6gmZLm9NrAKvm29wY+zc1ZKGlqnqeYzH0PbJ8mLJM0dpABTAfuyNkwVdLCKgDFGniEpC8HC4TtaONEOyej4cUaubgDFwLzcgw9q4HrFsV2pAxvANuluaWpfRHAAUAUNJsmpmhrjJa0tk5ht8dtRx0cITqjAYlcv5c49zJHKI2QmtEG3wXbcaDGwZrRamBsmTuX1cTxEi8H8qnEJElLur3KreTZfgk4Mjc+Q9L8svmtuhLnAUWGka06A90EZjt6UdGTymiJpCxHG6CqqrHVL4lKnMMkRaXWE7J9M3BRwXUmSnqrlcK61uLbwIEF5lGSou3XVbJ9F3BOQeglkgJUS2rS3P0F2LwgYYKkaKWvN9neGYgT//QSYR9Hil/lurUAQqjtOMyK9UEkWXMlfdgJihTn45CK1GCHChmVIBoBSCBixU8qKIrdmRuXG5LigqOWbO+fjA7jizsbqcxsINLsfJ3REkRjAAlEVQUWbfDncjc0UYz/BewJjCh8lgGNZvJsSctt75MabLUg2gKQQBydSrwyn63dgRYTrpQUdwR91BRE2wAyDbYPSk2nuPOKVW6X4t15EHhS0mdlzE1AdAygsFpxwX0CEJcUuwM7lhgULhW5VRgeHYnXmiBuAeI2SXHN272b+gKgzRKQrYFIBNdI+qOJwQ13oi8/68oOdGpYO3xpJ2LV/45zI/t3hSEDoBXYIQ/gH99H3EBePlczAAAAAElFTkSuQmCC") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-expand{background:url("data:image/png;base64,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") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-icon-expand:hover{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAABYZJREFUaEPVmXmoVVUUxn8f0WRzVkJlIWVGUmIJWWADTVaUldFclCnSQBQYNv1RSCWGVFRSlkRh0GBS2YBmJWGJUBHNNJiYWQSZfwTRxBfrce5jv/3Ovefc++4z3oKLD/fea61v7bXXdMQQJw1x/ekKANs7AOcA44Ddkt/2wJbk9z2wTNIP3TLcgADYvhw4q/gFiLq0ClgBLJf0Ud1DZfs6AmD7UuA64JiBCAf+BR4GHpH0TSe82gJgO6x9PXBqJ8JanPktQABzJP3VDu/aAGzfADzYhPnPQLjFUuA7YHPx+xPYHxhZ/Bt/nw4c14TP+8CFkjbWBVELgO2ngfD3nJYBCyW9Wldg7LN9cigKXATsnJ39HTi+7tuoBGDb3VI852P7QOBO4MoSGaMlfVtlmJYAbL8HHJsxmSdpdhXjdtZt3wPcWnJmhKRfWvFqCsD2PODm7PBdksJiXSfbJwDvZIzfAM6VFG+plEoBFNHmlezEc5LCZweNbEcSjMSX0iJJ09sFsDwLlaslTRo0zRPGts8AXstkTZYUOvWjfjdQJKnFyc7PgCmS1m0NACHD9t3AbYm8yNiT6wKIWJxm2JmSFm4t5QsA2wBvZ/liuqRFuR59bsD2JcAzyaYPJU1oV3nbF8fjAw4DlnTy8Es8YYWk06oAPJnF5I6sb/tF4LxC2CZJ+3VghGFAVK17JmdHSVqf8uq9AdtR+kZNsmOx4Y9I/5KiLGiLbEc4jLDYQ5IqE2aZANvxFqNwbNBNkh5oBiAsFpZr0FJJU9vSvNjcRQBRPKbhfJWkE5sBuBe4JVmcIemJ/xNAyLb9a+JGGyRF+dFLqQstAK5J1g6XFCG0berWDRQA8py0raR/et2z8YftiD4RhRq0naS/W2lv+2wgIkNEm5x630BRaufrj0l6tso6tpcAqSuPkfR1GYAoic8sFtZJOqgG8w+Ao6r2NVnfKCn6hJZkO4+MkyStLgPwJhB1etBaSRNrMA8XG1u1r8n6Fkl7VJ21/VDRBTa29nHt9A28AJxf7NosaXgN5lGZzgD2rdpbsh6N0MyqcyWl9si0Y0sBPA6kVd/wTnJAKNTlR/wUcEUCdBdJ0bX1UArgPmBWsnGipLVVFipb7zKAKCJHFXL6uV0K4NpiMtDQabakaGrapm4BsH0o8GWiwEuSosbqpRRARIQNyVq/rFcXSRcBxBt5NJHbvJQo812gVmOdA+sigCifpyX8x0v6uPQGCgDRWEeD3aCOemDb0XrGm9q1KKevrnt7jX22DwFiqLBX8X8rJZ2S88n7gSOBaGiiMg3aBEyQ9FO7Cgx0v+1ooiJEN2iapEhqfaispcyLuo5uYSAAbEf7GBOJBkXpcETZdKIMwN7AGiAtJS6QFIluq5DtlcBJdVy52VglD6nBa6ykLwYbge05wB2JnLckNUqcfuJbDbbS0qJxcJik6NQGhWzfD9yYMI9ucKqkGByXUtVo8ceSOmecpE+6jcB2XsqEiFmS5reSVQVgNNBbeyeMwioxSh8w2Y6GPzJ+2os0+H4OxPtr6rqVzbbtMcBXJZpGkTVf0qedoCjifCSpq4B9WvBoCaISQDC2PQKIN5GPF6MqjCuOsqOpn6bK2R5fKB3K75QpHpPouUAkvrTPaAqiFoACRMxpwuqNniE3WsxrXk++0EQzHr3rwVGSZP+WGTymD3MlrbEdLerzdUDUBtCQaDvSeXyQKPPZTrwpztwuKS1h4tZrgWgbQALkaOCy4hNrn1FHTRTxdmKQ8LKksjdWC0THADK/jtQ/BQhQBwBl7Wi4VNRWoXhMJN6tA7TJTSyQFJ95u/OlPlfEdjzOALI7EIVgzEfb+nyaGSh3p4h+Pd1jV26gjiUHuqe4ibD6eklRqvfQkAHQzABDHsB/7aMVT352GH8AAAAASUVORK5CYII=") no-repeat 50%;background-size:100% 100%}.jb-pro-container .jb-pro-menu-icon-text,.jb-pro-container .jb-pro-quality-icon-text,.jb-pro-container .jb-pro-scale-icon-text,.jb-pro-container .jb-pro-speed-icon-text{font-size:14px;min-width:30px;height:20px;line-height:20px;cursor:pointer;text-align:center}.jb-pro-container .jb-pro-speed{box-sizing:border-box;text-align:center;font-size:14px;color:#fff;width:90px}.jb-pro-container .jb-pro-menu-list,.jb-pro-container .jb-pro-quality-menu-list,.jb-pro-container .jb-pro-scale-menu-list,.jb-pro-container .jb-pro-speed-menu-list{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;overflow:hidden;width:-moz-max-content;width:max-content}.jb-pro-container .jb-pro-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-quality-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-scale-menu-list.jb-pro-speed-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-quality-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-scale-menu-shown,.jb-pro-container .jb-pro-speed-menu-list.jb-pro-speed-menu-shown{visibility:visible;opacity:1}.jb-pro-container .icon-title-tips{pointer-events:none;position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:rgba(0,0,0,.5);border-radius:4px}.jb-pro-container .icon-title{display:inline-block;padding:5px 10px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container .jb-pro-quality-menu{padding:8px 0}.jb-pro-container .jb-pro-menu-item,.jb-pro-container .jb-pro-quality-menu-item,.jb-pro-container .jb-pro-scale-menu-item,.jb-pro-container .jb-pro-speed-menu-item{display:block;height:25px;line-height:25px;margin:0;padding:0 10px;cursor:pointer;font-size:14px;text-align:center;width:50px;color:hsla(0,0%,100%,.5);transition:color .3s,background-color .3s}.jb-pro-container .jb-pro-menu-item:hover,.jb-pro-container .jb-pro-quality-menu-item:hover,.jb-pro-container .jb-pro-scale-menu-item:hover,.jb-pro-container .jb-pro-speed-menu-item:hover{background-color:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-menu-item:focus,.jb-pro-container .jb-pro-quality-menu-item:focus,.jb-pro-container .jb-pro-scale-menu-item:focus,.jb-pro-container .jb-pro-speed-menu-item:focus{outline:none}.jb-pro-container .jb-pro-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-quality-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-scale-menu-item.jb-pro-speed-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-quality-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-scale-menu-item-active,.jb-pro-container .jb-pro-speed-menu-item.jb-pro-speed-menu-item-active{color:#2298fc}.jb-pro-container .jb-pro-volume-panel-wrap{position:absolute;left:50%;bottom:100%;visibility:hidden;opacity:0;transform:translateX(-50%) translateY(22%);transition:visibility .3s,opacity .3s;background-color:rgba(0,0,0,.5);border-radius:4px;height:120px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-wrap.jb-pro-volume-panel-wrap-show{visibility:visible;opacity:1}.jb-pro-container .jb-pro-volume-panel{cursor:pointer;position:absolute;top:21px;height:60px;width:50px;overflow:hidden}.jb-pro-container .jb-pro-volume-panel-text{position:absolute;left:0;top:0;width:50px;height:20px;line-height:20px;text-align:center;color:#fff;font-size:12px}.jb-pro-container .jb-pro-volume-panel-handle{position:absolute;top:48px;left:50%;width:12px;height:12px;border-radius:12px;margin-left:-6px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:before{bottom:-54px;background:#fff}.jb-pro-container .jb-pro-volume-panel-handle:after{bottom:6px;background:hsla(0,0%,100%,.2)}.jb-pro-container .jb-pro-volume-panel-handle:after,.jb-pro-container .jb-pro-volume-panel-handle:before{content:"";position:absolute;display:block;left:50%;width:3px;margin-left:-1px;height:60px}.jb-pro-container.jb-pro-fullscreen-web .jb-pro-controls{width:100vh}.jb-pro-container.jb-pro-fullscreen-web .jb-pro-play-big:after{transform:translate(-50%,-50%) rotate(270deg)}.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading{flex-direction:row}.jb-pro-container.jb-pro-fullscreen-web .jb-pro-loading-text{transform:rotate(270deg)}.jb-pro-container .jb-pro-contextmenus{display:none;flex-direction:column;position:absolute;z-index:120;left:10px;top:10px;min-width:200px;padding:5px 0;background-color:rgba(0,0,0,.9);border-radius:3px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu{cursor:pointer;font-size:12px;display:block;color:#fff;padding:10px 15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 2px rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu a{color:#fff;text-decoration:none}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span{display:inline-block;padding:0 7px}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span.art-current,.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu span:hover{color:var(--theme)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:hover{background-color:hsla(0,0%,100%,.1)}.jb-pro-container .jb-pro-contextmenus .jb-pro-contextmenu:last-child{border-bottom:none}.jb-pro-container.jb-pro-contextmenus-show .jb-pro-contextmenus{display:flex}.jb-pro-container .jb-pro-extend-dom{display:block;position:relative;width:100%;height:100%;display:none}.jb-pro-container-playback .jb-pro-controls{height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center{flex:1;display:flex;box-sizing:border-box;justify-content:space-between;font-size:12px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time{box-sizing:border-box;flex:1;position:relative;height:100%}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-inner{width:300px;height:100%;overflow-y:hidden;overflow-x:auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time{position:absolute;left:0;top:0;height:15px;width:1px;background-color:red;text-align:center;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-current-time-text{position:absolute;box-sizing:border-box;padding:0 5px;width:60px;left:-25px;top:15px;border:1px solid red;height:15px;line-height:15px;cursor:move;background-color:#fff;color:#000;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll{position:relative;width:1440px;margin:0 auto}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-hour{width:1440px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.half-hour{width:2880px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.ten-min{width:8640px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.five-min{width:17280px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-scroll.one-min{width:86400px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-time-list{position:relative;background-color:#ccc;height:48px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-day{height:100%;overflow:hidden}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-one-wrap{height:8px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-wrap{height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-controls-playback-btns{display:flex;align-items:center}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one{float:left;width:1px;height:8px;margin:0;cursor:default;position:relative;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.active,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.active{background-color:orange;cursor:pointer}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one.start,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one.start{background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-one:hover .jb-pro-playback-time-title-tips,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-second-one:hover .jb-pro-playback-time-title-tips{visibility:visible;opacity:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips{pointer-events:none;position:absolute;left:0;top:100%;visibility:hidden;opacity:0;transform:translateX(13%);transition:visibility .3s ease 0s,opacity .3s ease 0s;background-color:#000;border-radius:4px;z-index:1}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips.jb-pro-playback-time-title-tips-left{transform:translateX(-100%)}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-title-tips .jb-pro-playback-time-title{display:inline-block;padding:2px 5px;font-size:12px;white-space:nowrap;color:#fff}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute{float:left;position:relative;width:60px;box-sizing:border-box;border-top:1px solid #999;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:left;height:25px;line-height:25px}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child{border-left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:first-child .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:first-child .jb-pro-playback-time-hour-text{left:0}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour:after,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute:after{content:"";position:absolute;left:0;top:-8px;width:1px;height:14px;background-color:#999}.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-hour-text,.jb-pro-container-playback .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-center .jb-pro-playback-time-minute-text{position:absolute;left:-13px}.jb-pro-container-playback .jb-pro-playback-expand.disabled .jb-pro-icon-expand,.jb-pro-container-playback .jb-pro-playback-narrow.disabled .jb-pro-icon-narrow{cursor:no-drop}.jb-pro-container-playback .jb-pro-control-progress-simple{position:absolute;box-sizing:border-box;left:0;top:-2px;width:100%;display:flex;flex-direction:row;align-items:center;height:8px;cursor:pointer}.jb-pro-container-playback .jb-pro-control-progress-simple:hover{top:0;align-items:flex-start}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner{height:100%}.jb-pro-container-playback .jb-pro-control-progress-simple:hover .jb-pro-control-progress-inner .jb-pro-progress-indicator{transform:scale(1);visibility:visible}.jb-pro-container-playback .jb-pro-control-progress-inner{display:flex;align-items:center;position:relative;height:50%;width:100%;transition:all .2s ease;background:hsla(0,0%,100%,.5)}.jb-pro-container-playback .jb-pro-progress-hover{display:none;width:0}.jb-pro-container-playback .jb-pro-progress-played{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;width:0;background-color:orange}.jb-pro-container-playback .jb-pro-progress-indicator{visibility:hidden;align-items:center;justify-content:center;position:absolute;z-index:40;border-radius:50%;transform:scale(.1);transition:transform .1s ease-in-out}.jb-pro-container-playback .jb-pro-progress-indicator .jb-pro-icon{width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.jb-pro-container-playback .jb-pro-progress-indicator:hover{transform:scale(1.2)!important}.jb-pro-container-playback .jb-pro-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700;white-space:nowrap}.jb-pro-container-playback.jb-pro-fullscreen-web .jb-pro-controls .jb-pro-controls-bottom .jb-pro-controls-playback-time-inner{overflow-y:auto}.jb-pro-zoom-control{cursor:grab}.jb-pro-performance-panel{position:absolute;box-sizing:border-box;z-index:10000;left:0;top:0;padding:5px;font-size:10px;background:rgba(0,0,0,.2);color:#fff;max-height:100%;overflow-y:auto;display:none}.jb-pro-performance-panel .jb-pro-performance-item{display:flex;align-items:center;margin-top:3px;color:#fff}.jb-pro-performance-panel .jb-pro-performance-item-block{height:10px}.jb-pro-tips-message{position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(180deg,rgba(0,0,0,.8),hsla(0,0%,100%,0));overflow:auto;box-sizing:content-box;display:none}.jb-pro-tips-message:before{color:hsla(0,0%,100%,.3);content:"X";font-family:Arial,Helvetica,sans-serif;font-size:40px;left:0;line-height:1;margin-top:-20px;position:absolute;text-shadow:2em 2em 4em #000;text-align:center;top:50%;vertical-align:middle;width:100%}.jb-pro-tips-message .jb-pro-tips-message-close{position:absolute;z-index:99999;right:0;top:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.jb-pro-tips-message .jb-pro-tips-message-close .jb-pro-tips-message-close-icon{width:20px;height:20px;border-radius:10px;cursor:pointer;background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAeUExURUdwTM3Nzc7Ozs7Ozs3Nzc3NzcrKys3Nzc3Nzc3NzePZJxkAAAAJdFJOUwCtKdPBGAmNTt3jdDcAAADfSURBVDjL1dOxDoIwEADQgwR07GTCZtI/IGHgAzBhM9EPkMTB0Y3V0ZXIcn/rtRR6pefgSKeSu3ellyvA9lZ/5F9p/3K7PZY8oPG5BD6MpPUSgIITzdIStifAshjRQV1PCFT8TxaicTzzwEwINOEdHVmDmcTAkRhMhMAp7iQRjcMtDhCp8SA1v0ARGIIK/gnkv0p1OBTS4QRUIpE7DiYYXTBrzcld3JIrAarXrps4AVNwRSZgExoJmIyAaAdsShUMn/JF2fh4YEkpAcgvnuwYCIb6EbbbP4PsDfLD2dD6Av1qTvAQlzUTAAAAAElFTkSuQmCC") no-repeat 50%;background-color:#fff;background-size:100% 100%}.jb-pro-tips-message .jb-pro-tips-message-content{overflow:auto;padding:35px;box-sizing:border-box;width:100%;height:100%}.jb-pro-tips-message .jb-pro-tips-message-content .jb-pro-tips-message-content-item{font-size:14px;color:#fff;text-align:center;line-height:1.5}');class Ih{constructor(e){var t;this.player=e,this.TAG_NAME="Control",this.extendBtnList=[],((e,t)=>{e._opt.hasControl&&e._opt.controlAutoHide?e.$container.classList.add("jb-pro-controls-show-auto-hide"):e.$container.classList.add("jb-pro-controls-show");const i=e._opt,s=i.operateBtns,r=`\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
00:00:00
\n
\n
\n
\n
\n ${i.playbackConfig.showPrecisionBtn?`\n
\n
${Ah.narrow}
\n
${Ah.expand}
\n
\n `:""}\n
\n `;e.$container.insertAdjacentHTML("beforeend",`\n ${i.background?`
`:""}\n
\n \n
\n ${i.loadingIcon?`\n
\n ${Ah.loading}\n
${i.loadingText}
\n
\n `:""}\n ${i.hasControl&&s.play?'
':""}\n ${i.hasControl&&s.ptz?`\n
\n
\n
\n
\n
\n
\n ${i.ptzMoreArrowShow?'\n
\n
\n
\n
\n ':""}\n
\n
\n ${i.ptzZoomShow?'\n
\n
\n \n \n 缩放+\n \n
\n
\n \n \n 缩放-\n \n
\n
\n ':""}\n ${i.ptzApertureShow?'\n
\n
\n \n \n 光圈+\n \n
\n
\n \n \n 光圈-\n \n
\n
\n ':""}\n ${i.ptzFocusShow?'\n
\n
\n \n \n 聚焦+\n \n
\n
\n \n \n 聚焦-\n \n
\n
\n ':""}\n ${i.ptzCruiseShow?'\n
\n
\n \n \n 巡航开\n \n
\n
\n \n \n 巡航关\n \n
\n
\n ':""}\n ${i.ptzFogShow?'\n
\n
\n \n \n 透雾开\n \n
\n
\n \n \n 透雾关\n \n
\n
\n ':""}\n\n ${i.ptzWiperShow?'\n
\n
\n \n \n 雨刷开\n \n
\n
\n \n \n 雨刷关\n \n
\n
\n ':""}\n
\n
\n `:""}\n ${i.hasVideo?`\n
\n
${Ah.narrow}
\n
电子放大
\n
${Ah.expand}
\n
${Ah.zoomStop}
\n
\n
\n
\n
00:00:00
\n
${Ah.recordStop}
\n
\n `:""}\n\n ${i.hasControl?`\n
\n
\n
\n ${i.showBandwidth?'
':""}\n
\n
${i.controlHtml}
\n
\n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.normal?r:""}\n ${i.playType===_&&i.playbackConfig.showControl&&i.playbackConfig.controlType===Q.simple?'\n
\n
\n
\n
\n
\n
00:00
\n
\n
\n ':""}\n
\n ${i.playType===_&&i.playbackConfig.showRateBtn?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${s.close?`
${Ah.close}
`:""}\n ${s.logSave?`
${Ah.logSave}
`:""}\n ${s.performance?`
${Ah.performance}
${Ah.performanceActive}
`:""}\n ${s.aiFace?`
${Ah.face}
${Ah.faceActive}
`:""}\n ${s.aiObject?`
${Ah.object}
${Ah.objectActive}
`:""}\n ${s.aiOcclusion?`
${Ah.occlusion}
${Ah.occlusionActive}
`:""}\n ${s.quality?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${s.scale?'\n
\n
\n
\n
\n
\n
\n ':""}\n ${s.audio?`\n
\n
\n ${Ah.audio}\n ${Ah.mute}\n
\n
\n
\n
\n
\n
\n
\n
\n `:""}\n ${s.play?`
${Ah.play}
${Ah.pause}
`:""}\n ${s.screenshot?`
${Ah.screenshot}
`:""}\n ${s.record?`
${Ah.record}
${Ah.recordStop}
`:""}\n ${s.ptz?`
${Ah.ptz}
${Ah.ptzActive}
`:""}\n ${s.zoom?`
${Ah.zoom}
${Ah.zoomStop}
`:""}\n ${s.fullscreen?`
${Ah.fullscreen}
${Ah.fullscreenExit}
`:""}\n
\n
\n
\n `:""}\n
\n
\n
\n
\n
\n
\n
\n
\n `),Object.defineProperty(t,"$poster",{value:e.$container.querySelector(".jb-pro-poster")}),Object.defineProperty(t,"$loadingBg",{value:e.$container.querySelector(".jb-pro-loading-bg")}),Object.defineProperty(t,"$loadingBgImage",{value:e.$container.querySelector(".jb-pro-loading-bg-image")}),Object.defineProperty(t,"$loading",{value:e.$container.querySelector(".jb-pro-loading")}),Object.defineProperty(t,"$loadingText",{value:e.$container.querySelector(".jb-pro-loading-text")}),Object.defineProperty(t,"$play",{value:e.$container.querySelector(".jb-pro-play")}),Object.defineProperty(t,"$playBig",{value:e.$container.querySelector(".jb-pro-play-big")}),Object.defineProperty(t,"$recording",{value:e.$container.querySelector(".jb-pro-recording")}),Object.defineProperty(t,"$recordingTime",{value:e.$container.querySelector(".jb-pro-recording-time")}),Object.defineProperty(t,"$recordingStop",{value:e.$container.querySelector(".jb-pro-recording-stop")}),Object.defineProperty(t,"$pause",{value:e.$container.querySelector(".jb-pro-pause")}),Object.defineProperty(t,"$controls",{value:e.$container.querySelector(".jb-pro-controls")}),Object.defineProperty(t,"$controlsInner",{value:e.$container.querySelector(".jb-pro-controls-bottom")}),Object.defineProperty(t,"$controlsLeft",{value:e.$container.querySelector(".jb-pro-controls-left")}),Object.defineProperty(t,"$controlsRight",{value:e.$container.querySelector(".jb-pro-controls-right")}),Object.defineProperty(t,"$volume",{value:e.$container.querySelector(".jb-pro-volume")}),Object.defineProperty(t,"$volumePanelWrap",{value:e.$container.querySelector(".jb-pro-volume-panel-wrap")}),Object.defineProperty(t,"$volumePanelText",{value:e.$container.querySelector(".jb-pro-volume-panel-text")}),Object.defineProperty(t,"$volumePanel",{value:e.$container.querySelector(".jb-pro-volume-panel")}),Object.defineProperty(t,"$volumeHandle",{value:e.$container.querySelector(".jb-pro-volume-panel-handle")}),Object.defineProperty(t,"$volumeOn",{value:e.$container.querySelector(".jb-pro-icon-audio")}),Object.defineProperty(t,"$volumeOff",{value:e.$container.querySelector(".jb-pro-icon-mute")}),Object.defineProperty(t,"$fullscreen",{value:e.$container.querySelector(".jb-pro-fullscreen")}),Object.defineProperty(t,"$fullscreenExit",{value:e.$container.querySelector(".jb-pro-fullscreen-exit")}),Object.defineProperty(t,"$record",{value:e.$container.querySelector(".jb-pro-record")}),Object.defineProperty(t,"$recordStop",{value:e.$container.querySelector(".jb-pro-record-stop")}),Object.defineProperty(t,"$screenshot",{value:e.$container.querySelector(".jb-pro-screenshot")}),Object.defineProperty(t,"$speed",{value:e.$container.querySelector(".jb-pro-speed")}),Object.defineProperty(t,"$controlHtml",{value:e.$container.querySelector(".jb-pro-controls-item-html")}),Object.defineProperty(t,"$playbackTime",{value:e.$container.querySelector(".jb-pro-controls-playback-time")}),Object.defineProperty(t,"$playbackTimeInner",{value:e.$container.querySelector(".jb-pro-controls-playback-time-inner")}),Object.defineProperty(t,"$playbackTimeScroll",{value:e.$container.querySelector(".jb-pro-controls-playback-time-scroll")}),Object.defineProperty(t,"$playbackTimeList",{value:e.$container.querySelector(".jb-pro-controls-playback-time-list")}),Object.defineProperty(t,"$playbackTimeListOne",{value:e.$container.querySelector(".jb-pro-playback-time-one-wrap")}),Object.defineProperty(t,"$playbackTimeListSecond",{value:e.$container.querySelector(".jb-pro-playback-time-second-wrap")}),Object.defineProperty(t,"$playbackCurrentTime",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time")}),Object.defineProperty(t,"$playbackCurrentTimeText",{value:e.$container.querySelector(".jb-pro-controls-playback-current-time-text")}),Object.defineProperty(t,"$controlsPlaybackBtns",{value:e.$container.querySelector(".jb-pro-controls-playback-btns")}),Object.defineProperty(t,"$playbackNarrow",{value:e.$container.querySelector(".jb-pro-playback-narrow")}),Object.defineProperty(t,"$playbackExpand",{value:e.$container.querySelector(".jb-pro-playback-expand")}),Object.defineProperty(t,"$ptz",{value:e.$container.querySelector(".jb-pro-ptz")}),Object.defineProperty(t,"$ptzActive",{value:e.$container.querySelector(".jb-pro-ptz-active")}),Object.defineProperty(t,"$ptzControl",{value:e.$container.querySelector(".jb-pro-ptz-controls")}),Object.defineProperty(t,"$ptzBgActive",{value:e.$container.querySelector(".jb-pro-ptz-bg-active")}),Object.defineProperty(t,"$ptzControlCircular",{value:e.$container.querySelector(".jb-pro-ptz-control")}),Object.defineProperty(t,"$ptzArrows",{value:e.$container.querySelectorAll(".jb-pro-ptz-arrow")}),Object.defineProperty(t,"$ptzExpand",{value:e.$container.querySelector(".jb-pro-ptz-expand")}),Object.defineProperty(t,"$ptzNarrow",{value:e.$container.querySelector(".jb-pro-ptz-narrow")}),Object.defineProperty(t,"$ptzApertureFar",{value:e.$container.querySelector(".jb-pro-ptz-aperture-far")}),Object.defineProperty(t,"$ptzApertureNear",{value:e.$container.querySelector(".jb-pro-ptz-aperture-near")}),Object.defineProperty(t,"$ptzFocusFar",{value:e.$container.querySelector(".jb-pro-ptz-focus-far")}),Object.defineProperty(t,"$ptzFocusNear",{value:e.$container.querySelector(".jb-pro-ptz-focus-near")}),Object.defineProperty(t,"$ptzCruisePlay",{value:e.$container.querySelector(".jb-pro-ptz-cruise-play")}),Object.defineProperty(t,"$ptzCruisePause",{value:e.$container.querySelector(".jb-pro-ptz-cruise-pause")}),Object.defineProperty(t,"$ptzFogOpen",{value:e.$container.querySelector(".jb-pro-ptz-fog-open")}),Object.defineProperty(t,"$ptzFogClose",{value:e.$container.querySelector(".jb-pro-ptz-fog-close")}),Object.defineProperty(t,"$ptzWiperOpen",{value:e.$container.querySelector(".jb-pro-ptz-wiper-open")}),Object.defineProperty(t,"$ptzWiperClose",{value:e.$container.querySelector(".jb-pro-ptz-wiper-close")}),Object.defineProperty(t,"$qualityText",{value:e.$container.querySelector(".jb-pro-quality-icon-text")}),Object.defineProperty(t,"$qualityMenu",{value:e.$container.querySelector(".jb-pro-quality-menu")}),Object.defineProperty(t,"$qualityMenuList",{value:e.$container.querySelector(".jb-pro-quality-menu-list")}),Object.defineProperty(t,"$scaleText",{value:e.$container.querySelector(".jb-pro-scale-icon-text")}),Object.defineProperty(t,"$scaleMenu",{value:e.$container.querySelector(".jb-pro-scale-menu")}),Object.defineProperty(t,"$scaleMenuList",{value:e.$container.querySelector(".jb-pro-scale-menu-list")}),Object.defineProperty(t,"$zoom",{value:e.$container.querySelector(".jb-pro-zoom")}),Object.defineProperty(t,"$zoomStop",{value:e.$container.querySelector(".jb-pro-zoom-stop")}),Object.defineProperty(t,"$zoomNarrow",{value:e.$container.querySelector(".jb-pro-zoom-narrow")}),Object.defineProperty(t,"$zoomExpand",{value:e.$container.querySelector(".jb-pro-zoom-expand")}),Object.defineProperty(t,"$zoomStop2",{value:e.$container.querySelector(".jb-pro-zoom-stop2")}),Object.defineProperty(t,"$close",{value:e.$container.querySelector(".jb-pro-close")}),Object.defineProperty(t,"$zoomControls",{value:e.$container.querySelector(".jb-pro-zoom-controls")}),Object.defineProperty(t,"$performancePanel",{value:e.$container.querySelector(".jb-pro-performance-panel")}),Object.defineProperty(t,"$performance",{value:e.$container.querySelector(".jb-pro-performance")}),Object.defineProperty(t,"$performanceActive",{value:e.$container.querySelector(".jb-pro-performance-active")}),Object.defineProperty(t,"$faceDetect",{value:e.$container.querySelector(".jb-pro-face")}),Object.defineProperty(t,"$faceDetectActive",{value:e.$container.querySelector(".jb-pro-face-active")}),Object.defineProperty(t,"$objectDetect",{value:e.$container.querySelector(".jb-pro-object")}),Object.defineProperty(t,"$objectDetectActive",{value:e.$container.querySelector(".jb-pro-object-active")}),Object.defineProperty(t,"$occlusionDetect",{value:e.$container.querySelector(".jb-pro-occlusion")}),Object.defineProperty(t,"$occlusionDetectActive",{value:e.$container.querySelector(".jb-pro-occlusion-active")}),Object.defineProperty(t,"$contextmenus",{value:e.$container.querySelector(".jb-pro-contextmenus")}),Object.defineProperty(t,"$speedText",{value:e.$container.querySelector(".jb-pro-speed-icon-text")}),Object.defineProperty(t,"$speedMenu",{value:e.$container.querySelector(".jb-pro-speed-menu")}),Object.defineProperty(t,"$speedMenuList",{value:e.$container.querySelector(".jb-pro-speed-menu-list")}),Object.defineProperty(t,"$logSave",{value:e.$container.querySelector(".jb-pro-logSave")}),Object.defineProperty(t,"$playbackProgress",{value:e.$container.querySelector(".jb-pro-control-progress-simple")}),Object.defineProperty(t,"$playbackProgressTip",{value:e.$container.querySelector(".jb-pro-progress-tip")}),Object.defineProperty(t,"$playbackProgressHover",{value:e.$container.querySelector(".jb-pro-progress-hover")}),Object.defineProperty(t,"$playbackProgressPlayed",{value:e.$container.querySelector(".jb-pro-progress-played")}),Object.defineProperty(t,"$playbackProgressIndicator",{value:e.$container.querySelector(".jb-pro-progress-indicator")}),Object.defineProperty(t,"$playbackProgressTime",{value:e.$container.querySelector(".jb-pro-playback-control-time")}),Object.defineProperty(t,"$tipsMessage",{value:e.$container.querySelector(".jb-pro-tips-message")}),Object.defineProperty(t,"$tipsMessageClose",{value:e.$container.querySelector(".jb-pro-tips-message-close")}),Object.defineProperty(t,"$tipsMessageContent",{value:e.$container.querySelector(".jb-pro-tips-message-content")})})(e,this),e._opt.extendOperateBtns.length>0&&e._opt.extendOperateBtns.forEach((e=>{this.addExtendBtn(e)})),e._opt.extendDomConfig&&e._opt.extendDomConfig.html&&this.addExtendDom(e._opt.extendDomConfig),t=this,Object.defineProperty(t,"controlsRect",{get:()=>t.$controls.getBoundingClientRect()}),Object.defineProperty(t,"controlsInnerRect",{get:()=>t.$controlsInner.getBoundingClientRect()}),Object.defineProperty(t,"controlsLeftRect",{get:()=>t.$controlsLeft.getBoundingClientRect()}),Object.defineProperty(t,"controlsRightRect",{get:()=>t.$controlsRight.getBoundingClientRect()}),Object.defineProperty(t,"controlsPlaybackTimeInner",{get:()=>t.$playbackTimeInner&&t.$playbackTimeInner.getBoundingClientRect()||{}}),Object.defineProperty(t,"controlsPlaybackBtnsRect",{get:()=>t.$controlsPlaybackBtns&&t.$controlsPlaybackBtns.getBoundingClientRect()||{width:0}}),Ph(e,this),((e,t)=>{const{events:{proxy:i},debug:s}=e,r=e._opt,a=r.operateBtns;function o(e){const{bottom:i,height:s}=t.$volumePanel.getBoundingClientRect(),{height:r}=t.$volumeHandle.getBoundingClientRect();return oa(i-e.y-r/2,0,s-r/2)/(s-r)}if(pa()&&i(window,["click","contextmenu"],(i=>{i.composedPath().indexOf(e.$container)>-1?t.isFocus=!0:t.isFocus=!1})),i(t.$controls,"click",(e=>{e.stopPropagation()})),a.play&&(i(t.$pause,"click",(t=>{r.playType===_&&r.playbackConfig.uiUsePlaybackPause?e.playbackPause=!0:Ya(a.pauseFn)?a.pauseFn():e.pauseForControl()})),i(t.$play,"click",(t=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:Ya(a.playFn)?a.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))}))),i(t.$playBig,"click",(t=>{r.playType===_&&e.playbackPause?e.playbackPause=!1:Ya(a.playFn)?a.playFn():e.playForControl().then((()=>{e.resumeAudioAfterPause()}))})),a.screenshot&&i(t.$screenshot,"click",(t=>{t.stopPropagation(),Ya(a.screenshotFn)?a.screenshotFn():e.video.screenshot()})),a.audio&&(pa()&&(i(t.$volume,"mouseover",(()=>{t.$volumePanelWrap.classList.add("jb-pro-volume-panel-wrap-show")})),i(t.$volume,"mouseout",(()=>{t.$volumePanelWrap.classList.remove("jb-pro-volume-panel-wrap-show")})),i(t.$volumePanel,"click",(t=>{t.stopPropagation(),e.volume=o(t)})),i(t.$volumeHandle,"mousedown",(e=>{e.stopPropagation(),t.isVolumeDroging=!0})),i(t.$volumeHandle,"mousemove",(i=>{t.isVolumeDroging&&(e.volume=o(i))})),i(document,"mouseup",(()=>{t.isVolumeDroging&&(t.isVolumeDroging=!1)}))),i(t.$volumeOn,"click",(i=>{i.stopPropagation(),na(t.$volumeOn,"display","none"),na(t.$volumeOff,"display","block");const s=e.volume;e.volume=0,e._lastVolume=pa()?s:1})),i(t.$volumeOff,"click",(i=>{i.stopPropagation(),na(t.$volumeOn,"display","block"),na(t.$volumeOff,"display","none"),e.volume=pa()?e.lastVolume||.5:1}))),a.record&&(i(t.$record,"click",(t=>{t.stopPropagation(),Ya(a.recordFn)?a.recordFn():e.recording=!0})),i(t.$recordStop,"click",(t=>{t.stopPropagation(),Ya(a.recordStopFn)?a.recordStopFn():e.recording=!1}))),i(t.$recordingStop,"click",(t=>{t.stopPropagation(),Ya(a.recordStopFn)?a.recordStopFn():e.recording=!1})),a.fullscreen&&(i(t.$fullscreen,"click",(t=>{t.stopPropagation(),Ya(a.fullscreenFn)?a.fullscreenFn():e.fullscreen=!0})),i(t.$fullscreenExit,"click",(t=>{t.stopPropagation(),Ya(a.fullscreenExitFn)?a.fullscreenExitFn():e.fullscreen=!1}))),a.ptz){if(i(t.$ptz,"click",(e=>{e.stopPropagation(),na(t.$ptzActive,"display","flex"),na(t.$ptz,"display","none"),t.$ptzControl.classList.add("jb-pro-ptz-controls-show")})),i(t.$ptzActive,"click",(e=>{e.stopPropagation(),na(t.$ptz,"display","flex"),na(t.$ptzActive,"display","none"),t.$ptzControl.classList.remove("jb-pro-ptz-controls-show")})),t.$ptzArrows.forEach((s=>{if(r.ptzClickType===K)i(s,"click",(i=>{i.stopPropagation();const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(nt.ptz,fo(s)),setTimeout((()=>{t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),xi.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(nt.ptz,Ri)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let r=!1;i(s,"mousedown",(i=>{i.stopPropagation(),r=!0;const s=i.currentTarget.dataset.arrow;t.$ptzBgActive.classList.add("jb-pro-ptz-bg-active-show"),t.$ptzBgActive.classList.add(`jb-pro-ptz-bg-active-${s}`),t.$ptzControlCircular.classList.add(`jb-pro-ptz-control-${s}`),e.emit(nt.ptz,fo(s))}));const a=()=>{r=!1,t.$ptzBgActive.classList.remove("jb-pro-ptz-bg-active-show"),xi.forEach((e=>{t.$ptzBgActive.classList.remove(`jb-pro-ptz-bg-active-${e}`),t.$ptzControlCircular.classList.remove(`jb-pro-ptz-control-${e}`)})),e.emit(nt.ptz,Ri)};i(s,"mouseup",(e=>{e.stopPropagation(),r&&a()})),i(window,"mouseup",(e=>{e.stopPropagation(),r&&a()}))}})),r.ptzZoomShow)if(r.ptzClickType===K)i(t.$ptzExpand,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Li),setTimeout((()=>{e.emit(nt.ptz,Ri)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzNarrow,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Pi),setTimeout((()=>{e.emit(nt.ptz,Ri)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let n=!1,l=!1;i(t.$ptzExpand,"mousedown",(t=>{t.stopPropagation(),n=!0,e.emit(nt.ptz,Li)})),i(t.$ptzNarrow,"mousedown",(t=>{t.stopPropagation(),l=!0,e.emit(nt.ptz,Pi)}));const d=()=>{n=!1,l=!1,e.emit(nt.ptz,Ri)};i(t.$ptzExpand,"mouseup",(e=>{e.stopPropagation(),n&&d()})),i(t.$ptzNarrow,"mouseup",(e=>{e.stopPropagation(),l&&d()})),i(window,"mouseup",(e=>{e.stopPropagation(),(n||l)&&d()}))}if(r.ptzApertureShow)if(r.ptzClickType===K)i(t.$ptzApertureFar,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Bi),setTimeout((()=>{e.emit(nt.ptz,Di)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzApertureNear,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Ii),setTimeout((()=>{e.emit(nt.ptz,Di)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let h=!1,c=!1;i(t.$ptzApertureFar,"mousedown",(t=>{t.stopPropagation(),h=!0,e.emit(nt.ptz,Bi)})),i(t.$ptzApertureNear,"mousedown",(t=>{t.stopPropagation(),c=!0,e.emit(nt.ptz,Ii)}));const u=()=>{h=!1,c=!1,e.emit(nt.ptz,Di)};i(t.$ptzApertureFar,"mouseup",(e=>{e.stopPropagation(),h&&u()})),i(t.$ptzApertureNear,"mouseup",(e=>{e.stopPropagation(),c&&u()})),i(window,"mouseup",(e=>{e.stopPropagation(),(h||c)&&u()}))}if(r.ptzFocusShow)if(r.ptzClickType===K)i(t.$ptzFocusFar,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Mi),setTimeout((()=>{e.emit(nt.ptz,Di)}),1e3*r.ptzStopEmitDelay)})),i(t.$ptzFocusNear,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Ui),setTimeout((()=>{e.emit(nt.ptz,Di)}),1e3*r.ptzStopEmitDelay)}));else if(r.ptzClickType===Y){let p=!1,f=!1;i(t.$ptzFocusFar,"mousedown",(t=>{t.stopPropagation(),p=!0,e.emit(nt.ptz,Mi)})),i(t.$ptzFocusNear,"mousedown",(t=>{t.stopPropagation(),f=!0,e.emit(nt.ptz,Ui)}));const m=()=>{p=!1,f=!1,e.emit(nt.ptz,Di)};i(t.$ptzFocusFar,"mouseup",(e=>{e.stopPropagation(),p&&m()})),i(t.$ptzFocusNear,"mouseup",(e=>{e.stopPropagation(),f&&m()})),i(window,"mouseup",(e=>{e.stopPropagation(),(p||f)&&m()}))}if(r.ptzCruiseShow&&(i(t.$ptzCruisePlay,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Fi)})),i(t.$ptzCruisePause,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Oi)}))),r.ptzFogShow&&(i(t.$ptzFogOpen,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Ni)})),i(t.$ptzFogClose,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,ji)}))),r.ptzWiperShow&&(i(t.$ptzWiperOpen,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,zi)})),i(t.$ptzWiperClose,"click",(t=>{t.stopPropagation(),e.emit(nt.ptz,Gi)}))),r.ptzSupportDraggable){function g(){t.isPtzControlDroging&&(t.isPtzControlDroging=!1,t.$ptzControl.style.cursor="grab",t.tempPtzPosition={x:0,y:0})}t.isPtzControlDroging=!1,t.tempPtzPosition={x:0,y:0},i(t.$ptzControl,ua()?"touchstart":"mousedown",(e=>{e.stopPropagation(),t.isPtzControlDroging=!0,t.$ptzControl.style.cursor="grabbing";const{posX:i,posY:s}=Qa(e);t.tempPtzPosition={x:i,y:s}})),i(t.$ptzControl,ua()?"touchmove":"mousemove",(e=>{if(t.isPtzControlDroging){e.stopPropagation();const{posX:i,posY:s}=Qa(e),r=t.tempPtzPosition.x-i,a=t.tempPtzPosition.y-s;t.$ptzControl.style.left=t.$ptzControl.offsetLeft-r+"px",t.$ptzControl.style.top=t.$ptzControl.offsetTop-a+"px",t.tempPtzPosition={x:i,y:s}}})),i(t.$ptzControl,ua()?"touchend":"mouseup",(e=>{e.stopPropagation(),g()})),i(window,ua()?"touchend":"mouseup",(e=>{e.stopPropagation(),g()}))}}if(a.performance&&(i(t.$performance,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!0)})),i(t.$performanceActive,"click",(t=>{t.stopPropagation(),e.togglePerformancePanel(!1)}))),a.logSave&&i(t.$logSave,"click",(t=>{t.stopPropagation(),e.downloadMemoryLog()})),a.aiFace&&(i(t.$faceDetect,"click",(t=>{t.stopPropagation(),e.faceDetect(!0)})),i(t.$faceDetectActive,"click",(t=>{t.stopPropagation(),e.faceDetect(!1)}))),a.aiObject&&(i(t.$objectDetect,"click",(t=>{t.stopPropagation(),e.objectDetect(!0)})),i(t.$objectDetectActive,"click",(t=>{t.stopPropagation(),e.objectDetect(!1)}))),a.aiOcclusion&&(i(t.$occlusionDetect,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!0)})),i(t.$occlusionDetectActive,"click",(t=>{t.stopPropagation(),e.occlusionDetect(!1)}))),e._opt.hasControl&&e._opt.controlAutoHide){i(e.$container,"mouseover",(()=>{e.fullscreen||(na(t.$controls,"display","block"),A())})),i(e.$container,"mousemove",(()=>{e.$container&&t.$controls&&(e.fullscreen,"none"===t.$controls.style.display&&(na(t.$controls,"display","block"),A()))})),i(e.$container,"mouseout",(()=>{b(),na(t.$controls,"display","none")}));let y=null;const A=()=>{b(),y=setTimeout((()=>{na(t.$controls,"display","none")}),5e3)},b=()=>{y&&(clearTimeout(y),y=null)}}if(e._opt.playType===_){let v=e._opt.playbackConfig.controlType;e._opt.playbackConfig.showRateBtn&&(i(t.$speedMenu,"mouseover",(()=>{t.$speedMenuList.classList.add("jb-pro-speed-menu-shown")})),i(t.$speedMenu,"mouseout",(()=>{t.$speedMenuList.classList.remove("jb-pro-speed-menu-shown")})),i(t.$speedMenuList,"click",(t=>{const i=qa(t);if(i.matches("div.jb-pro-speed-menu-item")){const t=i.dataset;e.emit(nt.playbackPreRateChange,t.speed)}}))),v===Q.normal?(i(t.$playbackNarrow,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.narrowPrecision()})),i(t.$playbackExpand,"click",(t=>{t.stopPropagation(),e.playback&&e.playback.expandPrecision()})),i(t.$playbackTimeList,"click",(t=>{const i=qa(t);i.matches("div.jb-pro-playback-time-minute-one")&&e.playback&&e.playback.seek(i.dataset)})),e._opt.playbackConfig.supportWheel&&i(t.$playbackTimeInner,"wheel",(t=>{t.preventDefault(),(t.wheelDelta?t.wheelDelta/120:-(t.detail||0)/3)>0?e.playback&&e.playback.expandPrecision():e.playback&&e.playback.narrowPrecision()}))):v===Q.simple&&(t.isDroging=!1,i(t.$playbackProgress,"click",(i=>{if(i.target!==t.$playbackProgressIndicator){let s=0,r=0;if(e.isInWebFullscreen())s=i.touches[0].clientY/e.height,r=s*e.playback.totalDuration;else{const a=kh(t,e.playback.totalDuration,i);s=a.percentage,r=a.second}e.playback&&e.playback.seek({time:r})}})),i(t.$playbackProgress,"mousemove",(i=>{na(t.$playbackProgressTip,"display","block");const{width:s,time:r}=kh(t,e.playback.totalDuration,i);t.$playbackProgressTip.innerHTML=r;const a=t.$playbackProgressTip.clientWidth;s<=a/2?na(t.$playbackProgressTip,"left",0):s>t.$playbackProgress.clientWidth-a/2?na(t.$playbackProgressTip,"left",t.$playbackProgress-a+"px"):na(t.$playbackProgressTip,"left",s-a/2+"px")})),i(t.$playbackProgress,"mouseout",(()=>{na(t.$playbackProgressTip,"display","none")})),i(t.$playbackProgressIndicator,"mousedown",(e=>{t.isDroging=!0})),i(t.$playbackProgress,"mousemove",(i=>{if(t.isDroging){const{second:s,percentage:r}=kh(t,e.playback.totalDuration,i);e.playback&&e.playback.seek({time:s})}})),i(t.$playbackProgress,"mouseup",(e=>{t.isDroging&&(t.isDroging=!1)})))}a.quality&&(i(t.$qualityMenu,"mouseover",(()=>{t.$qualityMenuList.classList.add("jb-pro-quality-menu-shown")})),i(t.$qualityMenu,"mouseout",(()=>{t.$qualityMenuList.classList.remove("jb-pro-quality-menu-shown")})),i(t.$qualityMenuList,"click",(t=>{const i=qa(t);if(i.matches("div.jb-pro-quality-menu-item")){const t=i.dataset;e.streamQuality=t.quality}}))),a.scale&&(i(t.$scaleMenu,"mouseover",(()=>{t.$scaleMenuList.classList.add("jb-pro-scale-menu-shown")})),i(t.$scaleMenu,"mouseout",(()=>{t.$scaleMenuList.classList.remove("jb-pro-scale-menu-shown")})),i(t.$scaleMenuList,"click",(t=>{const i=qa(t);if(i.matches("div.jb-pro-scale-menu-item")){const t=i.dataset;e.setScaleMode(t.scale)}}))),a.zoom&&(i(t.$zoom,"click",(t=>{t.stopPropagation(),e.zooming=!0})),i(t.$zoomStop,"click",(t=>{t.stopPropagation(),e.zooming=!1}))),i(t.$zoomExpand,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.expandPrecision()})),i(t.$zoomNarrow,"click",(t=>{t.stopPropagation(),e.zoom&&e.zoom.narrowPrecision()})),i(t.$zoomStop2,"click",(t=>{t.stopPropagation(),e.zooming=!1})),a.close&&i(t.$close,"click",(t=>{t.stopPropagation(),e.doDestroy()})),i(t.$tipsMessageClose,"click",(e=>{e.stopPropagation(),t.$tipsMessageContent.innerHTML="",na(t.$tipsMessage,"display","none")}))})(e,this),e._opt.hotKey&&((e,t)=>{const{events:{proxy:i}}=e,s={};function r(e,t){s[e]?s[e].push(t):s[e]=[t]}r(bi,(()=>{e.fullscreen&&(e.fullscreen=!1)})),r(vi,(()=>{e.volume+=.05})),r(_i,(()=>{e.volume-=.05})),i(window,"keydown",(e=>{if(t.isFocus){const t=document.activeElement.tagName.toUpperCase(),i=document.activeElement.getAttribute("contenteditable");if("INPUT"!==t&&"TEXTAREA"!==t&&""!==i&&"true"!==i){const t=s[e.keyCode];t&&(e.preventDefault(),t.forEach((e=>e())))}}}))})(e,this),this.btnIndex=0,this.initLoadingBackground(),Va(e._opt.loadingIconStyle)&&this.initLoadingIconStyle(e._opt.loadingIconStyle),Va(e._opt.ptzPositionConfig)&&this.updatePtzPosition(e._opt.ptzPositionConfig),this.kbpsShow="0 KB/s",this.player.debug.log("Control","init")}destroy(){if(this.$performancePanel){this.$performancePanel.innerHTML="";if(!Lh(this.$performancePanel)){const e=this.player.$container.querySelector(".jb-pro-performance-panel");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$poster){if(!Lh(this.$poster)){const e=this.player.$container.querySelector(".jb-pro-poster");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loading){if(!Lh(this.$loading)){const e=this.player.$container.querySelector(".jb-pro-loading");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$loadingBg){if(!Lh(this.$loadingBg)){const e=this.player.$container.querySelector(".jb-pro-loading-bg");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$controls){if(!Lh(this.$controls)){const e=this.player.$container.querySelector(".jb-pro-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$playBig){if(!Lh(this.$playBig)){const e=this.player.$container.querySelector(".jb-pro-play-big");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$recording){if(!Lh(this.$recording)){const e=this.player.$container.querySelector(".jb-pro-recording");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$ptzControl){if(!Lh(this.$ptzControl)){const e=this.player.$container.querySelector(".jb-pro-ptz-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$zoomControls){if(!Lh(this.$zoomControls)){const e=this.player.$container.querySelector(".jb-pro-zoom-controls");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$contextmenus){this.$contextmenus.innerHTML="";if(!Lh(this.$contextmenus)){const e=this.player.$container.querySelector(".jb-pro-contextmenus");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$tipsMessage){if(!Lh(this.$tipsMessage)){const e=this.player.$container.querySelector(".jb-pro-tips-message");e&&this.player.$container&&this.player.$container.removeChild(e)}}if(this.$extendDom){if(!Lh(this.$extendDom)){const e=this.player.$container.querySelector(".jb-pro-extend-dom");e&&this.player.$container&&this.player.$container.removeChild(e)}}this.btnIndex=0,this.extendBtnList=[],this.kbpsShow="0 KB/s",this.player.$container&&(this.player.$container.classList.remove("jb-pro-controls-show-auto-hide"),this.player.$container.classList.remove("jb-pro-controls-show")),this.player.debug.log("Control","destroy")}getBtnIndex(){return this.btnIndex++}autoSize(){const e=this.player;e.$container.style.padding="0 0";const t=e.width,i=e.height,s=t/i,r=e.video.$videoElement.width/e.video.$videoElement.height;if(s>r){const s=(t-i*r)/2;e.$container.style.padding=`0 ${s}px`}else{const s=(i-t/r)/2;e.$container.style.padding=`${s}px 0`}}initLoadingBackground(){const e=this.player;e._opt.loadingBackground&&e._opt.loadingBackgroundWidth&&e._opt.loadingBackgroundHeight&&(e.debug.log("Control","initLoadingBackground()"),"default"===this.player._opt.aspectRatio||ua()?(e.getRenderType()===$||e.getRenderType()===W)&&this._initLoadingBackground():this._initLoadingBackgroundForRatio(),Rh(this.$loadingBg,"display","block"),e._opt.loadingBackground="",e._opt.loadingBackgroundWidth=0,e._opt.loadingBackgroundHeight=0)}initLoadingIconStyle(e){const t=this.player.$container.querySelector(".jb-pro-icon-loading");t&&(e.width&&Rh(t,"width",`${e.width}px`),e.height&&Rh(t,"height",`${e.height}px`),e.background&&Rh(t,"backgroundImage",`url("${e.background}")`),!1===e.hasAnimation&&(Rh(t,"animationName","none"),Rh(t,"animationDuration",0),Rh(t,"animationTimingFunction","ease"),Rh(t,"animationIterationCount",1)))}_initLoadingBackgroundForRatio(){const e=this.player._opt.aspectRatio.split(":").map(Number);let t=this.player.width,i=this.player.height;const s=this.player._opt;let r=0;s.hasControl&&!s.controlAutoHide&&(r=s.playType===_?Yt:Kt,i-=r);const a=this.player._opt.loadingBackgroundWidth,o=this.player._opt.loadingBackgroundHeight,n=a/o,l=e[0]/e[1];if(this.$loadingBgImage.src=this.player._opt.loadingBackground,n>l){const e=l*o/a;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${r}px)`,this.$loadingBgImage.style.padding=`0 ${(t-t*e)/2}px`}else{const e=a/l/o;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${r}px)`,this.$loadingBgImage.style.padding=(i-i*e)/2+"px 0"}}_initLoadingBackground(){const e=this.player;let t=e.height;const i=e._opt;if(i.hasControl&&!i.controlAutoHide){t-=i.playType===_?Yt:Kt}let s=e.width,r=t;const a=i.rotate;270!==a&&90!==a||(s=t,r=e.width),this.$loadingBgImage.width=s,this.$loadingBgImage.height=r,this.$loadingBgImage.src=e._opt.loadingBackground;let o=(e.width-s)/2,n=(t-r)/2,l="contain";i.isResize||(l="fill"),i.isFullResize&&(l="none");let d="";"none"===i.mirrorRotate&&a&&(d+=" rotate("+a+"deg)"),"level"===i.mirrorRotate?d+=" rotateY(180deg)":"vertical"===i.mirrorRotate&&(d+=" rotateX(180deg)"),this.player._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=l),this.$loadingBgImage.style.transform=d,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=o+"px",this.$loadingBgImage.style.top=n+"px"}_validateExtendBtn(e){let t=!0;if(e.name||(this.player.debug.warn("Control","extend button name is required"),t=!1),t){-1!==this.extendBtnList.findIndex((t=>t.name===e.name))&&(this.player.debug.warn("Control",`extend button name: ${e.name} is already exist`),t=!1)}return t&&(e.icon||(this.player.debug.warn("Control","extend button icon is required"),t=!1)),t}addExtendBtn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=no(Os);if(e=Object.assign({},t,e),!this._validateExtendBtn(e))return;const i=e.name||"",s=this.$controlsRight,r=e.activeIcon&&e.activeClick,a=`\n
\n ${e.icon?`
\n \n ${e.iconTitle?`\n ${e.iconTitle}\n `:""}\n
`:""}\n ${e.activeIcon?`
\n \n ${e.activeIconTitle?`\n ${e.activeIconTitle}\n `:""}\n
`:""}\n
\n `,o=Array.from(s.children)[e.index];o?o.insertAdjacentHTML("beforebegin",a):xh(s,a);const n=s.querySelector(`.jb-pro-controls-item-wrap-${i}`),l=e.icon?s.querySelector(`.jb-pro-icon-extend-${i}`):null,d=e.icon?s.querySelector(`.jb-pro-control-extend-${i}`):null,h=e.activeIcon?s.querySelector(`.jb-pro-icon-extend-${i}-active`):null,c=e.activeIcon?s.querySelector(`.jb-pro-control-extend-${i}-active`):null,{events:{proxy:u},debug:p}=this.player;e.icon&&(Rh(l,"background",`url(${e.icon}) no-repeat center`),Rh(l,"background-size","100% 100%"),Rh(d,"display","none"),e.iconHover&&(u(l,"mouseover",(()=>{Rh(l,"background",`url(${e.iconHover}) no-repeat center`),Rh(l,"background-size","100% 100%")})),u(l,"mouseout",(()=>{Rh(l,"background",`url(${e.icon}) no-repeat center`),Rh(l,"background-size","100% 100%")})))),e.activeIcon&&(Rh(h,"background",`url(${e.activeIcon}) no-repeat center`),Rh(h,"background-size","100% 100%"),Rh(c,"display","none"),e.activeIconHover&&(u(h,"mouseover",(()=>{Rh(h,"background",`url(${e.activeIconHover}) no-repeat center`),Rh(h,"background-size","100% 100%")})),u(h,"mouseout",(()=>{Rh(h,"background",`url(${e.activeIcon}) no-repeat center`),Rh(h,"background-size","100% 100%")})))),e.click&&l&&u(l,"click",(t=>{t.preventDefault(),r&&(Rh(d,"display","none"),Rh(c,"display","flex")),this.player.isInMulti()?e.click.call(this.player,t,this.player._opt.multiIndex):e.click.call(this.player,t)})),e.activeClick&&h&&u(h,"click",(t=>{t.preventDefault(),Rh(d,"display","flex"),Rh(c,"display","none"),this.player.isInMulti()?e.activeClick.call(this.player,t,this.player._opt.multiIndex):e.activeClick.call(this.player,t)})),this.extendBtnList.push({name:i,$iconContainer:n,$iconWrap:d,$activeIconWrap:c})}addExtendDom(e){if(this.player.debug.log(this.TAG_NAME,"addExtendDom"),e.html){const t=`\n
\n ${e.html}\n
\n `;this.player.$container.insertAdjacentHTML("beforeend",t),Object.defineProperty(this,"$extendDom",{value:this.player.$container.querySelector(".jb-pro-extend-dom")}),e.showBeforePlay&&Rh(this.$extendDom,"display","block")}}toggleExtendDom(e){this.$extendDom&&(Pa(e)||(e="none"===this.$extendDom.style.display),Rh(this.$extendDom,"display",e?"block":"none"))}updateExtendDom(e){this.player.debug.log(this.TAG_NAME,"updateExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML=e)}removeExtendDom(){this.player.debug.log(this.TAG_NAME,"removeExtendDom"),this.$extendDom&&(this.$extendDom.innerHTML="")}updateLoadingText(e){this.$loadingText&&(this.$loadingText.innerText=e)}getExtendBtnList(){return this.extendBtnList}showTipsMessage(e,t){const i=this.$tipsMessage,s=this.$tipsMessageContent;if(i){const r=`\n
${e}
\n ${t?`
Error Type:${t}
`:""}\n `;s.innerHTML=r,Rh(i,"display","block")}}hideTipsMessage(){const e=this.$tipsMessage;e&&($tipsMessageContent.innerHTML="",Rh(e,"display","none"))}updatePtzPosition(e){const t=this.$ptzControl;if(Va(e)&&t){let i="auto";e.left&&(i=Number(e.left)===e.left?e.left+"px":e.left),Rh(t,"left",i);let s="auto";e.top&&(s=Number(e.top)===e.top?e.top+"px":e.top),Rh(t,"top",s);let r="auto";e.bottom&&(r=Number(e.bottom)===e.bottom?e.bottom+"px":e.bottom),Rh(t,"bottom",r);let a="auto";e.right&&(a=Number(e.right)===e.right?e.right+"px":e.right),Rh(t,"right",a)}}}Bh(".jb-pro-container{position:relative;width:100%;height:100%;overflow:hidden}.jb-pro-container.jb-pro-fullscreen-web{position:fixed;z-index:9999;left:0;top:0;right:0;bottom:0;width:100vw!important;height:100vh!important;background:#000}.jb-pro-container .jb-pro-loading-bg-for-ios{position:absolute;z-index:100;left:0;top:0;right:0;bottom:0;height:100%;width:100%;opacity:0;visibility:hidden;background-position:50%;background-repeat:no-repeat;background-size:contain;pointer-events:none}.jb-pro-container .jb-pro-loading-bg-for-ios.show{opacity:1;visibility:visible}");var Mh=e=>{const{_opt:t,debug:i,events:{proxy:s}}=e;if(t.supportDblclickFullscreen&&s(e.$container,"dblclick",(t=>{const i=qa(t).nodeName.toLowerCase();"canvas"!==i&&"video"!==i||(e.fullscreen=!e.fullscreen)})),s(document,"visibilitychange",(()=>{e.visibility="visible"===document.visibilityState,i.log("visibilitychange",document.visibilityState),t.hiddenAutoPause&&(i.log("visibilitychange","hiddenAutoPause is true ",document.visibilityState,e._isPlayingBeforePageHidden),"visible"===document.visibilityState?e._isPlayingBeforePageHidden&&e.play():(e._isPlayingBeforePageHidden=e.playing,e.playing&&e.pause()))})),pa()&&s(document,["click","contextmenu"],(t=>{Dh(t,e.$container)?(uo(e._opt.disableContextmenu)&&"contextmenu"===t.type&&t.preventDefault(),e.isInput="INPUT"===t.target.tagName,e.isFocus=!0,e.emit(nt.focus)):(e.isInput=!1,e.isFocus=!1,e.emit(nt.blur))})),t.isCheckInView){const t=wa((()=>{e.emit(nt.inView,function(e){const t=e.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight,s=window.innerWidth||document.documentElement.clientWidth,r=t.top<=i&&t.top+t.height>=0,a=t.left<=s&&t.left+t.width>=0;return r&&a}(e.$container))}),200);s(window,"scroll",(()=>t()))}if(t.autoResize){const t=wa((()=>{e.resize()}),500);s(window,["resize","orientationchange"],(()=>{t()})),screen&&screen.orientation&&screen.orientation.onchange&&s(screen.orientation,"change",(()=>{t()}))}};class Uh{static init(){Uh.types={avc1:[],avcC:[],hvc1:[],hvcC:[],av01:[],av1C:[],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":[],Opus:[],dOps:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[]};for(let e in Uh.types)Uh.types.hasOwnProperty(e)&&(Uh.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);let e=Uh.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,s=Array.prototype.slice.call(arguments,1),r=s.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 a=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 Uh.box(Uh.types.trak,Uh.tkhd(e),Uh.mdia(e))}static tkhd(e){let t=e.id,i=e.duration,s=e.presentWidth,r=e.presentHeight;return Uh.box(Uh.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,s>>>8&255,255&s,0,0,r>>>8&255,255&r,0,0]))}static mdia(e){return Uh.box(Uh.types.mdia,Uh.mdhd(e),Uh.hdlr(e),Uh.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return Uh.box(Uh.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?Uh.constants.HDLR_AUDIO:Uh.constants.HDLR_VIDEO,Uh.box(Uh.types.hdlr,t)}static minf(e){let t=null;return t="audio"===e.type?Uh.box(Uh.types.smhd,Uh.constants.SMHD):Uh.box(Uh.types.vmhd,Uh.constants.VMHD),Uh.box(Uh.types.minf,t,Uh.dinf(),Uh.stbl(e))}static dinf(){return Uh.box(Uh.types.dinf,Uh.box(Uh.types.dref,Uh.constants.DREF))}static stbl(e){return Uh.box(Uh.types.stbl,Uh.stsd(e),Uh.box(Uh.types.stts,Uh.constants.STTS),Uh.box(Uh.types.stsc,Uh.constants.STSC),Uh.box(Uh.types.stsz,Uh.constants.STSZ),Uh.box(Uh.types.stco,Uh.constants.STCO))}static stsd(e){return"audio"===e.type?"mp3"===e.audioType?Uh.box(Uh.types.stsd,Uh.constants.STSD_PREFIX,Uh.mp3(e)):Uh.box(Uh.types.stsd,Uh.constants.STSD_PREFIX,Uh.mp4a(e)):"avc"===e.videoType?Uh.box(Uh.types.stsd,Uh.constants.STSD_PREFIX,Uh.avc1(e)):Uh.box(Uh.types.stsd,Uh.constants.STSD_PREFIX,Uh.hvc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Uh.box(Uh.types[".mp3"],s)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,s=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 Uh.box(Uh.types.mp4a,s,Uh.esds(e))}static esds(e){let t=e.config||[],i=t.length,s=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 Uh.box(Uh.types.esds,s)}static avc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let 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,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return Uh.box(Uh.types.avc1,r,Uh.box(Uh.types.avcC,t))}static hvc1(e){let t=e.avcc;const i=e.codecWidth,s=e.codecHeight;let 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,s>>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,24,255,255]);return Uh.box(Uh.types.hvc1,r,Uh.box(Uh.types.hvcC,t))}static mvex(e){return Uh.box(Uh.types.mvex,Uh.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 Uh.box(Uh.types.trex,i)}static moof(e,t){return Uh.box(Uh.types.moof,Uh.mfhd(e.sequenceNumber),Uh.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 Uh.box(Uh.types.mfhd,t)}static traf(e,t){let i=e.id,s=Uh.box(Uh.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),r=Uh.box(Uh.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t])),a=Uh.sdtp(e),o=Uh.trun(e,a.byteLength+16+16+8+16+8+8);return Uh.box(Uh.types.traf,s,r,o,a)}static sdtp(e){let t=new Uint8Array(5),i=e.flags;return t[4]=i.isLeading<<6|i.dependsOn<<4|i.isDependedOn<<2|i.hasRedundancy,Uh.box(Uh.types.sdtp,t)}static trun(e,t){let i=new Uint8Array(28);t+=36,i.set([0,0,15,1,0,0,0,1,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0);let s=e.duration,r=e.size,a=e.flags,o=e.cts;return i.set([s>>>24&255,s>>>16&255,s>>>8&255,255&s,r>>>24&255,r>>>16&255,r>>>8&255,255&r,a.isLeading<<2|a.dependsOn,a.isDependedOn<<6|a.hasRedundancy<<4|a.isNonSync,0,0,o>>>24&255,o>>>16&255,o>>>8&255,255&o],12),Uh.box(Uh.types.trun,i)}static mdat(e){return Uh.box(Uh.types.mdat,e)}}Uh.init();const Fh=[44100,48e3,32e3,0],Oh=[22050,24e3,16e3,0],Nh=[11025,12e3,8e3,0],jh=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],zh=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],Gh=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1];class Hh extends So{constructor(e){super(),this.TAG_NAME="MediaSource",this.player=e,this._resetInIt(),this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this.mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource,this.isDecodeFirstIIframe=!!po(e._opt.checkFirstIFrame),this.mediaSourceObjectURL=null,this._useManagedMediaSource||(this.mediaSourceObjectURL=window.URL.createObjectURL(this.mediaSource)),this.isSupportVideoFrameCallback=bo(),this.canvasRenderInterval=null,e._opt.mseUseCanvasRender?(this.$videoElement=document.createElement("video"),this._useManagedMediaSource?(this.$videoElement.disableRemotePlayback=!0,this.$videoElement.srcObject=this.mediaSource):this.$videoElement.src=this.mediaSourceObjectURL,this.initVideoEvents()):(this._useManagedMediaSource?(this.player.video.$videoElement.disableRemotePlayback=!0,this.player.video.$videoElement.srcObject=this.mediaSource):this.player.video.$videoElement.src=this.mediaSourceObjectURL,this.$videoElement=this.player.video.$videoElement),this._bindMediaSourceEvents(),this.audioSourceBufferCheckTimeout=null,this.audioSourceNoDataCheckTimeout=null,this.hasPendingEos=!1,this.player.isPlayback()&&this.player.on(nt.playbackPause,(t=>{po(t)?(uo(e._opt.checkFirstIFrame)&&(this.player.debug.log(this.TAG_NAME,"playbackPause is false and _opt.checkFirstIFrame is true so set isDecodeFirstIIframe = false"),this.isDecodeFirstIIframe=!1),this.clearUpAllSourceBuffer(),this.$videoElement.play()):(this.$videoElement.pause(),this.cacheTrack={})})),this._useManagedMediaSource?this.player.debug.log(this.TAG_NAME,"init and using ManagedMediaSource"):this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.stop(),this._clearAudioSourceBufferCheckTimeout(),this._clearAudioNoDataCheckTimeout(),this._stopCanvasRender(),this.eventListenList.length&&(this.eventListenList.forEach((e=>e())),this.eventListenList=[]),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.$videoElement&&(this.player._opt.mseUseCanvasRender&&this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$videoElement=null),this.mediaSourceObjectURL&&(window.URL.revokeObjectURL(this.mediaSourceObjectURL),this.mediaSourceObjectURL=null),this._resetInIt(),this.mediaSource=null,this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}needInitAudio(){return this.player._opt.hasAudio&&this.player._opt.mseDecodeAudio}_resetInIt(){this.isAvc=null,this.isAAC=null,this.videoMeta={},this.audioMeta={},this.sourceBuffer=null,this.audioSourceBuffer=null,this.hasInit=!1,this.hasAudioInit=!1,this.isInitInfo=!1,this.isAudioInitInfo=!1,this.audioMimeType="",this.videoMimeType="",this.cacheTrack={},this.cacheAudioTrack={},this.sequenceNumber=0,this.audioSequenceNumber=0,this.firstRenderTime=null,this.firstAudioTime=null,this.$videoElement=null,this.mediaSourceAppendBufferFull=!1,this.mediaSourceAppendBufferError=!1,this.mediaSourceAddSourceBufferError=!1,this.mediaSourceBufferError=!1,this.mediaSourceError=!1,this.prevTimestamp=null,this.decodeDiffTimestamp=null,this.prevDts=null,this.prevAudioDts=null,this.prevPayloadBufferSize=0,this.isWidthOrHeightChanged=!1,this.prevTs=null,this.prevAudioTs=null,this.eventListenList=[],this.pendingRemoveRanges=[],this.pendingSegments=[],this.pendingAudioRemoveRanges=[],this.pendingAudioSegments=[],this.supportVideoFrameCallbackHandle=null}get state(){return this.mediaSource&&this.mediaSource.readyState}get isStateOpen(){return this.state===yi}get isStateClosed(){return this.state===Ai}get isStateEnded(){return this.state===gi}get duration(){return this.mediaSource&&this.mediaSource.duration||-1}set duration(e){this.mediaSource.duration=e}_bindMediaSourceEvents(){const{debug:e,events:{proxy:t}}=this.player,i=t(this.mediaSource,Ki,(()=>{this.player.debug.log(this.TAG_NAME,"sourceOpen"),this._onMediaSourceSourceOpen(),this.player.emit(nt.mseSourceOpen)})),s=t(this.mediaSource,qi,(()=>{this.player.debug.log(this.TAG_NAME,"sourceClose"),this.player.emit(nt.mseSourceClose)})),r=t(this.mediaSource,Yi,(()=>{this.player.debug.log(this.TAG_NAME,"sourceended"),this.player.emit(nt.mseSourceended)}));this.eventListenList.push(i,s,r);const a=t(this.$videoElement,is,(e=>{if(po(this.isSupportVideoFrameCallback))if(this.player.checkIsInRender())this.player.handleRender();else{const t=parseInt(e.timeStamp,10);this.player.debug.log(this.TAG_NAME,`mseUseCanvasRender is ${this.player._opt.mseUseCanvasRender} and\n $videoElement ts is ${t}, but not in render and vbps is ${this.player._stats.vbps} and fps is ${this.player._stats.fps}`)}}));if(this.eventListenList.push(a),this._useManagedMediaSource){const e=t(this.mediaSource,Qi,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource startstreaming"),this.player.emit(nt.mseSourceStartStreaming)})),i=t(this.mediaSource,Xi,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource endstreaming"),this.player.emit(nt.mseSourceEndStreaming)})),s=t(this.mediaSource,Zi,(()=>{this.player.debug.log(this.TAG_NAME,"ManagedMediaSource qualitychange")}));this.eventListenList.push(e,i,s)}}_onMediaSourceSourceOpen(){this.sourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() sourceBuffer is null and next init"),this._initSourceBuffer()),this.audioSourceBuffer||(this.player.debug.log("MediaSource","onMediaSourceSourceOpen() audioSourceBuffer is null and next init"),this._initAudioSourceBuffer()),this._hasPendingSegments()&&this._doAppendSegments()}initVideoEvents(){const{proxy:e}=this.player.events;this.player.on(nt.visibilityChange,(e=>{e&&setTimeout((()=>{if(this.player.isPlaying()&&this.$videoElement){const e=this.getVideoBufferLastTime();e-this.$videoElement.currentTime>this.getMseBufferMaxDelayTime()&&(this.player.debug.log(this.TAG_NAME,`visibilityChange is true and lastTime is ${e} and currentTime is ${this.$videoElement.currentTime} so set currentTime to lastTime`),this.$videoElement.currentTime=e)}}),300)}));const t=e(this.$videoElement,es,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.emit(nt.removeLoadingBgImage),bo()?this.supportVideoFrameCallbackHandle||(this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))):this.player.isUseHls265()&&(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40)),this.player.debug.log(this.TAG_NAME,"video play")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"video play error ",e),this.player.emitError(ct.mediaSourceUseCanvasRenderPlayFailed,e)}))})),i=e(this.$videoElement,ts,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,is,(e=>{parseInt(e.timeStamp,10),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,ss,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate),this.$videoElement&&this.$videoElement.paused&&this.player.debug.warn(this.TAG_NAME,"ratechange and video is paused")}));this.eventListenList.push(t,i,s,r)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed");const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.handleRender(),this.player.video.render({$video:this.$videoElement,ts:i}),this.player.isUseHls265()&&this.player.updateStats({fps:!0,ts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}decodeVideo(e,t,i,s){const r=this.player;if(r)if(this.player.isDestroyedOrClosed())this.player.debug.warn(this.TAG_NAME,"decodeVideo() player is destroyed");else if(this.hasInit)if(!this.isDecodeFirstIIframe&&i&&(this.isDecodeFirstIIframe=!0),this.isDecodeFirstIIframe){if(i&&0===e[1]){const t=15&e[0];let i={};if(t===vt){i=En(e.slice(5))}else t===_t&&(i=Un(e));const s=this.player.video.videoInfo;s&&s.width&&s.height&&i&&i.codecWidth&&i.codecHeight&&(i.codecWidth!==s.width||i.codecHeight!==s.height)&&(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo: video width or height is changed,\n old width is ${s.width}, old height is ${s.height},\n new width is ${i.codecWidth}, new height is ${i.codecHeight},\n and emit change event`),this.isWidthOrHeightChanged=!0,this.player.emitError(ct.mseWidthOrHeightChange))}if(this.isWidthOrHeightChanged)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo: video width or height is changed, and return");if(co(e))return void this.player.debug.warn(this.TAG_NAME,"decodeVideo and payload is video sequence header so drop this frame");if(e.byteLength<12)return void this.player.debug.warn(this.TAG_NAME,`decodeVideo and payload is too small , payload length is ${e.byteLength}`);let r=t;if(this.player.isPlayer()){if(null===this.firstRenderTime&&(this.firstRenderTime=t),r=t-this.firstRenderTime,r<0&&(this.player.debug.warn(this.TAG_NAME,`decodeVideo\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevTs},\n firstRenderTime is ${this.firstRenderTime} and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration}`),r=null===this.prevDts?0:this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.player.emitError(ct.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`);if(null!==this.prevDts&&r<=this.prevDts){if(this.player.debug.warn(this.TAG_NAME,`\n decodeVideo dts is less than(or equal) prev dts ,\n dts is ${r} and prev dts is ${this.prevDts} ,\n and now ts is ${t} and prev ts is ${this.prevTs} ,\n and diff is ${t-this.prevTs} and firstRenderTime is ${this.firstRenderTime} and isIframe is ${i},\n and mseCorrectTimeDuration is ${this.player._opt.mseCorrectTimeDuration},\n and prevPayloadBufferSize is ${this.prevPayloadBufferSize} and payload size is ${e.byteLength}`),r===this.prevDts&&this.prevPayloadBufferSize===e.byteLength)return void this.player.debug.warn(this.TAG_NAME,"decodeVideo dts is equal to prev dts and payload size is equal to prev payload size so drop this frame");if(r=this.prevDts+this.player._opt.mseCorrectTimeDuration,this._checkTsIsMaxDiff(t))return this.player.debug.warn(this.TAG_NAME,`decodeVideo is max diff , ts is ${t} and prevTs is ${this.prevTs}, diff is ${this.prevTs-t} and emit replay`),void this.emit(ct.mediaSourceTsIsMaxDiff,`decodeVideo is max diff, prevTs is ${this.prevTs} and ts is ${t}`)}}this.player.isPlayer()?this._decodeVideo(e,r,i,s,t):this.player.isPlayback()&&po(this.player.playbackPause)&&(this.player.playback.isUseLocalCalculateTime&&this.player.playback.increaseLocalTimestamp(),this._decodeVideo(e,r,i,s,t)),this.prevDts=r,this.prevPayloadBufferSize=e.byteLength,this.prevTs=t}else this.player.debug.log(this.TAG_NAME,"decodeVideo first frame is not iFrame");else if(i&&e[1]===vs){const s=15&e[0];if(r.video.updateVideoInfo({encTypeCode:s}),s===_t&&po(ka()))return void this.player.emitError(ct.mediaSourceH265NotSupport);r._times.decodeStart||(r._times.decodeStart=aa()),this.hasInit=this._decodeConfigurationRecord(e,t,i,s)}else this.player.debug.warn(this.TAG_NAME,`decodeVideo has not init , isIframe is ${i} , payload is ${e[1]}`)}decodeAudio(e,t){if(this.player)if(this.player.isDestroyedOrClosed())this.player.debug.warn(this.TAG_NAME,"decodeAudio() player is destroyed");else if(po(this.hasAudioInit))this.hasAudioInit=this._decodeAudioConfigurationRecord(e,t);else{let i=t;if(zr(e))return void this.player.debug.log(this.TAG_NAME,"decodeAudio and has already initialized and payload is aac codec packet so drop this frame");if(this._clearAudioNoDataCheckTimeout(),this.isDecodeFirstIIframe){if(this.player.isPlayer()){if(null===this.firstAudioTime&&(this.firstAudioTime=t,null!==this.firstRenderTime&&null!==this.prevTs)){const e=Math.abs(this.firstRenderTime-this.prevTs);e>300&&(this.firstAudioTime-=e,this.player.debug.warn(this.TAG_NAME,`video\n firstAudioTime is ${this.firstRenderTime} and current time is ${this.prevTs}\n play time is ${e} and firstAudioTime ${t} - ${e} = ${this.firstAudioTime}`))}if(i=t-this.firstAudioTime,i<0&&(this.player.debug.warn(this.TAG_NAME,`decodeAudio\n local dts is < 0 , ts is ${t} and prevTs is ${this.prevAudioTs},\n firstAudioTime is ${this.firstAudioTime}`),i=null===this.prevAudioDts?0:this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration,this._checkAudioTsIsMaxDiff(t)))return this.player.debug.warn(this.TAG_NAME,`decodeAudio is max diff , ts is ${t} and prevTs is ${this.prevAudioDts}, diff is ${this.prevAudioDts-t} and emit replay`),void this.player.emitError(ct.mediaSourceTsIsMaxDiff,`decodeAudio is max diff, prevTs is ${this.prevAudioDts} and ts is ${t}`);null!==this.prevAudioTs&&i<=this.prevAudioDts&&(this.player.debug.warn(this.TAG_NAME,`\n decodeAudio dts is less than(or equal) prev dts ,\n dts is ${i} and prev dts is ${this.prevAudioDts} ,\n and now ts is ${t} and prev ts is ${this.prevAudioTs} ,\n and diff is ${t-this.prevAudioTs}`),i=this.prevAudioDts+this.player._opt.mseCorrectAudioTimeDuration)}(this.player.isPlayer()||this.player.isPlayback()&&po(this.player.playbackPause))&&this._decodeAudio(e,i,t),this.prevAudioTs=t,this.prevAudioDts=i}else this.player.debug.log(this.TAG_NAME,"decodeAudio first frame is not iFrame")}}_checkTsIsMaxDiff(e){return this.prevTs>0&&eX}_checkAudioTsIsMaxDiff(e){return this.prevAudioTs>0&&eX}_decodeConfigurationRecord(e,t,i,s){let r=e.slice(5),a={};if(s===vt?a=En(r):s===_t&&(a=Fn(r)),Ha(a)||0===a.codecWidth&&0===a.codecHeight)return this.player.debug.warn(this.TAG_NAME,"_decodeConfigurationRecord",a),this.player.emitError(ct.mediaSourceDecoderConfigurationError),!1;this.player.recorder&&this.player._opt.recordType===S&&this.player.recorder.initMetaData(e,s);const o={id:mr,type:"video",timescale:1e3,duration:0,avcc:r,codecWidth:a.codecWidth,codecHeight:a.codecHeight,videoType:a.videoType},n=Uh.generateInitSegment(o);this.isAvc=s===vt;let l=a.codec;return this.videoMimeType=l?`video/mp4; codecs="${a.codec}"`:this.isAvc?hi:ci,this._initSourceBuffer(),this.appendBuffer(n.buffer),this.sequenceNumber=0,this.cacheTrack={},!0}_decodeAudioConfigurationRecord(e,t){const i=e[0]>>4,s=i===Tt,r=i===Et;if(po(r||s))return this.player.debug.warn(this.TAG_NAME,`_decodeAudioConfigurationRecord audio codec is not support , codecId is ${i} ant auto wasm decode`),this.player.emit(ct.mediaSourceAudioG711NotSupport),!1;const a={id:gr,type:"audio",timescale:1e3};let o={};if(zr(e)){if(o=function(e){let t=new Uint8Array(e),i=null,s=0,r=0,a=0,o=null;if(s=r=t[0]>>>3,a=(7&t[0])<<1|t[1]>>>7,a<0||a>=$r.length)return void console.error("Flv: AAC invalid sampling frequency index!");let n=$r[a],l=(120&t[1])>>>3;if(l<0||l>=8)return void console.log("Flv: AAC invalid channel configuration");5===s&&(o=(7&t[1])<<1|t[2]>>>7,t[2]);let d=self.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?a>=6?(s=5,i=new Array(4),o=a-3):(s=2,i=new Array(2),o=a):-1!==d.indexOf("android")?(s=2,i=new Array(2),o=a):(s=5,o=a,i=new Array(4),a>=6?o=a-3:1===l&&(s=2,i=new Array(2),o=a)),i[0]=s<<3,i[0]|=(15&a)>>>1,i[1]=(15&a)<<7,i[1]|=(15&l)<<3,5===s&&(i[1]|=(15&o)>>>1,i[2]=(1&o)<<7,i[2]|=8,i[3]=0),{audioType:"aac",config:i,sampleRate:n,channelCount:l,objectType:s,codec:"mp4a.40."+s,originalCodec:"mp4a.40."+r}}(e.slice(2)),!o)return!1;a.audioSampleRate=o.sampleRate,a.channelCount=o.channelCount,a.config=o.config,a.refSampleDuration=1024/a.audioSampleRate*a.timescale}else{if(!s)return!1;if(o=function(e){if(e.length<4)return void console.error("Invalid MP3 packet, header missing!");let t=new Uint8Array(e.buffer),i=null;if(255!==t[0])return void console.error("Invalid MP3 packet, first byte != 0xFF ");let s=t[1]>>>3&3,r=(6&t[1])>>1,a=(240&t[2])>>>4,o=(12&t[2])>>>2,n=3!=(t[3]>>>6&3)?2:1,l=0,d=0;switch(s){case 0:l=Nh[o];break;case 2:l=Oh[o];break;case 3:l=Fh[o]}switch(r){case 1:a0&&(h+=`;codecs=${l}`),po(this.isAudioInitInfo)&&(this.player.audio.updateAudioInfo({encTypeCode:i,channels:a.channelCount,sampleRate:a.audioSampleRate}),this.isAudioInitInfo=!0),this.audioMimeType=h,this.isAAC=r,this._initAudioSourceBuffer(),this.appendAudioBuffer(d.buffer),!0}_initSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.sourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.videoMimeType){try{this.sourceBuffer=this.mediaSource.addSourceBuffer(this.videoMimeType),e.log(this.TAG_NAME,"_initSourceBuffer() this.mediaSource.addSourceBuffer()",this.videoMimeType)}catch(t){return e.error(this.TAG_NAME,"appendBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(ct.mseAddSourceBufferError,t),void(this.mediaSourceAddSourceBufferError=!0)}if(this.sourceBuffer){const i=t(this.sourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.sourceBuffer",t),this.player.emitError(ct.mseSourceBufferError,t)})),s=t(this.sourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debug.log(this.TAG_NAME,"videoSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(i,s)}}else e.log(this.TAG_NAME,`_initSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.isAvc === null is ${null===this.isAvc}`)}_initAudioSourceBuffer(){const{debug:e,events:{proxy:t}}=this.player;if(null===this.audioSourceBuffer&&null!==this.mediaSource&&this.isStateOpen&&this.audioMimeType){try{this.audioSourceBuffer=this.mediaSource.addSourceBuffer(this.audioMimeType),this._clearAudioSourceBufferCheckTimeout(),e.log(this.TAG_NAME,"_initAudioSourceBuffer() this.mediaSource.addSourceBuffer()",this.audioMimeType)}catch(t){return e.error(this.TAG_NAME,"appendAudioBuffer() this.mediaSource.addSourceBuffer()",t.code,t),this.player.emitError(ct.mseAddSourceBufferError,t),void(this.mediaSourceAddSourceBufferError=!0)}if(this.audioSourceBuffer){const i=t(this.audioSourceBuffer,"error",(t=>{this.mediaSourceBufferError=!0,e.error(this.TAG_NAME,"mseSourceBufferError this.audioSourceBuffer",t),this.player.emitError(ct.mseSourceBufferError,t)})),s=t(this.audioSourceBuffer,"updateend",(()=>{this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this.hasPendingEos&&(this.player.debug.log(this.TAG_NAME,"audioSourceBuffer updateend and hasPendingEos is true, next endOfStream()"),this.endOfStream())}));this.eventListenList.push(i,s),null===this.audioSourceNoDataCheckTimeout&&(this.audioSourceNoDataCheckTimeout=setTimeout((()=>{this._clearAudioNoDataCheckTimeout(),this.player.emit(ct.mediaSourceAudioNoDataTimeout)}),1e3))}}else e.log(this.TAG_NAME,`_initAudioSourceBuffer and this.isStateOpen is ${this.isStateOpen} and this.audioMimeType is ${this.audioMimeType}`)}_decodeVideo(e,t,i,s,r){const a=this.player;let o=e.slice(5),n=o.byteLength;if(0===n)return void a.debug.warn(this.TAG_NAME,"_decodeVideo payload bytes is 0 and return");let l=(new Date).getTime(),d=!1;this.prevTimestamp||(this.prevTimestamp=l,d=!0);const h=l-this.prevTimestamp;this.decodeDiffTimestamp=h,h>500&&!d&&this.player.isPlayer()&&a.debug.warn(this.TAG_NAME,`_decodeVideo now time is ${l} and prev time is ${this.prevTimestamp}, diff time is ${h} ms`);const c=this.$videoElement;if(this.cacheTrack.id&&t>=this.cacheTrack.dts){let e=8+this.cacheTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(Uh.types.mdat,4),i.set(this.cacheTrack.data,8),this.cacheTrack.duration=t-this.cacheTrack.dts;let s=Uh.moof(this.cacheTrack,this.cacheTrack.dts);this.cacheTrack={};let o=new Uint8Array(s.byteLength+i.byteLength);o.set(s,0),o.set(i,s.byteLength),this.appendBuffer(o.buffer),a.emit(nt.timeUpdate,r),a.isPlayer()?a.isUseHls265()?a.updateStats({dfps:!0,mseTs:t}):a.updateStats({fps:!0,dfps:!0,ts:r,mseTs:t}):a.isPlayback()&&a.playback.updateStats({ts:r}),a._times.videoStart||(a._times.videoStart=aa(),a.handlePlayToRenderTimes())}else a.debug.log(this.TAG_NAME,`cacheTrack = {} now dts is ${t}, and ts is ${r} cacheTrack dts is ${this.cacheTrack&&this.cacheTrack.dts}`),this.cacheTrack={};this.cacheTrack||(this.cacheTrack={}),this.cacheTrack.id=mr,this.cacheTrack.sequenceNumber=++this.sequenceNumber,this.cacheTrack.size=n,this.cacheTrack.dts=t,this.cacheTrack.cts=s,this.cacheTrack.isKeyframe=i,this.cacheTrack.data=o,this.cacheTrack.flags={isLeading:0,dependsOn:i?2:1,isDependedOn:i?1:0,hasRedundancy:0,isNonSync:i?0:1},!this.isInitInfo&&c.videoWidth>0&&c.videoHeight>0&&(a.debug.log(this.TAG_NAME,`updateVideoInfo: ${c.videoWidth},${c.videoHeight}`),a.video.updateVideoInfo({width:c.videoWidth,height:c.videoHeight}),a.video.initCanvasViewSize(),this.isInitInfo=!0),a._opt.mseUseCanvasRender&&po(this.isSupportVideoFrameCallback)&&po(a.isUseHls265())&&a.video.render({$video:c,ts:t}),this.prevTimestamp=(new Date).getTime()}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}_decodeAudio(e,t,i){const s=this.player;let r=this.isAAC?e.slice(2):e.slice(1),a=r.byteLength;if(this.cacheAudioTrack.id&&t>=this.cacheAudioTrack.dts){let e=8+this.cacheAudioTrack.size,i=new Uint8Array(e);i[0]=e>>>24&255,i[1]=e>>>16&255,i[2]=e>>>8&255,i[3]=255&e,i.set(Uh.types.mdat,4),i.set(this.cacheAudioTrack.data,8),this.cacheAudioTrack.duration=t-this.cacheAudioTrack.dts;let s=Uh.moof(this.cacheAudioTrack,this.cacheAudioTrack.dts);this.cacheAudioTrack={};let r=new Uint8Array(s.byteLength+i.byteLength);r.set(s,0),r.set(i,s.byteLength),this.appendAudioBuffer(r.buffer)}else s.debug.log(this.TAG_NAME,`cacheAudioTrack = {} now dts is ${t} cacheAudioTrack dts is ${this.cacheAudioTrack&&this.cacheAudioTrack.dts}`),this.cacheAudioTrack={};this.cacheAudioTrack||(this.cacheAudioTrack={}),this.cacheAudioTrack.id=gr,this.cacheAudioTrack.sequenceNumber=++this.audioSequenceNumber,this.cacheAudioTrack.size=a,this.cacheAudioTrack.dts=t,this.cacheAudioTrack.cts=0,this.cacheAudioTrack.data=r,this.cacheAudioTrack.flags={isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}appendBuffer(e){if(this.player.isDestroyedOrClosed())return void this.player.debug.warn(this.TAG_NAME,"appendBuffer() player is destroyed");const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendBuffer() this.mediaSourceBufferError is true"):(this.pendingSegments.push(e),this.sourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&(this._handleUpdateBufferDelayTime(),this._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),po(this.getSourceBufferUpdating())&&this.isStateOpen&&po(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(ct.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded?(this.mediaSourceBufferError=!0,this.player.emitError(ct.mseSourceBufferError,"mediaSource is end")):this._hasPendingRemoveRanges()&&t.log(this.TAG_NAME,`video has pending remove ranges and video length is ${this.pendingRemoveRanges.length}, audio length is ${this.pendingAudioRemoveRanges.length}`))}appendAudioBuffer(e){if(this.player.isDestroyedOrClosed())return void this.player.debug.warn(this.TAG_NAME,"appendAudioBuffer() player is destroyed");const{debug:t,events:{proxy:i}}=this.player;this.mediaSourceAddSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAddSourceBufferError is true"):this.mediaSourceAppendBufferFull?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferFull is true"):this.mediaSourceAppendBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceAppendBufferError is true"):this.mediaSourceBufferError?t.warn(this.TAG_NAME,"appendAudioBuffer() this.mediaSourceBufferError is true"):(this.pendingAudioSegments.push(e),this.audioSourceBuffer&&(this.player.isPlayer()&&this._handleUpdatePlaybackRate(),this.player.isPlayback()&&(this._handleUpdateBufferDelayTime(),this._checkVideoPlayCurrentTime()),this.player._opt.mseAutoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanUpSourceBuffer(),po(this.getAudioSourceBufferUpdating())&&this.isStateOpen&&po(this._hasPendingRemoveRanges()))?this._doAppendSegments():this.isStateClosed?(this.mediaSourceBufferError=!0,this.player.emitError(ct.mseSourceBufferError,"mediaSource is not attached to video or mediaSource is closed")):this.isStateEnded?(this.mediaSourceBufferError=!0,this.player.emitError(ct.mseSourceBufferError,"mediaSource is end")):this._hasPendingRemoveRanges()&&t.log(this.TAG_NAME,`audio has pending remove ranges and video length is ${this.pendingRemoveRanges.length}, audio length is ${this.pendingAudioRemoveRanges.length}`))}getSourceBufferUpdating(){return this.sourceBuffer&&this.sourceBuffer.updating}getAudioSourceBufferUpdating(){return this.audioSourceBuffer&&this.audioSourceBuffer.updating}stop(){this.abortSourceBuffer(),this.removeSourceBuffer(),this.endOfStream()}checkSourceBufferDelay(){const e=this.$videoElement;let t=0,i=0;return e.buffered.length>0&&(i=e.buffered.end(e.buffered.length-1),t=i-e.currentTime),t<0&&(this.player.debug.warn(this.TAG_NAME,`checkMSESourceBufferDelay ${t} < 0, and buffered is ${i} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${i}`),e.currentTime=i,t=0),t}checkSourceBufferStore(){const e=this.$videoElement;let t=0;return e.buffered.length>0&&(t=e.currentTime-e.buffered.start(0)),t}getDecodeDiffTimes(){return this.decodeDiffTimestamp}removeBuffer(e,t){const i=Ka();if(this.player.debug.log(this.TAG_NAME,`removeBuffer() start is ${e} and end is ${t} and _isMacOsFirefox is ${i}`),this.isStateOpen&&po(i)){if(po(this.getSourceBufferUpdating()))try{this.sourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() sourceBuffer error",e)}if(po(this.getAudioSourceBufferUpdating()))try{this.audioSourceBuffer.remove(e,t)}catch(e){this.player.debug.warn(this.TAG_NAME,"removeBuffer() audioSourceBuffer error",e)}}}clearUpAllSourceBuffer(){if(this.sourceBuffer){const e=this.sourceBuffer.buffered;for(let t=0;t=1)if(this.getSourceBufferUpdating()||this.getAudioSourceBufferUpdating())this.hasPendingEos=!0;else{this.hasPendingEos=!1;try{this.player.debug.log(this.TAG_NAME,"endOfStream()"),this.mediaSource.endOfStream()}catch(e){this.player.debug.warn(this.TAG_NAME,"endOfStream() error",e)}}}abortSourceBuffer(){if(this.isStateOpen){if(this.sourceBuffer){try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort sourceBuffer"),this.sourceBuffer.abort()}catch(e){}po(this.getSourceBufferUpdating())&&this._doRemoveRanges()}if(this.audioSourceBuffer){try{this.player.debug.log(this.TAG_NAME,"abortSourceBuffer() abort audioSourceBuffer"),this.audioSourceBuffer.abort()}catch(e){}po(this.getAudioSourceBufferUpdating())&&this._doRemoveRanges()}}this.sourceBuffer=null,this.audioSourceBuffer=null}removeSourceBuffer(){if(!this.isStateClosed&&this.mediaSource){if(this.sourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() sourceBuffer"),this.mediaSource.removeSourceBuffer(this.sourceBuffer)}catch(e){this.player.debug.error(this.TAG_NAME,"removeSourceBuffer() sourceBuffer error",e)}if(this.audioSourceBuffer)try{this.player.debug.log(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer"),this.mediaSource.removeSourceBuffer(this.audioSourceBuffer)}catch(e){this.player.debug.error(this.TAG_NAME,"removeSourceBuffer() audioSourceBuffer error",e)}}}_hasPendingSegments(){return this.pendingSegments.length>0||this.pendingAudioSegments.length>0}getPendingSegmentsLength(){return this.pendingSegments.length}_handleUpdatePlaybackRate(){if(!this.$videoElement)return;const e=this.$videoElement;this.player._opt.videoBuffer,this.player._opt.videoBufferDelay;const t=e.buffered;t.length&&t.start(0);const i=t.length?t.end(t.length-1):0;let s=e.currentTime;const r=i-s,a=this.getMseBufferMaxDelayTime();if(this.player.updateStats({mseVideoBufferDelayTime:r}),r>a)this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current is ${s} , delay buffer is more than ${a} is ${r} and new time is ${i}`),e.currentTime=i,s=e.currentTime;else if(r<0){if(this.player.debug.warn(this.TAG_NAME,`handleUpdatePlaybackRate and delay buffer is ${i} - current is ${s} = ${r} < 0 and check video is paused : ${e.paused} `),0===i)return void this.player.emit(ct.mediaSourceBufferedIsZeroError,"video.buffered is empty");e.paused&&e.play()}const o=this._getPlaybackRate(i-s);e.playbackRate!==o&&(this.player.debug.log(this.TAG_NAME,`handleUpdatePlaybackRate and buffered is ${i} and current time is ${s} and delay is ${i-s} set playbackRate is ${o} `),e.playbackRate=o)}_handleUpdateBufferDelayTime(){const e=this.getVideoBufferDelayTime();this.player.updateStats({mseVideoBufferDelayTime:e})}_checkVideoPlayCurrentTime(){const e=this.checkSourceBufferStore();if(e<0){const t=this.getVideoBufferStartTime();this.player.debug.warn(this.TAG_NAME,`checkVideoPlayCurrentTime store is ${e} < 0 and set currentTime ${this.$videoElement.currentTime} to ${t}`),this.$videoElement.currentTime=t}}_doAppendSegments(){if(this.isStateClosed||this.isStateEnded)this.player.debug.log(this.TAG_NAME,"_doAppendSegments() mediaSource is closed or ended and return");else if(null!==this.sourceBuffer){if(this.needInitAudio()&&null===this.audioSourceBuffer)return this.player.debug.log(this.TAG_NAME,"_doAppendSegments() audioSourceBuffer is null and need init audio source buffer"),void(null===this.audioSourceBufferCheckTimeout&&(this.audioSourceBufferCheckTimeout=setTimeout((()=>{this._clearAudioSourceBufferCheckTimeout(),this.player.emit(ct.mediaSourceAudioInitTimeout)}),1e3)));if(po(this.getSourceBufferUpdating())&&this.pendingSegments.length>0){const e=this.pendingSegments.shift();try{this.sourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.sourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(ct.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(ct.mediaSourceAppendBufferError)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,e))}}if(po(this.getAudioSourceBufferUpdating())&&this.pendingAudioSegments.length>0){const e=this.pendingAudioSegments.shift();try{this.audioSourceBuffer.appendBuffer(e)}catch(e){this.player.debug.error(this.TAG_NAME,"this.audioSourceBuffer.appendBuffer()",e.code,e),22===e.code?(this.stop(),this.mediaSourceAppendBufferFull=!0,this.player.emitError(ct.mediaSourceFull)):11===e.code?(this.stop(),this.mediaSourceAppendBufferError=!0,this.player.emitError(ct.mediaSourceAppendBufferError)):(this.stop(),this.mediaSourceBufferError=!0,this.player.emitError(nt.mseSourceBufferError,e))}}}else this.player.debug.log(this.TAG_NAME,"_doAppendSegments() sourceBuffer is null and wait init and return")}_doCleanUpSourceBuffer(){if(!this.$videoElement)return;const e=this.$videoElement.currentTime;if(this.sourceBuffer){const t=this.sourceBuffer.buffered;let i=!1;for(let s=0;s=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingRemoveRanges.push({start:r,end:t})}}else a=this.player._opt.mseAutoCleanupMaxBackwardDuration){i=!0;let t=e-this.player._opt.mseAutoCleanupMinBackwardDuration;this.pendingAudioRemoveRanges.push({start:r,end:t})}}else a0||this.pendingAudioRemoveRanges.length>0}_doRemoveRanges(){if(this.sourceBuffer&&po(this.getSourceBufferUpdating())){let e=this.pendingRemoveRanges;for(;e.length&&po(this.getSourceBufferUpdating());){let t=e.shift();try{this.sourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() sourceBuffer error",e)}}}if(this.audioSourceBuffer&&po(this.getAudioSourceBufferUpdating())){let e=this.pendingAudioRemoveRanges;for(;e.length&&po(this.getAudioSourceBufferUpdating());){let t=e.shift();try{this.audioSourceBuffer.remove(t.start,t.end)}catch(e){this.player.debug.warn(this.TAG_NAME,"_doRemoveRanges() audioSourceBuffer error",e)}}}}getDecodePlaybackRate(){let e=0;const t=this.$videoElement;return t&&(e=t.playbackRate),e}_getPlaybackRate(e){const t=this.$videoElement;let i=this.player._opt.videoBufferDelay+this.player._opt.videoBuffer;const s=Math.max(i,1e3),r=s/2;return e*=1e3,1===t.playbackRate?e>s?1.2:1:e<=r?1:t.playbackRate}_needCleanupSourceBuffer(){if(po(this.player._opt.mseAutoCleanupSourceBuffer)||!this.$videoElement)return!1;const e=this.$videoElement,t=e.buffered,i=e.currentTime;return t.length>=1&&i-t.start(0)>=this.player._opt.mseAutoCleanupMaxBackwardDuration}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}getVideoBufferLastTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;i.length&&i.start(0);t=i.length?i.end(i.length-1):0}return t}getVideoBufferStartTime(){const e=this.$videoElement;let t=0;if(e){const i=e.buffered;t=i.length?i.start(0):0}return t}getVideoBufferDelayTime(){const e=this.$videoElement;const t=this.getVideoBufferLastTime()-e.currentTime;return t>0?t:0}_clearAudioSourceBufferCheckTimeout(){this.audioSourceBufferCheckTimeout&&(clearTimeout(this.audioSourceBufferCheckTimeout),this.audioSourceBufferCheckTimeout=null)}_clearAudioNoDataCheckTimeout(){this.audioSourceNoDataCheckTimeout&&(clearTimeout(this.audioSourceNoDataCheckTimeout),this.audioSourceNoDataCheckTimeout=null)}getMimeType(){return{video:this.videoMimeType,audio:this.audioMimeType}}getMseBufferMaxDelayTime(){let e=(this.player._opt.videoBuffer+this.player._opt.videoBufferDelay)/1e3;return Math.max(5,e+3)}}const Vh=()=>"wakeLock"in navigator&&-1===window.navigator.userAgent.indexOf("Samsung")&&po(ya());class $h{constructor(e){this.player=e,this.enabled=!1,Vh()?(this.player.debug.log("NoSleep","Native Wake Lock API supported."),this._wakeLock=null,this.handleVisibilityChange=()=>{null!==this._wakeLock&&"visible"===document.visibilityState&&this.enable()},document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("fullscreenchange",this.handleVisibilityChange)):(this.player.debug.log("NoSleep","Native Wake Lock API not supported. so use video element."),this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm","data:video/webm;base64,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ggOtgPj//qOHggPBgPj//qOHggPVgPj//qOHggPpgPj//qOegQPvANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCA/2A+P/+o4eCBBGA+P/+o4eCBCWA+P/+o4eCBDmA+P/+o4eCBE2A+P/+o56BBFMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IEiID4//6jh4IEnID4//6jh4IEsID4//6jnoEEtwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggTEgPj//qOHggTYgPj//qOHggTsgPj//qOHggUAgPj//qOHggUUgPj//qOegQUbANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBSiA+P/+o4eCBTyA+P/+o4eCBVCA+P/+o4eCBWSA+P/+o4eCBXiA+P/+o56BBX8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IFjID4//6jh4IFoID4//6jh4IFtID4//6jh4IFyID4//6jh4IF3ID4//6jnoEF4wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggXwgPj//qOHggYEgPj//qOHggYYgPj//qOHggYsgPj//qOHggZAgPj//qOegQZHANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCBlSA+P/+o4eCBmiA+P/+o4eCBnyA+P/+o4eCBpCA+P/+o4eCBqSA+P/+o56BBqsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IGuID4//6jh4IGzID4//6jh4IG4ID4//6jh4IG9ID4//6jh4IHCID4//6jnoEHDwDRAgAFEBAUYABhYL/QACIAEM1+tck+ccwAAKOHggccgPj//qOHggcwgPj//qOHggdEgPj//qOHggdYgPj//qOHggdsgPj//qOegQdzANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCB4CA+P/+o4eCB5SA+P/+o4eCB6iA+P/+o4eCB7yA+P/+o4eCB9CA+P/+o56BB9cA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IH5ID4//6jh4IH+ID4//6jh4IIDID4//6jh4IIIID4//6jh4IINID4//6jnoEIOwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgghIgPj//qOHgghcgPj//qOHgghwgPj//qOHggiEgPj//qOegQifANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCMCA+P/+o4eCCNSA+P/+o4eCCOiA+P/+o4eCCPyA+P/+o56BCQMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IJEID4//6jh4IJJID4//6jh4IJOID4//6jh4IJTID4//6jh4IJYID4//6jnoEJZwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggl0gPj//qOHggmIgPj//qOHggmcgPj//qOHggmwgPj//qOHggnEgPj//qOegQnLANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCdiA+P/+o4eCCeyA+P/+o4eCCgCA+P/+o4eCChSA+P/+o4eCCiiA+P/+o56BCi8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IKPID4//6jh4IKUID4//6jh4IKZID4//6jh4IKeID4//6jh4IKjID4//6jnoEKkwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggqggPj//qOHggq0gPj//qOHggrIgPj//qOHggrcgPj//qOHggrwgPj//qOegQr3ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCCwSA+P/+o4eCCxiA+P/+o4eCCyyA+P/+o4eCC0CA+P/+o4eCC1SA+P/+o56BC1sA0QIABRAQFGAAYWC/0AAiABDNfrXJPnHMAACjh4ILaID4//6jh4ILfID4//6jh4ILkID4//6jh4ILpID4//6jh4ILuID4//6jnoELvwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHggvMgPj//qOHggvggPj//qOHggv0gPj//qOHggwIgPj//qOHggwcgPj//qOegQwjANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDDCA+P/+o4eCDESA+P/+o4eCDFiA+P/+o4eCDGyA+P/+o4eCDICA+P/+o56BDIcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IMlID4//6jh4IMqID4//6jh4IMvID4//6jh4IM0ID4//6jnoEM6wDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg0MgPj//qOHgg0ggPj//qOHgg00gPj//qOHgg1IgPj//qOegQ1PANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDVyA+P/+o4eCDXCA+P/+o4eCDYSA+P/+o4eCDZiA+P/+o4eCDayA+P/+o56BDbMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4INwID4//6jh4IN1ID4//6jh4IN6ID4//6jh4IN/ID4//6jh4IOEID4//6jnoEOFwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg4kgPj//qOHgg44gPj//qOHgg5MgPj//qOHgg5ggPj//qOHgg50gPj//qOegQ57ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCDoiA+P/+o4eCDpyA+P/+o4eCDrCA+P/+o4eCDsSA+P/+o4eCDtiA+P/+o56BDt8A0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IO7ID4//6jh4IPAID4//6jh4IPFID4//6jh4IPKID4//6jh4IPPID4//6jnoEPQwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHgg9QgPj//qOHgg9kgPj//qOHgg94gPj//qOHgg+MgPj//qOHgg+ggPj//qOegQ+nANECAAUQEBRgAGFgv9AAIgAQzX61yT5xzAAAo4eCD7SA+P/+o4eCD8iA+P/+o4eCD9yA+P/+o4eCD/CA+P/+o4eCEASA+P/+o56BEAsA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IQGID4//6jh4IQLID4//6jh4IQQID4//6jh4IQVID4//6jh4IQaID4//6jnoEQbwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghB8gPj//qOHghCQgPj//qOHghCkgPj//qOHghC4gPj//qOHghDMgPj//qOegRDTANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEOCA+P/+o4eCEPSA+P/+o4eCEQiA+P/+o56BETcA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4IRQ4D4//6jh4IRV4D4//6jh4IRa4D4//6jh4IRf4D4//6jh4IRk4D4//6jnoERmwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghGngPj//qOHghG7gPj//qOHghHPgPj//qOHghHjgPj//qOHghH3gPj//qOegRH/ANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEguA+P/+o4eCEh+A+P/+o4eCEjOA+P/+o4eCEkeA+P/+o4eCEluA+P/+o56BEmMA0QIABRCsABgAGFgv9AAIgAQzX61yT5xzAACjh4ISb4D4//6jh4ISg4D4//6jh4ISl4D4//6jh4ISq4D4//6jh4ISv4D4//6jnoESxwDRAgAFEKwAGAAYWC/0AAiABDNfrXJPnHMAAKOHghLTgPj//qOHghLngPj//qOHghL7gPj//qOHghMPgPj//qOHghMjgPj//qOegRMrANECAAUQrAAYABhYL/QACIAEM1+tck+ccwAAo4eCEzeA+P/+o4eCE0uA+P/+o4eCE1+A+P/+o4eCE3OA+P/+oAEAAAAAAAAPoYeCE4cA+P/+daKDB/KBHFO7a5G7j7OBB7eK94EB8YIDX/CBDA=="),this._addSourceToVideo(this.noSleepVideo,"mp4","data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACORtZGF03gIATGF2YzU4LjM1LjEwMAACMEAOAAACcQYF//9t3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2MSByMzAyNyA0MTIxMjc3IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTAgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTcgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0wIHdlaWdodHA9MCBrZXlpbnQ9MjUwIGtleWludF9taW49MTAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAADvZYiED/JigADD7JycnJycnJycnJycnJycnJycnJ11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111114BGCAHARggBwEYIAcBGCAHARggBwAAAAdBmjgf4BLYARggBwEYIAcBGCAHARggBwAAAAdBmlQH+AS2ARggBwEYIAcBGCAHARggBwAAAAdBmmA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZrAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0Ga4D/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbAD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbID/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBm0A/wCWwARggBwEYIAcBGCAHAAAAB0GbYD/AJbABGCAHARggBwEYIAcAAAAHQZuAP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0Gb4D/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdBmgA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmiA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmkA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZpgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZqgP8AlsAEYIAcBGCAHARggBwAAAAdBmsA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmuA/wCWwARggBwEYIAcBGCAHARggBwAAAAdBmwA/wCWwARggBwEYIAcBGCAHARggBwEYIAcAAAAHQZsgP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtAP8AlsAEYIAcBGCAHARggBwEYIAcAAAAHQZtgP8AlsAEYIAcBGCAHARggBwEYIAcBGCAHAAAAB0GbgD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GboD/AJbABGCAHARggBwEYIAcBGCAHAAAAB0GbwD/AJbABGCAHARggBwEYIAcBGCAHARggBwAAAAdB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"),Object.assign(this.noSleepVideo.style,{position:"absolute",left:"-100%",top:"-100%"}),document.querySelector("body").append(this.noSleepVideo),this.handleNoSleepVideoTimeUpdate=()=>{this.noSleepVideo&&this.noSleepVideo.currentTime>4&&(this.noSleepVideo.currentTime=1)},this.noSleepVideo.addEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate))}destroy(){if(this._wakeLock&&(this._wakeLock.release(),this._wakeLock=null),this.noSleepVideo){this.handleNoSleepVideoTimeUpdate&&this.noSleepVideo.removeEventListener("timeupdate",this.handleNoSleepVideoTimeUpdate);try{this.noSleepVideo.parentNode&&this.noSleepVideo.parentNode.removeChild(this.noSleepVideo)}catch(e){this.player.debug.warn("NoSleep","Failed to remove noSleepVideo element.")}this.noSleepVideo=null}this.handleVisibilityChange&&(document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("fullscreenchange",this.handleVisibilityChange))}_addSourceToVideo(e,t,i){var s=document.createElement("source");s.src=i,s.type=`video/${t}`,e.appendChild(s)}get isEnabled(){return this.enabled}enable(){const e=this.player.debug;if(Vh())return navigator.wakeLock.request("screen").then((t=>{this._wakeLock=t,this.enabled=!0,e.log("wakeLock","Wake Lock active."),this._wakeLock.addEventListener("release",(()=>{e.log("wakeLock","Wake Lock released.")}))})).catch((t=>{throw this.enabled=!1,e.warn("wakeLock",`${t.name}, ${t.message}`),t}));return this.noSleepVideo.play().then((t=>(e.log("wakeLock","noSleepVideo Wake Lock active."),this.enabled=!0,t))).catch((t=>{throw e.warn("wakeLock",`noSleepVideo ${t.name}, ${t.message}`),this.enabled=!1,t}))}disable(){Vh()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):this.noSleepVideo&&this.noSleepVideo.pause(),this.enabled=!1,this.player.debug.log("wakeLock","Disabling wake lock.")}}function Wh(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Jh={exports:{}};!function(e,t){var i,s,r,a,o;i=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,s=/^(?=([^\/?#]*))\1([^]*)$/,r=/(?:\/|^)\.(?=\/)/g,a=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,o={buildAbsoluteURL:function(e,t,i){if(i=i||{},e=e.trim(),!(t=t.trim())){if(!i.alwaysNormalize)return e;var r=o.parseURL(e);if(!r)throw new Error("Error trying to parse base URL.");return r.path=o.normalizePath(r.path),o.buildURLFromParts(r)}var a=o.parseURL(t);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return i.alwaysNormalize?(a.path=o.normalizePath(a.path),o.buildURLFromParts(a)):t;var n=o.parseURL(e);if(!n)throw new Error("Error trying to parse base URL.");if(!n.netLoc&&n.path&&"/"!==n.path[0]){var l=s.exec(n.path);n.netLoc=l[1],n.path=l[2]}n.netLoc&&!n.path&&(n.path="/");var d={scheme:n.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(d.netLoc=n.netLoc,"/"!==a.path[0]))if(a.path){var h=n.path,c=h.substring(0,h.lastIndexOf("/")+1)+a.path;d.path=o.normalizePath(c)}else d.path=n.path,a.params||(d.params=n.params,a.query||(d.query=n.query));return null===d.path&&(d.path=i.alwaysNormalize?o.normalizePath(a.path):a.path),o.buildURLFromParts(d)},parseURL:function(e){var t=i.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(r,"");e.length!==(e=e.replace(a,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}},e.exports=o}(Jh);var qh=Jh.exports;function Kh(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function Yh(e){for(var t=1;t`):oc}(t)}))}const hc=lc,cc=/^(\d+)x(\d+)$/,uc=/(.+?)=(".*?"|.*?)(?:,|$)/g;class pc{constructor(e){"string"==typeof e&&(e=pc.parseAttrList(e)),Zh(this,e)}get clientAttrs(){return Object.keys(this).filter((e=>"X-"===e.substring(0,2)))}decimalInteger(e){const t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}hexadecimalInteger(e){if(this[e]){let t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;const i=new Uint8Array(t.length/2);for(let e=0;eNumber.MAX_SAFE_INTEGER?1/0:t}decimalFloatingPoint(e){return parseFloat(this[e])}optionalFloat(e,t){const i=this[e];return i?parseFloat(i):t}enumeratedString(e){return this[e]}bool(e){return"YES"===this[e]}decimalResolution(e){const t=cc.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}static parseAttrList(e){let t;const i={};for(uc.lastIndex=0;null!==(t=uc.exec(e));){let e=t[2];0===e.indexOf('"')&&e.lastIndexOf('"')===e.length-1&&(e=e.slice(1,-1));i[t[1].trim()]=e}return i}}function fc(e){return"SCTE35-OUT"===e||"SCTE35-IN"===e}class mc{constructor(e,t){if(this.attr=void 0,this._startDate=void 0,this._endDate=void 0,this._badValueForSameId=void 0,t){const i=t.attr;for(const t in i)if(Object.prototype.hasOwnProperty.call(e,t)&&e[t]!==i[t]){hc.warn(`DATERANGE tag attribute: "${t}" does not match for tags with ID: "${e.ID}"`),this._badValueForSameId=t;break}e=Zh(new pc({}),i,e)}if(this.attr=e,this._startDate=new Date(e["START-DATE"]),"END-DATE"in this.attr){const e=new Date(this.attr["END-DATE"]);ec(e.getTime())&&(this._endDate=e)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get startDate(){return this._startDate}get endDate(){if(this._endDate)return this._endDate;const e=this.duration;return null!==e?new Date(this._startDate.getTime()+1e3*e):null}get duration(){if("DURATION"in this.attr){const e=this.attr.decimalFloatingPoint("DURATION");if(ec(e))return e}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isValid(){return!!this.id&&!this._badValueForSameId&&ec(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)}}class gc{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}}var yc="audio",Ac="video",bc="audiovideo";class vc{constructor(e){this._byteRange=null,this._url=null,this.baseurl=void 0,this.relurl=void 0,this.elementaryStreams={[yc]:null,[Ac]:null,[bc]:null},this.baseurl=e}setByteRange(e,t){const i=e.split("@",2);let s;s=1===i.length?(null==t?void 0:t.byteRangeEndOffset)||0:parseInt(i[1]),this._byteRange=[s,parseInt(i[0])+s]}get byteRange(){return this._byteRange?this._byteRange:[]}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get url(){return!this._url&&this.baseurl&&this.relurl&&(this._url=qh.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(e){this._url=e}}class _c extends vc{constructor(e,t){super(t),this._decryptdata=null,this.rawProgramDateTime=null,this.programDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.stats=new gc,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=e}get decryptdata(){const{levelkeys:e}=this;if(!e&&!this._decryptdata)return null;if(!this._decryptdata&&this.levelkeys&&!this.levelkeys.NONE){const e=this.levelkeys.identity;if(e)this._decryptdata=e.getDecryptData(this.sn);else{const e=Object.keys(this.levelkeys);if(1===e.length)return this._decryptdata=this.levelkeys[e[0]].getDecryptData(this.sn)}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;if(!ec(this.programDateTime))return null;const e=ec(this.duration)?this.duration:0;return this.programDateTime+1e3*e}get encrypted(){var e;if(null!=(e=this._decryptdata)&&e.encrypted)return!0;if(this.levelkeys){const e=Object.keys(this.levelkeys),t=e.length;if(t>1||1===t&&this.levelkeys[e[0]].encrypted)return!0}return!1}setKeyFormat(e){if(this.levelkeys){const t=this.levelkeys[e];t&&!this._decryptdata&&(this._decryptdata=t.getDecryptData(this.sn))}}abortRequests(){var e,t;null==(e=this.loader)||e.abort(),null==(t=this.keyLoader)||t.abort()}setElementaryStreamInfo(e,t,i,s,r,a=!1){const{elementaryStreams:o}=this,n=o[e];n?(n.startPTS=Math.min(n.startPTS,t),n.endPTS=Math.max(n.endPTS,i),n.startDTS=Math.min(n.startDTS,s),n.endDTS=Math.max(n.endDTS,r)):o[e]={startPTS:t,endPTS:i,startDTS:s,endDTS:r,partial:a}}clearElementaryStreamInfo(){const{elementaryStreams:e}=this;e[yc]=null,e[Ac]=null,e[bc]=null}}class Sc extends vc{constructor(e,t,i,s,r){super(i),this.fragOffset=0,this.duration=0,this.gap=!1,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.stats=new gc,this.duration=e.decimalFloatingPoint("DURATION"),this.gap=e.bool("GAP"),this.independent=e.bool("INDEPENDENT"),this.relurl=e.enumeratedString("URI"),this.fragment=t,this.index=s;const a=e.enumeratedString("BYTERANGE");a&&this.setByteRange(a,r),r&&(this.fragOffset=r.fragOffset+r.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){const{elementaryStreams:e}=this;return!!(e.audio||e.video||e.audiovideo)}}class wc{constructor(e){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.live=!0,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.availabilityDelay=void 0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.driftStartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=e}reloaded(e){if(!e)return this.advanced=!0,void(this.updated=!0);const t=this.lastPartSn-e.lastPartSn,i=this.lastPartIndex-e.lastPartIndex;this.updated=this.endSN!==e.endSN||!!i||!!t||!this.live,this.advanced=this.endSN>e.endSN||t>0||0===t&&i>0,this.updated||this.advanced?this.misses=Math.floor(.6*e.misses):this.misses=e.misses+1,this.availabilityDelay=e.availabilityDelay}get hasProgramDateTime(){return!!this.fragments.length&&ec(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){const e=this.driftEndTime-this.driftStartTime;if(e>0){return 1e3*(this.driftEnd-this.driftStart)/e}return 1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){var e;return null!=(e=this.fragments)&&e.length?this.fragments[this.fragments.length-1].end:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].index:-1}get lastPartSn(){var e;return null!=(e=this.partList)&&e.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}}function Ec(e){return Uint8Array.from(atob(e),(e=>e.charCodeAt(0)))}function Tc(e){const t=e.split(":");let i=null;if("data"===t[0]&&2===t.length){const e=t[1].split(";"),s=e[e.length-1].split(",");if(2===s.length){const t="base64"===s[0],r=s[1];t?(e.splice(-1,1),i=Ec(r)):i=function(e){const t=kc(e).subarray(0,16),i=new Uint8Array(16);return i.set(t,16-t.length),i}(r)}}return i}function kc(e){return Uint8Array.from(unescape(encodeURIComponent(e)),(e=>e.charCodeAt(0)))}const Cc="undefined"!=typeof self?self:void 0;var xc={CLEARKEY:"org.w3.clearkey",FAIRPLAY:"com.apple.fps",PLAYREADY:"com.microsoft.playready",WIDEVINE:"com.widevine.alpha"},Rc="org.w3.clearkey",Dc="com.apple.streamingkeydelivery",Lc="com.microsoft.playready",Pc="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function Bc(e){switch(e){case Dc:return xc.FAIRPLAY;case Lc:return xc.PLAYREADY;case Pc:return xc.WIDEVINE;case Rc:return xc.CLEARKEY}}var Ic="edef8ba979d64acea3c827dcd51d21ed";function Mc(e){switch(e){case xc.FAIRPLAY:return Dc;case xc.PLAYREADY:return Lc;case xc.WIDEVINE:return Pc;case xc.CLEARKEY:return Rc}}function Uc(e){const{drmSystems:t,widevineLicenseUrl:i}=e,s=t?[xc.FAIRPLAY,xc.WIDEVINE,xc.PLAYREADY,xc.CLEARKEY].filter((e=>!!t[e])):[];return!s[xc.WIDEVINE]&&i&&s.push(xc.WIDEVINE),s}const Fc=null!=Cc&&null!=(Oc=Cc.navigator)&&Oc.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;var Oc;function Nc(e,t,i){return Uint8Array.prototype.slice?e.slice(t,i):new Uint8Array(Array.prototype.slice.call(e,t,i))}const jc=(e,t)=>t+10<=e.length&&73===e[t]&&68===e[t+1]&&51===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,zc=(e,t)=>t+10<=e.length&&51===e[t]&&68===e[t+1]&&73===e[t+2]&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128,Gc=(e,t)=>{const i=t;let s=0;for(;jc(e,t);){s+=10;s+=Hc(e,t+6),zc(e,t+10)&&(s+=10),t+=s}if(s>0)return e.subarray(i,i+s)},Hc=(e,t)=>{let i=0;return i=(127&e[t])<<21,i|=(127&e[t+1])<<14,i|=(127&e[t+2])<<7,i|=127&e[t+3],i},Vc=(e,t)=>jc(e,t)&&Hc(e,t+6)+10<=e.length-t,$c=e=>{const t=qc(e);for(let e=0;ee&&"PRIV"===e.key&&"com.apple.streaming.transportStreamTimestamp"===e.info,Jc=e=>{const t=String.fromCharCode(e[0],e[1],e[2],e[3]),i=Hc(e,4);return{type:t,size:i,data:e.subarray(10,10+i)}},qc=e=>{let t=0;const i=[];for(;jc(e,t);){const s=Hc(e,t+6);t+=10;const r=t+s;for(;t+8"PRIV"===e.type?Yc(e):"W"===e.type[0]?Xc(e):Qc(e),Yc=e=>{if(e.size<2)return;const t=eu(e.data,!0),i=new Uint8Array(e.data.subarray(t.length+1));return{key:e.type,info:t,data:i.buffer}},Qc=e=>{if(e.size<2)return;if("TXXX"===e.type){let t=1;const i=eu(e.data.subarray(t),!0);t+=i.length+1;const s=eu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=eu(e.data.subarray(1));return{key:e.type,data:t}},Xc=e=>{if("WXXX"===e.type){if(e.size<2)return;let t=1;const i=eu(e.data.subarray(t),!0);t+=i.length+1;const s=eu(e.data.subarray(t));return{key:e.type,info:i,data:s}}const t=eu(e.data);return{key:e.type,data:t}},Zc=e=>{if(8===e.data.byteLength){const t=new Uint8Array(e.data),i=1&t[3];let s=(t[4]<<23)+(t[5]<<15)+(t[6]<<7)+t[7];return s/=45,i&&(s+=47721858.84),Math.round(s)}},eu=(e,t=!1)=>{const i=iu();if(i){const s=i.decode(e);if(t){const e=s.indexOf("\0");return-1!==e?s.substring(0,e):s}return s.replace(/\0/g,"")}const s=e.length;let r,a,o,n="",l=0;for(;l>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:n+=String.fromCharCode(r);break;case 12:case 13:a=e[l++],n+=String.fromCharCode((31&r)<<6|63&a);break;case 14:a=e[l++],o=e[l++],n+=String.fromCharCode((15&r)<<12|(63&a)<<6|(63&o)<<0)}}return n};let tu;function iu(){if(!navigator.userAgent.includes("PlayStation 4"))return tu||void 0===self.TextDecoder||(tu=new self.TextDecoder("utf-8")),tu}const su=function(e){let t="";for(let i=0;i>24,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i}function pu(e,t){const i=[];if(!t.length)return i;const s=e.byteLength;for(let r=0;r1?r+a:s;if(nu(e.subarray(r+4,r+8))===t[0])if(1===t.length)i.push(e.subarray(r+8,o));else{const s=pu(e.subarray(r+8,o),t.slice(1));s.length&&au.apply(i,s)}r=o}return i}function fu(e){const t=[],i=e[0];let s=8;const r=du(e,s);s+=4;let a=0,o=0;0===i?(a=du(e,s),o=du(e,s+4),s+=8):(a=hu(e,s),o=hu(e,s+8),s+=16),s+=2;let n=e.length+o;const l=lu(e,s);s+=2;for(let i=0;i>>31)return hc.warn("SIDX has hierarchical references (not supported)"),null;const l=du(e,i);i+=4,t.push({referenceSize:o,subsegmentDuration:l,info:{duration:l/r,start:n,end:n+o-1}}),n+=o,i+=4,s=i}return{earliestPresentationTime:a,timescale:r,version:i,referencesCount:l,references:t}}function mu(e){const t=[],i=pu(e,["moov","trak"]);for(let e=0;e{const i=du(e,4),s=t[i];s&&(s.default={duration:du(e,12),flags:du(e,20)})})),t}function gu(e){const t=e.subarray(8),i=t.subarray(86),s=nu(t.subarray(4,8));let r=s;const a="enca"===s||"encv"===s;if(a){const e=pu(t,[s])[0];pu(e.subarray("enca"===s?28:78),["sinf"]).forEach((e=>{const t=pu(e,["schm"])[0];if(t){const i=nu(t.subarray(4,8));if("cbcs"===i||"cenc"===i){const t=pu(e,["frma"])[0];t&&(r=nu(t))}}}))}switch(r){case"avc1":case"avc2":case"avc3":case"avc4":{const e=pu(i,["avcC"])[0];r+="."+Au(e[1])+Au(e[2])+Au(e[3]);break}case"mp4a":{const e=pu(t,[s])[0],i=pu(e.subarray(28),["esds"])[0];if(i&&i.length>12){let e=4;if(3!==i[e++])break;e=yu(i,e),e+=2;const t=i[e++];if(128&t&&(e+=2),64&t&&(e+=i[e++]),4!==i[e++])break;e=yu(i,e);const s=i[e++];if(64!==s)break;if(r+="."+Au(s),e+=12,5!==i[e++])break;e=yu(i,e);const a=i[e++];let o=(248&a)>>3;31===o&&(o+=1+((7&a)<<3)+((224&i[e])>>5)),r+="."+o}break}case"hvc1":case"hev1":{const e=pu(i,["hvcC"])[0],t=e[1],s=["","A","B","C"][t>>6],a=31&t,o=du(e,2),n=(32&t)>>5?"H":"L",l=e[12],d=e.subarray(6,12);r+="."+s+a,r+="."+o.toString(16).toUpperCase(),r+="."+n+l;let h="";for(let e=d.length;e--;){const t=d[e];if(t||h){h="."+t.toString(16).toUpperCase()+h}}r+=h;break}case"dvh1":case"dvhe":{const e=pu(i,["dvcC"])[0],t=e[2]>>1&127,s=e[2]<<5&32|e[3]>>3&31;r+="."+bu(t)+"."+bu(s);break}case"vp09":{const e=pu(i,["vpcC"])[0],t=e[4],s=e[5],a=e[6]>>4&15;r+="."+bu(t)+"."+bu(s)+"."+bu(a);break}case"av01":{const e=pu(i,["av1C"])[0],t=e[1]>>>5,s=31&e[1],a=e[2]>>>7?"H":"M",o=(64&e[2])>>6,n=(32&e[2])>>5,l=2===t&&o?n?12:10:o?10:8,d=(16&e[2])>>4,h=(8&e[2])>>3,c=(4&e[2])>>2,u=3&e[2],p=1,f=1,m=1,g=0;r+="."+t+"."+bu(s)+a+"."+bu(l)+"."+d+"."+h+c+u+"."+bu(p)+"."+bu(f)+"."+bu(m)+"."+g;break}}return{codec:r,encrypted:a}}function yu(e,t){const i=t+5;for(;128&e[t++]&&t{const l=n.byteOffset-8;pu(n,["traf"]).map((n=>{const d=pu(n,["tfdt"]).map((e=>{const t=e[0];let i=du(e,4);return 1===t&&(i*=Math.pow(2,32),i+=du(e,8)),i/r}))[0];return void 0!==d&&(e=d),pu(n,["tfhd"]).map((d=>{const h=du(d,4),c=16777215&du(d,0);let u=0;const p=0!=(16&c);let f=0;const m=0!=(32&c);let g=8;h===a&&(0!=(1&c)&&(g+=8),0!=(2&c)&&(g+=4),0!=(8&c)&&(u=du(d,g),g+=4),p&&(f=du(d,g),g+=4),m&&(g+=4),"video"===t.type&&(o=function(e){if(!e)return!1;const t=e.indexOf("."),i=t<0?e:e.substring(0,t);return"hvc1"===i||"hev1"===i||"dvh1"===i||"dvhe"===i}(t.codec)),pu(n,["trun"]).map((a=>{const n=a[0],d=16777215&du(a,0),h=0!=(1&d);let c=0;const p=0!=(4&d),m=0!=(256&d);let g=0;const y=0!=(512&d);let A=0;const b=0!=(1024&d),v=0!=(2048&d);let _=0;const S=du(a,4);let w=8;h&&(c=du(a,w),w+=4),p&&(w+=4);let E=c+l;for(let l=0;l>1&63;return 39===e||40===e}return 6===(31&t)}function Tu(e,t,i,s){const r=ku(e);let a=0;a+=t;let o=0,n=0,l=0;for(;a=r.length)break;l=r[a++],o+=l}while(255===l);n=0;do{if(a>=r.length)break;l=r[a++],n+=l}while(255===l);const e=r.length-a;let t=a;if(ne){hc.error(`Malformed SEI payload. ${n} is too small, only ${e} bytes left to parse.`);break}if(4===o){if(181===r[t++]){const e=lu(r,t);if(t+=2,49===e){const e=du(r,t);if(t+=4,1195456820===e){const e=r[t++];if(3===e){const a=r[t++],n=31&a,l=64&a,d=l?2+3*n:0,h=new Uint8Array(d);if(l){h[0]=a;for(let e=1;e16){const e=[];for(let i=0;i<16;i++){const s=r[t++].toString(16);e.push(1==s.length?"0"+s:s),3!==i&&5!==i&&7!==i&&9!==i||e.push("-")}const a=n-16,l=new Uint8Array(a);for(let e=0;e0?(a=new Uint8Array(4),t.length>0&&new DataView(a.buffer).setUint32(0,t.length,!1)):a=new Uint8Array;const o=new Uint8Array(4);return i&&i.byteLength>0&&new DataView(o.buffer).setUint32(0,i.byteLength,!1),function(e,...t){const i=t.length;let s=8,r=i;for(;r--;)s+=t[r].byteLength;const a=new Uint8Array(s);for(a[0]=s>>24&255,a[1]=s>>16&255,a[2]=s>>8&255,a[3]=255&s,a.set(e,4),r=0,s=8;r>8*(15-i)&255;return t}(e);return new Ru(this.method,this.uri,"identity",this.keyFormatVersions,t)}const t=Tc(this.uri);if(t)switch(this.keyFormat){case Pc:this.pssh=t,t.length>=22&&(this.keyId=t.subarray(t.length-22,t.length-6));break;case Lc:{const e=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=Cu(e,null,t);const i=new Uint16Array(t.buffer,t.byteOffset,t.byteLength/2),s=String.fromCharCode.apply(null,Array.from(i)),r=s.substring(s.indexOf("<"),s.length),a=(new DOMParser).parseFromString(r,"text/xml").getElementsByTagName("KID")[0];if(a){const e=a.childNodes[0]?a.childNodes[0].nodeValue:a.getAttribute("VALUE");if(e){const t=Ec(e).subarray(0,16);!function(e){const t=function(e,t,i){const s=e[t];e[t]=e[i],e[i]=s};t(e,0,3),t(e,1,2),t(e,4,5),t(e,6,7)}(t),this.keyId=t}}break}default:{let e=t.subarray(0,16);if(16!==e.length){const t=new Uint8Array(16);t.set(e,16-e.length),e=t}this.keyId=e;break}}if(!this.keyId||16!==this.keyId.byteLength){let e=xu[this.uri];if(!e){const t=Object.keys(xu).length%Number.MAX_SAFE_INTEGER;e=new Uint8Array(16);new DataView(e.buffer,12,4).setUint32(0,t),xu[this.uri]=e}this.keyId=e}return this}}const Du=/\{\$([a-zA-Z0-9-_]+)\}/g;function Lu(e){return Du.test(e)}function Pu(e,t,i){if(null!==e.variableList||e.hasVariableRefs)for(let s=i.length;s--;){const r=i[s],a=t[r];a&&(t[r]=Bu(e,a))}}function Bu(e,t){if(null!==e.variableList||e.hasVariableRefs){const i=e.variableList;return t.replace(Du,(t=>{const s=t.substring(2,t.length-1),r=null==i?void 0:i[s];return void 0===r?(e.playlistParsingError||(e.playlistParsingError=new Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${s}"`)),t):r}))}return t}function Iu(e,t,i){let s,r,a=e.variableList;if(a||(e.variableList=a={}),"QUERYPARAM"in t){s=t.QUERYPARAM;try{const e=new self.URL(i).searchParams;if(!e.has(s))throw new Error(`"${s}" does not match any query parameter in URI: "${i}"`);r=e.get(s)}catch(t){e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE QUERYPARAM: ${t.message}`))}}else s=t.NAME,r=t.VALUE;s in a?e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${s}"`)):a[s]=r||""}function Mu(e,t,i){const s=t.IMPORT;if(i&&s in i){let t=e.variableList;t||(e.variableList=t={}),t[s]=i[s]}else e.playlistParsingError||(e.playlistParsingError=new Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${s}"`))}function Uu(e=!0){if("undefined"==typeof self)return;return(e||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}const Fu={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1}};function Ou(e,t,i=!0){return!e.split(",").some((e=>!Nu(e,t,i)))}function Nu(e,t,i=!0){var s;const r=Uu(i);return null!=(s=null==r?void 0:r.isTypeSupported(ju(e,t)))&&s}function ju(e,t){return`${t}/mp4;codecs="${e}"`}function zu(e){if(e){const t=e.substring(0,4);return Fu.video[t]}return 2}function Gu(e){return e.split(",").reduce(((e,t)=>{const i=Fu.video[t];return i?(2*i+e)/(e?3:2):(Fu.audio[t]+e)/(e?2:1)}),0)}const Hu={};const Vu=/flac|opus/i;function $u(e,t=!0){return e.replace(Vu,(e=>function(e,t=!0){if(Hu[e])return Hu[e];const i={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"]}[e];for(let s=0;s0&&s.length({id:e.attrs.AUDIO,audioCodec:e.audioCodec}))),SUBTITLES:a.map((e=>({id:e.attrs.SUBTITLES,textCodec:e.textCodec}))),"CLOSED-CAPTIONS":[]};let n=0;for(qu.lastIndex=0;null!==(s=qu.exec(e));){const e=new pc(s[1]),a=e.TYPE;if(a){const s=o[a],l=r[a]||[];r[a]=l,Pu(i,e,["URI","GROUP-ID","LANGUAGE","ASSOC-LANGUAGE","STABLE-RENDITION-ID","NAME","INSTREAM-ID","CHARACTERISTICS","CHANNELS"]);const d=e.LANGUAGE,h=e["ASSOC-LANGUAGE"],c=e.CHANNELS,u=e.CHARACTERISTICS,p=e["INSTREAM-ID"],f={attrs:e,bitrate:0,id:n++,groupId:e["GROUP-ID"]||"",name:e.NAME||d||"",type:a,default:e.bool("DEFAULT"),autoselect:e.bool("AUTOSELECT"),forced:e.bool("FORCED"),lang:d,url:e.URI?Xu.resolve(e.URI,t):""};if(h&&(f.assocLang=h),c&&(f.channels=c),u&&(f.characteristics=u),p&&(f.instreamId=p),null!=s&&s.length){const e=Xu.findGroup(s,f.groupId)||s[0];ip(f,e,"audioCodec"),ip(f,e,"textCodec")}l.push(f)}}return r}static parseLevelPlaylist(e,t,i,s,r,a){const o=new wc(t),n=o.fragments;let l,d,h,c=null,u=0,p=0,f=0,m=0,g=null,y=new _c(s,t),A=-1,b=!1,v=null;for(Yu.lastIndex=0,o.m3u8=e,o.hasVariableRefs=Lu(e);null!==(l=Yu.exec(e));){b&&(b=!1,y=new _c(s,t),y.start=f,y.sn=u,y.cc=m,y.level=i,c&&(y.initSegment=c,y.rawProgramDateTime=c.rawProgramDateTime,c.rawProgramDateTime=null,v&&(y.setByteRange(v),v=null)));const e=l[1];if(e){y.duration=parseFloat(e);const t=(" "+l[2]).slice(1);y.title=t||null,y.tagList.push(t?["INF",e,t]:["INF",e])}else if(l[3]){if(ec(y.duration)){y.start=f,h&&ap(y,h,o),y.sn=u,y.level=i,y.cc=m,n.push(y);const e=(" "+l[3]).slice(1);y.relurl=Bu(o,e),sp(y,g),g=y,f+=y.duration,u++,p=0,b=!0}}else if(l[4]){const e=(" "+l[4]).slice(1);g?y.setByteRange(e,g):y.setByteRange(e)}else if(l[5])y.rawProgramDateTime=(" "+l[5]).slice(1),y.tagList.push(["PROGRAM-DATE-TIME",y.rawProgramDateTime]),-1===A&&(A=n.length);else{if(l=l[0].match(Qu),!l){hc.warn("No matches on slow regex match for level playlist!");continue}for(d=1;d0&&e.bool("CAN-SKIP-DATERANGES"),o.partHoldBack=e.optionalFloat("PART-HOLD-BACK",0),o.holdBack=e.optionalFloat("HOLD-BACK",0);break}case"PART-INF":{const e=new pc(r);o.partTarget=e.decimalFloatingPoint("PART-TARGET");break}case"PART":{let e=o.partList;e||(e=o.partList=[]);const i=p>0?e[e.length-1]:void 0,s=p++,a=new pc(r);Pu(o,a,["BYTERANGE","URI"]);const n=new Sc(a,y,t,s,i);e.push(n),y.duration+=n.duration;break}case"PRELOAD-HINT":{const e=new pc(r);Pu(o,e,["URI"]),o.preloadHint=e;break}case"RENDITION-REPORT":{const e=new pc(r);Pu(o,e,["URI"]),o.renditionReports=o.renditionReports||[],o.renditionReports.push(e);break}default:hc.warn(`line parsed but not handled: ${l}`)}}}g&&!g.relurl?(n.pop(),f-=g.duration,o.partList&&(o.fragmentHint=g)):o.partList&&(sp(y,g),y.cc=m,o.fragmentHint=y,h&&ap(y,h,o));const _=n.length,S=n[0],w=n[_-1];if(f+=o.skippedSegments*o.targetduration,f>0&&_&&w){o.averagetargetduration=f/_;const e=w.sn;o.endSN="initSegment"!==e?e:0,o.live||(w.endList=!0),S&&(o.startCC=S.cc)}else o.endSN=0,o.startCC=0;return o.fragmentHint&&(f+=o.fragmentHint.duration),o.totalduration=f,o.endCC=m,A>0&&function(e,t){let i=e[t];for(let s=t;s--;){const t=e[s];if(!t)return;t.programDateTime=i.programDateTime-1e3*t.duration,i=t}}(n,A),o}}function Zu(e,t,i){var s,r;const a=new pc(e);Pu(i,a,["KEYFORMAT","KEYFORMATVERSIONS","URI","IV","URI"]);const o=null!=(s=a.METHOD)?s:"",n=a.URI,l=a.hexadecimalInteger("IV"),d=a.KEYFORMATVERSIONS,h=null!=(r=a.KEYFORMAT)?r:"identity";n&&a.IV&&!l&&hc.error(`Invalid IV: ${a.IV}`);const c=n?Xu.resolve(n,t):"",u=(d||"1").split("/").map(Number).filter(Number.isFinite);return new Ru(o,c,h,u,l)}function ep(e){const t=new pc(e).decimalFloatingPoint("TIME-OFFSET");return ec(t)?t:null}function tp(e,t){let i=(e||"").split(/[ ,]+/).filter((e=>e));["video","audio","text"].forEach((e=>{const s=i.filter((t=>function(e,t){const i=Fu[t];return!!i&&!!i[e.slice(0,4)]}(t,e)));s.length&&(t[`${e}Codec`]=s.join(","),i=i.filter((e=>-1===s.indexOf(e))))})),t.unknownCodecs=i}function ip(e,t,i){const s=t[i];s&&(e[i]=s)}function sp(e,t){e.rawProgramDateTime?e.programDateTime=Date.parse(e.rawProgramDateTime):null!=t&&t.programDateTime&&(e.programDateTime=t.endProgramDateTime),ec(e.programDateTime)||(e.programDateTime=null,e.rawProgramDateTime=null)}function rp(e,t,i,s){e.relurl=t.URI,t.BYTERANGE&&e.setByteRange(t.BYTERANGE),e.level=i,e.sn="initSegment",s&&(e.levelkeys=s),e.initSegment=null}function ap(e,t,i){e.levelkeys=t;const{encryptedFragments:s}=i;s.length&&s[s.length-1].levelkeys===t||!Object.keys(t).some((e=>t[e].isCommonEncryption))||s.push(e)}var op="manifest",np="level",lp="audioTrack",dp="subtitleTrack",hp="main",cp="audio",up="subtitle";function pp(e){const{type:t}=e;switch(t){case lp:return cp;case dp:return up;default:return hp}}function fp(e,t){let i=e.url;return void 0!==i&&0!==i.indexOf("data:")||(i=t.url),i}class mp{constructor(e){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.hls=e,this.registerListeners()}startLoad(e){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){const{hls:e}=this;e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.LEVEL_LOADING,this.onLevelLoading,this),e.on(sc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.on(sc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}unregisterListeners(){const{hls:e}=this;e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.LEVEL_LOADING,this.onLevelLoading,this),e.off(sc.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),e.off(sc.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this)}createInternalLoader(e){const t=this.hls.config,i=t.pLoader,s=t.loader,r=new(i||s)(t);return this.loaders[e.type]=r,r}getInternalLoader(e){return this.loaders[e.type]}resetInternalLoader(e){this.loaders[e]&&delete this.loaders[e]}destroyInternalLoaders(){for(const e in this.loaders){const t=this.loaders[e];t&&t.destroy(),this.resetInternalLoader(e)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(e,t){const{url:i}=t;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:op,url:i,deliveryDirectives:null})}onLevelLoading(e,t){const{id:i,level:s,pathwayId:r,url:a,deliveryDirectives:o}=t;this.load({id:i,level:s,pathwayId:r,responseType:"text",type:np,url:a,deliveryDirectives:o})}onAudioTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:a}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:lp,url:r,deliveryDirectives:a})}onSubtitleTrackLoading(e,t){const{id:i,groupId:s,url:r,deliveryDirectives:a}=t;this.load({id:i,groupId:s,level:null,responseType:"text",type:dp,url:r,deliveryDirectives:a})}load(e){var t;const i=this.hls.config;let s,r=this.getInternalLoader(e);if(r){const t=r.context;if(t&&t.url===e.url&&t.level===e.level)return void hc.trace("[playlist-loader]: playlist request ongoing");hc.log(`[playlist-loader]: aborting previous loader for type: ${e.type}`),r.abort()}if(s=e.type===op?i.manifestLoadPolicy.default:Zh({},i.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),r=this.createInternalLoader(e),ec(null==(t=e.deliveryDirectives)?void 0:t.part)){let t;if(e.type===np&&null!==e.level?t=this.hls.levels[e.level].details:e.type===lp&&null!==e.id?t=this.hls.audioTracks[e.id].details:e.type===dp&&null!==e.id&&(t=this.hls.subtitleTracks[e.id].details),t){const e=t.partTarget,i=t.targetduration;if(e&&i){const t=1e3*Math.max(3*e,.8*i);s=Zh({},s,{maxTimeToFirstByteMs:Math.min(t,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(t,s.maxTimeToFirstByteMs)})}}}const a=s.errorRetry||s.timeoutRetry||{},o={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:a.maxNumRetry||0,retryDelay:a.retryDelayMs||0,maxRetryDelay:a.maxRetryDelayMs||0},n={onSuccess:(e,t,i,s)=>{const r=this.getInternalLoader(i);this.resetInternalLoader(i.type);const a=e.data;0===a.indexOf("#EXTM3U")?(t.parsing.start=performance.now(),Xu.isMediaPlaylist(a)?this.handleTrackOrLevelPlaylist(e,t,i,s||null,r):this.handleMasterPlaylist(e,t,i,s)):this.handleManifestParsingError(e,i,new Error("no EXTM3U delimiter"),s||null,t)},onError:(e,t,i,s)=>{this.handleNetworkError(t,i,!1,e,s)},onTimeout:(e,t,i)=>{this.handleNetworkError(t,i,!0,void 0,e)}};r.load(e,o,n)}handleMasterPlaylist(e,t,i,s){const r=this.hls,a=e.data,o=fp(e,i),n=Xu.parseMasterPlaylist(a,o);if(n.playlistParsingError)return void this.handleManifestParsingError(e,i,n.playlistParsingError,s,t);const{contentSteering:l,levels:d,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p}=n;this.variableList=p;const{AUDIO:f=[],SUBTITLES:m,"CLOSED-CAPTIONS":g}=Xu.parseMasterPlaylistMedia(a,o,n);if(f.length){f.some((e=>!e.url))||!d[0].audioCodec||d[0].attrs.AUDIO||(hc.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),f.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new pc({}),bitrate:0,url:""}))}r.trigger(sc.MANIFEST_LOADED,{levels:d,audioTracks:f,subtitles:m,captions:g,contentSteering:l,url:o,stats:t,networkDetails:s,sessionData:h,sessionKeys:c,startTimeOffset:u,variableList:p})}handleTrackOrLevelPlaylist(e,t,i,s,r){const a=this.hls,{id:o,level:n,type:l}=i,d=fp(e,i),h=ec(n)?n:ec(o)?o:0,c=pp(i),u=Xu.parseLevelPlaylist(e.data,d,h,c,0,this.variableList);if(l===op){const e={attrs:new pc({}),bitrate:0,details:u,name:"",url:d};a.trigger(sc.MANIFEST_LOADED,{levels:[e],audioTracks:[],url:d,stats:t,networkDetails:s,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}t.parsing.end=performance.now(),i.levelDetails=u,this.handlePlaylistLoaded(u,e,t,i,s,r)}handleManifestParsingError(e,t,i,s,r){this.hls.trigger(sc.ERROR,{type:rc.NETWORK_ERROR,details:ac.MANIFEST_PARSING_ERROR,fatal:t.type===op,url:e.url,err:i,error:i,reason:i.message,response:e,context:t,networkDetails:s,stats:r})}handleNetworkError(e,t,i=!1,s,r){let a=`A network ${i?"timeout":"error"+(s?" (status "+s.code+")":"")} occurred while loading ${e.type}`;e.type===np?a+=`: ${e.level} id: ${e.id}`:e.type!==lp&&e.type!==dp||(a+=` id: ${e.id} group-id: "${e.groupId}"`);const o=new Error(a);hc.warn(`[playlist-loader]: ${a}`);let n=ac.UNKNOWN,l=!1;const d=this.getInternalLoader(e);switch(e.type){case op:n=i?ac.MANIFEST_LOAD_TIMEOUT:ac.MANIFEST_LOAD_ERROR,l=!0;break;case np:n=i?ac.LEVEL_LOAD_TIMEOUT:ac.LEVEL_LOAD_ERROR,l=!1;break;case lp:n=i?ac.AUDIO_TRACK_LOAD_TIMEOUT:ac.AUDIO_TRACK_LOAD_ERROR,l=!1;break;case dp:n=i?ac.SUBTITLE_TRACK_LOAD_TIMEOUT:ac.SUBTITLE_LOAD_ERROR,l=!1}d&&this.resetInternalLoader(e.type);const h={type:rc.NETWORK_ERROR,details:n,fatal:l,url:e.url,loader:d,context:e,error:o,networkDetails:t,stats:r};if(s){const i=(null==t?void 0:t.url)||e.url;h.response=Yh({url:i,data:void 0},s)}this.hls.trigger(sc.ERROR,h)}handlePlaylistLoaded(e,t,i,s,r,a){const o=this.hls,{type:n,level:l,id:d,groupId:h,deliveryDirectives:c}=s,u=fp(t,s),p=pp(s),f="number"==typeof s.level&&p===hp?l:void 0;if(!e.fragments.length){const e=new Error("No Segments found in Playlist");return void o.trigger(sc.ERROR,{type:rc.NETWORK_ERROR,details:ac.LEVEL_EMPTY_ERROR,fatal:!1,url:u,error:e,reason:e.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i})}e.targetduration||(e.playlistParsingError=new Error("Missing Target Duration"));const m=e.playlistParsingError;if(m)o.trigger(sc.ERROR,{type:rc.NETWORK_ERROR,details:ac.LEVEL_PARSING_ERROR,fatal:!1,url:u,error:m,reason:m.message,response:t,context:s,level:f,parent:p,networkDetails:r,stats:i});else switch(e.live&&a&&(a.getCacheAge&&(e.ageHeader=a.getCacheAge()||0),a.getCacheAge&&!isNaN(e.ageHeader)||(e.ageHeader=0)),n){case op:case np:o.trigger(sc.LEVEL_LOADED,{details:e,level:f||0,id:d||0,stats:i,networkDetails:r,deliveryDirectives:c});break;case lp:o.trigger(sc.AUDIO_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c});break;case dp:o.trigger(sc.SUBTITLE_TRACK_LOADED,{details:e,id:d||0,groupId:h||"",stats:i,networkDetails:r,deliveryDirectives:c})}}}function gp(e,t){let i;try{i=new Event("addtrack")}catch(e){i=document.createEvent("Event"),i.initEvent("addtrack",!1,!1)}i.track=e,t.dispatchEvent(i)}function yp(e,t){const i=e.mode;if("disabled"===i&&(e.mode="hidden"),e.cues&&!e.cues.getCueById(t.id))try{if(e.addCue(t),!e.cues.getCueById(t.id))throw new Error(`addCue is failed for: ${t}`)}catch(i){hc.debug(`[texttrack-utils]: ${i}`);try{const i=new self.TextTrackCue(t.startTime,t.endTime,t.text);i.id=t.id,e.addCue(i)}catch(e){hc.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${e}`)}}"disabled"===i&&(e.mode=i)}function Ap(e){const t=e.mode;if("disabled"===t&&(e.mode="hidden"),e.cues)for(let t=e.cues.length;t--;)e.removeCue(e.cues[t]);"disabled"===t&&(e.mode=t)}function bp(e,t,i,s){const r=e.mode;if("disabled"===r&&(e.mode="hidden"),e.cues&&e.cues.length>0){const r=function(e,t,i){const s=[],r=function(e,t){if(te[i].endTime)return-1;let s=0,r=i;for(;s<=r;){const a=Math.floor((r+s)/2);if(te[a].startTime&&s-1)for(let a=r,o=e.length;a=t&&r.endTime<=i)s.push(r);else if(r.startTime>i)return s}return s}(e.cues,t,i);for(let t=0;t{const e=Ep();try{e&&new e(0,Number.POSITIVE_INFINITY,"")}catch(e){return Number.MAX_VALUE}return Number.POSITIVE_INFINITY})();function Cp(e,t){return e.getTime()/1e3-t}class xp{constructor(e){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=e,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=null}_registerListeners(){const{hls:e}=this;e.on(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.on(sc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(sc.LEVEL_UPDATED,this.onLevelUpdated,this)}_unregisterListeners(){const{hls:e}=this;e.off(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),e.off(sc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(sc.LEVEL_UPDATED,this.onLevelUpdated,this)}onMediaAttached(e,t){this.media=t.media}onMediaDetaching(){this.id3Track&&(Ap(this.id3Track),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(e){const t=this.getID3Track(e.textTracks);return t.mode="hidden",t}getID3Track(e){if(this.media){for(let t=0;tkp&&(s=kp);s-i<=0&&(s=i+.25);for(let e=0;ee.type===_p&&n:"video"===s?e=>e.type===wp&&o:e=>e.type===_p&&n||e.type===wp&&o,bp(r,t,i,e)}}onLevelUpdated(e,{details:t}){if(!this.media||!t.hasProgramDateTime||!this.hls.config.enableDateRangeMetadataCues)return;const{dateRangeCuesAppended:i,id3Track:s}=this,{dateRanges:r}=t,a=Object.keys(r);if(s){const e=Object.keys(i).filter((e=>!a.includes(e)));for(let t=e.length;t--;){const r=e[t];Object.keys(i[r].cues).forEach((e=>{s.removeCue(i[r].cues[e])})),delete i[r]}}const o=t.fragments[t.fragments.length-1];if(0===a.length||!ec(null==o?void 0:o.programDateTime))return;this.id3Track||(this.id3Track=this.createTrack(this.media));const n=o.programDateTime/1e3-o.start,l=Ep();for(let e=0;e{if(t!==s.id){const i=r[t];if(i.class===s.class&&i.startDate>s.startDate&&(!e||s.startDatethis.timeupdate(),this.hls=e,this.config=e.config,this.registerListeners()}get latency(){return this._latency||0}get maxLatency(){const{config:e,levelDetails:t}=this;return void 0!==e.liveMaxLatencyDuration?e.liveMaxLatencyDuration:t?e.liveMaxLatencyDurationCount*t.targetduration:0}get targetLatency(){const{levelDetails:e}=this;if(null===e)return null;const{holdBack:t,partHoldBack:i,targetduration:s}=e,{liveSyncDuration:r,liveSyncDurationCount:a,lowLatencyMode:o}=this.config,n=this.hls.userConfig;let l=o&&i||t;(n.liveSyncDuration||n.liveSyncDurationCount||0===l)&&(l=void 0!==r?r:a*s);const d=s;return l+Math.min(1*this.stallCount,d)}get liveSyncPosition(){const e=this.estimateLiveEdge(),t=this.targetLatency,i=this.levelDetails;if(null===e||null===t||null===i)return null;const s=i.edge,r=e-t-this.edgeStalled,a=s-i.totalduration,o=s-(this.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.min(Math.max(a,r),o)}get drift(){const{levelDetails:e}=this;return null===e?1:e.drift}get edgeStalled(){const{levelDetails:e}=this;if(null===e)return 0;const t=3*(this.config.lowLatencyMode&&e.partTarget||e.targetduration);return Math.max(e.age-t,0)}get forwardBufferLength(){const{media:e,levelDetails:t}=this;if(!e||!t)return 0;const i=e.buffered.length;return(i?e.buffered.end(i-1):t.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.levelDetails=null,this.hls=this.timeupdateHandler=null}registerListeners(){this.hls.on(sc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(sc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(sc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.on(sc.ERROR,this.onError,this)}unregisterListeners(){this.hls.off(sc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(sc.MEDIA_DETACHING,this.onMediaDetaching,this),this.hls.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(sc.LEVEL_UPDATED,this.onLevelUpdated,this),this.hls.off(sc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("timeupdate",this.timeupdateHandler)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.timeupdateHandler),this.media=null)}onManifestLoading(){this.levelDetails=null,this._latency=null,this.stallCount=0}onLevelUpdated(e,{details:t}){this.levelDetails=t,t.advanced&&this.timeupdate(),!t.live&&this.media&&this.media.removeEventListener("timeupdate",this.timeupdateHandler)}onError(e,t){var i;t.details===ac.BUFFER_STALLED_ERROR&&(this.stallCount++,null!=(i=this.levelDetails)&&i.live&&hc.warn("[playback-rate-controller]: Stall detected, adjusting target latency"))}timeupdate(){const{media:e,levelDetails:t}=this;if(!e||!t)return;this.currentTime=e.currentTime;const i=this.computeLatency();if(null===i)return;this._latency=i;const{lowLatencyMode:s,maxLiveSyncPlaybackRate:r}=this.config;if(!s||1===r||!t.live)return;const a=this.targetLatency;if(null===a)return;const o=i-a;if(o.05&&this.forwardBufferLength>1){const t=Math.min(2,Math.max(1,r)),i=Math.round(2/(1+Math.exp(-.75*o-this.edgeStalled))*20)/20;e.playbackRate=Math.min(t,Math.max(1,i))}else 1!==e.playbackRate&&0!==e.playbackRate&&(e.playbackRate=1)}estimateLiveEdge(){const{levelDetails:e}=this;return null===e?null:e.edge+e.age}computeLatency(){const e=this.estimateLiveEdge();return null===e?null:e-this.currentTime}}const Dp=["NONE","TYPE-0","TYPE-1",null];const Lp=["SDR","PQ","HLG"];var Pp="",Bp="YES",Ip="v2";class Mp{constructor(e,t,i){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=e,this.part=t,this.skip=i}addDirectives(e){const t=new self.URL(e);return void 0!==this.msn&&t.searchParams.set("_HLS_msn",this.msn.toString()),void 0!==this.part&&t.searchParams.set("_HLS_part",this.part.toString()),this.skip&&t.searchParams.set("_HLS_skip",this.skip),t.href}}class Up{constructor(e){this._attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.url=void 0,this.frameRate=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.videoCodec=void 0,this.width=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loaded=void 0,this.realBitrate=0,this.supportedPromise=void 0,this.supportedResult=void 0,this._avgBitrate=0,this._audioGroups=void 0,this._subtitleGroups=void 0,this._urlId=0,this.url=[e.url],this._attrs=[e.attrs],this.bitrate=e.bitrate,e.details&&(this.details=e.details),this.id=e.id||0,this.name=e.name,this.width=e.width||0,this.height=e.height||0,this.frameRate=e.attrs.optionalFloat("FRAME-RATE",0),this._avgBitrate=e.attrs.decimalInteger("AVERAGE-BANDWIDTH"),this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.codecSet=[e.videoCodec,e.audioCodec].filter((e=>!!e)).map((e=>e.substring(0,4))).join(","),this.addGroupId("audio",e.attrs.AUDIO),this.addGroupId("text",e.attrs.SUBTITLES)}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(e){return Fp(this._audioGroups,e)}hasSubtitleGroup(e){return Fp(this._subtitleGroups,e)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(e,t){if(t)if("audio"===e){let e=this._audioGroups;e||(e=this._audioGroups=[]),-1===e.indexOf(t)&&e.push(t)}else if("text"===e){let e=this._subtitleGroups;e||(e=this._subtitleGroups=[]),-1===e.indexOf(t)&&e.push(t)}}get urlId(){return 0}set urlId(e){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var e;return null==(e=this.audioGroups)?void 0:e[0]}get textGroupId(){var e;return null==(e=this.subtitleGroups)?void 0:e[0]}addFallback(){}}function Fp(e,t){return!(!t||!e)&&-1!==e.indexOf(t)}function Op(e,t){const i=t.startPTS;if(ec(i)){let s,r=0;t.sn>e.sn?(r=i-e.start,s=e):(r=e.start-i,s=t),s.duration!==r&&(s.duration=r)}else if(t.sn>e.sn){e.cc===t.cc&&e.minEndPTS?t.start=e.start+(e.minEndPTS-e.start):t.start=e.start+e.duration}else t.start=Math.max(e.start-t.duration,0)}function Np(e,t,i,s,r,a){s-i<=0&&(hc.warn("Fragment should have a positive duration",t),s=i+t.duration,a=r+t.duration);let o=i,n=s;const l=t.startPTS,d=t.endPTS;if(ec(l)){const e=Math.abs(l-i);ec(t.deltaPTS)?t.deltaPTS=Math.max(e,t.deltaPTS):t.deltaPTS=e,o=Math.max(i,l),i=Math.min(i,l),r=Math.min(r,t.startDTS),n=Math.min(s,d),s=Math.max(s,d),a=Math.max(a,t.endDTS)}const h=i-t.start;0!==t.start&&(t.start=i),t.duration=s-t.start,t.startPTS=i,t.maxStartPTS=o,t.startDTS=r,t.endPTS=s,t.minEndPTS=n,t.endDTS=a;const c=t.sn;if(!e||ce.endSN)return 0;let u;const p=c-e.startSN,f=e.fragments;for(f[p]=t,u=p;u>0;u--)Op(f[u],f[u-1]);for(u=p;u=0;e--){const t=s[e].initSegment;if(t){i=t;break}}e.fragmentHint&&delete e.fragmentHint.endPTS;let r,a=0;if(function(e,t,i){const s=t.skippedSegments,r=Math.max(e.startSN,t.startSN)-t.startSN,a=(e.fragmentHint?1:0)+(s?t.endSN:Math.min(e.endSN,t.endSN))-t.startSN,o=t.startSN-e.startSN,n=t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments,l=e.fragmentHint?e.fragments.concat(e.fragmentHint):e.fragments;for(let e=r;e<=a;e++){const r=l[o+e];let a=n[e];s&&!a&&e{e.relurl&&(a=e.cc-s.cc),ec(e.startPTS)&&ec(e.endPTS)&&(s.start=s.startPTS=e.startPTS,s.startDTS=e.startDTS,s.maxStartPTS=e.maxStartPTS,s.endPTS=e.endPTS,s.endDTS=e.endDTS,s.minEndPTS=e.minEndPTS,s.duration=e.endPTS-e.startPTS,s.duration&&(r=s),t.PTSKnown=t.alignedSliding=!0),s.elementaryStreams=e.elementaryStreams,s.loader=e.loader,s.stats=e.stats,e.initSegment&&(s.initSegment=e.initSegment,i=e.initSegment)})),i){(t.fragmentHint?t.fragments.concat(t.fragmentHint):t.fragments).forEach((e=>{var t;!e||e.initSegment&&e.initSegment.relurl!==(null==(t=i)?void 0:t.relurl)||(e.initSegment=i)}))}if(t.skippedSegments)if(t.deltaUpdateFailed=t.fragments.some((e=>!e)),t.deltaUpdateFailed){hc.warn("[level-helper] Previous playlist missing segments skipped in delta playlist");for(let e=t.skippedSegments;e--;)t.fragments.shift();t.startSN=t.fragments[0].sn,t.startCC=t.fragments[0].cc}else t.canSkipDateRanges&&(t.dateRanges=function(e,t,i){const s=Zh({},e);i&&i.forEach((e=>{delete s[e]}));return Object.keys(t).forEach((e=>{const i=new mc(t[e].attr,s[e]);i.isValid?s[e]=i:hc.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${JSON.stringify(t[e].attr)}"`)})),s}(e.dateRanges,t.dateRanges,t.recentlyRemovedDateranges));const o=t.fragments;if(a){hc.warn("discontinuity sliding from playlist, take drift into account");for(let e=0;e{t.elementaryStreams=e.elementaryStreams,t.stats=e.stats})),r?Np(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS):zp(e,t),o.length&&(t.totalduration=t.edge-o[0].start),t.driftStartTime=e.driftStartTime,t.driftStart=e.driftStart;const n=t.advancedDateTime;if(t.advanced&&n){const e=t.edge;t.driftStart||(t.driftStartTime=n,t.driftStart=e),t.driftEndTime=n,t.driftEnd=e}else t.driftEndTime=e.driftEndTime,t.driftEnd=e.driftEnd,t.advancedDateTime=e.advancedDateTime}function zp(e,t){const i=t.startSN+t.skippedSegments-e.startSN,s=e.fragments;i<0||i>=s.length||Gp(t,s[i].start)}function Gp(e,t){if(t){const i=e.fragments;for(let s=e.skippedSegments;s{const{details:i}=e;null!=i&&i.fragments&&i.fragments.forEach((e=>{e.level=t}))}))}function Wp(e){switch(e.details){case ac.FRAG_LOAD_TIMEOUT:case ac.KEY_LOAD_TIMEOUT:case ac.LEVEL_LOAD_TIMEOUT:case ac.MANIFEST_LOAD_TIMEOUT:return!0}return!1}function Jp(e,t){const i=Wp(t);return e.default[(i?"timeout":"error")+"Retry"]}function qp(e,t){const i="linear"===e.backoff?1:Math.pow(2,t);return Math.min(i*e.retryDelayMs,e.maxRetryDelayMs)}function Kp(e){return Yh(Yh({},e),{errorRetry:null,timeoutRetry:null})}function Yp(e,t,i,s){if(!e)return!1;const r=null==s?void 0:s.code,a=t499)}(r)||!!i);return e.shouldRetry?e.shouldRetry(e,t,i,s,a):a}const Qp=function(e,t){let i=0,s=e.length-1,r=null,a=null;for(;i<=s;){r=(i+s)/2|0,a=e[r];const o=t(a);if(o>0)i=r+1;else{if(!(o<0))return a;s=r-1}}return null};function Xp(e,t,i=0,s=0){let r=null;if(e){r=t[e.sn-t[0].sn+1]||null;const s=e.endDTS-i;s>0&&s<15e-7&&(i+=15e-7)}else 0===i&&0===t[0].start&&(r=t[0]);if(r&&(!e||e.level===r.level)&&0===Zp(i,s,r))return r;const a=Qp(t,Zp.bind(null,i,s));return!a||a===e&&r?r:a}function Zp(e=0,t=0,i){if(i.start<=e&&i.start+i.duration>e)return 0;const s=Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return i.start+i.duration-s<=e?1:i.start-s>e&&i.start?-1:0}function ef(e,t,i){const s=1e3*Math.min(t,i.duration+(i.deltaPTS?i.deltaPTS:0));return(i.endProgramDateTime||0)-s>e}var tf=0,sf=2,rf=3,af=5,of=0,nf=1,lf=2;class df{constructor(e,t){this.hls=void 0,this.timer=-1,this.requestScheduled=-1,this.canLoad=!1,this.log=void 0,this.warn=void 0,this.log=hc.log.bind(hc,`${t}:`),this.warn=hc.warn.bind(hc,`${t}:`),this.hls=e}destroy(){this.clearTimer(),this.hls=this.log=this.warn=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}startLoad(){this.canLoad=!0,this.requestScheduled=-1,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(e,t){const i=null==t?void 0:t.renditionReports;if(i){let s=-1;for(let r=0;r=0&&e>t.partTarget&&(a+=1)}return new Mp(r,a>=0?a:void 0,Pp)}}}loadPlaylist(e){-1===this.requestScheduled&&(this.requestScheduled=self.performance.now())}shouldLoadPlaylist(e){return this.canLoad&&!!e&&!!e.url&&(!e.details||e.details.live)}shouldReloadPlaylist(e){return-1===this.timer&&-1===this.requestScheduled&&this.shouldLoadPlaylist(e)}playlistLoaded(e,t,i){const{details:s,stats:r}=t,a=self.performance.now(),o=r.loading.first?Math.max(0,a-r.loading.first):0;if(s.advancedDateTime=Date.now()-o,s.live||null!=i&&i.live){if(s.reloaded(i),i&&this.log(`live playlist ${e} ${s.advanced?"REFRESHED "+s.lastPartSn+"-"+s.lastPartIndex:s.updated?"UPDATED":"MISSED"}`),i&&s.fragments.length>0&&jp(i,s),!this.canLoad||!s.live)return;let o,n,l;if(s.canBlockReload&&s.endSN&&s.advanced){const e=this.hls.config.lowLatencyMode,r=s.lastPartSn,a=s.endSN,d=s.lastPartIndex,h=r===a,c=e?0:d;-1!==d?(n=h?a+1:r,l=h?c:d+1):n=a+1;const u=s.age,p=u+s.ageHeader;let f=Math.min(p-s.partTarget,1.5*s.targetduration);if(f>0){if(i&&f>i.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${i.tuneInGoal} to: ${f} with playlist age: ${s.age}`),f=0;else{const e=Math.floor(f/s.targetduration);if(n+=e,void 0!==l){l+=Math.round(f%s.targetduration/s.partTarget)}this.log(`CDN Tune-in age: ${s.ageHeader}s last advanced ${u.toFixed(2)}s goal: ${f} skip sn ${e} to part ${l}`)}s.tuneInGoal=f}if(o=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l),e||!h)return void this.loadPlaylist(o)}else(s.canBlockReload||s.canSkipUntil)&&(o=this.getDeliveryDirectives(s,t.deliveryDirectives,n,l));const d=this.hls.mainForwardBufferInfo,h=d?d.end-d.len:0,c=function(e,t=1/0){let i=1e3*e.targetduration;if(e.updated){const s=e.fragments,r=4;if(s.length&&i*r>t){const e=1e3*s[s.length-1].duration;ethis.requestScheduled+c&&(this.requestScheduled=r.loading.start),void 0!==n&&s.canBlockReload?this.requestScheduled=r.loading.first+c-(1e3*s.partTarget||1e3):-1===this.requestScheduled||this.requestScheduled+cthis.loadPlaylist(o)),u)}else this.clearTimer()}getDeliveryDirectives(e,t,i,s){let r=function(e,t){const{canSkipUntil:i,canSkipDateRanges:s,endSN:r}=e;return i&&(void 0!==t?t-r:0)=o.maxNumRetry)return!1;if(i&&null!=(l=e.context)&&l.deliveryDirectives)this.warn(`Retrying playlist loading ${a+1}/${o.maxNumRetry} after "${t}" without delivery-directives`),this.loadPlaylist();else{const e=qp(o,a);this.timer=self.setTimeout((()=>this.loadPlaylist()),e),this.warn(`Retrying playlist loading ${a+1}/${o.maxNumRetry} after "${t}" in ${e}ms`)}e.levelRetry=!0,s.resolved=!0}return n}}class hf{constructor(e,t=0,i=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=e,this.alpha_=e?Math.exp(Math.log(.5)/e):0,this.estimate_=t,this.totalWeight_=i}sample(e,t){const i=Math.pow(this.alpha_,e);this.estimate_=t*(1-i)+i*this.estimate_,this.totalWeight_+=e}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){const e=1-Math.pow(this.alpha_,this.totalWeight_);if(e)return this.estimate_/e}return this.estimate_}}class cf{constructor(e,t,i,s=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=i,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new hf(e),this.fast_=new hf(t),this.defaultTTFB_=s,this.ttfb_=new hf(e)}update(e,t){const{slow_:i,fast_:s,ttfb_:r}=this;i.halfLife!==e&&(this.slow_=new hf(e,i.getEstimate(),i.getTotalWeight())),s.halfLife!==t&&(this.fast_=new hf(t,s.getEstimate(),s.getTotalWeight())),r.halfLife!==e&&(this.ttfb_=new hf(e,r.getEstimate(),r.getTotalWeight()))}sample(e,t){const i=(e=Math.max(e,this.minDelayMs_))/1e3,s=8*t/i;this.fast_.sample(i,s),this.slow_.sample(i,s)}sampleTTFB(e){const t=e/1e3,i=Math.sqrt(2)*Math.exp(-Math.pow(t,2)/2);this.ttfb_.sample(i,Math.max(e,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}destroy(){}}const uf={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]},pf={};function ff(e,t,i,s,r,a){const o=e.audioCodec?e.audioGroups:null,n=null==a?void 0:a.audioCodec,l=null==a?void 0:a.channels,d=l?parseInt(l):n?1/0:2;let h=null;if(null!=o&&o.length)try{h=1===o.length&&o[0]?t.groups[o[0]].channels:o.reduce(((e,i)=>{if(i){const s=t.groups[i];if(!s)throw new Error(`Audio track group ${i} not found`);Object.keys(s.channels).forEach((t=>{e[t]=(e[t]||0)+s.channels[t]}))}return e}),{2:0})}catch(e){return!0}return void 0!==e.videoCodec&&(e.width>1920&&e.height>1088||e.height>1920&&e.width>1088||e.frameRate>Math.max(s,30)||"SDR"!==e.videoRange&&e.videoRange!==i||e.bitrate>Math.max(r,8e6))||!!h&&ec(d)&&Object.keys(h).some((e=>parseInt(e)>d))}function mf(e,t,i){const s=e.videoCodec,r=e.audioCodec;if(!s||!r||!i)return Promise.resolve(uf);const a={width:e.width,height:e.height,bitrate:Math.ceil(Math.max(.9*e.bitrate,e.averageBitrate)),framerate:e.frameRate||30},o=e.videoRange;"SDR"!==o&&(a.transferFunction=o.toLowerCase());const n=s.split(",").map((e=>({type:"media-source",video:Yh(Yh({},a),{},{contentType:ju(e,"video")})})));return r&&e.audioGroups&&e.audioGroups.forEach((e=>{var i;e&&(null==(i=t.groups[e])||i.tracks.forEach((t=>{if(t.groupId===e){const e=t.channels||"",i=parseFloat(e);ec(i)&&i>2&&n.push.apply(n,r.split(",").map((e=>({type:"media-source",audio:{contentType:ju(e,"audio"),channels:""+i}}))))}})))})),Promise.all(n.map((e=>{const t=function(e){const{audio:t,video:i}=e,s=i||t;if(s){const e=s.contentType.split('"')[1];if(i)return`r${i.height}x${i.width}f${Math.ceil(i.framerate)}${i.transferFunction||"sd"}_${e}_${Math.ceil(i.bitrate/1e5)}`;if(t)return`c${t.channels}${t.spatialRendering?"s":"n"}_${e}`}return""}(e);return pf[t]||(pf[t]=i.decodingInfo(e))}))).then((e=>({supported:!e.some((e=>!e.supported)),configurations:n,decodingInfoResults:e}))).catch((e=>({supported:!1,configurations:n,decodingInfoResults:[],error:e})))}function gf(e,t){let i=!1,s=[];return e&&(i="SDR"!==e,s=[e]),t&&(s=t.allowedVideoRanges||Lp.slice(0),i=void 0!==t.preferHDR?t.preferHDR:function(){if("function"==typeof matchMedia){const e=matchMedia("(dynamic-range: high)"),t=matchMedia("bad query");if(e.media!==t.media)return!0===e.matches}return!1}(),s=i?s.filter((e=>"SDR"!==e)):["SDR"]),{preferHDR:i,allowedVideoRanges:s}}function yf(e,t){hc.log(`[abr] start candidates with "${e}" ignored because ${t}`)}function Af(e,t,i){if("attrs"in e){const i=t.indexOf(e);if(-1!==i)return i}for(let s=0;s-1===s.indexOf(e)))}(n,t.characteristics))&&(void 0===i||i(e,t))}function vf(e,t){const{audioCodec:i,channels:s}=e;return!(void 0!==i&&(t.audioCodec||"").substring(0,4)!==i.substring(0,4)||void 0!==s&&s!==(t.channels||"2"))}function _f(e,t,i){for(let s=t;s;s--)if(i(e[s]))return s;for(let s=t+1;s1&&this.tickImmediate(),this._tickCallCount=0)}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}}var wf="NOT_LOADED",Ef="APPENDING",Tf="PARTIAL",kf="OK";class Cf{constructor(e){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=e,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(sc.BUFFER_APPENDED,this.onBufferAppended,this),e.on(sc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(sc.FRAG_LOADED,this.onFragLoaded,this)}_unregisterListeners(){const{hls:e}=this;e.off(sc.BUFFER_APPENDED,this.onBufferAppended,this),e.off(sc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(sc.FRAG_LOADED,this.onFragLoaded,this)}destroy(){this._unregisterListeners(),this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(e,t){const i=this.activePartLists[t];if(i)for(let t=i.length;t--;){const s=i[t];if(!s)break;const r=s.end;if(s.start<=e&&null!==r&&e<=r)return s}return this.getBufferedFrag(e,t)}getBufferedFrag(e,t){const{fragments:i}=this,s=Object.keys(i);for(let r=s.length;r--;){const a=i[s[r]];if((null==a?void 0:a.body.type)===t&&a.buffered){const t=a.body;if(t.start<=e&&e<=t.end)return t}}return null}detectEvictedFragments(e,t,i,s){this.timeRanges&&(this.timeRanges[e]=t);const r=(null==s?void 0:s.fragment.sn)||-1;Object.keys(this.fragments).forEach((s=>{const a=this.fragments[s];if(!a)return;if(r>=a.body.sn)return;if(!a.buffered&&!a.loaded)return void(a.body.type===i&&this.removeFragment(a.body));const o=a.range[e];o&&o.time.some((e=>{const i=!this.isTimeBuffered(e.startPTS,e.endPTS,t);return i&&this.removeFragment(a.body),i}))}))}detectPartialFragments(e){const t=this.timeRanges,{frag:i,part:s}=e;if(!t||"initSegment"===i.sn)return;const r=Rf(i),a=this.fragments[r];if(!a||a.buffered&&i.gap)return;const o=!i.relurl;if(Object.keys(t).forEach((e=>{const r=i.elementaryStreams[e];if(!r)return;const n=t[e],l=o||!0===r.partial;a.range[e]=this.getBufferedTimes(i,s,l,n)})),a.loaded=null,Object.keys(a.range).length){a.buffered=!0;(a.body.endList=i.endList||a.body.endList)&&(this.endListFragments[a.body.type]=a),xf(a)||this.removeParts(i.sn-1,i.type)}else this.removeFragment(a.body)}removeParts(e,t){const i=this.activePartLists[t];i&&(this.activePartLists[t]=i.filter((t=>t.fragment.sn>=e)))}fragBuffered(e,t){const i=Rf(e);let s=this.fragments[i];!s&&t&&(s=this.fragments[i]={body:e,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},e.gap&&(this.hasGaps=!0)),s&&(s.loaded=null,s.buffered=!0)}getBufferedTimes(e,t,i,s){const r={time:[],partial:i},a=e.start,o=e.end,n=e.minEndPTS||o,l=e.maxStartPTS||a;for(let e=0;e=t&&n<=i){r.time.push({startPTS:Math.max(a,s.start(e)),endPTS:Math.min(o,s.end(e))});break}if(at){const t=Math.max(a,s.start(e)),i=Math.min(o,s.end(e));i>t&&(r.partial=!0,r.time.push({startPTS:t,endPTS:i}))}else if(o<=t)break}return r}getPartialFragment(e){let t,i,s,r=null,a=0;const{bufferPadding:o,fragments:n}=this;return Object.keys(n).forEach((l=>{const d=n[l];d&&xf(d)&&(i=d.body.start-o,s=d.body.end+o,e>=i&&e<=s&&(t=Math.min(e-i,s-e),a<=t&&(r=d.body,a=t)))})),r}isEndListAppended(e){const t=this.endListFragments[e];return void 0!==t&&(t.buffered||xf(t))}getState(e){const t=Rf(e),i=this.fragments[t];return i?i.buffered?xf(i)?Tf:kf:Ef:wf}isTimeBuffered(e,t,i){let s,r;for(let a=0;a=s&&t<=r)return!0;if(t<=s)return!1}return!1}onFragLoaded(e,t){const{frag:i,part:s}=t;if("initSegment"===i.sn||i.bitrateTest)return;const r=s?null:t,a=Rf(i);this.fragments[a]={body:i,appendedPTS:null,loaded:r,buffered:!1,range:Object.create(null)}}onBufferAppended(e,t){const{frag:i,part:s,timeRanges:r}=t;if("initSegment"===i.sn)return;const a=i.type;if(s){let e=this.activePartLists[a];e||(this.activePartLists[a]=e=[]),e.push(s)}this.timeRanges=r,Object.keys(r).forEach((e=>{const t=r[e];this.detectEvictedFragments(e,t,a,s)}))}onFragBuffered(e,t){this.detectPartialFragments(t)}hasFragment(e){const t=Rf(e);return!!this.fragments[t]}hasParts(e){var t;return!(null==(t=this.activePartLists[e])||!t.length)}removeFragmentsInRange(e,t,i,s,r){s&&!this.hasGaps||Object.keys(this.fragments).forEach((a=>{const o=this.fragments[a];if(!o)return;const n=o.body;n.type!==i||s&&!n.gap||n.starte&&(o.buffered||r)&&this.removeFragment(n)}))}removeFragment(e){const t=Rf(e);e.stats.loaded=0,e.clearElementaryStreamInfo();const i=this.activePartLists[e.type];if(i){const t=e.sn;this.activePartLists[e.type]=i.filter((e=>e.fragment.sn!==t))}delete this.fragments[t],e.endList&&delete this.endListFragments[e.type]}removeAllFragments(){this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1}}function xf(e){var t,i,s;return e.buffered&&(e.body.gap||(null==(t=e.range.video)?void 0:t.partial)||(null==(i=e.range.audio)?void 0:i.partial)||(null==(s=e.range.audiovideo)?void 0:s.partial))}function Rf(e){return`${e.type}_${e.level}_${e.sn}`}const Df={length:0,start:()=>0,end:()=>0};class Lf{static isBuffered(e,t){try{if(e){const i=Lf.getBuffered(e);for(let e=0;e=i.start(e)&&t<=i.end(e))return!0}}catch(e){}return!1}static bufferInfo(e,t,i){try{if(e){const s=Lf.getBuffered(e),r=[];let a;for(a=0;aa&&(s[r-1].end=e[t].end):s.push(e[t])}else s.push(e[t])}else s=e;let r,a=0,o=t,n=t;for(let e=0;e=l&&ti.startCC||e&&e.cc{if(this.loader&&this.loader.destroy(),e.gap){if(e.tagList.some((e=>"GAP"===e[0])))return void n(zf(e));e.gap=!1}const l=this.loader=e.loader=r?new r(s):new a(s),d=jf(e),h=Kp(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===e.sn?1/0:Of};e.stats=l.stats,l.load(d,c,{onSuccess:(t,i,s,r)=>{this.resetLoader(e,l);let a=t.data;s.resetIV&&e.decryptdata&&(e.decryptdata.iv=new Uint8Array(a.slice(0,16)),a=a.slice(16)),o({frag:e,part:null,payload:a,networkDetails:r})},onError:(t,s,r,a)=>{this.resetLoader(e,l),n(new Gf({type:rc.NETWORK_ERROR,details:ac.FRAG_LOAD_ERROR,fatal:!1,frag:e,response:Yh({url:i,data:void 0},t),error:new Error(`HTTP Error ${t.code} ${t.text}`),networkDetails:r,stats:a}))},onAbort:(t,i,s)=>{this.resetLoader(e,l),n(new Gf({type:rc.NETWORK_ERROR,details:ac.INTERNAL_ABORTED,fatal:!1,frag:e,error:new Error("Aborted"),networkDetails:s,stats:t}))},onTimeout:(t,i,s)=>{this.resetLoader(e,l),n(new Gf({type:rc.NETWORK_ERROR,details:ac.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:s,stats:t}))},onProgress:(i,s,r,a)=>{t&&t({frag:e,part:null,payload:r,networkDetails:a})}})}))}loadPart(e,t,i){this.abort();const s=this.config,r=s.fLoader,a=s.loader;return new Promise(((o,n)=>{if(this.loader&&this.loader.destroy(),e.gap||t.gap)return void n(zf(e,t));const l=this.loader=e.loader=r?new r(s):new a(s),d=jf(e,t),h=Kp(s.fragLoadPolicy.default),c={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:Of};t.stats=l.stats,l.load(d,c,{onSuccess:(s,r,a,n)=>{this.resetLoader(e,l),this.updateStatsFromPart(e,t);const d={frag:e,part:t,payload:s.data,networkDetails:n};i(d),o(d)},onError:(i,s,r,a)=>{this.resetLoader(e,l),n(new Gf({type:rc.NETWORK_ERROR,details:ac.FRAG_LOAD_ERROR,fatal:!1,frag:e,part:t,response:Yh({url:d.url,data:void 0},i),error:new Error(`HTTP Error ${i.code} ${i.text}`),networkDetails:r,stats:a}))},onAbort:(i,s,r)=>{e.stats.aborted=t.stats.aborted,this.resetLoader(e,l),n(new Gf({type:rc.NETWORK_ERROR,details:ac.INTERNAL_ABORTED,fatal:!1,frag:e,part:t,error:new Error("Aborted"),networkDetails:r,stats:i}))},onTimeout:(i,s,r)=>{this.resetLoader(e,l),n(new Gf({type:rc.NETWORK_ERROR,details:ac.FRAG_LOAD_TIMEOUT,fatal:!1,frag:e,part:t,error:new Error(`Timeout after ${c.timeout}ms`),networkDetails:r,stats:i}))}})}))}updateStatsFromPart(e,t){const i=e.stats,s=t.stats,r=s.total;if(i.loaded+=s.loaded,r){const s=Math.round(e.duration/t.duration),a=Math.min(Math.round(i.loaded/r),s),o=(s-a)*Math.round(i.loaded/a);i.total=i.loaded+o}else i.total=Math.max(i.loaded,i.total);const a=i.loading,o=s.loading;a.start?a.first+=o.first-o.start:(a.start=o.start,a.first=o.first),a.end=o.end}resetLoader(e,t){e.loader=null,this.loader===t&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),t.destroy()}}function jf(e,t=null){const i=t||e,s={frag:e,part:t,responseType:"arraybuffer",url:i.url,headers:{},rangeStart:0,rangeEnd:0},r=i.byteRangeStartOffset,a=i.byteRangeEndOffset;if(ec(r)&&ec(a)){var o;let t=r,i=a;if("initSegment"===e.sn&&"AES-128"===(null==(o=e.decryptdata)?void 0:o.method)){const e=a-r;e%16&&(i=a+(16-e%16)),0!==r&&(s.resetIV=!0,t=r-16)}s.rangeStart=t,s.rangeEnd=i}return s}function zf(e,t){const i=new Error(`GAP ${e.gap?"tag":"attribute"} found`),s={type:rc.MEDIA_ERROR,details:ac.FRAG_GAP,fatal:!1,frag:e,error:i,networkDetails:null};return t&&(s.part=t),(t||e).stats.aborted=!0,new Gf(s)}class Gf extends Error{constructor(e){super(e.error.message),this.data=void 0,this.data=e}}class Hf{constructor(e,t){this.subtle=void 0,this.aesIV=void 0,this.subtle=e,this.aesIV=t}decrypt(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}class Vf{constructor(e,t){this.subtle=void 0,this.key=void 0,this.subtle=e,this.key=t}expandKey(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}class $f{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(e){const t=new DataView(e),i=new Uint32Array(4);for(let e=0;e<4;e++)i[e]=t.getUint32(4*e);return i}initTable(){const e=this.sBox,t=this.invSBox,i=this.subMix,s=i[0],r=i[1],a=i[2],o=i[3],n=this.invSubMix,l=n[0],d=n[1],h=n[2],c=n[3],u=new Uint32Array(256);let p=0,f=0,m=0;for(m=0;m<256;m++)u[m]=m<128?m<<1:m<<1^283;for(m=0;m<256;m++){let i=f^f<<1^f<<2^f<<3^f<<4;i=i>>>8^255&i^99,e[p]=i,t[i]=p;const n=u[p],m=u[n],g=u[m];let y=257*u[i]^16843008*i;s[p]=y<<24|y>>>8,r[p]=y<<16|y>>>16,a[p]=y<<8|y>>>24,o[p]=y,y=16843009*g^65537*m^257*n^16843008*p,l[i]=y<<24|y>>>8,d[i]=y<<16|y>>>16,h[i]=y<<8|y>>>24,c[i]=y,p?(p=n^u[u[u[g^n]]],f^=u[u[f]]):p=f=1}}expandKey(e){const t=this.uint8ArrayToUint32Array_(e);let i=!0,s=0;for(;s{if(!s)return Promise.reject(new Error("web crypto not initialized"));this.logOnce("WebCrypto AES decrypt");return new Hf(s,new Uint8Array(i)).decrypt(e.buffer,t)})).catch((s=>(hc.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${s.name}: ${s.message}`),this.onWebCryptoError(e,t,i))))}onWebCryptoError(e,t,i){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(e,t,i);const s=this.flush();if(s)return s.buffer;throw new Error("WebCrypto and softwareDecrypt: failed to decrypt data")}getValidChunk(e){let t=e;const i=e.length-e.length%16;return i!==e.length&&(t=Nc(e,0,i),this.remainderData=Nc(e,i)),t}logOnce(e){this.logEnabled&&(hc.log(`[decrypter]: ${e}`),this.logEnabled=!1)}}const Jf=function(e){let t="";const i=e.length;for(let s=0;so.end){const e=a>r;(a{if(this.fragContextChanged(e))return this.warn(`Fragment ${e.sn}${t.part?" p: "+t.part.index:""} of level ${e.level} was dropped during download.`),void this.fragmentTracker.removeFragment(e);e.stats.chunkCount++,this._handleFragmentLoadProgress(t)})).then((t=>{if(!t)return;const i=this.state;this.fragContextChanged(e)?(i===Qf||!this.fragCurrent&&i===em)&&(this.fragmentTracker.removeFragment(e),this.state=Kf):("payload"in t&&(this.log(`Loaded fragment ${e.sn} of level ${e.level}`),this.hls.trigger(sc.FRAG_LOADED,t)),this._handleFragmentLoadComplete(t))})).catch((t=>{this.state!==qf&&this.state!==sm&&(this.warn(t),this.resetFragmentLoading(e))}))}clearTrackerIfNeeded(e){var t;const{fragmentTracker:i}=this;if(i.getState(e)===Ef){const t=e.type,s=this.getFwdBufferInfo(this.mediaBuffer,t),r=Math.max(e.duration,s?s.len:this.config.maxBufferLength);this.reduceMaxBufferLength(r)&&i.removeFragment(e)}else 0===(null==(t=this.mediaBuffer)?void 0:t.buffered.length)?i.removeAllFragments():i.hasParts(e.type)&&(i.detectPartialFragments({frag:e,part:null,stats:e.stats,id:e.type}),i.getState(e)===Tf&&i.removeFragment(e))}checkLiveUpdate(e){if(e.updated&&!e.live){const t=e.fragments[e.fragments.length-1];this.fragmentTracker.detectPartialFragments({frag:t,part:null,stats:t.stats,id:t.type})}e.fragments[0]||(e.deltaUpdateFailed=!0)}flushMainBuffer(e,t,i=null){if(!(e-t))return;const s={startOffset:e,endOffset:t,type:i};this.hls.trigger(sc.BUFFER_FLUSHING,s)}_loadInitSegment(e,t){this._doFragLoad(e,t).then((t=>{if(!t||this.fragContextChanged(e)||!this.levels)throw new Error("init load aborted");return t})).then((t=>{const{hls:i}=this,{payload:s}=t,r=e.decryptdata;if(s&&s.byteLength>0&&null!=r&&r.key&&r.iv&&"AES-128"===r.method){const a=self.performance.now();return this.decrypter.decrypt(new Uint8Array(s),r.key.buffer,r.iv.buffer).catch((t=>{throw i.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.FRAG_DECRYPT_ERROR,fatal:!1,error:t,reason:t.message,frag:e}),t})).then((s=>{const r=self.performance.now();return i.trigger(sc.FRAG_DECRYPTED,{frag:e,payload:s,stats:{tstart:a,tdecrypt:r}}),t.payload=s,this.completeInitSegmentLoad(t)}))}return this.completeInitSegmentLoad(t)})).catch((t=>{this.state!==qf&&this.state!==sm&&(this.warn(t),this.resetFragmentLoading(e))}))}completeInitSegmentLoad(e){const{levels:t}=this;if(!t)throw new Error("init load aborted, missing levels");const i=e.frag.stats;this.state=Kf,e.frag.data=new Uint8Array(e.payload),i.parsing.start=i.buffering.start=self.performance.now(),i.parsing.end=i.buffering.end=self.performance.now(),this.tick()}fragContextChanged(e){const{fragCurrent:t}=this;return!e||!t||e.sn!==t.sn||e.level!==t.level}fragBufferedComplete(e,t){var i,s,r,a;const o=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${e.type} sn: ${e.sn}${t?" part: "+t.index:""} of ${this.playlistType===hp?"level":"track"} ${e.level} (frag:[${(null!=(i=e.startPTS)?i:NaN).toFixed(3)}-${(null!=(s=e.endPTS)?s:NaN).toFixed(3)}] > buffer:${o?Jf(Lf.getBuffered(o)):"(detached)"})`),"initSegment"!==e.sn){var n;if(e.type!==up){const t=e.elementaryStreams;if(!Object.keys(t).some((e=>!!t[e])))return void(this.state=Kf)}const t=null==(n=this.levels)?void 0:n[e.level];null!=t&&t.fragmentError&&(this.log(`Resetting level fragment error count of ${t.fragmentError} on frag buffered`),t.fragmentError=0)}this.state=Kf,o&&(!this.loadedmetadata&&e.type==hp&&o.buffered.length&&(null==(r=this.fragCurrent)?void 0:r.sn)===(null==(a=this.fragPrevious)?void 0:a.sn)&&(this.loadedmetadata=!0,this.seekToStartPos()),this.tick())}seekToStartPos(){}_handleFragmentLoadComplete(e){const{transmuxer:t}=this;if(!t)return;const{frag:i,part:s,partsLoaded:r}=e,a=!r||0===r.length||r.some((e=>!e)),o=new Pf(i.level,i.sn,i.stats.chunkCount+1,0,s?s.index:-1,!a);t.flush(o)}_handleFragmentLoadProgress(e){}_doFragLoad(e,t,i=null,s){var r;const a=null==t?void 0:t.details;if(!this.levels||!a)throw new Error(`frag load aborted, missing level${a?"":" detail"}s`);let o=null;if(!e.encrypted||null!=(r=e.decryptdata)&&r.key?!e.encrypted&&a.encryptedFragments.length&&this.keyLoader.loadClear(e,a.encryptedFragments):(this.log(`Loading key for ${e.sn} of [${a.startSN}-${a.endSN}], ${"[stream-controller]"===this.logPrefix?"level":"track"} ${e.level}`),this.state=Yf,this.fragCurrent=e,o=this.keyLoader.load(e).then((e=>{if(!this.fragContextChanged(e.frag))return this.hls.trigger(sc.KEY_LOADED,e),this.state===Yf&&(this.state=Kf),e})),this.hls.trigger(sc.KEY_LOADING,{frag:e}),null===this.fragCurrent&&(o=Promise.reject(new Error("frag load aborted, context changed in KEY_LOADING")))),i=Math.max(e.start,i||0),this.config.lowLatencyMode&&"initSegment"!==e.sn){const r=a.partList;if(r&&s){i>e.end&&a.fragmentHint&&(e=a.fragmentHint);const n=this.getNextPart(r,e,i);if(n>-1){const l=r[n];let d;return this.log(`Loading part sn: ${e.sn} p: ${l.index} cc: ${e.cc} of playlist [${a.startSN}-${a.endSN}] parts [0-${n}-${r.length-1}] ${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),this.nextLoadPosition=l.start+l.duration,this.state=Qf,d=o?o.then((i=>!i||this.fragContextChanged(i.frag)?null:this.doFragPartsLoad(e,l,t,s))).catch((e=>this.handleFragLoadError(e))):this.doFragPartsLoad(e,l,t,s).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(sc.FRAG_LOADING,{frag:e,part:l,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING parts")):d}if(!e.url||this.loadedEndOfParts(r,i))return Promise.resolve(null)}}this.log(`Loading fragment ${e.sn} cc: ${e.cc} ${a?"of ["+a.startSN+"-"+a.endSN+"] ":""}${"[stream-controller]"===this.logPrefix?"level":"track"}: ${e.level}, target: ${parseFloat(i.toFixed(3))}`),ec(e.sn)&&!this.bitrateTest&&(this.nextLoadPosition=e.start+e.duration),this.state=Qf;const n=this.config.progressive;let l;return l=n&&o?o.then((t=>!t||this.fragContextChanged(null==t?void 0:t.frag)?null:this.fragmentLoader.load(e,s))).catch((e=>this.handleFragLoadError(e))):Promise.all([this.fragmentLoader.load(e,n?s:void 0),o]).then((([e])=>(!n&&e&&s&&s(e),e))).catch((e=>this.handleFragLoadError(e))),this.hls.trigger(sc.FRAG_LOADING,{frag:e,targetBufferTime:i}),null===this.fragCurrent?Promise.reject(new Error("frag load aborted, context changed in FRAG_LOADING")):l}doFragPartsLoad(e,t,i,s){return new Promise(((r,a)=>{var o;const n=[],l=null==(o=i.details)?void 0:o.partList,d=t=>{this.fragmentLoader.loadPart(e,t,s).then((s=>{n[t.index]=s;const a=s.part;this.hls.trigger(sc.FRAG_LOADED,s);const o=Hp(i,e.sn,t.index+1)||Vp(l,e.sn,t.index+1);if(!o)return r({frag:e,part:a,partsLoaded:n});d(o)})).catch(a)};d(t)}))}handleFragLoadError(e){if("data"in e){const t=e.data;e.data&&t.details===ac.INTERNAL_ABORTED?this.handleFragLoadAborted(t.frag,t.part):this.hls.trigger(sc.ERROR,t)}else this.hls.trigger(sc.ERROR,{type:rc.OTHER_ERROR,details:ac.INTERNAL_EXCEPTION,err:e,error:e,fatal:!0});return null}_handleTransmuxerFlush(e){const t=this.getCurrentContext(e);if(!t||this.state!==em)return void(this.fragCurrent||this.state===qf||this.state===sm||(this.state=Kf));const{frag:i,part:s,level:r}=t,a=self.performance.now();i.stats.parsing.end=a,s&&(s.stats.parsing.end=a),this.updateLevelTiming(i,s,r,e.partial)}getCurrentContext(e){const{levels:t,fragCurrent:i}=this,{level:s,sn:r,part:a}=e;if(null==t||!t[s])return this.warn(`Levels object was unset while buffering fragment ${r} of level ${s}. The current chunk will not be buffered.`),null;const o=t[s],n=a>-1?Hp(o,r,a):null,l=n?n.fragment:function(e,t,i){if(null==e||!e.details)return null;const s=e.details;let r=s.fragments[t-s.startSN];return r||(r=s.fragmentHint,r&&r.sn===t?r:ta&&this.flushMainBuffer(o,e.start)}getFwdBufferInfo(e,t){const i=this.getLoadPosition();return ec(i)?this.getFwdBufferInfoAtPos(e,i,t):null}getFwdBufferInfoAtPos(e,t,i){const{config:{maxBufferHole:s}}=this,r=Lf.bufferInfo(e,t,s);if(0===r.len&&void 0!==r.nextStart){const a=this.fragmentTracker.getBufferedFrag(t,i);if(a&&r.nextStart=i&&(t.maxMaxBufferLength/=2,this.warn(`Reduce max buffer length to ${t.maxMaxBufferLength}s`),!0)}getAppendedFrag(e,t=hp){const i=this.fragmentTracker.getAppendedFrag(e,hp);return i&&"fragment"in i?i.fragment:i}getNextFragment(e,t){const i=t.fragments,s=i.length;if(!s)return null;const{config:r}=this,a=i[0].start;let o;if(t.live){const n=r.initialLiveManifestSize;if(st}getNextFragmentLoopLoading(e,t,i,s,r){const a=e.gap,o=this.getNextFragment(this.nextLoadPosition,t);if(null===o)return o;if(e=o,a&&e&&!e.gap&&i.nextStart){const t=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,i.nextStart,s);if(null!==t&&i.len+t.len>=r)return this.log(`buffer full after gaps in "${s}" playlist starting at sn: ${e.sn}`),null}return e}mapToInitFragWhenRequired(e){return null==e||!e.initSegment||null!=e&&e.initSegment.data||this.bitrateTest?e:e.initSegment}getNextPart(e,t,i){let s=-1,r=!1,a=!0;for(let o=0,n=e.length;o-1&&ii.start&&i.loaded}getInitialLiveFragment(e,t){const i=this.fragPrevious;let s=null;if(i){if(e.hasProgramDateTime&&(this.log(`Live playlist, switching playlist, load frag with same PDT: ${i.programDateTime}`),s=function(e,t,i){if(null===t||!Array.isArray(e)||!e.length||!ec(t))return null;if(t<(e[0].programDateTime||0))return null;if(t>=(e[e.length-1].endProgramDateTime||0))return null;i=i||0;for(let s=0;s=e.startSN&&r<=e.endSN){const a=t[r-e.startSN];i.cc===a.cc&&(s=a,this.log(`Live playlist, switching playlist, load frag with next SN: ${s.sn}`))}s||(s=function(e,t){return Qp(e,(e=>e.cct?-1:0))}(t,i.cc),s&&this.log(`Live playlist, switching playlist, load frag with same CC: ${s.sn}`))}}else{const t=this.hls.liveSyncPosition;null!==t&&(s=this.getFragmentAtPosition(t,this.bitrateTest?e.fragmentEnd:e.edge,e))}return s}getFragmentAtPosition(e,t,i){const{config:s}=this;let{fragPrevious:r}=this,{fragments:a,endSN:o}=i;const{fragmentHint:n}=i,l=s.maxFragLookUpTolerance,d=i.partList,h=!!(s.lowLatencyMode&&null!=d&&d.length&&n);let c;if(h&&n&&!this.bitrateTest&&(a=a.concat(n),o=n.sn),et-l?0:l)}else c=a[a.length-1];if(c){const e=c.sn-i.startSN,t=this.fragmentTracker.getState(c);if((t===kf||t===Tf&&c.gap)&&(r=c),r&&c.sn===r.sn&&(!h||d[0].fragment.sn>c.sn)){if(r&&c.level===r.level){const t=a[e+1];c=c.sn=a-t.maxFragLookUpTolerance&&r<=o;if(null!==s&&i.duration>s&&(r${e.startSN} prev-sn: ${r?r.sn:"na"} fragments: ${s}`),a}return r}waitForCdnTuneIn(e){return e.live&&e.canBlockReload&&e.partTarget&&e.tuneInGoal>Math.max(e.partHoldBack,3*e.partTarget)}setStartPosition(e,t){let i=this.startPosition;if(i ${null==(s=this.fragCurrent)?void 0:s.url}`);const r=t.details===ac.FRAG_GAP;r&&this.fragmentTracker.fragBuffered(i,!0);const a=t.errorAction,{action:o,retryCount:n=0,retryConfig:l}=a||{};if(a&&o===af&&l){this.resetStartWhenNotLoaded(this.levelLastLoaded);const s=qp(l,n);this.warn(`Fragment ${i.sn} of ${e} ${i.level} errored with ${t.details}, retrying loading ${n+1}/${l.maxNumRetry} in ${s}ms`),a.resolved=!0,this.retryDate=self.performance.now()+s,this.state=Xf}else if(l&&a){if(this.resetFragmentErrors(e),!(n.5;s&&this.reduceMaxBufferLength(i.len);const r=!s;return r&&this.warn(`Buffer full error while media.currentTime is not buffered, flush ${t} buffer`),e.frag&&(this.fragmentTracker.removeFragment(e.frag),this.nextLoadPosition=e.frag.start),this.resetLoadingState(),r}return!1}resetFragmentErrors(e){e===cp&&(this.fragCurrent=null),this.loadedmetadata||(this.startFragRequested=!1),this.state!==qf&&(this.state=Kf)}afterBufferFlushed(e,t,i){if(!e)return;const s=Lf.getBuffered(e);this.fragmentTracker.detectEvictedFragments(t,s,i),this.state===im&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state=Kf}resetStartWhenNotLoaded(e){if(!this.loadedmetadata){this.startFragRequested=!1;const t=e?e.details:null;null!=t&&t.live?(this.startPosition=-1,this.setStartPosition(t,0),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(e){this.warn(`The loading context changed while buffering fragment ${e.sn} of level ${e.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState()}removeUnbufferedFrags(e=0){this.fragmentTracker.removeFragmentsInRange(e,1/0,this.playlistType,!1,!0)}updateLevelTiming(e,t,i,s){var r;const a=i.details;if(!a)return void this.warn("level.details undefined");if(!Object.keys(e.elementaryStreams).reduce(((t,r)=>{const o=e.elementaryStreams[r];if(o){const n=o.endPTS-o.startPTS;if(n<=0)return this.warn(`Could not parse fragment ${e.sn} ${r} duration reliably (${n})`),t||!1;const l=s?0:Np(a,e,o.startPTS,o.endPTS,o.startDTS,o.endDTS);return this.hls.trigger(sc.LEVEL_PTS_UPDATED,{details:a,level:i,drift:l,type:r,frag:e,start:o.startPTS,end:o.endPTS}),!0}return t}),!1)&&null===(null==(r=this.transmuxer)?void 0:r.error)){const t=new Error(`Found no media in fragment ${e.sn} of level ${e.level} resetting transmuxer to fallback to playlist timing`);if(0===i.fragmentError&&(i.fragmentError++,e.gap=!0,this.fragmentTracker.removeFragment(e),this.fragmentTracker.fragBuffered(e,!0)),this.warn(t.message),this.hls.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.FRAG_PARSING_ERROR,fatal:!1,error:t,frag:e,reason:`Found no media in msn ${e.sn} of level "${i.url}"`}),!this.hls)return;this.resetTransmuxer()}this.state=tm,this.hls.trigger(sc.FRAG_PARSED,{frag:e,part:t})}resetTransmuxer(){this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null)}recoverWorkerError(e){"demuxerWorker"===e.event&&(this.fragmentTracker.removeAllFragments(),this.resetTransmuxer(),this.resetStartWhenNotLoaded(this.levelLastLoaded),this.resetLoadingState())}set state(e){const t=this._state;t!==e&&(this._state=e,this.log(`${t}->${e}`))}get state(){return this._state}}class nm{constructor(){this.chunks=[],this.dataLength=0}push(e){this.chunks.push(e),this.dataLength+=e.length}flush(){const{chunks:e,dataLength:t}=this;let i;return e.length?(i=1===e.length?e[0]:function(e,t){const i=new Uint8Array(t);let s=0;for(let t=0;t0&&o.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:_p,duration:Number.POSITIVE_INFINITY});r{if(ec(e))return 90*e;return 9e4*t+(i?9e4*i.baseTime/i.timescale:0)};function cm(e,t){return 255===e[t]&&240==(246&e[t+1])}function um(e,t){return 1&e[t+1]?7:9}function pm(e,t){return(3&e[t+3])<<11|e[t+4]<<3|(224&e[t+5])>>>5}function fm(e,t){return t+1=e.length)return!1;const s=pm(e,t);if(s<=i)return!1;const r=t+s;return r===e.length||fm(e,r)}return!1}function gm(e,t,i,s,r){if(!e.samplerate){const a=function(e,t,i,s){let r,a,o,n;const l=navigator.userAgent.toLowerCase(),d=s,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];r=1+((192&t[i+2])>>>6);const c=(60&t[i+2])>>>2;if(!(c>h.length-1))return o=(1&t[i+2])<<2,o|=(192&t[i+3])>>>6,hc.log(`manifest codec:${s}, ADTS type:${r}, samplingIndex:${c}`),/firefox/i.test(l)?c>=6?(r=5,n=new Array(4),a=c-3):(r=2,n=new Array(2),a=c):-1!==l.indexOf("android")?(r=2,n=new Array(2),a=c):(r=5,n=new Array(4),s&&(-1!==s.indexOf("mp4a.40.29")||-1!==s.indexOf("mp4a.40.5"))||!s&&c>=6?a=c-3:((s&&-1!==s.indexOf("mp4a.40.2")&&(c>=6&&1===o||/vivaldi/i.test(l))||!s&&1===o)&&(r=2,n=new Array(2)),a=c)),n[0]=r<<3,n[0]|=(14&c)>>1,n[1]|=(1&c)<<7,n[1]|=o<<3,5===r&&(n[1]|=(14&a)>>1,n[2]=(1&a)<<7,n[2]|=8,n[3]=0),{config:n,samplerate:h[c],channelCount:o,codec:"mp4a.40."+r,manifestCodec:d};{const t=new Error(`invalid ADTS sampling index:${c}`);e.emit(sc.ERROR,sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.FRAG_PARSING_ERROR,fatal:!0,error:t,reason:t.message})}}(t,i,s,r);if(!a)return;e.config=a.config,e.samplerate=a.samplerate,e.channelCount=a.channelCount,e.codec=a.codec,e.manifestCodec=a.manifestCodec,hc.log(`parsed codec:${e.codec}, rate:${a.samplerate}, channels:${a.channelCount}`)}}function ym(e){return 9216e4/e}function Am(e,t,i,s,r){const a=s+r*ym(e.samplerate),o=function(e,t){const i=um(e,t);if(t+i<=e.length){const s=pm(e,t)-i;if(s>0)return{headerLength:i,frameLength:s}}}(t,i);let n;if(o){const{frameLength:s,headerLength:r}=o,l=r+s,d=Math.max(0,i+l-t.length);d?(n=new Uint8Array(l-r),n.set(t.subarray(i+r,t.length),0)):n=t.subarray(i+r,i+l);const h={unit:n,pts:a};return d||e.samples.push(h),{sample:h,length:l,missing:d}}const l=t.length-i;n=new Uint8Array(l),n.set(t.subarray(i,t.length),0);return{sample:{unit:n,pts:a},length:l,missing:-1}}let bm=null;const vm=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],_m=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],Sm=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],wm=[0,1,1,4];function Em(e,t,i,s,r){if(i+24>t.length)return;const a=Tm(t,i);if(a&&i+a.frameLength<=t.length){const o=s+r*(9e4*a.samplesPerFrame/a.sampleRate),n={unit:t.subarray(i,i+a.frameLength),pts:o,dts:o};return e.config=[],e.channelCount=a.channelCount,e.samplerate=a.sampleRate,e.samples.push(n),{sample:n,length:a.frameLength,missing:0}}}function Tm(e,t){const i=e[t+1]>>3&3,s=e[t+1]>>1&3,r=e[t+2]>>4&15,a=e[t+2]>>2&3;if(1!==i&&0!==r&&15!==r&&3!==a){const o=e[t+2]>>1&1,n=e[t+3]>>6,l=1e3*vm[14*(3===i?3-s:3===s?3:4)+r-1],d=_m[3*(3===i?0:2===i?1:2)+a],h=3===n?1:2,c=Sm[i][s],u=wm[s],p=8*c*u,f=Math.floor(c*l/d+o)*u;if(null===bm){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);bm=e?parseInt(e[1]):0}return!!bm&&bm<=87&&2===s&&l>=224e3&&0===n&&(e[t+3]=128|e[t+3]),{sampleRate:d,channelCount:h,frameLength:f,samplesPerFrame:p}}}function km(e,t){return 255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1])}function Cm(e,t){return t+1{let i=0,s=5;t+=s;const r=new Uint32Array(1),a=new Uint32Array(1),o=new Uint8Array(1);for(;s>0;){o[0]=e[t];const n=Math.min(s,8),l=8-n;a[0]=4278190080>>>24+l<>l,i=i?i<t.length)return-1;if(11!==t[i]||119!==t[i+1])return-1;const a=t[i+4]>>6;if(a>=3)return-1;const o=[48e3,44100,32e3][a],n=63&t[i+4],l=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*n+a];if(i+l>t.length)return-1;const d=t[i+6]>>5;let h=0;2===d?h+=2:(1&d&&1!==d&&(h+=2),4&d&&(h+=2));const c=(t[i+6]<<8|t[i+7])>>12-h&1,u=[2,1,2,3,3,4,4,5][d]+c,p=t[i+5]>>3,f=7&t[i+5],m=new Uint8Array([a<<6|p<<1|f>>2,(3&f)<<6|d<<3|c<<2|n>>4,n<<4&224]),g=s+r*(1536/o*9e4),y=t.subarray(i,i+l);return e.config=m,e.channelCount=u,e.samplerate=o,e.samples.push({unit:y,pts:g}),l}class Bm{constructor(){this.VideoSample=null}createVideoSample(e,t,i,s){return{key:e,frame:!1,pts:t,dts:i,units:[],debug:s,length:0}}getLastNalUnit(e){var t;let i,s=this.VideoSample;if(s&&0!==s.units.length||(s=e[e.length-1]),null!=(t=s)&&t.units){const e=s.units;i=e[e.length-1]}return i}pushAccessUnit(e,t){if(e.units.length&&e.frame){if(void 0===e.pts){const i=t.samples,s=i.length;if(!s)return void t.dropped++;{const t=i[s-1];e.pts=t.pts,e.dts=t.dts}}t.samples.push(e)}e.debug.length&&hc.log(e.pts+"/"+e.dts+":"+e.debug)}}class Im{constructor(e){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=e,this.bytesAvailable=e.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){const e=this.data,t=this.bytesAvailable,i=e.byteLength-t,s=new Uint8Array(4),r=Math.min(4,t);if(0===r)throw new Error("no bytes available");s.set(e.subarray(i,i+r)),this.word=new DataView(s.buffer).getUint32(0),this.bitsAvailable=8*r,this.bytesAvailable-=r}skipBits(e){let t;e=Math.min(e,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(t=(e-=this.bitsAvailable)>>3,e-=t<<3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}readBits(e){let t=Math.min(this.bitsAvailable,e);const i=this.word>>>32-t;if(e>32&&hc.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0)this.word<<=t;else{if(!(this.bytesAvailable>0))throw new Error("no bits available");this.loadWord()}return t=e-t,t>0&&this.bitsAvailable?i<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){const e=this.skipLZ();return this.readBits(e+1)-1}readEG(){const e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}readUShort(){return this.readBits(16)}readUInt(){return this.readBits(32)}skipScalingList(e){let t,i=8,s=8;for(let r=0;r{var a;switch(s.type){case 1:{let t=!1;o=!0;const r=s.data;if(l&&r.length>4){const e=new Im(r).readSliceType();2!==e&&4!==e&&7!==e&&9!==e||(t=!0)}var d;if(t)null!=(d=n)&&d.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null);n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.frame=!0,n.key=t;break}case 5:o=!0,null!=(a=n)&&a.frame&&!n.key&&(this.pushAccessUnit(n,e),n=this.VideoSample=null),n||(n=this.VideoSample=this.createVideoSample(!0,i.pts,i.dts,"")),n.key=!0,n.frame=!0;break;case 6:o=!0,Tu(s.data,1,i.pts,t.samples);break;case 7:{var h,c;o=!0,l=!0;const t=s.data,i=new Im(t).readSPS();if(!e.sps||e.width!==i.width||e.height!==i.height||(null==(h=e.pixelRatio)?void 0:h[0])!==i.pixelRatio[0]||(null==(c=e.pixelRatio)?void 0:c[1])!==i.pixelRatio[1]){e.width=i.width,e.height=i.height,e.pixelRatio=i.pixelRatio,e.sps=[t],e.duration=r;const s=t.subarray(1,4);let a="avc1.";for(let e=0;e<3;e++){let t=s[e].toString(16);t.length<2&&(t="0"+t),a+=t}e.codec=a}break}case 8:o=!0,e.pps=[s.data];break;case 9:o=!0,e.audFound=!0,n&&this.pushAccessUnit(n,e),n=this.VideoSample=this.createVideoSample(!1,i.pts,i.dts,"");break;case 12:o=!0;break;default:o=!1,n&&(n.debug+="unknown NAL "+s.type+" ")}if(n&&o){n.units.push(s)}})),s&&n&&(this.pushAccessUnit(n,e),this.VideoSample=null)}parseAVCNALu(e,t){const i=t.byteLength;let s=e.naluState||0;const r=s,a=[];let o,n,l,d=0,h=-1,c=0;for(-1===s&&(h=0,c=31&t[0],s=0,d=1);d=0){const e={data:t.subarray(h,n),type:c};a.push(e)}else{const i=this.getLastNalUnit(e.samples);i&&(r&&d<=4-r&&i.state&&(i.data=i.data.subarray(0,i.data.byteLength-r)),n>0&&(i.data=Su(i.data,t.subarray(0,n)),i.state=0))}d=0&&s>=0){const e={data:t.subarray(h,i),type:c,state:s};a.push(e)}if(0===a.length){const i=this.getLastNalUnit(e.samples);i&&(i.data=Su(i.data,t))}return e.naluState=s,a}}class Um{constructor(e,t,i){this.keyData=void 0,this.decrypter=void 0,this.keyData=i,this.decrypter=new Wf(t,{removePKCS7Padding:!1})}decryptBuffer(e){return this.decrypter.decrypt(e,this.keyData.key.buffer,this.keyData.iv.buffer)}decryptAacSample(e,t,i){const s=e[t].unit;if(s.length<=16)return;const r=s.subarray(16,s.length-s.length%16),a=r.buffer.slice(r.byteOffset,r.byteOffset+r.length);this.decryptBuffer(a).then((r=>{const a=new Uint8Array(r);s.set(a,16),this.decrypter.isSync()||this.decryptAacSamples(e,t+1,i)}))}decryptAacSamples(e,t,i){for(;;t++){if(t>=e.length)return void i();if(!(e[t].unit.length<32)&&(this.decryptAacSample(e,t,i),!this.decrypter.isSync()))return}}getAvcEncryptedData(e){const t=16*Math.floor((e.length-48)/160)+16,i=new Int8Array(t);let s=0;for(let t=32;t{r.data=this.getAvcDecryptedUnit(a,o),this.decrypter.isSync()||this.decryptAvcSamples(e,t,i+1,s)}))}decryptAvcSamples(e,t,i,s){if(e instanceof Uint8Array)throw new Error("Cannot decrypt samples of type Uint8Array");for(;;t++,i=0){if(t>=e.length)return void s();const r=e[t].units;for(;!(i>=r.length);i++){const a=r[i];if(!(a.data.length<=48||1!==a.type&&5!==a.type||(this.decryptAvcSample(e,t,i,s,a),this.decrypter.isSync())))return}}}}const Fm=188;class Om{constructor(e,t,i){this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._duration=0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.videoParser=new Mm}static probe(e){const t=Om.syncOffset(e);return t>0&&hc.warn(`MPEG2-TS detected but first sync word found @ offset ${t}`),-1!==t}static syncOffset(e){const t=e.length;let i=Math.min(940,t-Fm)+1,s=0;for(;s1&&(0===a&&o>2||n+Fm>i))return a}s++}return-1}static createTrack(e,t){return{container:"video"===e||"audio"===e?"video/mp2t":void 0,type:e,id:ou[e],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===e?t:void 0}}resetInitSegment(e,t,i,s){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=Om.createTrack("video"),this._audioTrack=Om.createTrack("audio",s),this._id3Track=Om.createTrack("id3"),this._txtTrack=Om.createTrack("text"),this._audioTrack.segmentCodec="aac",this.aacOverFlow=null,this.remainderData=null,this.audioCodec=t,this.videoCodec=i,this._duration=s}resetTimeStamp(){}resetContiguity(){const{_audioTrack:e,_videoTrack:t,_id3Track:i}=this;e&&(e.pesData=null),t&&(t.pesData=null),i&&(i.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(e,t,i=!1,s=!1){let r;i||(this.sampleAes=null);const a=this._videoTrack,o=this._audioTrack,n=this._id3Track,l=this._txtTrack;let d=a.pid,h=a.pesData,c=o.pid,u=n.pid,p=o.pesData,f=n.pesData,m=null,g=this.pmtParsed,y=this._pmtId,A=e.length;if(this.remainderData&&(A=(e=Su(this.remainderData,e)).length,this.remainderData=null),A>4>1){if(v=t+5+e[t+4],v===t+Fm)continue}else v=t+4;switch(A){case d:s&&(h&&(r=Hm(h))&&this.videoParser.parseAVCPES(a,l,r,!1,this._duration),h={data:[],size:0}),h&&(h.data.push(e.subarray(v,t+Fm)),h.size+=t+Fm-v);break;case c:if(s){if(p&&(r=Hm(p)))switch(o.segmentCodec){case"aac":this.parseAACPES(o,r);break;case"mp3":this.parseMPEGPES(o,r);break;case"ac3":this.parseAC3PES(o,r)}p={data:[],size:0}}p&&(p.data.push(e.subarray(v,t+Fm)),p.size+=t+Fm-v);break;case u:s&&(f&&(r=Hm(f))&&this.parseID3PES(n,r),f={data:[],size:0}),f&&(f.data.push(e.subarray(v,t+Fm)),f.size+=t+Fm-v);break;case 0:s&&(v+=e[v]+1),y=this._pmtId=jm(e,v);break;case y:{s&&(v+=e[v]+1);const r=zm(e,v,this.typeSupported,i);d=r.videoPid,d>0&&(a.pid=d,a.segmentCodec=r.segmentVideoCodec),c=r.audioPid,c>0&&(o.pid=c,o.segmentCodec=r.segmentAudioCodec),u=r.id3Pid,u>0&&(n.pid=u),null===m||g||(hc.warn(`MPEG-TS PMT found at ${t} after unknown PID '${m}'. Backtracking to sync byte @${b} to parse all TS packets.`),m=null,t=b-188),g=this.pmtParsed=!0;break}case 17:case 8191:break;default:m=A}}else v++;if(v>0){const e=new Error(`Found ${v} TS packet/s that do not start with 0x47`);this.observer.emit(sc.ERROR,sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message})}a.pesData=h,o.pesData=p,n.pesData=f;const _={audioTrack:o,videoTrack:a,id3Track:n,textTrack:l};return s&&this.extractRemainingSamples(_),_}flush(){const{remainderData:e}=this;let t;return this.remainderData=null,t=e?this.demux(e,-1,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(t),this.sampleAes?this.decrypt(t,this.sampleAes):t}extractRemainingSamples(e){const{audioTrack:t,videoTrack:i,id3Track:s,textTrack:r}=e,a=i.pesData,o=t.pesData,n=s.pesData;let l;if(a&&(l=Hm(a))?(this.videoParser.parseAVCPES(i,r,l,!0,this._duration),i.pesData=null):i.pesData=a,o&&(l=Hm(o))){switch(t.segmentCodec){case"aac":this.parseAACPES(t,l);break;case"mp3":this.parseMPEGPES(t,l);break;case"ac3":this.parseAC3PES(t,l)}t.pesData=null}else null!=o&&o.size&&hc.log("last AAC PES packet truncated,might overlap between fragments"),t.pesData=o;n&&(l=Hm(n))?(this.parseID3PES(s,l),s.pesData=null):s.pesData=n}demuxSampleAes(e,t,i){const s=this.demux(e,i,!0,!this.config.progressive),r=this.sampleAes=new Um(this.observer,this.config,t);return this.decrypt(s,r)}decrypt(e,t){return new Promise((i=>{const{audioTrack:s,videoTrack:r}=e;s.samples&&"aac"===s.segmentCodec?t.decryptAacSamples(s.samples,0,(()=>{r.samples?t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)})):i(e)})):r.samples&&t.decryptAvcSamples(r.samples,0,0,(()=>{i(e)}))}))}destroy(){this._duration=0}parseAACPES(e,t){let i=0;const s=this.aacOverFlow;let r,a,o,n=t.data;if(s){this.aacOverFlow=null;const t=s.missing,r=s.sample.unit.byteLength;if(-1===t)n=Su(s.sample.unit,n);else{const a=r-t;s.sample.unit.set(n.subarray(0,t),a),e.samples.push(s.sample),i=s.missing}}for(r=i,a=n.length;r0;)n+=a}}parseID3PES(e,t){if(void 0===t.pts)return void hc.warn("[tsdemuxer]: ID3 PES unknown PTS");const i=Zh({},t,{type:this._videoTrack?wp:_p,duration:Number.POSITIVE_INFINITY});e.samples.push(i)}}function Nm(e,t){return((31&e[t+1])<<8)+e[t+2]}function jm(e,t){return(31&e[t+10])<<8|e[t+11]}function zm(e,t,i,s){const r={audioPid:-1,videoPid:-1,id3Pid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},a=t+3+((15&e[t+1])<<8|e[t+2])-4;for(t+=12+((15&e[t+10])<<8|e[t+11]);t0){let s=t+5,n=o;for(;n>2;){if(106===e[s])!0!==i.ac3?hc.log("AC-3 audio found, not supported in this browser for now"):(r.audioPid=a,r.segmentAudioCodec="ac3");const t=e[s+1]+2;s+=t,n-=t}}break;case 194:case 135:hc.warn("Unsupported EC-3 in M2TS found");break;case 36:hc.warn("Unsupported HEVC in M2TS found")}t+=o+5}return r}function Gm(e){hc.log(`${e} with AES-128-CBC encryption found in unencrypted stream`)}function Hm(e){let t,i,s,r,a,o=0;const n=e.data;if(!e||0===e.size)return null;for(;n[0].length<19&&n.length>1;)n[0]=Su(n[0],n[1]),n.splice(1,1);t=n[0];if(1===(t[0]<<16)+(t[1]<<8)+t[2]){if(i=(t[4]<<8)+t[5],i&&i>e.size-6)return null;const l=t[7];192&l&&(r=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,64&l?(a=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,r-a>54e5&&(hc.warn(`${Math.round((r-a)/9e4)}s delta between PTS and DTS, align them`),r=a)):a=r),s=t[8];let d=s+9;if(e.size<=d)return null;e.size-=d;const h=new Uint8Array(e.size);for(let e=0,i=n.length;ei){d-=i;continue}t=t.subarray(d),i-=d,d=0}h.set(t,o),o+=i}return i&&(i-=s+3),{data:h,pts:r,dts:a,len:i}}return null}class Vm{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])}}}const $m=Math.pow(2,32)-1;class Wm{static init(){let e;for(e in Wm.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],dac3:[],"ac-3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]},Wm.types)Wm.types.hasOwnProperty(e)&&(Wm.types[e]=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)]);const t=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]),i=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]);Wm.HDLR_TYPES={video:t,audio:i};const s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),r=new Uint8Array([0,0,0,0,0,0,0,0]);Wm.STTS=Wm.STSC=Wm.STCO=r,Wm.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),Wm.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),Wm.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),Wm.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);const a=new Uint8Array([105,115,111,109]),o=new Uint8Array([97,118,99,49]),n=new Uint8Array([0,0,0,1]);Wm.FTYP=Wm.box(Wm.types.ftyp,a,n,a,o),Wm.DINF=Wm.box(Wm.types.dinf,Wm.box(Wm.types.dref,s))}static box(e,...t){let i=8,s=t.length;const r=s;for(;s--;)i+=t[s].byteLength;const a=new Uint8Array(i);for(a[0]=i>>24&255,a[1]=i>>16&255,a[2]=i>>8&255,a[3]=255&i,a.set(e,4),s=0,i=8;s>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,85,196,0,0]))}static mdia(e){return Wm.box(Wm.types.mdia,Wm.mdhd(e.timescale,e.duration),Wm.hdlr(e.type),Wm.minf(e))}static mfhd(e){return Wm.box(Wm.types.mfhd,new Uint8Array([0,0,0,0,e>>24,e>>16&255,e>>8&255,255&e]))}static minf(e){return"audio"===e.type?Wm.box(Wm.types.minf,Wm.box(Wm.types.smhd,Wm.SMHD),Wm.DINF,Wm.stbl(e)):Wm.box(Wm.types.minf,Wm.box(Wm.types.vmhd,Wm.VMHD),Wm.DINF,Wm.stbl(e))}static moof(e,t,i){return Wm.box(Wm.types.moof,Wm.mfhd(e),Wm.traf(i,t))}static moov(e){let t=e.length;const i=[];for(;t--;)i[t]=Wm.trak(e[t]);return Wm.box.apply(null,[Wm.types.moov,Wm.mvhd(e[0].timescale,e[0].duration)].concat(i).concat(Wm.mvex(e)))}static mvex(e){let t=e.length;const i=[];for(;t--;)i[t]=Wm.trex(e[t]);return Wm.box.apply(null,[Wm.types.mvex,...i])}static mvhd(e,t){t*=e;const i=Math.floor(t/($m+1)),s=Math.floor(t%($m+1)),r=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,e>>24&255,e>>16&255,e>>8&255,255&e,i>>24,i>>16&255,i>>8&255,255&i,s>>24,s>>16&255,s>>8&255,255&s,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]);return Wm.box(Wm.types.mvhd,r)}static sdtp(e){const t=e.samples||[],i=new Uint8Array(4+t.length);let s,r;for(s=0;s>>8&255),r.push(255&s),r=r.concat(Array.prototype.slice.call(i));for(t=0;t>>8&255),a.push(255&s),a=a.concat(Array.prototype.slice.call(i));const o=Wm.box(Wm.types.avcC,new Uint8Array([1,r[3],r[4],r[5],255,224|e.sps.length].concat(r).concat([e.pps.length]).concat(a))),n=e.width,l=e.height,d=e.pixelRatio[0],h=e.pixelRatio[1];return Wm.box(Wm.types.avc1,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,n>>8&255,255&n,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,Wm.box(Wm.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),Wm.box(Wm.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,h>>24,h>>16&255,h>>8&255,255&h])))}static esds(e){const t=e.config.length;return 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.config).concat([6,1,2]))}static audioStsd(e){const t=e.samplerate;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,e.channelCount,0,16,0,0,0,0,t>>8&255,255&t,0,0])}static mp4a(e){return Wm.box(Wm.types.mp4a,Wm.audioStsd(e),Wm.box(Wm.types.esds,Wm.esds(e)))}static mp3(e){return Wm.box(Wm.types[".mp3"],Wm.audioStsd(e))}static ac3(e){return Wm.box(Wm.types["ac-3"],Wm.audioStsd(e),Wm.box(Wm.types.dac3,e.config))}static stsd(e){return"audio"===e.type?"mp3"===e.segmentCodec&&"mp3"===e.codec?Wm.box(Wm.types.stsd,Wm.STSD,Wm.mp3(e)):"ac3"===e.segmentCodec?Wm.box(Wm.types.stsd,Wm.STSD,Wm.ac3(e)):Wm.box(Wm.types.stsd,Wm.STSD,Wm.mp4a(e)):Wm.box(Wm.types.stsd,Wm.STSD,Wm.avc1(e))}static tkhd(e){const t=e.id,i=e.duration*e.timescale,s=e.width,r=e.height,a=Math.floor(i/($m+1)),o=Math.floor(i%($m+1));return Wm.box(Wm.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,a>>24,a>>16&255,a>>8&255,255&a,o>>24,o>>16&255,o>>8&255,255&o,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,s>>8&255,255&s,0,0,r>>8&255,255&r,0,0]))}static traf(e,t){const i=Wm.sdtp(e),s=e.id,r=Math.floor(t/($m+1)),a=Math.floor(t%($m+1));return Wm.box(Wm.types.traf,Wm.box(Wm.types.tfhd,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s])),Wm.box(Wm.types.tfdt,new Uint8Array([1,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,a>>24,a>>16&255,a>>8&255,255&a])),Wm.trun(e,i.length+16+20+8+16+8+8),i)}static trak(e){return e.duration=e.duration||4294967295,Wm.box(Wm.types.trak,Wm.tkhd(e),Wm.mdia(e))}static trex(e){const t=e.id;return Wm.box(Wm.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(e,t){const i=e.samples||[],s=i.length,r=12+16*s,a=new Uint8Array(r);let o,n,l,d,h,c;for(t+=8+r,a.set(["video"===e.type?1:0,0,15,1,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t>>>24&255,t>>>16&255,t>>>8&255,255&t],0),o=0;o>>24&255,l>>>16&255,l>>>8&255,255&l,d>>>24&255,d>>>16&255,d>>>8&255,255&d,h.isLeading<<2|h.dependsOn,h.isDependedOn<<6|h.hasRedundancy<<4|h.paddingValue<<1|h.isNonSync,61440&h.degradPrio,15&h.degradPrio,c>>>24&255,c>>>16&255,c>>>8&255,255&c],12+16*o);return Wm.box(Wm.types.trun,a)}static initSegment(e){Wm.types||Wm.init();const t=Wm.moov(e);return Su(Wm.FTYP,t)}}Wm.types=void 0,Wm.HDLR_TYPES=void 0,Wm.STTS=void 0,Wm.STSC=void 0,Wm.STCO=void 0,Wm.STSZ=void 0,Wm.VMHD=void 0,Wm.SMHD=void 0,Wm.STSD=void 0,Wm.FTYP=void 0,Wm.DINF=void 0;function Jm(e,t,i=1,s=!1){const r=e*t*i;return s?Math.round(r):r}function qm(e,t=!1){return Jm(e,1e3,1/9e4,t)}let Km,Ym=null,Qm=null;class Xm{constructor(e,t,i,s=""){if(this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextAvcDts=null,this.nextAudioPts=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=e,this.config=t,this.typeSupported=i,this.ISGenerated=!1,null===Ym){const e=(navigator.userAgent||"").match(/Chrome\/(\d+)/i);Ym=e?parseInt(e[1]):0}if(null===Qm){const e=navigator.userAgent.match(/Safari\/(\d+)/i);Qm=e?parseInt(e[1]):0}}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(e){hc.log("[mp4-remuxer]: initPTS & initDTS reset"),this._initPTS=this._initDTS=e}resetNextTimestamp(){hc.log("[mp4-remuxer]: reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){hc.log("[mp4-remuxer]: ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(e){let t=!1;const i=e.reduce(((e,i)=>{const s=i.pts-e;return s<-4294967296?(t=!0,Zm(e,i.pts)):s>0?e:i.pts}),e[0].pts);return t&&hc.debug("PTS rollover detected"),i}remux(e,t,i,s,r,a,o,n){let l,d,h,c,u,p,f=r,m=r;const g=e.pid>-1,y=t.pid>-1,A=t.samples.length,b=e.samples.length>0,v=o&&A>0||A>1;if((!g||b)&&(!y||v)||this.ISGenerated||o){if(this.ISGenerated){var _,S,w,E;const e=this.videoTrackConfig;!e||t.width===e.width&&t.height===e.height&&(null==(_=t.pixelRatio)?void 0:_[0])===(null==(S=e.pixelRatio)?void 0:S[0])&&(null==(w=t.pixelRatio)?void 0:w[1])===(null==(E=e.pixelRatio)?void 0:E[1])||this.resetInitSegment()}else h=this.generateIS(e,t,r,a);const i=this.isVideoContiguous;let s,o=-1;if(v&&(o=function(e){for(let t=0;t0){hc.warn(`[mp4-remuxer]: Dropped ${o} out of ${A} video samples due to a missing keyframe`);const e=this.getVideoStartPts(t.samples);t.samples=t.samples.slice(o),t.dropped+=o,m+=(t.samples[0].pts-e)/t.inputTimeScale,s=m}else-1===o&&(hc.warn(`[mp4-remuxer]: No keyframe found out of ${A} video samples`),p=!1);if(this.ISGenerated){if(b&&v){const i=this.getVideoStartPts(t.samples),s=(Zm(e.samples[0].pts,i)-i)/t.inputTimeScale;f+=Math.max(0,s),m+=Math.max(0,-s)}if(b){if(e.samplerate||(hc.warn("[mp4-remuxer]: regenerate InitSegment as audio detected"),h=this.generateIS(e,t,r,a)),d=this.remuxAudio(e,f,this.isAudioContiguous,a,y||v||n===cp?m:void 0),v){const s=d?d.endPTS-d.startPTS:0;t.inputTimeScale||(hc.warn("[mp4-remuxer]: regenerate InitSegment as video detected"),h=this.generateIS(e,t,r,a)),l=this.remuxVideo(t,m,i,s)}}else v&&(l=this.remuxVideo(t,m,i,0));l&&(l.firstKeyFrame=o,l.independent=-1!==o,l.firstKeyFramePTS=s)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(i.samples.length&&(u=eg(i,r,this._initPTS,this._initDTS)),s.samples.length&&(c=tg(s,r,this._initPTS))),{audio:d,video:l,initSegment:h,independent:p,text:c,id3:u}}generateIS(e,t,i,s){const r=e.samples,a=t.samples,o=this.typeSupported,n={},l=this._initPTS;let d,h,c,u=!l||s,p="audio/mp4";if(u&&(d=h=1/0),e.config&&r.length){switch(e.timescale=e.samplerate,e.segmentCodec){case"mp3":o.mpeg?(p="audio/mpeg",e.codec=""):o.mp3&&(e.codec="mp3");break;case"ac3":e.codec="ac-3"}n.audio={id:"audio",container:p,codec:e.codec,initSegment:"mp3"===e.segmentCodec&&o.mpeg?new Uint8Array(0):Wm.initSegment([e]),metadata:{channelCount:e.channelCount}},u&&(c=e.inputTimeScale,l&&c===l.timescale?u=!1:d=h=r[0].pts-Math.round(c*i))}if(t.sps&&t.pps&&a.length){if(t.timescale=t.inputTimeScale,n.video={id:"main",container:"video/mp4",codec:t.codec,initSegment:Wm.initSegment([t]),metadata:{width:t.width,height:t.height}},u)if(c=t.inputTimeScale,l&&c===l.timescale)u=!1;else{const e=this.getVideoStartPts(a),t=Math.round(c*i);h=Math.min(h,Zm(a[0].dts,e)-t),d=Math.min(d,e-t)}this.videoTrackConfig={width:t.width,height:t.height,pixelRatio:t.pixelRatio}}if(Object.keys(n).length)return this.ISGenerated=!0,u?(this._initPTS={baseTime:d,timescale:c},this._initDTS={baseTime:h,timescale:c}):d=c=void 0,{tracks:n,initPTS:d,timescale:c}}remuxVideo(e,t,i,s){const r=e.inputTimeScale,a=e.samples,o=[],n=a.length,l=this._initPTS;let d,h,c=this.nextAvcDts,u=8,p=this.videoSampleDuration,f=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,g=!1;if(!i||null===c){const e=t*r,s=a[0].pts-Zm(a[0].dts,a[0].pts);Ym&&null!==c&&Math.abs(e-s-c)<15e3?i=!0:c=e-s}const y=l.baseTime*r/l.timescale;for(let e=0;e0?e-1:e].dts&&(g=!0)}g&&a.sort((function(e,t){const i=e.dts-t.dts,s=e.pts-t.pts;return i||s})),d=a[0].dts,h=a[a.length-1].dts;const A=h-d,b=A?Math.round(A/(n-1)):p||e.inputTimeScale/30;if(i){const e=d-c,i=e>b,s=e<-1;if((i||s)&&(i?hc.warn(`AVC: ${qm(e,!0)} ms (${e}dts) hole between fragments detected at ${t.toFixed(3)}`):hc.warn(`AVC: ${qm(-e,!0)} ms (${e}dts) overlapping between fragments detected at ${t.toFixed(3)}`),!s||c>=a[0].pts||Ym)){d=c;const t=a[0].pts-e;if(i)a[0].dts=d,a[0].pts=t;else for(let i=0;it);i++)a[i].dts-=e,a[i].pts-=e;hc.log(`Video: Initial PTS/DTS adjusted: ${qm(t,!0)}/${qm(d,!0)}, delta: ${qm(e,!0)} ms`)}}d=Math.max(0,d);let v=0,_=0,S=d;for(let e=0;e0?t.dts-a[e-1].dts:b;if(l=e>0?t.pts-a[e-1].pts:b,i.stretchShortVideoTrack&&null!==this.nextAudioPts){const e=Math.floor(i.maxBufferHole*r),a=(s?f+s*r:this.nextAudioPts)-t.pts;a>e?(p=a-o,p<0?p=o:k=!0,hc.log(`[mp4-remuxer]: It is approximately ${a/90} ms to the next segment; using duration ${p/90} ms for the last video frame.`)):p=o}else p=o}const h=Math.round(t.pts-t.dts);C=Math.min(C,p),R=Math.max(R,p),x=Math.min(x,l),D=Math.max(D,l),o.push(new ig(t.key,p,d,h))}if(o.length)if(Ym){if(Ym<70){const e=o[0].flags;e.dependsOn=2,e.isNonSync=0}}else if(Qm&&D-x0&&(s&&Math.abs(g-m)<9e3||Math.abs(Zm(p[0].pts-y,g)-m)<20*l),p.forEach((function(e){e.pts=Zm(e.pts-y,g)})),!i||m<0){if(p=p.filter((e=>e.pts>=0)),!p.length)return;m=0===r?0:s&&!u?Math.max(0,g):p[0].pts}if("aac"===e.segmentCodec){const t=this.config.maxAudioFramesDrift;for(let i=0,s=m;i=t*l&&d<1e4&&u){let t=Math.round(n/l);s=o-t*l,s<0&&(t--,s+=l),0===i&&(this.nextAudioPts=m=s),hc.warn(`[mp4-remuxer]: Injecting ${t} audio frame @ ${(s/a).toFixed(3)}s due to ${Math.round(1e3*n/a)} ms gap.`);for(let a=0;a0))return;_+=f;try{A=new Uint8Array(_)}catch(e){return void this.observer.emit(sc.ERROR,sc.ERROR,{type:rc.MUX_ERROR,details:ac.REMUX_ALLOC_ERROR,fatal:!1,error:e,bytes:_,reason:`fail allocating audio mdat ${_}`})}if(!h){new DataView(A.buffer).setUint32(0,_),A.set(Wm.types.mdat,4)}}A.set(r,f);const l=r.byteLength;f+=l,c.push(new ig(!0,n,l,0)),v=a}const w=c.length;if(!w)return;const E=c[c.length-1];this.nextAudioPts=m=v+o*E.duration;const T=h?new Uint8Array(0):Wm.moof(e.sequenceNumber++,b/o,Zh({},e,{samples:c}));e.samples=[];const k=b/a,C=m/a,x={data1:T,data2:A,startPTS:k,endPTS:C,startDTS:k,endDTS:C,type:"audio",hasAudio:!0,hasVideo:!1,nb:w};return this.isAudioContiguous=!0,x}remuxEmptyAudio(e,t,i,s){const r=e.inputTimeScale,a=r/(e.samplerate?e.samplerate:r),o=this.nextAudioPts,n=this._initDTS,l=9e4*n.baseTime/n.timescale,d=(null!==o?o:s.startDTS*r)+l,h=s.endDTS*r+l,c=1024*a,u=Math.ceil((h-d)/c),p=Vm.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(hc.warn("[mp4-remuxer]: remux empty Audio"),!p)return void hc.trace("[mp4-remuxer]: Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec");const f=[];for(let e=0;e4294967296;)e+=i;return e}function eg(e,t,i,s){const r=e.samples.length;if(!r)return;const a=e.inputTimeScale;for(let o=0;oe.pts-t.pts));const a=e.samples;return e.samples=[],{samples:a}}class ig{constructor(e,t,i,s){this.size=void 0,this.duration=void 0,this.cts=void 0,this.flags=void 0,this.duration=t,this.size=i,this.cts=s,this.flags={isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:e?2:1,isNonSync:e?0:1}}}function sg(e,t){const i=null==e?void 0:e.codec;if(i&&i.length>4)return i;if(t===yc){if("ec-3"===i||"ac-3"===i||"alac"===i)return i;if("fLaC"===i||"Opus"===i){return $u(i,!1)}const e="mp4a.40.5";return hc.info(`Parsed audio codec "${i}" or audio object type not handled. Using "${e}"`),e}return hc.warn(`Unhandled video codec "${i}"`),"hvc1"===i||"hev1"===i?"hvc1.1.6.L120.90":"av01"===i?"av01.0.04M.08":"avc1.42e01e"}try{Km=self.performance.now.bind(self.performance)}catch(e){hc.debug("Unable to use Performance API on this environment"),Km=null==Cc?void 0:Cc.Date.now}const rg=[{demux:class{constructor(e,t){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.config=t}resetTimeStamp(){}resetInitSegment(e,t,i,s){const r=this.videoTrack=lm("video",1),a=this.audioTrack=lm("audio",1),o=this.txtTrack=lm("text",1);if(this.id3Track=lm("id3",1),this.timeOffset=0,null==e||!e.byteLength)return;const n=mu(e);if(n.video){const{id:e,timescale:t,codec:i}=n.video;r.id=e,r.timescale=o.timescale=t,r.codec=i}if(n.audio){const{id:e,timescale:t,codec:i}=n.audio;a.id=e,a.timescale=t,a.codec=i}o.id=ou.text,r.sampleDuration=0,r.duration=a.duration=s}resetContiguity(){this.remainderData=null}static probe(e){return function(e){const t=e.byteLength;for(let i=0;i8&&109===e[i+4]&&111===e[i+5]&&111===e[i+6]&&102===e[i+7])return!0;i=s>1?i+s:t}return!1}(e)}demux(e,t){this.timeOffset=t;let i=e;const s=this.videoTrack,r=this.txtTrack;if(this.config.progressive){this.remainderData&&(i=Su(this.remainderData,e));const t=function(e){const t={valid:null,remainder:null},i=pu(e,["moof"]);if(i.length<2)return t.remainder=e,t;const s=i[i.length-1];return t.valid=Nc(e,0,s.byteOffset-8),t.remainder=Nc(e,s.byteOffset-8),t}(i);this.remainderData=t.remainder,s.samples=t.valid||new Uint8Array}else s.samples=i;const a=this.extractID3Track(s,t);return r.samples=wu(t,s),{videoTrack:s,audioTrack:this.audioTrack,id3Track:a,textTrack:this.txtTrack}}flush(){const e=this.timeOffset,t=this.videoTrack,i=this.txtTrack;t.samples=this.remainderData||new Uint8Array,this.remainderData=null;const s=this.extractID3Track(t,this.timeOffset);return i.samples=wu(e,t),{videoTrack:t,audioTrack:lm(),id3Track:s,textTrack:lm()}}extractID3Track(e,t){const i=this.id3Track;if(e.samples.length){const s=pu(e.samples,["emsg"]);s&&s.forEach((e=>{const s=function(e){const t=e[0];let i="",s="",r=0,a=0,o=0,n=0,l=0,d=0;if(0===t){for(;"\0"!==nu(e.subarray(d,d+1));)i+=nu(e.subarray(d,d+1)),d+=1;for(i+=nu(e.subarray(d,d+1)),d+=1;"\0"!==nu(e.subarray(d,d+1));)s+=nu(e.subarray(d,d+1)),d+=1;s+=nu(e.subarray(d,d+1)),d+=1,r=du(e,12),a=du(e,16),n=du(e,20),l=du(e,24),d=28}else if(1===t){d+=4,r=du(e,d),d+=4;const t=du(e,d);d+=4;const a=du(e,d);for(d+=4,o=2**32*t+a,tc(o)||(o=Number.MAX_SAFE_INTEGER,hc.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),n=du(e,d),d+=4,l=du(e,d),d+=4;"\0"!==nu(e.subarray(d,d+1));)i+=nu(e.subarray(d,d+1)),d+=1;for(i+=nu(e.subarray(d,d+1)),d+=1;"\0"!==nu(e.subarray(d,d+1));)s+=nu(e.subarray(d,d+1)),d+=1;s+=nu(e.subarray(d,d+1)),d+=1}return{schemeIdUri:i,value:s,timeScale:r,presentationTime:o,presentationTimeDelta:a,eventDuration:n,id:l,payload:e.subarray(d,e.byteLength)}}(e);if(Rm.test(s.schemeIdUri)){const e=ec(s.presentationTime)?s.presentationTime/s.timeScale:t+s.presentationTimeDelta/s.timeScale;let r=4294967295===s.eventDuration?Number.POSITIVE_INFINITY:s.eventDuration/s.timeScale;r<=.001&&(r=Number.POSITIVE_INFINITY);const a=s.payload;i.samples.push({data:a,len:a.byteLength,dts:e,pts:e,type:wp,duration:r})}}))}return i}demuxSampleAes(e,t,i){return Promise.reject(new Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){}},remux:class{constructor(){this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null}destroy(){}resetTimeStamp(e){this.initPTS=e,this.lastEndTime=null}resetNextTimestamp(){this.lastEndTime=null}resetInitSegment(e,t,i,s){this.audioCodec=t,this.videoCodec=i,this.generateInitSegment(function(e,t){if(!e||!t)return e;const i=t.keyId;i&&t.isCommonEncryption&&pu(e,["moov","trak"]).forEach((e=>{const t=pu(e,["mdia","minf","stbl","stsd"])[0].subarray(8);let s=pu(t,["enca"]);const r=s.length>0;r||(s=pu(t,["encv"])),s.forEach((e=>{pu(r?e.subarray(28):e.subarray(78),["sinf"]).forEach((e=>{const t=vu(e);if(t){const e=t.subarray(8,24);e.some((e=>0!==e))||(hc.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${su(e)} -> ${su(i)}`),t.set(i,8))}}))}))}));return e}(e,s)),this.emitInitSegment=!0}generateInitSegment(e){let{audioCodec:t,videoCodec:i}=this;if(null==e||!e.byteLength)return this.initTracks=void 0,void(this.initData=void 0);const s=this.initData=mu(e);s.audio&&(t=sg(s.audio,yc)),s.video&&(i=sg(s.video,Ac));const r={};s.audio&&s.video?r.audiovideo={container:"video/mp4",codec:t+","+i,initSegment:e,id:"main"}:s.audio?r.audio={container:"audio/mp4",codec:t,initSegment:e,id:"audio"}:s.video?r.video={container:"video/mp4",codec:i,initSegment:e,id:"main"}:hc.warn("[passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes."),this.initTracks=r}remux(e,t,i,s,r,a){var o,n;let{initPTS:l,lastEndTime:d}=this;const h={audio:void 0,video:void 0,text:s,id3:i,initSegment:void 0};ec(d)||(d=this.lastEndTime=r||0);const c=t.samples;if(null==c||!c.length)return h;const u={initPTS:void 0,timescale:1};let p=this.initData;if(null!=(o=p)&&o.length||(this.generateInitSegment(c),p=this.initData),null==(n=p)||!n.length)return hc.warn("[passthrough-remuxer.ts]: Failed to generate initSegment."),h;this.emitInitSegment&&(u.tracks=this.initTracks,this.emitInitSegment=!1);const f=function(e,t){let i=0,s=0,r=0;const a=pu(e,["moof","traf"]);for(let e=0;ee+t.info.duration||0),0);i=Math.max(i,e+a.earliestPresentationTime/a.timescale),s=i-t}}if(s&&ec(s))return s}return s||r}(c,p),m=function(e,t){return pu(t,["moof","traf"]).reduce(((t,i)=>{const s=pu(i,["tfdt"])[0],r=s[0],a=pu(i,["tfhd"]).reduce(((t,i)=>{const a=du(i,4),o=e[a];if(o){let e=du(s,4);if(1===r){if(e===ru)return hc.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"),t;e*=ru+1,e+=du(s,8)}const i=e/(o.timescale||9e4);if(ec(i)&&(null===t||ir}(l,g,r,f)||u.timescale!==l.timescale&&a)&&(u.initPTS=g-r,l&&1===l.timescale&&hc.warn("Adjusting initPTS by "+(u.initPTS-l.baseTime)),this.initPTS=l={baseTime:u.initPTS,timescale:1});const y=e?g-l.baseTime/l.timescale:d,A=y+f;!function(e,t,i){pu(t,["moof","traf"]).forEach((t=>{pu(t,["tfhd"]).forEach((s=>{const r=du(s,4),a=e[r];if(!a)return;const o=a.timescale||9e4;pu(t,["tfdt"]).forEach((e=>{const t=e[0],s=i*o;if(s){let i=du(e,4);if(0===t)i-=s,i=Math.max(i,0),uu(e,4,i);else{i*=Math.pow(2,32),i+=du(e,8),i-=s,i=Math.max(i,0);const t=Math.floor(i/(ru+1)),r=Math.floor(i%(ru+1));uu(e,4,t),uu(e,8,r)}}}))}))}))}(p,c,l.baseTime/l.timescale),f>0?this.lastEndTime=A:(hc.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());const b=!!p.audio,v=!!p.video;let _="";b&&(_+="audio"),v&&(_+="video");const S={data1:c,startPTS:y,startDTS:y,endPTS:A,endDTS:A,type:_,hasAudio:b,hasVideo:v,nb:1,dropped:0};return h.audio="audio"===S.type?S:void 0,h.video="audio"!==S.type?S:void 0,h.initSegment=u,h.id3=eg(i,r,l,l),s.samples.length&&(h.text=tg(s,r,l)),h}}},{demux:Om,remux:Xm},{demux:class extends dm{constructor(e,t){super(),this.observer=void 0,this.config=void 0,this.observer=e,this.config=t}resetInitSegment(e,t,i,s){super.resetInitSegment(e,t,i,s),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:t,duration:s,inputTimeScale:9e4,dropped:0}}static probe(e){if(!e)return!1;const t=Gc(e,0);let i=(null==t?void 0:t.length)||0;if(xm(e,i))return!1;for(let t=e.length;i0&&null!=(null==t?void 0:t.key)&&null!==t.iv&&null!=t.method&&(i=t);return i}(a,t);if(b&&"AES-128"===b.method){const e=this.getDecrypter();if(!e.isSync())return this.decryptionPromise=e.webCryptoDecrypt(a,b.key.buffer,b.iv.buffer).then((e=>{const t=this.push(e,null,i);return this.decryptionPromise=null,t})),this.decryptionPromise;{let t=e.softwareDecrypt(a,b.key.buffer,b.iv.buffer);if(i.part>-1&&(t=e.flush()),!t)return r.executeEnd=Km(),og(i);a=new Uint8Array(t)}}const v=this.needsProbing(d,h);if(v){const e=this.configureTransmuxer(a);if(e)return hc.warn(`[transmuxer] ${e.message}`),this.observer.emit(sc.ERROR,sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.FRAG_PARSING_ERROR,fatal:!1,error:e,reason:e.message}),r.executeEnd=Km(),og(i)}(d||h||p||v)&&this.resetInitSegment(A,f,m,y,t),(d||p||v)&&this.resetInitialTimestamp(g),l||this.resetContiguity();const _=this.transmux(a,b,u,c,i),S=this.currentTransmuxState;return S.contiguous=!0,S.discontinuity=!1,S.trackSwitch=!1,r.executeEnd=Km(),_}flush(e){const t=e.transmuxing;t.executeStart=Km();const{decrypter:i,currentTransmuxState:s,decryptionPromise:r}=this;if(r)return r.then((()=>this.flush(e)));const a=[],{timeOffset:o}=s;if(i){const t=i.flush();t&&a.push(this.push(t,null,e))}const{demuxer:n,remuxer:l}=this;if(!n||!l)return t.executeEnd=Km(),[og(e)];const d=n.flush(o);return ng(d)?d.then((t=>(this.flushRemux(a,t,e),a))):(this.flushRemux(a,d,e),a)}flushRemux(e,t,i){const{audioTrack:s,videoTrack:r,id3Track:a,textTrack:o}=t,{accurateTimeOffset:n,timeOffset:l}=this.currentTransmuxState;hc.log(`[transmuxer.ts]: Flushed fragment ${i.sn}${i.part>-1?" p: "+i.part:""} of level ${i.level}`);const d=this.remuxer.remux(s,r,a,o,l,n,!0,this.id);e.push({remuxResult:d,chunkMeta:i}),i.transmuxing.executeEnd=Km()}resetInitialTimestamp(e){const{demuxer:t,remuxer:i}=this;t&&i&&(t.resetTimeStamp(e),i.resetTimeStamp(e))}resetContiguity(){const{demuxer:e,remuxer:t}=this;e&&t&&(e.resetContiguity(),t.resetNextTimestamp())}resetInitSegment(e,t,i,s,r){const{demuxer:a,remuxer:o}=this;a&&o&&(a.resetInitSegment(e,t,i,s),o.resetInitSegment(e,t,i,r))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0)}transmux(e,t,i,s,r){let a;return a=t&&"SAMPLE-AES"===t.method?this.transmuxSampleAes(e,t,i,s,r):this.transmuxUnencrypted(e,i,s,r),a}transmuxUnencrypted(e,t,i,s){const{audioTrack:r,videoTrack:a,id3Track:o,textTrack:n}=this.demuxer.demux(e,t,!1,!this.config.progressive);return{remuxResult:this.remuxer.remux(r,a,o,n,t,i,!1,this.id),chunkMeta:s}}transmuxSampleAes(e,t,i,s,r){return this.demuxer.demuxSampleAes(e,t,i).then((e=>({remuxResult:this.remuxer.remux(e.audioTrack,e.videoTrack,e.id3Track,e.textTrack,i,s,!1,this.id),chunkMeta:r})))}configureTransmuxer(e){const{config:t,observer:i,typeSupported:s,vendor:r}=this;let a;for(let t=0,i=rg.length;t({remuxResult:{},chunkMeta:e});function ng(e){return"then"in e&&e.then instanceof Function}class lg{constructor(e,t,i,s,r){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=e,this.videoCodec=t,this.initSegmentData=i,this.duration=s,this.defaultInitPts=r||null}}class dg{constructor(e,t,i,s,r,a){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=e,this.contiguous=t,this.accurateTimeOffset=i,this.trackSwitch=s,this.timeOffset=r,this.initSegmentChange=a}}var hg={exports:{}};!function(e){var t=Object.prototype.hasOwnProperty,i="~";function s(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function a(e,t,s,a,o){if("function"!=typeof s)throw new TypeError("The listener must be a function");var n=new r(s,a||e,o),l=i?i+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],n]:e._events[l].push(n):(e._events[l]=n,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new s:delete e._events[t]}function n(){this._events=new s,this._eventsCount=0}Object.create&&(s.prototype=Object.create(null),(new s).__proto__||(i=!1)),n.prototype.eventNames=function(){var e,s,r=[];if(0===this._eventsCount)return r;for(s in e=this._events)t.call(e,s)&&r.push(i?s.slice(1):s);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},n.prototype.listeners=function(e){var t=i?i+e:e,s=this._events[t];if(!s)return[];if(s.fn)return[s.fn];for(var r=0,a=s.length,o=new Array(a);r{(t=t||{}).frag=this.frag,t.id=this.id,e===sc.ERROR&&(this.error=t.error),this.hls.trigger(e,t)};this.observer=new cg,this.observer.on(sc.FRAG_DECRYPTED,a),this.observer.on(sc.ERROR,a);const o=Uu(r.preferManagedMediaSource)||{isTypeSupported:()=>!1},n={mpeg:o.isTypeSupported("audio/mpeg"),mp3:o.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:o.isTypeSupported('audio/mp4; codecs="ac-3"')},l=navigator.vendor;if(this.useWorker&&"undefined"!=typeof Worker){if(r.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{r.workerPath?(hc.log(`loading Web Worker ${r.workerPath} for "${t}"`),this.workerContext=function(e){const t=new self.URL(e,self.location.href).href;return{worker:new self.Worker(t),scriptURL:t}}(r.workerPath)):(hc.log(`injecting Web Worker for "${t}"`),this.workerContext=function(){const e=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),t=self.URL.createObjectURL(e);return{worker:new self.Worker(t),objectURL:t}}()),this.onwmsg=e=>this.onWorkerMessage(e);const{worker:e}=this.workerContext;e.addEventListener("message",this.onwmsg),e.onerror=e=>{const i=new Error(`${e.message} (${e.filename}:${e.lineno})`);r.enableWorker=!1,hc.warn(`Error in "${t}" Web Worker, fallback to inline`),this.hls.trigger(sc.ERROR,{type:rc.OTHER_ERROR,details:ac.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:i})},e.postMessage({cmd:"init",typeSupported:n,vendor:l,id:t,config:JSON.stringify(r)})}catch(e){hc.warn(`Error setting up "${t}" Web Worker, fallback to inline`,e),this.resetWorker(),this.error=null,this.transmuxer=new ag(this.observer,n,r,l,t)}return}}this.transmuxer=new ag(this.observer,n,r,l,t)}resetWorker(){if(this.workerContext){const{worker:e,objectURL:t}=this.workerContext;t&&self.URL.revokeObjectURL(t),e.removeEventListener("message",this.onwmsg),e.onerror=null,e.terminate(),this.workerContext=null}}destroy(){if(this.workerContext)this.resetWorker(),this.onwmsg=void 0;else{const e=this.transmuxer;e&&(e.destroy(),this.transmuxer=null)}const e=this.observer;e&&e.removeAllListeners(),this.frag=null,this.observer=null,this.hls=null}push(e,t,i,s,r,a,o,n,l,d){var h,c;l.transmuxing.start=self.performance.now();const{transmuxer:u}=this,p=a?a.start:r.start,f=r.decryptdata,m=this.frag,g=!(m&&r.cc===m.cc),y=!(m&&l.level===m.level),A=m?l.sn-m.sn:-1,b=this.part?l.part-this.part.index:-1,v=0===A&&l.id>1&&l.id===(null==m?void 0:m.stats.chunkCount),_=!y&&(1===A||0===A&&(1===b||v&&b<=0)),S=self.performance.now();(y||A||0===r.stats.parsing.start)&&(r.stats.parsing.start=S),!a||!b&&_||(a.stats.parsing.start=S);const w=!(m&&(null==(h=r.initSegment)?void 0:h.url)===(null==(c=m.initSegment)?void 0:c.url)),E=new dg(g,_,n,y,p,w);if(!_||g||w){hc.log(`[transmuxer-interface, ${r.type}]: Starting new transmux session for sn: ${l.sn} p: ${l.part} level: ${l.level} id: ${l.id}\n discontinuity: ${g}\n trackSwitch: ${y}\n contiguous: ${_}\n accurateTimeOffset: ${n}\n timeOffset: ${p}\n initSegmentChange: ${w}`);const e=new lg(i,s,t,o,d);this.configureTransmuxer(e)}if(this.frag=r,this.part=a,this.workerContext)this.workerContext.worker.postMessage({cmd:"demux",data:e,decryptdata:f,chunkMeta:l,state:E},e instanceof ArrayBuffer?[e]:[]);else if(u){const t=u.push(e,f,l,E);ng(t)?(u.async=!0,t.then((e=>{this.handleTransmuxComplete(e)})).catch((e=>{this.transmuxerError(e,l,"transmuxer-interface push error")}))):(u.async=!1,this.handleTransmuxComplete(t))}}flush(e){e.transmuxing.start=self.performance.now();const{transmuxer:t}=this;if(this.workerContext)this.workerContext.worker.postMessage({cmd:"flush",chunkMeta:e});else if(t){let i=t.flush(e);ng(i)||t.async?(ng(i)||(i=Promise.resolve(i)),i.then((t=>{this.handleFlushResult(t,e)})).catch((t=>{this.transmuxerError(t,e,"transmuxer-interface flush error")}))):this.handleFlushResult(i,e)}}transmuxerError(e,t,i){this.hls&&(this.error=e,this.hls.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.FRAG_PARSING_ERROR,chunkMeta:t,fatal:!1,error:e,err:e,reason:i}))}handleFlushResult(e,t){e.forEach((e=>{this.handleTransmuxComplete(e)})),this.onFlush(t)}onWorkerMessage(e){const t=e.data,i=this.hls;switch(t.event){case"init":{var s;const e=null==(s=this.workerContext)?void 0:s.objectURL;e&&self.URL.revokeObjectURL(e);break}case"transmuxComplete":this.handleTransmuxComplete(t.data);break;case"flush":this.onFlush(t.data);break;case"workerLog":hc[t.data.logType]&&hc[t.data.logType](t.data.message);break;default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,i.trigger(t.event,t.data)}}configureTransmuxer(e){const{transmuxer:t}=this;this.workerContext?this.workerContext.worker.postMessage({cmd:"configure",config:e}):t&&t.configure(e)}handleTransmuxComplete(e){e.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(e)}}function pg(e,t){if(e.length!==t.length)return!1;for(let i=0;ie[i]!==t[i]))}function mg(e,t){return t.label.toLowerCase()===e.name.toLowerCase()&&(!t.language||t.language.toLowerCase()===(e.lang||"").toLowerCase())}class gg{constructor(e){this.buffered=void 0;const t=(t,i,s)=>{if((i>>>=0)>s-1)throw new DOMException(`Failed to execute '${t}' on 'TimeRanges': The index provided (${i}) is greater than the maximum bound (${s})`);return e[i][t]};this.buffered={get length(){return e.length},end:i=>t("end",i,e.length),start:i=>t("start",i,e.length)}}}class yg{constructor(e){this.buffers=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.buffers=e}append(e,t,i){const s=this.queues[t];s.push(e),1!==s.length||i||this.executeNext(t)}insertAbort(e,t){this.queues[t].unshift(e),this.executeNext(t)}appendBlocker(e){let t;const i=new Promise((e=>{t=e})),s={execute:t,onStart:()=>{},onComplete:()=>{},onError:()=>{}};return this.append(s,e),i}executeNext(e){const t=this.queues[e];if(t.length){const i=t[0];try{i.execute()}catch(t){hc.warn(`[buffer-operation-queue]: Exception executing "${e}" SourceBuffer operation: ${t}`),i.onError(t);const s=this.buffers[e];null!=s&&s.updating||this.shiftAndExecuteNext(e)}}}shiftAndExecuteNext(e){this.queues[e].shift(),this.executeNext(e)}current(e){return this.queues[e][0]}}const Ag=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/;function bg(e){const t=e.querySelectorAll("source");[].slice.call(t).forEach((t=>{e.removeChild(t)}))}const vg={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},_g=function(e){let t=e;return vg.hasOwnProperty(e)&&(t=vg[e]),String.fromCharCode(t)},Sg=15,wg=100,Eg={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},Tg={17:2,18:4,21:6,22:8,23:10,19:13,20:15},kg={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},Cg={25:2,26:4,29:6,30:8,31:10,27:13,28:15},xg=["white","green","blue","cyan","red","yellow","magenta","black","transparent"];class Rg{constructor(){this.time=null,this.verboseLevel=0}log(e,t){if(this.verboseLevel>=e){const i="function"==typeof t?t():t;hc.log(`${this.time} [${e}] ${i}`)}}}const Dg=function(e){const t=[];for(let i=0;iwg&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=wg)}moveCursor(e){const t=this.pos+e;if(e>1)for(let e=this.pos+1;e=144&&this.backSpace();const t=_g(e);this.pos>=wg?this.logger.log(0,(()=>"Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!")):(this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1))}clearFromPos(e){let t;for(t=e;t"pacData = "+JSON.stringify(e)));let t=e.row-1;if(this.nrRollUpRows&&t"bkgData = "+JSON.stringify(e))),this.backSpace(),this.setPen(e),this.insertChar(32)}setRollUpRows(e){this.nrRollUpRows=e}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,(()=>this.getDisplayText()));const e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),this.logger.log(2,"Rolling up")}getDisplayText(e){e=e||!1;const t=[];let i="",s=-1;for(let i=0;i0&&(i=e?"["+t.join(" | ")+"]":t.join("\n")),i}getTextAndFormat(){return this.rows}}class Mg{constructor(e,t,i){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=e,this.outputFilter=t,this.mode=null,this.verbose=0,this.displayedMemory=new Ig(i),this.nonDisplayedMemory=new Ig(i),this.lastOutputScreen=new Ig(i),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=i}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(e){this.outputFilter=e}setPAC(e){this.writeScreen.setPAC(e)}setBkgData(e){this.writeScreen.setBkgData(e)}setMode(e){e!==this.mode&&(this.mode=e,this.logger.log(2,(()=>"MODE="+e)),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}insertChars(e){for(let t=0;tt+": "+this.writeScreen.getDisplayText(!0))),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(this.logger.log(1,(()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0))),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(e){this.logger.log(2,"RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){const e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,(()=>"DISP: "+this.displayedMemory.getDisplayText()))}this.outputDataUpdate(!0)}ccTO(e){this.logger.log(2,"TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}ccMIDROW(e){const t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{const i=Math.floor(e/2)-16,s=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=s[i]}this.logger.log(2,"MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}outputDataUpdate(e=!1){const t=this.logger.time;null!==t&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,t,this.lastOutputScreen),e&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:t):this.cueStartTime=t,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}class Ug{constructor(e,t,i){this.channels=void 0,this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0;const s=this.logger=new Rg;this.channels=[null,new Mg(e,t,s),new Mg(e+1,i,s)]}getHandler(e){return this.channels[e].getHandler()}setHandler(e,t){this.channels[e].setHandler(t)}addData(e,t){let i,s,r,a=!1;this.logger.time=e;for(let e=0;e ("+Dg([s,r])+")"),i=this.parseCmd(s,r),i||(i=this.parseMidrow(s,r)),i||(i=this.parsePAC(s,r)),i||(i=this.parseBackgroundAttributes(s,r)),!i&&(a=this.parseChars(s,r),a)){const e=this.currentChannel;if(e&&e>0){this.channels[e].insertChars(a)}else this.logger.log(2,"No channel found yet. TEXT-MODE?")}i||a||this.logger.log(2,"Couldn't parse cleaned data "+Dg([s,r])+" orig: "+Dg([t[e],t[e+1]]))}}parseCmd(e,t){const{cmdHistory:i}=this;if(!((20===e||28===e||21===e||29===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=33&&t<=35))return!1;if(Og(e,t,i))return Fg(null,null,i),this.logger.log(3,"Repeated command ("+Dg([e,t])+") is dropped"),!0;const s=20===e||21===e||23===e?1:2,r=this.channels[s];return 20===e||21===e||28===e||29===e?32===t?r.ccRCL():33===t?r.ccBS():34===t?r.ccAOF():35===t?r.ccAON():36===t?r.ccDER():37===t?r.ccRU(2):38===t?r.ccRU(3):39===t?r.ccRU(4):40===t?r.ccFON():41===t?r.ccRDC():42===t?r.ccTR():43===t?r.ccRTD():44===t?r.ccEDM():45===t?r.ccCR():46===t?r.ccENM():47===t&&r.ccEOC():r.ccTO(t-32),Fg(e,t,i),this.currentChannel=s,!0}parseMidrow(e,t){let i=0;if((17===e||25===e)&&t>=32&&t<=47){if(i=17===e?1:2,i!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;const s=this.channels[i];return!!s&&(s.ccMIDROW(t),this.logger.log(3,"MIDROW ("+Dg([e,t])+")"),!0)}return!1}parsePAC(e,t){let i;const s=this.cmdHistory;if(!((e>=17&&e<=23||e>=25&&e<=31)&&t>=64&&t<=127)&&!((16===e||24===e)&&t>=64&&t<=95))return!1;if(Og(e,t,s))return Fg(null,null,s),!0;const r=e<=23?1:2;i=t>=64&&t<=95?1===r?Eg[e]:kg[e]:1===r?Tg[e]:Cg[e];const a=this.channels[r];return!!a&&(a.setPAC(this.interpretPAC(i,t)),Fg(e,t,s),this.currentChannel=r,!0)}interpretPAC(e,t){let i;const s={color:null,italics:!1,indent:null,underline:!1,row:e};return i=t>95?t-96:t-64,s.underline=1==(1&i),i<=13?s.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(i/2)]:i<=15?(s.italics=!0,s.color="white"):s.indent=4*Math.floor((i-16)/2),s}parseChars(e,t){let i,s=null,r=null;if(e>=25?(i=2,r=e-8):(i=1,r=e),r>=17&&r<=19){let e;e=17===r?t+80:18===r?t+112:t+144,this.logger.log(2,"Special char '"+_g(e)+"' in channel "+i),s=[e]}else e>=32&&e<=127&&(s=0===t?[e]:[e,t]);if(s){const i=Dg(s);this.logger.log(3,"Char codes = "+i.join(",")),Fg(e,t,this.cmdHistory)}return s}parseBackgroundAttributes(e,t){if(!((16===e||24===e)&&t>=32&&t<=47)&&!((23===e||31===e)&&t>=45&&t<=47))return!1;let i;const s={};16===e||24===e?(i=Math.floor((t-32)/2),s.background=xg[i],t%2==1&&(s.background=s.background+"_semi")):45===t?s.background="transparent":(s.foreground="black",47===t&&(s.underline=!0));const r=e<=23?1:2;return this.channels[r].setBkgData(s),Fg(e,t,this.cmdHistory),!0}reset(){for(let e=0;ee)&&(this.startTime=e),this.endTime=t,this.screen=i,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}}var jg=function(){if(null!=Cc&&Cc.VTTCue)return self.VTTCue;const e=["","lr","rl"],t=["start","middle","end","left","right"];function i(e,t){if("string"!=typeof t)return!1;if(!Array.isArray(e))return!1;const i=t.toLowerCase();return!!~e.indexOf(i)&&i}function s(e){return i(t,e)}function r(e,...t){let i=1;for(;i100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"positionAlign",r({},l,{get:function(){return v},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");v=t,this.hasBeenReset=!0}})),Object.defineProperty(n,"size",r({},l,{get:function(){return _},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");_=e,this.hasBeenReset=!0}})),Object.defineProperty(n,"align",r({},l,{get:function(){return S},set:function(e){const t=s(e);if(!t)throw new SyntaxError("An invalid or illegal string was specified.");S=t,this.hasBeenReset=!0}})),n.displayState=void 0}return a.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},a}();class zg{decode(e,t){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}function Gg(e){function t(e,t,i,s){return 3600*(0|e)+60*(0|t)+(0|i)+parseFloat(s||0)}const i=e.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return i?parseFloat(i[2])>59?t(i[2],i[3],0,i[4]):t(i[1],i[2],i[3],i[4]):null}class Hg{constructor(){this.values=Object.create(null)}set(e,t){this.get(e)||""===t||(this.values[e]=t)}get(e,t,i){return i?this.has(e)?this.values[e]:t[i]:this.has(e)?this.values[e]:t}has(e){return e in this.values}alt(e,t,i){for(let s=0;s=0&&i<=100)return this.set(e,i),!0}return!1}}function Vg(e,t,i,s){const r=s?e.split(s):[e];for(const e in r){if("string"!=typeof r[e])continue;const s=r[e].split(i);if(2!==s.length)continue;t(s[0],s[1])}}const $g=new jg(0,0,""),Wg="middle"===$g.align?"middle":"center";function Jg(e,t,i){const s=e;function r(){const t=Gg(e);if(null===t)throw new Error("Malformed timestamp: "+s);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function a(){e=e.replace(/^\s+/,"")}if(a(),t.startTime=r(),a(),"--\x3e"!==e.slice(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+s);e=e.slice(3),a(),t.endTime=r(),a(),function(e,t){const s=new Hg;Vg(e,(function(e,t){let r;switch(e){case"region":for(let r=i.length-1;r>=0;r--)if(i[r].id===t){s.set(e,i[r].region);break}break;case"vertical":s.alt(e,t,["rl","lr"]);break;case"line":r=t.split(","),s.integer(e,r[0]),s.percent(e,r[0])&&s.set("snapToLines",!1),s.alt(e,r[0],["auto"]),2===r.length&&s.alt("lineAlign",r[1],["start",Wg,"end"]);break;case"position":r=t.split(","),s.percent(e,r[0]),2===r.length&&s.alt("positionAlign",r[1],["start",Wg,"end","line-left","line-right","auto"]);break;case"size":s.percent(e,t);break;case"align":s.alt(e,t,["start",Wg,"end","left","right"])}}),/:/,/\s/),t.region=s.get("region",null),t.vertical=s.get("vertical","");let r=s.get("line","auto");"auto"===r&&-1===$g.line&&(r=-1),t.line=r,t.lineAlign=s.get("lineAlign","start"),t.snapToLines=s.get("snapToLines",!0),t.size=s.get("size",100),t.align=s.get("align",Wg);let a=s.get("position","auto");"auto"===a&&50===$g.position&&(a="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=a}(e,t)}function qg(e){return e.replace(//gi,"\n")}class Kg{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new zg,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(e){const t=this;function i(){let e=t.buffer,i=0;for(e=qg(e);i>>0).toString()};function Zg(e,t,i){return Xg(e.toString())+Xg(t.toString())+Xg(i)}function ey(e,t,i,s,r,a,o){const n=new Kg,l=eu(new Uint8Array(e)).trim().replace(Yg,"\n").split("\n"),d=[],h=t?function(e,t=1){return Jm(e,9e4,1/t)}(t.baseTime,t.timescale):0;let c,u="00:00.000",p=0,f=0,m=!0;n.oncue=function(e){const a=i[s];let o=i.ccOffset;const n=(p-h)/9e4;if(null!=a&&a.new&&(void 0!==f?o=i.ccOffset=a.start:function(e,t,i){let s=e[t],r=e[s.prevCC];if(!r||!r.new&&s.new)return e.ccOffset=e.presentationOffset=s.start,void(s.new=!1);for(;null!=(a=r)&&a.new;){var a;e.ccOffset+=s.start-r.start,s.new=!1,s=r,r=e[s.prevCC]}e.presentationOffset=i}(i,s,n)),n){if(!t)return void(c=new Error("Missing initPTS for VTT MPEGTS"));o=n-i.presentationOffset}const l=e.endTime-e.startTime,u=Zm(9e4*(e.startTime+o-f),9e4*r)/9e4;e.startTime=Math.max(u,0),e.endTime=Math.max(u+l,0);const m=e.text.trim();e.text=decodeURIComponent(encodeURIComponent(m)),e.id||(e.id=Zg(e.startTime,e.endTime,m)),e.endTime>0&&d.push(e)},n.onparsingerror=function(e){c=e},n.onflush=function(){c?o(c):a(d)},l.forEach((e=>{if(m){if(Qg(e,"X-TIMESTAMP-MAP=")){m=!1,e.slice(16).split(",").forEach((e=>{Qg(e,"LOCAL:")?u=e.slice(6):Qg(e,"MPEGTS:")&&(p=parseInt(e.slice(7)))}));try{f=function(e){let t=parseInt(e.slice(-3));const i=parseInt(e.slice(-6,-4)),s=parseInt(e.slice(-9,-7)),r=e.length>9?parseInt(e.substring(0,e.indexOf(":"))):0;if(!(ec(t)&&ec(i)&&ec(s)&&ec(r)))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);return t+=1e3*i,t+=6e4*s,t+=36e5*r,t}(u)/1e3}catch(e){c=e}return}""===e&&(m=!1)}n.parse(e+"\n")})),n.flush()}const ty="stpp.ttml.im1t",iy=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,sy=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,ry={left:"start",center:"center",right:"end",start:"start",end:"end"};function ay(e,t,i,s){const r=pu(new Uint8Array(e),["mdat"]);if(0===r.length)return void s(new Error("Could not parse IMSC1 mdat"));const a=r.map((e=>eu(e))),o=function(e,t,i=1,s=!1){return Jm(e,t,1/i,s)}(t.baseTime,1,t.timescale);try{a.forEach((e=>i(function(e,t){const i=new DOMParser,s=i.parseFromString(e,"text/xml").getElementsByTagName("tt")[0];if(!s)throw new Error("Invalid ttml");const r={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:0},a=Object.keys(r).reduce(((e,t)=>(e[t]=s.getAttribute(`ttp:${t}`)||r[t],e)),{}),o="preserve"!==s.getAttribute("xml:space"),n=ny(oy(s,"styling","style")),l=ny(oy(s,"layout","region")),d=oy(s,"body","[begin]");return[].map.call(d,(e=>{const i=ly(e,o);if(!i||!e.hasAttribute("begin"))return null;const s=cy(e.getAttribute("begin"),a),r=cy(e.getAttribute("dur"),a);let d=cy(e.getAttribute("end"),a);if(null===s)throw hy(e);if(null===d){if(null===r)throw hy(e);d=s+r}const h=new jg(s-t,d-t,i);h.id=Zg(h.startTime,h.endTime,h.text);const c=function(e,t,i){const s="http://www.w3.org/ns/ttml#styling";let r=null;const a=["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"],o=null!=e&&e.hasAttribute("style")?e.getAttribute("style"):null;o&&i.hasOwnProperty(o)&&(r=i[o]);return a.reduce(((i,a)=>{const o=dy(t,s,a)||dy(e,s,a)||dy(r,s,a);return o&&(i[a]=o),i}),{})}(l[e.getAttribute("region")],n[e.getAttribute("style")],n),{textAlign:u}=c;if(u){const e=ry[u];e&&(h.lineAlign=e),h.align=u}return Zh(h,c),h})).filter((e=>null!==e))}(e,o))))}catch(e){s(e)}}function oy(e,t,i){const s=e.getElementsByTagName(t)[0];return s?[].slice.call(s.querySelectorAll(i)):[]}function ny(e){return e.reduce(((e,t)=>{const i=t.getAttribute("xml:id");return i&&(e[i]=t),e}),{})}function ly(e,t){return[].slice.call(e.childNodes).reduce(((e,i,s)=>{var r;return"br"===i.nodeName&&s?e+"\n":null!=(r=i.childNodes)&&r.length?ly(i,t):t?e+i.textContent.trim().replace(/\s+/g," "):e+i.textContent}),"")}function dy(e,t,i){return e&&e.hasAttributeNS(t,i)?e.getAttributeNS(t,i):null}function hy(e){return new Error(`Could not parse ttml timestamp ${e}`)}function cy(e,t){if(!e)return null;let i=Gg(e);return null===i&&(iy.test(e)?i=function(e,t){const i=iy.exec(e),s=(0|i[4])+(0|i[5])/t.subFrameRate;return 3600*(0|i[1])+60*(0|i[2])+(0|i[3])+s/t.frameRate}(e,t):sy.test(e)&&(i=function(e,t){const i=sy.exec(e),s=Number(i[1]);switch(i[2]){case"h":return 3600*s;case"m":return 60*s;case"ms":return 1e3*s;case"f":return s/t.frameRate;case"t":return s/t.tickRate}return s}(e,t))),i}function uy(e){return e.characteristics&&/transcribes-spoken-dialog/gi.test(e.characteristics)&&/describes-music-and-sound/gi.test(e.characteristics)?"captions":"subtitles"}function py(e,t){return!!e&&e.kind===uy(t)&&mg(t,e)}class fy{constructor(e){this.hls=void 0,this.autoLevelCapping=void 0,this.firstLevel=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=e,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.firstLevel=-1,this.media=null,this.restrictedLevels=[],this.timer=void 0,this.clientRect=null,this.registerListeners()}setStreamController(e){this.streamController=e}destroy(){this.hls&&this.unregisterListener(),this.timer&&this.stopCapping(),this.media=null,this.clientRect=null,this.hls=this.streamController=null}registerListeners(){const{hls:e}=this;e.on(sc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.on(sc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(sc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(sc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(sc.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListener(){const{hls:e}=this;e.off(sc.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),e.off(sc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(sc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(sc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(sc.MEDIA_DETACHING,this.onMediaDetaching,this)}onFpsDropLevelCapping(e,t){const i=this.hls.levels[t.droppedLevel];this.isLevelAllowed(i)&&this.restrictedLevels.push({bitrate:i.bitrate,height:i.height,width:i.width})}onMediaAttaching(e,t){this.media=t.media instanceof HTMLVideoElement?t.media:null,this.clientRect=null,this.timer&&this.hls.levels.length&&this.detectPlayerSize()}onManifestParsed(e,t){const i=this.hls;this.restrictedLevels=[],this.firstLevel=t.firstLevel,i.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onLevelsUpdated(e,t){this.timer&&ec(this.autoLevelCapping)&&this.detectPlayerSize()}onBufferCodecs(e,t){this.hls.config.capLevelToPlayerSize&&t.video&&this.startCapping()}onMediaDetaching(){this.stopCapping()}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0)return void(this.clientRect=null);const e=this.hls.levels;if(e.length){const t=this.hls,i=this.getMaxLevel(e.length-1);i!==this.autoLevelCapping&&hc.log(`Setting autoLevelCapping to ${i}: ${e[i].height}p@${e[i].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),t.autoLevelCapping=i,t.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}getMaxLevel(e){const t=this.hls.levels;if(!t.length)return-1;const i=t.filter(((t,i)=>this.isLevelAllowed(t)&&i<=e));return this.clientRect=null,fy.getMaxLevelByMediaSize(i,this.mediaWidth,this.mediaHeight)}startCapping(){this.timer||(this.autoLevelCapping=Number.POSITIVE_INFINITY,self.clearInterval(this.timer),this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.firstLevel=-1,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(self.clearInterval(this.timer),this.timer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;const e=this.media,t={width:0,height:0};if(e){const i=e.getBoundingClientRect();t.width=i.width,t.height=i.height,t.width||t.height||(t.width=i.right-i.left||e.width||0,t.height=i.bottom-i.top||e.height||0)}return this.clientRect=t,t}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let e=1;if(!this.hls.config.ignoreDevicePixelRatio)try{e=self.devicePixelRatio}catch(e){}return e}isLevelAllowed(e){return!this.restrictedLevels.some((t=>e.bitrate===t.bitrate&&e.width===t.width&&e.height===t.height))}static getMaxLevelByMediaSize(e,t,i){if(null==e||!e.length)return-1;let s=e.length-1;const r=Math.max(t,i);for(let t=0;t=r||i.height>=r)&&(a=i,!(o=e[t+1])||a.width!==o.width||a.height!==o.height)){s=t;break}}var a,o;return s}}const my="[eme]";class gy{constructor(e){this.hls=void 0,this.config=void 0,this.media=null,this.keyFormatPromise=null,this.keySystemAccessPromises={},this._requestLicenseFailureCount=0,this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},this.setMediaKeysQueue=gy.CDMCleanupPromise?[gy.CDMCleanupPromise]:[],this.onMediaEncrypted=this._onMediaEncrypted.bind(this),this.onWaitingForKey=this._onWaitingForKey.bind(this),this.debug=hc.debug.bind(hc,my),this.log=hc.log.bind(hc,my),this.warn=hc.warn.bind(hc,my),this.error=hc.error.bind(hc,my),this.hls=e,this.config=e.config,this.registerListeners()}destroy(){this.unregisterListeners(),this.onMediaDetached();const e=this.config;e.requestMediaKeySystemAccessFunc=null,e.licenseXhrSetup=e.licenseResponseCallback=void 0,e.drmSystems=e.drmSystemOptions={},this.hls=this.onMediaEncrypted=this.onWaitingForKey=this.keyIdToKeySessionPromise=null,this.config=null}registerListeners(){this.hls.on(sc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.on(sc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.on(sc.MANIFEST_LOADED,this.onManifestLoaded,this)}unregisterListeners(){this.hls.off(sc.MEDIA_ATTACHED,this.onMediaAttached,this),this.hls.off(sc.MEDIA_DETACHED,this.onMediaDetached,this),this.hls.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),this.hls.off(sc.MANIFEST_LOADED,this.onManifestLoaded,this)}getLicenseServerUrl(e){const{drmSystems:t,widevineLicenseUrl:i}=this.config,s=t[e];if(s)return s.licenseUrl;if(e===xc.WIDEVINE&&i)return i;throw new Error(`no license server URL configured for key-system "${e}"`)}getServerCertificateUrl(e){const{drmSystems:t}=this.config,i=t[e];if(i)return i.serverCertificateUrl;this.log(`No Server Certificate in config.drmSystems["${e}"]`)}attemptKeySystemAccess(e){const t=this.hls.levels,i=(e,t,i)=>!!e&&i.indexOf(e)===t,s=t.map((e=>e.audioCodec)).filter(i),r=t.map((e=>e.videoCodec)).filter(i);return s.length+r.length===0&&r.push("avc1.42e01e"),new Promise(((t,i)=>{const a=e=>{const o=e.shift();this.getMediaKeysPromise(o,s,r).then((e=>t({keySystem:o,mediaKeys:e}))).catch((t=>{e.length?a(e):i(t instanceof yy?t:new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_NO_ACCESS,error:t,fatal:!0},t.message))}))};a(e)}))}requestMediaKeySystemAccess(e,t){const{requestMediaKeySystemAccessFunc:i}=this.config;if("function"!=typeof i){let e=`Configured requestMediaKeySystemAccess is not a function ${i}`;return null===Fc&&"http:"===self.location.protocol&&(e=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(new Error(e))}return i(e,t)}getMediaKeysPromise(e,t,i){const s=function(e,t,i,s){let r;switch(e){case xc.FAIRPLAY:r=["cenc","sinf"];break;case xc.WIDEVINE:case xc.PLAYREADY:r=["cenc"];break;case xc.CLEARKEY:r=["cenc","keyids"];break;default:throw new Error(`Unknown key-system: ${e}`)}return function(e,t,i,s){return[{initDataTypes:e,persistentState:s.persistentState||"optional",distinctiveIdentifier:s.distinctiveIdentifier||"optional",sessionTypes:s.sessionTypes||[s.sessionType||"temporary"],audioCapabilities:t.map((e=>({contentType:`audio/mp4; codecs="${e}"`,robustness:s.audioRobustness||"",encryptionScheme:s.audioEncryptionScheme||null}))),videoCapabilities:i.map((e=>({contentType:`video/mp4; codecs="${e}"`,robustness:s.videoRobustness||"",encryptionScheme:s.videoEncryptionScheme||null})))}]}(r,t,i,s)}(e,t,i,this.config.drmSystemOptions),r=this.keySystemAccessPromises[e];let a=null==r?void 0:r.keySystemAccess;if(!a){this.log(`Requesting encrypted media "${e}" key-system access with config: ${JSON.stringify(s)}`),a=this.requestMediaKeySystemAccess(e,s);const t=this.keySystemAccessPromises[e]={keySystemAccess:a};return a.catch((t=>{this.log(`Failed to obtain access to key-system "${e}": ${t}`)})),a.then((i=>{this.log(`Access for key-system "${i.keySystem}" obtained`);const s=this.fetchServerCertificate(e);return this.log(`Create media-keys for "${e}"`),t.mediaKeys=i.createMediaKeys().then((t=>(this.log(`Media-keys created for "${e}"`),s.then((i=>i?this.setMediaKeysServerCertificate(t,e,i):t))))),t.mediaKeys.catch((t=>{this.error(`Failed to create media-keys for "${e}"}: ${t}`)})),t.mediaKeys}))}return a.then((()=>r.mediaKeys))}createMediaKeySessionContext({decryptdata:e,keySystem:t,mediaKeys:i}){this.log(`Creating key-system session "${t}" keyId: ${su(e.keyId||[])}`);const s=i.createSession(),r={decryptdata:e,keySystem:t,mediaKeys:i,mediaKeysSession:s,keyStatus:"status-pending"};return this.mediaKeySessions.push(r),r}renewKeySession(e){const t=e.decryptdata;if(t.pssh){const i=this.createMediaKeySessionContext(e),s=this.getKeyIdString(t),r="cenc";this.keyIdToKeySessionPromise[s]=this.generateRequestWithPreferredKeySession(i,r,t.pssh,"expired")}else this.warn("Could not renew expired session. Missing pssh initData.");this.removeSession(e)}getKeyIdString(e){if(!e)throw new Error("Could not read keyId of undefined decryptdata");if(null===e.keyId)throw new Error("keyId is null");return su(e.keyId)}updateKeySession(e,t){var i;const s=e.mediaKeysSession;return this.log(`Updating key-session "${s.sessionId}" for keyID ${su((null==(i=e.decryptdata)?void 0:i.keyId)||[])}\n } (data length: ${t?t.byteLength:t})`),s.update(t)}selectKeySystemFormat(e){const t=Object.keys(e.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${e.sn} ${e.type}: ${e.level}) key formats ${t.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(t)),this.keyFormatPromise}getKeyFormatPromise(e){return new Promise(((t,i)=>{const s=Uc(this.config),r=e.map(Bc).filter((e=>!!e&&-1!==s.indexOf(e)));return this.getKeySystemSelectionPromise(r).then((({keySystem:e})=>{const s=Mc(e);s?t(s):i(new Error(`Unable to find format for key-system "${e}"`))})).catch(i)}))}loadKey(e){const t=e.keyInfo.decryptdata,i=this.getKeyIdString(t),s=`(keyId: ${i} format: "${t.keyFormat}" method: ${t.method} uri: ${t.uri})`;this.log(`Starting session for key ${s}`);let r=this.keyIdToKeySessionPromise[i];return r||(r=this.keyIdToKeySessionPromise[i]=this.getKeySystemForKeyPromise(t).then((({keySystem:i,mediaKeys:r})=>(this.throwIfDestroyed(),this.log(`Handle encrypted media sn: ${e.frag.sn} ${e.frag.type}: ${e.frag.level} using key ${s}`),this.attemptSetMediaKeys(i,r).then((()=>{this.throwIfDestroyed();const e=this.createMediaKeySessionContext({keySystem:i,mediaKeys:r,decryptdata:t});return this.generateRequestWithPreferredKeySession(e,"cenc",t.pssh,"playlist-key")}))))),r.catch((e=>this.handleError(e)))),r}throwIfDestroyed(e="Invalid state"){if(!this.hls)throw new Error("invalid state")}handleError(e){this.hls&&(this.error(e.message),e instanceof yy?this.hls.trigger(sc.ERROR,e.data):this.hls.trigger(sc.ERROR,{type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_NO_KEYS,error:e,fatal:!0}))}getKeySystemForKeyPromise(e){const t=this.getKeyIdString(e),i=this.keyIdToKeySessionPromise[t];if(!i){const t=Bc(e.keyFormat),i=t?[t]:Uc(this.config);return this.attemptKeySystemAccess(i)}return i}getKeySystemSelectionPromise(e){if(e.length||(e=Uc(this.config)),0===e.length)throw new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${JSON.stringify({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(e)}_onMediaEncrypted(e){const{initDataType:t,initData:i}=e;if(this.debug(`"${e.type}" event: init data type: "${t}"`),null===i)return;let s,r;if("sinf"===t&&this.config.drmSystems[xc.FAIRPLAY]){const e=nu(new Uint8Array(i));try{const t=Ec(JSON.parse(e).sinf),i=vu(new Uint8Array(t));if(!i)return;s=i.subarray(8,24),r=xc.FAIRPLAY}catch(e){return void this.warn('Failed to parse sinf "encrypted" event message initData')}}else{const e=function(e){if(!(e instanceof ArrayBuffer)||e.byteLength<32)return null;const t={version:0,systemId:"",kids:null,data:null},i=new DataView(e),s=i.getUint32(0);if(e.byteLength!==s&&s>44)return null;if(1886614376!==i.getUint32(4))return null;if(t.version=i.getUint32(8)>>>24,t.version>1)return null;t.systemId=su(new Uint8Array(e,12,16));const r=i.getUint32(28);if(0===t.version){if(s-32this.generateRequestWithPreferredKeySession(r,t,i,"encrypted-event-key-match")));break}}l||(l=o[a]=this.getKeySystemSelectionPromise([r]).then((({keySystem:e,mediaKeys:r})=>{var o;this.throwIfDestroyed();const n=new Ru("ISO-23001-7",a,null!=(o=Mc(e))?o:"");return n.pssh=new Uint8Array(i),n.keyId=s,this.attemptSetMediaKeys(e,r).then((()=>{this.throwIfDestroyed();const s=this.createMediaKeySessionContext({decryptdata:n,keySystem:e,mediaKeys:r});return this.generateRequestWithPreferredKeySession(s,t,i,"encrypted-event-no-match")}))}))),l.catch((e=>this.handleError(e)))}_onWaitingForKey(e){this.log(`"${e.type}" event`)}attemptSetMediaKeys(e,t){const i=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${e}"`);const s=Promise.all(i).then((()=>{if(!this.media)throw new Error("Attempted to set mediaKeys without media element attached");return this.media.setMediaKeys(t)}));return this.setMediaKeysQueue.push(s),s.then((()=>{this.log(`Media-keys set for "${e}"`),i.push(s),this.setMediaKeysQueue=this.setMediaKeysQueue.filter((e=>-1===i.indexOf(e)))}))}generateRequestWithPreferredKeySession(e,t,i,s){var r,a;const o=null==(r=this.config.drmSystems)||null==(a=r[e.keySystem])?void 0:a.generateRequest;if(o)try{const s=o.call(this.hls,t,i,e);if(!s)throw new Error("Invalid response from configured generateRequest filter");t=s.initDataType,i=e.decryptdata.pssh=s.initData?new Uint8Array(s.initData):null}catch(e){var n;if(this.warn(e.message),null!=(n=this.hls)&&n.config.debug)throw e}if(null===i)return this.log(`Skipping key-session request for "${s}" (no initData)`),Promise.resolve(e);const l=this.getKeyIdString(e.decryptdata);this.log(`Generating key-session request for "${s}": ${l} (init data type: ${t} length: ${i?i.byteLength:null})`);const d=new cg,h=e._onmessage=t=>{const i=e.mediaKeysSession;if(!i)return void d.emit("error",new Error("invalid state"));const{messageType:s,message:r}=t;this.log(`"${s}" message event for session "${i.sessionId}" message size: ${r.byteLength}`),"license-request"===s||"license-renewal"===s?this.renewLicense(e,r).catch((e=>{this.handleError(e),d.emit("error",e)})):"license-release"===s?e.keySystem===xc.FAIRPLAY&&(this.updateKeySession(e,kc("acknowledged")),this.removeSession(e)):this.warn(`unhandled media key message type "${s}"`)},c=e._onkeystatuseschange=t=>{if(!e.mediaKeysSession)return void d.emit("error",new Error("invalid state"));this.onKeyStatusChange(e);const i=e.keyStatus;d.emit("keyStatus",i),"expired"===i&&(this.warn(`${e.keySystem} expired for key ${l}`),this.renewKeySession(e))};e.mediaKeysSession.addEventListener("message",h),e.mediaKeysSession.addEventListener("keystatuseschange",c);const u=new Promise(((e,t)=>{d.on("error",t),d.on("keyStatus",(i=>{i.startsWith("usable")?e():"output-restricted"===i?t(new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,fatal:!1},"HDCP level output restricted")):"internal-error"===i?t(new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_STATUS_INTERNAL_ERROR,fatal:!0},`key status changed to "${i}"`)):"expired"===i?t(new Error("key expired while generating request")):this.warn(`unhandled key status change "${i}"`)}))}));return e.mediaKeysSession.generateRequest(t,i).then((()=>{var t;this.log(`Request generated for key-session "${null==(t=e.mediaKeysSession)?void 0:t.sessionId}" keyId: ${l}`)})).catch((e=>{throw new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_NO_SESSION,error:e,fatal:!1},`Error generating key-session request: ${e}`)})).then((()=>u)).catch((t=>{throw d.removeAllListeners(),this.removeSession(e),t})).then((()=>(d.removeAllListeners(),e)))}onKeyStatusChange(e){e.mediaKeysSession.keyStatuses.forEach(((t,i)=>{this.log(`key status change "${t}" for keyStatuses keyId: ${su("buffer"in i?new Uint8Array(i.buffer,i.byteOffset,i.byteLength):new Uint8Array(i))} session keyId: ${su(new Uint8Array(e.decryptdata.keyId||[]))} uri: ${e.decryptdata.uri}`),e.keyStatus=t}))}fetchServerCertificate(e){const t=this.config,i=new(0,t.loader)(t),s=this.getServerCertificateUrl(e);return s?(this.log(`Fetching server certificate for "${e}"`),new Promise(((r,a)=>{const o={responseType:"arraybuffer",url:s},n=t.certLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{r(e.data)},onError:(t,i,r,n)=>{a(new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:Yh({url:o.url,data:void 0},t)},`"${e}" certificate request failed (${s}). Status: ${t.code} (${t.text})`))},onTimeout:(t,i,r)=>{a(new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:r,response:{url:o.url,data:void 0}},`"${e}" certificate request timed out (${s})`))},onAbort:(e,t,i)=>{a(new Error("aborted"))}};i.load(o,l,d)}))):Promise.resolve()}setMediaKeysServerCertificate(e,t,i){return new Promise(((s,r)=>{e.setServerCertificate(i).then((r=>{this.log(`setServerCertificate ${r?"success":"not supported by CDM"} (${null==i?void 0:i.byteLength}) on "${t}"`),s(e)})).catch((e=>{r(new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:e,fatal:!0},e.message))}))}))}renewLicense(e,t){return this.requestLicense(e,new Uint8Array(t)).then((t=>this.updateKeySession(e,new Uint8Array(t)).catch((e=>{throw new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_SESSION_UPDATE_FAILED,error:e,fatal:!0},e.message)}))))}unpackPlayReadyKeyMessage(e,t){const i=String.fromCharCode.apply(null,new Uint16Array(t.buffer));if(!i.includes("PlayReadyKeyMessage"))return e.setRequestHeader("Content-Type","text/xml; charset=utf-8"),t;const s=(new DOMParser).parseFromString(i,"application/xml"),r=s.querySelectorAll("HttpHeader");if(r.length>0){let t;for(let i=0,s=r.length;i in key message");return kc(atob(l))}setupLicenseXHR(e,t,i,s){const r=this.config.licenseXhrSetup;return r?Promise.resolve().then((()=>{if(!i.decryptdata)throw new Error("Key removed");return r.call(this.hls,e,t,i,s)})).catch((a=>{if(!i.decryptdata)throw a;return e.open("POST",t,!0),r.call(this.hls,e,t,i,s)})).then((i=>{e.readyState||e.open("POST",t,!0);return{xhr:e,licenseChallenge:i||s}})):(e.open("POST",t,!0),Promise.resolve({xhr:e,licenseChallenge:s}))}requestLicense(e,t){const i=this.config.keyLoadPolicy.default;return new Promise(((s,r)=>{const a=this.getLicenseServerUrl(e.keySystem);this.log(`Sending license request to URL: ${a}`);const o=new XMLHttpRequest;o.responseType="arraybuffer",o.onreadystatechange=()=>{if(!this.hls||!e.mediaKeysSession)return r(new Error("invalid state"));if(4===o.readyState)if(200===o.status){this._requestLicenseFailureCount=0;let t=o.response;this.log(`License received ${t instanceof ArrayBuffer?t.byteLength:t}`);const i=this.config.licenseResponseCallback;if(i)try{t=i.call(this.hls,o,a,e)}catch(e){this.error(e)}s(t)}else{const n=i.errorRetry,l=n?n.maxNumRetry:0;if(this._requestLicenseFailureCount++,this._requestLicenseFailureCount>l||o.status>=400&&o.status<500)r(new yy({type:rc.KEY_SYSTEM_ERROR,details:ac.KEY_SYSTEM_LICENSE_REQUEST_FAILED,fatal:!0,networkDetails:o,response:{url:a,data:void 0,code:o.status,text:o.statusText}},`License Request XHR failed (${a}). Status: ${o.status} (${o.statusText})`));else{const i=l-this._requestLicenseFailureCount+1;this.warn(`Retrying license request, ${i} attempts left`),this.requestLicense(e,t).then(s,r)}}},e.licenseXhr&&e.licenseXhr.readyState!==XMLHttpRequest.DONE&&e.licenseXhr.abort(),e.licenseXhr=o,this.setupLicenseXHR(o,a,e,t).then((({xhr:t,licenseChallenge:i})=>{e.keySystem==xc.PLAYREADY&&(i=this.unpackPlayReadyKeyMessage(t,i)),t.send(i)}))}))}onMediaAttached(e,t){if(!this.config.emeEnabled)return;const i=t.media;this.media=i,i.addEventListener("encrypted",this.onMediaEncrypted),i.addEventListener("waitingforkey",this.onWaitingForKey)}onMediaDetached(){const e=this.media,t=this.mediaKeySessions;e&&(e.removeEventListener("encrypted",this.onMediaEncrypted),e.removeEventListener("waitingforkey",this.onWaitingForKey),this.media=null),this._requestLicenseFailureCount=0,this.setMediaKeysQueue=[],this.mediaKeySessions=[],this.keyIdToKeySessionPromise={},Ru.clearKeyUriToKeyIdMap();const i=t.length;gy.CDMCleanupPromise=Promise.all(t.map((e=>this.removeSession(e))).concat(null==e?void 0:e.setMediaKeys(null).catch((e=>{this.log(`Could not clear media keys: ${e}`)})))).then((()=>{i&&(this.log("finished closing key sessions and clearing media keys"),t.length=0)})).catch((e=>{this.log(`Could not close sessions and clear media keys: ${e}`)}))}onManifestLoading(){this.keyFormatPromise=null}onManifestLoaded(e,{sessionKeys:t}){if(t&&this.config.emeEnabled&&!this.keyFormatPromise){const e=t.reduce(((e,t)=>(-1===e.indexOf(t.keyFormat)&&e.push(t.keyFormat),e)),[]);this.log(`Selecting key-system from session-keys ${e.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(e)}}removeSession(e){const{mediaKeysSession:t,licenseXhr:i}=e;if(t){this.log(`Remove licenses and keys and close session ${t.sessionId}`),e._onmessage&&(t.removeEventListener("message",e._onmessage),e._onmessage=void 0),e._onkeystatuseschange&&(t.removeEventListener("keystatuseschange",e._onkeystatuseschange),e._onkeystatuseschange=void 0),i&&i.readyState!==XMLHttpRequest.DONE&&i.abort(),e.mediaKeysSession=e.decryptdata=e.licenseXhr=void 0;const s=this.mediaKeySessions.indexOf(e);return s>-1&&this.mediaKeySessions.splice(s,1),t.remove().catch((e=>{this.log(`Could not remove session: ${e}`)})).then((()=>t.close())).catch((e=>{this.log(`Could not close session: ${e}`)}))}}}gy.CDMCleanupPromise=void 0;class yy extends Error{constructor(e,t){super(t),this.data=void 0,e.error||(e.error=new Error(t)),this.data=e,e.err=e.error}}var Ay,by,vy;!function(e){e.MANIFEST="m",e.AUDIO="a",e.VIDEO="v",e.MUXED="av",e.INIT="i",e.CAPTION="c",e.TIMED_TEXT="tt",e.KEY="k",e.OTHER="o"}(Ay||(Ay={})),function(e){e.DASH="d",e.HLS="h",e.SMOOTH="s",e.OTHER="o"}(by||(by={})),function(e){e.OBJECT="CMCD-Object",e.REQUEST="CMCD-Request",e.SESSION="CMCD-Session",e.STATUS="CMCD-Status"}(vy||(vy={}));const _y={[vy.OBJECT]:["br","d","ot","tb"],[vy.REQUEST]:["bl","dl","mtp","nor","nrr","su"],[vy.SESSION]:["cid","pr","sf","sid","st","v"],[vy.STATUS]:["bs","rtp"]};class Sy{constructor(e,t){this.value=void 0,this.params=void 0,Array.isArray(e)&&(e=e.map((e=>e instanceof Sy?e:new Sy(e)))),this.value=e,this.params=t}}class wy{constructor(e){this.description=void 0,this.description=e}}function Ey(e,t,i,s){return new Error(`failed to ${e} "${r=t,Array.isArray(r)?JSON.stringify(r):r instanceof Map?"Map{}":r instanceof Set?"Set{}":"object"==typeof r?JSON.stringify(r):String(r)}" as ${i}`,{cause:s});var r}const Ty="Bare Item";const ky=/[\x00-\x1f\x7f]+/;function Cy(e,t,i){return Ey("serialize",e,t,i)}function xy(e){if(!1===ArrayBuffer.isView(e))throw Cy(e,"Byte Sequence");return`:${t=e,btoa(String.fromCharCode(...t))}:`;var t}function Ry(e){if(function(e){return e<-999999999999999||99999999999999912)throw Cy(e,"Decimal");const i=t.toString();return i.includes(".")?i:`${i}.0`}function Py(e){const t=(i=e).description||i.toString().slice(7,-1);var i;if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(t))throw Cy(t,"Token");return t}function By(e){switch(typeof e){case"number":if(!ec(e))throw Cy(e,Ty);return Number.isInteger(e)?Ry(e):Ly(e);case"string":return function(e){if(ky.test(e))throw Cy(e,"String");return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}(e);case"symbol":return Py(e);case"boolean":return function(e){if("boolean"!=typeof e)throw Cy(e,"Boolean");return e?"?1":"?0"}(e);case"object":if(e instanceof Date)return function(e){return`@${Ry(e.getTime()/1e3)}`}(e);if(e instanceof Uint8Array)return xy(e);if(e instanceof wy)return Py(e);default:throw Cy(e,Ty)}}function Iy(e){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(e))throw Cy(e,"Key");return e}function My(e){return null==e?"":Object.entries(e).map((([e,t])=>!0===t?`;${Iy(e)}`:`;${Iy(e)}=${By(t)}`)).join("")}function Uy(e){return e instanceof Sy?`${By(e.value)}${My(e.params)}`:By(e)}function Fy(e,t={whitespace:!0}){if("object"!=typeof e)throw Cy(e,"Dict");const i=e instanceof Map?e.entries():Object.entries(e),s=null!=t&&t.whitespace?" ":"";return Array.from(i).map((([e,t])=>{t instanceof Sy==!1&&(t=new Sy(t));let i=Iy(e);var s;return!0===t.value?i+=My(t.params):(i+="=",Array.isArray(t.value)?i+=`(${(s=t).value.map(Uy).join(" ")})${My(s.params)}`:i+=Uy(t)),i})).join(`,${s}`)}const Oy=e=>Math.round(e),Ny=e=>100*Oy(e/100),jy={br:Oy,d:Oy,bl:Ny,dl:Ny,mtp:Ny,nor:(e,t)=>(null!=t&&t.baseUrl&&(e=function(e,t){const i=new URL(e),s=new URL(t);if(i.origin!==s.origin)return e;const r=i.pathname.split("/").slice(1),a=s.pathname.split("/").slice(1,-1);for(;r[0]===a[0];)r.shift(),a.shift();for(;a.length;)a.shift(),r.unshift("..");return r.join("/")}(e,t.baseUrl)),encodeURIComponent(e)),rtp:Ny,tb:Oy};function zy(e,t){const i={};if(null==e||"object"!=typeof e)return i;const s=Object.keys(e).sort(),r=Zh({},jy,null==t?void 0:t.formatters),a=null==t?void 0:t.filter;return s.forEach((s=>{if(null!=a&&a(s))return;let o=e[s];const n=r[s];n&&(o=n(o,t)),"v"===s&&1===o||"pr"==s&&1===o||(e=>"number"==typeof e?ec(e):null!=e&&""!==e&&!1!==e)(o)&&((e=>"ot"===e||"sf"===e||"st"===e)(s)&&"string"==typeof o&&(o=new wy(o)),i[s]=o)})),i}function Gy(e,t={}){return e?function(e,t){return Fy(e,t)}(zy(e,t),Zh({whitespace:!1},t)):""}function Hy(e,t,i){return Zh(e,function(e,t={}){if(!e)return{};const i=Object.entries(e),s=Object.entries(_y).concat(Object.entries((null==t?void 0:t.customHeaderMap)||{})),r=i.reduce(((e,t)=>{var i;const[r,a]=t,o=(null==(i=s.find((e=>e[1].includes(r))))?void 0:i[0])||vy.REQUEST;return null!=e[o]||(e[o]={}),e[o][r]=a,e}),{});return Object.entries(r).reduce(((e,[i,s])=>(e[i]=Gy(s,t),e)),{})}(t,i))}const Vy=/CMCD=[^&#]+/;function $y(e,t,i){const s=function(e,t={}){if(!e)return"";const i=Gy(e,t);return`CMCD=${encodeURIComponent(i)}`}(t,i);if(!s)return e;if(Vy.test(e))return e.replace(Vy,s);const r=e.includes("?")?"&":"?";return`${e}${r}${s}`}function Wy(e,t,i,s){e&&Object.keys(t).forEach((r=>{const a=e.filter((e=>e.groupId===r)).map((e=>{const a=Zh({},e);return a.details=void 0,a.attrs=new pc(a.attrs),a.url=a.attrs.URI=Jy(e.url,e.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",i),a.groupId=a.attrs["GROUP-ID"]=t[r],a.attrs["PATHWAY-ID"]=s,a}));e.push(...a)}))}function Jy(e,t,i,s){const{HOST:r,PARAMS:a,[i]:o}=s;let n;t&&(n=null==o?void 0:o[t],n&&(e=n));const l=new self.URL(e);return r&&!n&&(l.host=r),a&&Object.keys(a).sort().forEach((e=>{e&&l.searchParams.set(e,a[e])})),l.href}const qy=/^age:\s*[\d.]+\s*$/im;class Ky{constructor(e){this.xhrSetup=void 0,this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=void 0,this.config=null,this.callbacks=null,this.context=null,this.loader=null,this.stats=void 0,this.xhrSetup=e&&e.xhrSetup||null,this.stats=new gc,this.retryDelay=0}destroy(){this.callbacks=null,this.abortInternal(),this.loader=null,this.config=null,this.context=null,this.xhrSetup=null,this.stats=null}abortInternal(){const e=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),e&&(e.onreadystatechange=null,e.onprogress=null,4!==e.readyState&&(this.stats.aborted=!0,e.abort()))}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.loader)}load(e,t,i){if(this.stats.loading.start)throw new Error("Loader can only be used once.");this.stats.loading.start=self.performance.now(),this.context=e,this.config=t,this.callbacks=i,this.loadInternal()}loadInternal(){const{config:e,context:t}=this;if(!e||!t)return;const i=this.loader=new self.XMLHttpRequest,s=this.stats;s.loading.first=0,s.loaded=0,s.aborted=!1;const r=this.xhrSetup;r?Promise.resolve().then((()=>{if(!this.stats.aborted)return r(i,t.url)})).catch((e=>(i.open("GET",t.url,!0),r(i,t.url)))).then((()=>{this.stats.aborted||this.openAndSendXhr(i,t,e)})).catch((e=>{this.callbacks.onError({code:i.status,text:e.message},t,i,s)})):this.openAndSendXhr(i,t,e)}openAndSendXhr(e,t,i){e.readyState||e.open("GET",t.url,!0);const s=t.headers,{maxTimeToFirstByteMs:r,maxLoadTimeMs:a}=i.loadPolicy;if(s)for(const t in s)e.setRequestHeader(t,s[t]);t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,self.clearTimeout(this.requestTimeout),i.timeout=r&&ec(r)?r:a,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),i.timeout),e.send()}readystatechange(){const{context:e,loader:t,stats:i}=this;if(!e||!t)return;const s=t.readyState,r=this.config;if(!i.aborted&&s>=2&&(0===i.loading.first&&(i.loading.first=Math.max(self.performance.now(),i.loading.start),r.timeout!==r.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),r.timeout=r.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),r.loadPolicy.maxLoadTimeMs-(i.loading.first-i.loading.start)))),4===s)){self.clearTimeout(this.requestTimeout),t.onreadystatechange=null,t.onprogress=null;const s=t.status,a="text"!==t.responseType;if(s>=200&&s<300&&(a&&t.response||null!==t.responseText)){i.loading.end=Math.max(self.performance.now(),i.loading.first);const r=a?t.response:t.responseText,o="arraybuffer"===t.responseType?r.byteLength:r.length;if(i.loaded=i.total=o,i.bwEstimate=8e3*i.total/(i.loading.end-i.loading.first),!this.callbacks)return;const n=this.callbacks.onProgress;if(n&&n(i,e,r,t),!this.callbacks)return;const l={url:t.responseURL,data:r,code:s};this.callbacks.onSuccess(l,i,e,t)}else{const a=r.loadPolicy.errorRetry;Yp(a,i.retry,!1,{url:e.url,data:void 0,code:s})?this.retry(a):(hc.error(`${s} while loading ${e.url}`),this.callbacks.onError({code:s,text:t.statusText},e,t,i))}}}loadtimeout(){var e;const t=null==(e=this.config)?void 0:e.loadPolicy.timeoutRetry;if(Yp(t,this.stats.retry,!0))this.retry(t);else{var i;hc.warn(`timeout while loading ${null==(i=this.context)?void 0:i.url}`);const e=this.callbacks;e&&(this.abortInternal(),e.onTimeout(this.stats,this.context,this.loader))}}retry(e){const{context:t,stats:i}=this;this.retryDelay=qp(e,i.retry),i.retry++,hc.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==t?void 0:t.url}, retrying ${i.retry}/${e.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.loader=null,self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(this.loadInternal.bind(this),this.retryDelay)}loadprogress(e){const t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total)}getCacheAge(){let e=null;if(this.loader&&qy.test(this.loader.getAllResponseHeaders())){const t=this.loader.getResponseHeader("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.loader&&new RegExp(`^${e}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(e):null}}const Yy=/(\d+)-(\d+)\/(\d+)/;class Qy{constructor(e){this.fetchSetup=void 0,this.requestTimeout=void 0,this.request=null,this.response=null,this.controller=void 0,this.context=null,this.config=null,this.callbacks=null,this.stats=void 0,this.loader=null,this.fetchSetup=e.fetchSetup||Xy,this.controller=new self.AbortController,this.stats=new gc}destroy(){this.loader=this.callbacks=this.context=this.config=this.request=null,this.abortInternal(),this.response=null,this.fetchSetup=this.controller=this.stats=null}abortInternal(){this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}abort(){var e;this.abortInternal(),null!=(e=this.callbacks)&&e.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.response)}load(e,t,i){const s=this.stats;if(s.loading.start)throw new Error("Loader can only be used once.");s.loading.start=self.performance.now();const r=function(e,t){const i={method:"GET",mode:"cors",credentials:"same-origin",signal:t,headers:new self.Headers(Zh({},e.headers))};e.rangeEnd&&i.headers.set("Range","bytes="+e.rangeStart+"-"+String(e.rangeEnd-1));return i}(e,this.controller.signal),a=i.onProgress,o="arraybuffer"===e.responseType,n=o?"byteLength":"length",{maxTimeToFirstByteMs:l,maxLoadTimeMs:d}=t.loadPolicy;this.context=e,this.config=t,this.callbacks=i,this.request=this.fetchSetup(e,r),self.clearTimeout(this.requestTimeout),t.timeout=l&&ec(l)?l:d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),t.timeout),self.fetch(this.request).then((r=>{this.response=this.loader=r;const n=Math.max(self.performance.now(),s.loading.start);if(self.clearTimeout(this.requestTimeout),t.timeout=d,this.requestTimeout=self.setTimeout((()=>{this.abortInternal(),i.onTimeout(s,e,this.response)}),d-(n-s.loading.start)),!r.ok){const{status:e,statusText:t}=r;throw new Zy(t||"fetch, bad network response",e,r)}return s.loading.first=n,s.total=function(e){const t=e.get("Content-Range");if(t){const e=function(e){const t=Yy.exec(e);if(t)return parseInt(t[2])-parseInt(t[1])+1}(t);if(ec(e))return e}const i=e.get("Content-Length");if(i)return parseInt(i)}(r.headers)||s.total,a&&ec(t.highWaterMark)?this.loadProgressively(r,s,e,t.highWaterMark,a):o?r.arrayBuffer():"json"===e.responseType?r.json():r.text()})).then((r=>{const o=this.response;if(!o)throw new Error("loader destroyed");self.clearTimeout(this.requestTimeout),s.loading.end=Math.max(self.performance.now(),s.loading.first);const l=r[n];l&&(s.loaded=s.total=l);const d={url:o.url,data:r,code:o.status};a&&!ec(t.highWaterMark)&&a(s,e,r,o),i.onSuccess(d,s,e,o)})).catch((t=>{if(self.clearTimeout(this.requestTimeout),s.aborted)return;const r=t&&t.code||0,a=t?t.message:null;i.onError({code:r,text:a},e,t?t.details:null,s)}))}getCacheAge(){let e=null;if(this.response){const t=this.response.headers.get("age");e=t?parseFloat(t):null}return e}getResponseHeader(e){return this.response?this.response.headers.get(e):null}loadProgressively(e,t,i,s=0,r){const a=new nm,o=e.body.getReader(),n=()=>o.read().then((o=>{if(o.done)return a.dataLength&&r(t,i,a.flush(),e),Promise.resolve(new ArrayBuffer(0));const l=o.value,d=l.length;return t.loaded+=d,d=s&&r(t,i,a.flush(),e)):r(t,i,l,e),n()})).catch((()=>Promise.reject()));return n()}}function Xy(e,t){return new self.Request(e.url,t)}class Zy extends Error{constructor(e,t,i){super(e),this.code=void 0,this.details=void 0,this.code=t,this.details=i}}const eA=/\s/,tA={newCue(e,t,i,s){const r=[];let a,o,n,l,d;const h=self.VTTCue||self.TextTrackCue;for(let u=0;u=16?l--:l++;const s=qg(d.trim()),p=Zg(t,i,s);null!=e&&null!=(c=e.cues)&&c.getCueById(p)||(o=new h(t,i,s),o.id=p,o.line=u+1,o.align="left",o.position=10+Math.min(80,10*Math.floor(8*l/32)),r.push(o))}return e&&r.length&&(r.sort(((e,t)=>"auto"===e.line||"auto"===t.line?0:e.line>8&&t.line>8?t.line-e.line:e.line-t.line)),r.forEach((t=>yp(e,t)))),r}},iA=Yh(Yh({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,preferManagedMediaSource:!0,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,maxBufferSize:6e7,maxBufferHole:.1,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftwareAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:Ky,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,abrController:class{constructor(e){this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.codecTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.bwEstimator=void 0,this._abandonRulesCheck=()=>{const{fragCurrent:e,partCurrent:t,hls:i}=this,{autoLevelEnabled:s,media:r}=i;if(!e||!r)return;const a=performance.now(),o=t?t.stats:e.stats,n=t?t.duration:e.duration,l=a-o.loading.start,d=i.minAutoLevel;if(o.aborted||o.loaded&&o.loaded===o.total||e.level<=d)return this.clearTimer(),void(this._nextAutoLevel=-1);if(!s||r.paused||!r.playbackRate||!r.readyState)return;const h=i.mainForwardBufferInfo;if(null===h)return;const c=this.bwEstimator.getEstimateTTFB(),u=Math.abs(r.playbackRate);if(l<=Math.max(c,n/(2*u)*1e3))return;const p=h.len/u,f=o.loading.first?o.loading.first-o.loading.start:-1,m=o.loaded&&f>-1,g=this.getBwEstimate(),y=i.levels,A=y[e.level],b=o.total||Math.max(o.loaded,Math.round(n*A.averageBitrate/8));let v=m?l-f:l;v<1&&m&&(v=Math.min(l,8*o.loaded/g));const _=m?1e3*o.loaded/v:0,S=_?(b-o.loaded)/_:8*b/g+c/1e3;if(S<=p)return;const w=_?8*_:g;let E,T=Number.POSITIVE_INFINITY;for(E=e.level-1;E>d;E--){const e=y[E].maxBitrate;if(T=this.getTimeToLoadFrag(c/1e3,w,n*e,!y[E].details),T=S)return;if(T>10*n)return;i.nextLoadLevel=i.nextAutoLevel=E,m?this.bwEstimator.sample(l-Math.min(c,f),o.loaded):this.bwEstimator.sampleTTFB(l);const k=y[E].maxBitrate;this.getBwEstimate()*this.hls.config.abrBandWidthUpFactor>k&&this.resetEstimator(k),this.clearTimer(),hc.warn(`[abr] Fragment ${e.sn}${t?" part "+t.index:""} of level ${e.level} is loading too slowly;\n Time to underbuffer: ${p.toFixed(3)} s\n Estimated load time for current fragment: ${S.toFixed(3)} s\n Estimated load time for down switch fragment: ${T.toFixed(3)} s\n TTFB estimate: ${0|f} ms\n Current BW estimate: ${ec(g)?0|g:"Unknown"} bps\n New BW estimate: ${0|this.getBwEstimate()} bps\n Switching to level ${E} @ ${0|k} bps`),i.trigger(sc.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e,part:t,stats:o})},this.hls=e,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(e){e&&(hc.log(`setting initial bwe to ${e}`),this.hls.config.abrEwmaDefaultEstimate=e),this.firstSelection=-1,this.bwEstimator=this.initEstimator()}initEstimator(){const e=this.hls.config;return new cf(e.abrEwmaSlowVoD,e.abrEwmaFastVoD,e.abrEwmaDefaultEstimate)}registerListeners(){const{hls:e}=this;e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.FRAG_LOADING,this.onFragLoading,this),e.on(sc.FRAG_LOADED,this.onFragLoaded,this),e.on(sc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(sc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(sc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(sc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(sc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.on(sc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e&&(e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.FRAG_LOADING,this.onFragLoading,this),e.off(sc.FRAG_LOADED,this.onFragLoaded,this),e.off(sc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(sc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(sc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(sc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(sc.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),e.off(sc.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=null,this.fragCurrent=this.partCurrent=null}onManifestLoading(e,t){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.lastLevelLoadSec=0,this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(e,t){const i=t.frag;if(!this.ignoreFragment(i)){var s;if(!i.bitrateTest)this.fragCurrent=i,this.partCurrent=null!=(s=t.part)?s:null;this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(e,t){this.clearTimer()}onError(e,t){if(!t.fatal)switch(t.details){case ac.BUFFER_ADD_CODEC_ERROR:case ac.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case ac.FRAG_LOAD_TIMEOUT:{const e=t.frag,{fragCurrent:i,partCurrent:s}=this;if(e&&i&&e.sn===i.sn&&e.level===i.level){const t=performance.now(),i=s?s.stats:e.stats,r=t-i.loading.start,a=i.loading.first?i.loading.first-i.loading.start:-1;if(i.loaded&&a>-1){const e=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(r-Math.min(e,a),i.loaded)}else this.bwEstimator.sampleTTFB(r)}break}}}getTimeToLoadFrag(e,t,i,s){return e+i/t+(s?this.lastLevelLoadSec:0)}onLevelLoaded(e,t){const i=this.hls.config,{loading:s}=t.stats,r=s.end-s.start;ec(r)&&(this.lastLevelLoadSec=r/1e3),t.details.live?this.bwEstimator.update(i.abrEwmaSlowLive,i.abrEwmaFastLive):this.bwEstimator.update(i.abrEwmaSlowVoD,i.abrEwmaFastVoD)}onFragLoaded(e,{frag:t,part:i}){const s=i?i.stats:t.stats;if(t.type===hp&&this.bwEstimator.sampleTTFB(s.loading.first-s.loading.start),!this.ignoreFragment(t)){if(this.clearTimer(),t.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,this.hls.config.abrMaxWithRealBitrate){const e=i?i.duration:t.duration,r=this.hls.levels[t.level],a=(r.loaded?r.loaded.bytes:0)+s.loaded,o=(r.loaded?r.loaded.duration:0)+e;r.loaded={bytes:a,duration:o},r.realBitrate=Math.round(8*a/o)}if(t.bitrateTest){const e={stats:s,frag:t,part:i,id:t.type};this.onFragBuffered(sc.FRAG_BUFFERED,e),t.bitrateTest=!1}else this.lastLoadedFragLevel=t.level}}onFragBuffered(e,t){const{frag:i,part:s}=t,r=null!=s&&s.stats.loaded?s.stats:i.stats;if(r.aborted)return;if(this.ignoreFragment(i))return;const a=r.parsing.end-r.loading.start-Math.min(r.loading.first-r.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(a,r.loaded),r.bwEstimate=this.getBwEstimate(),i.bitrateTest?this.bitrateTestDelay=a/1e3:this.bitrateTestDelay=0}ignoreFragment(e){return e.type!==hp||"initSegment"===e.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){const{maxAutoLevel:e,minAutoLevel:t}=this.hls,i=this.getBwEstimate(),s=this.hls.config.maxStarvationDelay,r=this.findBestLevel(i,t,e,0,s,1,1);if(r>-1)return r;const a=this.hls.firstLevel,o=Math.min(Math.max(a,t),e);return hc.warn(`[abr] Could not find best starting auto level. Defaulting to first in playlist ${a} clamped to ${o}`),o}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){const e=this.forcedAutoLevel,t=this.bwEstimator.canEstimate(),i=this.lastLoadedFragLevel>-1;if(!(-1===e||t&&i&&this.nextAutoLevelKey!==this.getAutoLevelKey()))return e;const s=t&&i?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==e){const t=this.hls.levels;if(t.length>Math.max(e,s)&&t[e].loadError<=t[s].loadError)return e}return this._nextAutoLevel=s,this.nextAutoLevelKey=this.getAutoLevelKey(),s}getAutoLevelKey(){return`${this.getBwEstimate()}_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){const{fragCurrent:e,partCurrent:t,hls:i}=this,{maxAutoLevel:s,config:r,minAutoLevel:a}=i,o=t?t.duration:e?e.duration:0,n=this.getBwEstimate(),l=this.getStarvationDelay();let d=r.abrBandWidthFactor,h=r.abrBandWidthUpFactor;if(l){const e=this.findBestLevel(n,a,s,l,0,d,h);if(e>=0)return e}let c=o?Math.min(o,r.maxStarvationDelay):r.maxStarvationDelay;if(!l){const e=this.bitrateTestDelay;if(e){c=(o?Math.min(o,r.maxLoadingDelay):r.maxLoadingDelay)-e,hc.info(`[abr] bitrate test took ${Math.round(1e3*e)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),d=h=1}}const u=this.findBestLevel(n,a,s,l,c,d,h);if(hc.info(`[abr] ${l?"rebuffering expected":"buffer is empty"}, optimal quality level ${u}`),u>-1)return u;const p=i.levels[a],f=i.levels[i.loadLevel];return(null==p?void 0:p.bitrate)<(null==f?void 0:f.bitrate)?a:i.loadLevel}getStarvationDelay(){const e=this.hls,t=e.media;if(!t)return 1/0;const i=t&&0!==t.playbackRate?Math.abs(t.playbackRate):1,s=e.mainForwardBufferInfo;return(s?s.len:0)/i}getBwEstimate(){return this.bwEstimator.canEstimate()?this.bwEstimator.getEstimate():this.hls.config.abrEwmaDefaultEstimate}findBestLevel(e,t,i,s,r,a,o){var n;const l=s+r,d=this.lastLoadedFragLevel,h=-1===d?this.hls.firstLevel:d,{fragCurrent:c,partCurrent:u}=this,{levels:p,allAudioTracks:f,loadLevel:m,config:g}=this.hls;if(1===p.length)return 0;const y=p[h],A=!(null==y||null==(n=y.details)||!n.live),b=-1===m||-1===d;let v,_="SDR",S=(null==y?void 0:y.frameRate)||0;const{audioPreference:w,videoPreference:E}=g,T=this.audioTracksByGroup||(this.audioTracksByGroup=function(e){return e.reduce(((e,t)=>{let i=e.groups[t.groupId];i||(i=e.groups[t.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),i.tracks.push(t);const s=t.channels||"2";return i.channels[s]=(i.channels[s]||0)+1,i.hasDefault=i.hasDefault||t.default,i.hasAutoSelect=i.hasAutoSelect||t.autoselect,i.hasDefault&&(e.hasDefaultAudio=!0),i.hasAutoSelect&&(e.hasAutoSelectAudio=!0),e}),{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}(f));if(b){if(-1!==this.firstSelection)return this.firstSelection;const s=this.codecTiers||(this.codecTiers=function(e,t,i,s){return e.slice(i,s+1).reduce(((e,i)=>{if(!i.codecSet)return e;const s=i.audioGroups;let r=e[i.codecSet];r||(e[i.codecSet]=r={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!s,fragmentError:0}),r.minBitrate=Math.min(r.minBitrate,i.bitrate);const a=Math.min(i.height,i.width);return r.minHeight=Math.min(r.minHeight,a),r.minFramerate=Math.min(r.minFramerate,i.frameRate),r.maxScore=Math.max(r.maxScore,i.score),r.fragmentError+=i.fragmentError,r.videoRanges[i.videoRange]=(r.videoRanges[i.videoRange]||0)+1,s&&s.forEach((e=>{if(!e)return;const i=t.groups[e];r.hasDefaultAudio=r.hasDefaultAudio||t.hasDefaultAudio?i.hasDefault:i.hasAutoSelect||!t.hasDefaultAudio&&!t.hasAutoSelectAudio,Object.keys(i.channels).forEach((e=>{r.channels[e]=(r.channels[e]||0)+i.channels[e]}))})),e}),{})}(p,T,t,i)),r=function(e,t,i,s,r){const a=Object.keys(e),o=null==s?void 0:s.channels,n=null==s?void 0:s.audioCodec,l=o&&2===parseInt(o);let d=!0,h=!1,c=1/0,u=1/0,p=1/0,f=0,m=[];const{preferHDR:g,allowedVideoRanges:y}=gf(t,r);for(let t=a.length;t--;){const i=e[a[t]];d=i.channels[2]>0,c=Math.min(c,i.minHeight),u=Math.min(u,i.minFramerate),p=Math.min(p,i.minBitrate);const s=y.filter((e=>i.videoRanges[e]>0));s.length>0&&(h=!0,m=s)}c=ec(c)?c:0,u=ec(u)?u:0;const A=Math.max(1080,c),b=Math.max(30,u);p=ec(p)?p:i,i=Math.max(p,i),h||(t=void 0,m=[]);const v=a.reduce(((t,s)=>{const r=e[s];if(s===t)return t;if(r.minBitrate>i)return yf(s,`min bitrate of ${r.minBitrate} > current estimate of ${i}`),t;if(!r.hasDefaultAudio)return yf(s,"no renditions with default or auto-select sound found"),t;if(n&&s.indexOf(n.substring(0,4))%5!=0)return yf(s,`audio codec preference "${n}" not found`),t;if(o&&!l){if(!r.channels[o])return yf(s,`no renditions with ${o} channel sound found (channels options: ${Object.keys(r.channels)})`),t}else if((!n||l)&&d&&0===r.channels[2])return yf(s,"no renditions with stereo sound found"),t;return r.minHeight>A?(yf(s,`min resolution of ${r.minHeight} > maximum of ${A}`),t):r.minFramerate>b?(yf(s,`min framerate of ${r.minFramerate} > maximum of ${b}`),t):m.some((e=>r.videoRanges[e]>0))?r.maxScore=Gu(t)||r.fragmentError>e[t].fragmentError)?t:(f=r.maxScore,s):(yf(s,`no variants with VIDEO-RANGE of ${JSON.stringify(m)} found`),t)}),void 0);return{codecSet:v,videoRanges:m,preferHDR:g,minFramerate:u,minBitrate:p}}(s,_,e,w,E),{codecSet:a,videoRanges:o,minFramerate:n,minBitrate:l,preferHDR:d}=r;v=a,_=d?o[o.length-1]:o[0],S=n,e=Math.max(e,l),hc.log(`[abr] picked start tier ${JSON.stringify(r)}`)}else v=null==y?void 0:y.codecSet,_=null==y?void 0:y.videoRange;const k=u?u.duration:c?c.duration:0,C=this.bwEstimator.getEstimateTTFB()/1e3,x=[];for(let n=i;n>=t;n--){var R;const t=p[n],c=n>h;if(!t)continue;if(g.useMediaCapabilities&&!t.supportedResult&&!t.supportedPromise){const i=navigator.mediaCapabilities;"function"==typeof(null==i?void 0:i.decodingInfo)&&ff(t,T,_,S,e,w)?(t.supportedPromise=mf(t,T,i),t.supportedPromise.then((e=>{if(!this.hls)return;t.supportedResult=e;const i=this.hls.levels,s=i.indexOf(t);e.error?hc.warn(`[abr] MediaCapabilities decodingInfo error: "${e.error}" for level ${s} ${JSON.stringify(e)}`):e.supported||(hc.warn(`[abr] Unsupported MediaCapabilities decodingInfo result for level ${s} ${JSON.stringify(e)}`),s>-1&&i.length>1&&(hc.log(`[abr] Removing unsupported level ${s}`),this.hls.removeLevel(s)))}))):t.supportedResult=uf}if(v&&t.codecSet!==v||_&&t.videoRange!==_||c&&S>t.frameRate||!c&&S>0&&S=2*k&&0===r?p[n].averageBitrate:p[n].maxBitrate,P=this.getTimeToLoadFrag(C,D,L*E,void 0===f);if(D>=L&&(n===d||0===t.loadError&&0===t.fragmentError)&&(P<=C||!ec(P)||A&&!this.bitrateTestDelay||P${n} adjustedbw(${Math.round(D)})-bitrate=${Math.round(D-L)} ttfb:${C.toFixed(1)} avgDuration:${E.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${P.toFixed(1)} firstSelection:${b} codecSet:${v} videoRange:${_} hls.loadLevel:${m}`)),b&&(this.firstSelection=n),n}}return-1}set nextAutoLevel(e){const{maxAutoLevel:t,minAutoLevel:i}=this.hls,s=Math.min(Math.max(e,i),t);this._nextAutoLevel!==s&&(this.nextAutoLevelKey="",this._nextAutoLevel=s)}},bufferController:class{constructor(e){this.details=null,this._objectUrl=null,this.operationQueue=void 0,this.listeners=void 0,this.hls=void 0,this.bufferCodecEventsExpected=0,this._bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.appendSource=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.tracks={},this.pendingTracks={},this.sourceBuffer=void 0,this.log=void 0,this.warn=void 0,this.error=void 0,this._onEndStreaming=e=>{this.hls&&this.hls.pauseBuffering()},this._onStartStreaming=e=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=()=>{const{media:e,mediaSource:t}=this;this.log("Media source opened"),e&&(e.removeEventListener("emptied",this._onMediaEmptied),this.updateMediaElementDuration(),this.hls.trigger(sc.MEDIA_ATTACHED,{media:e,mediaSource:t})),t&&t.removeEventListener("sourceopen",this._onMediaSourceOpen),this.checkPendingTracks()},this._onMediaSourceClose=()=>{this.log("Media source closed")},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{const{mediaSrc:e,_objectUrl:t}=this;e!==t&&hc.error(`Media element src was set while attaching MediaSource (${t} > ${e})`)},this.hls=e;const t="[buffer-controller]";this.appendSource=e.config.preferManagedMediaSource&&"undefined"!=typeof self&&self.ManagedMediaSource,this.log=hc.log.bind(hc,t),this.warn=hc.warn.bind(hc,t),this.error=hc.error.bind(hc,t),this._initSourceBuffer(),this.registerListeners()}hasSourceTypes(){return this.getSourceBufferTypes().length>0||Object.keys(this.pendingTracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.hls=null}registerListeners(){const{hls:e}=this;e.on(sc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(sc.BUFFER_RESET,this.onBufferReset,this),e.on(sc.BUFFER_APPENDING,this.onBufferAppending,this),e.on(sc.BUFFER_CODECS,this.onBufferCodecs,this),e.on(sc.BUFFER_EOS,this.onBufferEos,this),e.on(sc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(sc.LEVEL_UPDATED,this.onLevelUpdated,this),e.on(sc.FRAG_PARSED,this.onFragParsed,this),e.on(sc.FRAG_CHANGED,this.onFragChanged,this)}unregisterListeners(){const{hls:e}=this;e.off(sc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(sc.BUFFER_RESET,this.onBufferReset,this),e.off(sc.BUFFER_APPENDING,this.onBufferAppending,this),e.off(sc.BUFFER_CODECS,this.onBufferCodecs,this),e.off(sc.BUFFER_EOS,this.onBufferEos,this),e.off(sc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(sc.LEVEL_UPDATED,this.onLevelUpdated,this),e.off(sc.FRAG_PARSED,this.onFragParsed,this),e.off(sc.FRAG_CHANGED,this.onFragChanged,this)}_initSourceBuffer(){this.sourceBuffer={},this.operationQueue=new yg(this.sourceBuffer),this.listeners={audio:[],video:[],audiovideo:[]},this.appendErrors={audio:0,video:0,audiovideo:0},this.lastMpegAudioChunk=null}onManifestLoading(){this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=0,this.details=null}onManifestParsed(e,t){let i=2;(t.audio&&!t.video||!t.altAudio)&&(i=1),this.bufferCodecEventsExpected=this._bufferCodecEventsTotal=i,this.log(`${this.bufferCodecEventsExpected} bufferCodec event(s) expected`)}onMediaAttaching(e,t){const i=this.media=t.media,s=Uu(this.appendSource);if(i&&s){var r;const e=this.mediaSource=new s;this.log(`created media source: ${null==(r=e.constructor)?void 0:r.name}`),e.addEventListener("sourceopen",this._onMediaSourceOpen),e.addEventListener("sourceended",this._onMediaSourceEnded),e.addEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(e.addEventListener("startstreaming",this._onStartStreaming),e.addEventListener("endstreaming",this._onEndStreaming));const t=this._objectUrl=self.URL.createObjectURL(e);if(this.appendSource)try{i.removeAttribute("src");const s=self.ManagedMediaSource;i.disableRemotePlayback=i.disableRemotePlayback||s&&e instanceof s,bg(i),function(e,t){const i=self.document.createElement("source");i.type="video/mp4",i.src=t,e.appendChild(i)}(i,t),i.load()}catch(e){i.src=t}else i.src=t;i.addEventListener("emptied",this._onMediaEmptied)}}onMediaDetaching(){const{media:e,mediaSource:t,_objectUrl:i}=this;if(t){if(this.log("media source detaching"),"open"===t.readyState)try{t.endOfStream()}catch(e){this.warn(`onMediaDetaching: ${e.message} while calling endOfStream`)}this.onBufferReset(),t.removeEventListener("sourceopen",this._onMediaSourceOpen),t.removeEventListener("sourceended",this._onMediaSourceEnded),t.removeEventListener("sourceclose",this._onMediaSourceClose),this.appendSource&&(t.removeEventListener("startstreaming",this._onStartStreaming),t.removeEventListener("endstreaming",this._onEndStreaming)),e&&(e.removeEventListener("emptied",this._onMediaEmptied),i&&self.URL.revokeObjectURL(i),this.mediaSrc===i?(e.removeAttribute("src"),this.appendSource&&bg(e),e.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.mediaSource=null,this.media=null,this._objectUrl=null,this.bufferCodecEventsExpected=this._bufferCodecEventsTotal,this.pendingTracks={},this.tracks={}}this.hls.trigger(sc.MEDIA_DETACHED,void 0)}onBufferReset(){this.getSourceBufferTypes().forEach((e=>{this.resetBuffer(e)})),this._initSourceBuffer()}resetBuffer(e){const t=this.sourceBuffer[e];try{var i;if(t)this.removeBufferListeners(e),this.sourceBuffer[e]=void 0,null!=(i=this.mediaSource)&&i.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(t)}catch(t){this.warn(`onBufferReset ${e}`,t)}}onBufferCodecs(e,t){const i=this.getSourceBufferTypes().length,s=Object.keys(t);if(s.forEach((e=>{if(i){const i=this.tracks[e];if(i&&"function"==typeof i.buffer.changeType){var s;const{id:r,codec:a,levelCodec:o,container:n,metadata:l}=t[e],d=Wu(i.codec,i.levelCodec),h=null==d?void 0:d.replace(Ag,"$1");let c=Wu(a,o);const u=null==(s=c)?void 0:s.replace(Ag,"$1");if(c&&h!==u){"audio"===e.slice(0,5)&&(c=$u(c,this.appendSource));const t=`${n};codecs=${c}`;this.appendChangeType(e,t),this.log(`switching codec ${d} to ${c}`),this.tracks[e]={buffer:i.buffer,codec:a,container:n,levelCodec:o,metadata:l,id:r}}}}else this.pendingTracks[e]=t[e]})),i)return;const r=Math.max(this.bufferCodecEventsExpected-1,0);this.bufferCodecEventsExpected!==r&&(this.log(`${r} bufferCodec event(s) expected ${s.join(",")}`),this.bufferCodecEventsExpected=r),this.mediaSource&&"open"===this.mediaSource.readyState&&this.checkPendingTracks()}appendChangeType(e,t){const{operationQueue:i}=this,s={execute:()=>{const s=this.sourceBuffer[e];s&&(this.log(`changing ${e} sourceBuffer type to ${t}`),s.changeType(t)),i.shiftAndExecuteNext(e)},onStart:()=>{},onComplete:()=>{},onError:t=>{this.warn(`Failed to change ${e} SourceBuffer type`,t)}};i.append(s,e,!!this.pendingTracks[e])}onBufferAppending(e,t){const{hls:i,operationQueue:s,tracks:r}=this,{data:a,type:o,frag:n,part:l,chunkMeta:d}=t,h=d.buffering[o],c=self.performance.now();h.start=c;const u=n.stats.buffering,p=l?l.stats.buffering:null;0===u.start&&(u.start=c),p&&0===p.start&&(p.start=c);const f=r.audio;let m=!1;"audio"===o&&"audio/mpeg"===(null==f?void 0:f.container)&&(m=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);const g=n.start,y={execute:()=>{if(h.executeStart=self.performance.now(),m){const e=this.sourceBuffer[o];if(e){const t=g-e.timestampOffset;Math.abs(t)>=.1&&(this.log(`Updating audio SourceBuffer timestampOffset to ${g} (delta: ${t}) sn: ${n.sn})`),e.timestampOffset=g)}}this.appendExecutor(a,o)},onStart:()=>{},onComplete:()=>{const e=self.performance.now();h.executeEnd=h.end=e,0===u.first&&(u.first=e),p&&0===p.first&&(p.first=e);const{sourceBuffer:t}=this,i={};for(const e in t)i[e]=Lf.getBuffered(t[e]);this.appendErrors[o]=0,"audio"===o||"video"===o?this.appendErrors.audiovideo=0:(this.appendErrors.audio=0,this.appendErrors.video=0),this.hls.trigger(sc.BUFFER_APPENDED,{type:o,frag:n,part:l,chunkMeta:d,parent:n.type,timeRanges:i})},onError:e=>{const t={type:rc.MEDIA_ERROR,parent:n.type,details:ac.BUFFER_APPEND_ERROR,sourceBufferName:o,frag:n,part:l,chunkMeta:d,error:e,err:e,fatal:!1};if(e.code===DOMException.QUOTA_EXCEEDED_ERR)t.details=ac.BUFFER_FULL_ERROR;else{const e=++this.appendErrors[o];t.details=ac.BUFFER_APPEND_ERROR,this.warn(`Failed ${e}/${i.config.appendErrorMaxRetry} times to append segment in "${o}" sourceBuffer`),e>=i.config.appendErrorMaxRetry&&(t.fatal=!0)}i.trigger(sc.ERROR,t)}};s.append(y,o,!!this.pendingTracks[o])}onBufferFlushing(e,t){const{operationQueue:i}=this,s=e=>({execute:this.removeExecutor.bind(this,e,t.startOffset,t.endOffset),onStart:()=>{},onComplete:()=>{this.hls.trigger(sc.BUFFER_FLUSHED,{type:e})},onError:t=>{this.warn(`Failed to remove from ${e} SourceBuffer`,t)}});t.type?i.append(s(t.type),t.type):this.getSourceBufferTypes().forEach((e=>{i.append(s(e),e)}))}onFragParsed(e,t){const{frag:i,part:s}=t,r=[],a=s?s.elementaryStreams:i.elementaryStreams;a[bc]?r.push("audiovideo"):(a[yc]&&r.push("audio"),a[Ac]&&r.push("video"));0===r.length&&this.warn(`Fragments must have at least one ElementaryStreamType set. type: ${i.type} level: ${i.level} sn: ${i.sn}`),this.blockBuffers((()=>{const e=self.performance.now();i.stats.buffering.end=e,s&&(s.stats.buffering.end=e);const t=s?s.stats:i.stats;this.hls.trigger(sc.FRAG_BUFFERED,{frag:i,part:s,stats:t,id:i.type})}),r)}onFragChanged(e,t){this.trimBuffers()}onBufferEos(e,t){this.getSourceBufferTypes().reduce(((e,i)=>{const s=this.sourceBuffer[i];return!s||t.type&&t.type!==i||(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} sourceBuffer now EOS`))),e&&!(s&&!s.ended)}),!0)&&(this.log("Queueing mediaSource.endOfStream()"),this.blockBuffers((()=>{this.getSourceBufferTypes().forEach((e=>{const t=this.sourceBuffer[e];t&&(t.ending=!1)}));const{mediaSource:e}=this;e&&"open"===e.readyState?(this.log("Calling mediaSource.endOfStream()"),e.endOfStream()):e&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${e.readyState}`)})))}onLevelUpdated(e,{details:t}){t.fragments.length&&(this.details=t,this.getSourceBufferTypes().length?this.blockBuffers(this.updateMediaElementDuration.bind(this)):this.updateMediaElementDuration())}trimBuffers(){const{hls:e,details:t,media:i}=this;if(!i||null===t)return;if(!this.getSourceBufferTypes().length)return;const s=e.config,r=i.currentTime,a=t.levelTargetDuration,o=t.live&&null!==s.liveBackBufferLength?s.liveBackBufferLength:s.backBufferLength;if(ec(o)&&o>0){const e=Math.max(o,a),t=Math.floor(r/a)*a-e;this.flushBackBuffer(r,a,t)}if(ec(s.frontBufferFlushThreshold)&&s.frontBufferFlushThreshold>0){const e=Math.max(s.maxBufferLength,s.frontBufferFlushThreshold),t=Math.max(e,a),i=Math.floor(r/a)*a+t;this.flushFrontBuffer(r,a,i)}}flushBackBuffer(e,t,i){const{details:s,sourceBuffer:r}=this;this.getSourceBufferTypes().forEach((a=>{const o=r[a];if(o){const r=Lf.getBuffered(o);if(r.length>0&&i>r.start(0)){if(this.hls.trigger(sc.BACK_BUFFER_REACHED,{bufferEnd:i}),null!=s&&s.live)this.hls.trigger(sc.LIVE_BACK_BUFFER_REACHED,{bufferEnd:i});else if(o.ended&&r.end(r.length-1)-e<2*t)return void this.log(`Cannot flush ${a} back buffer while SourceBuffer is in ended state`);this.hls.trigger(sc.BUFFER_FLUSHING,{startOffset:0,endOffset:i,type:a})}}}))}flushFrontBuffer(e,t,i){const{sourceBuffer:s}=this;this.getSourceBufferTypes().forEach((r=>{const a=s[r];if(a){const s=Lf.getBuffered(a),o=s.length;if(o<2)return;const n=s.start(o-1),l=s.end(o-1);if(i>n||e>=n&&e<=l)return;if(a.ended&&e-l<2*t)return void this.log(`Cannot flush ${r} front buffer while SourceBuffer is in ended state`);this.hls.trigger(sc.BUFFER_FLUSHING,{startOffset:n,endOffset:1/0,type:r})}}))}updateMediaElementDuration(){if(!this.details||!this.media||!this.mediaSource||"open"!==this.mediaSource.readyState)return;const{details:e,hls:t,media:i,mediaSource:s}=this,r=e.fragments[0].start+e.totalduration,a=i.duration,o=ec(s.duration)?s.duration:0;e.live&&t.config.liveDurationInfinity?(s.duration=1/0,this.updateSeekableRange(e)):(r>o&&r>a||!ec(a))&&(this.log(`Updating Media Source duration to ${r.toFixed(3)}`),s.duration=r)}updateSeekableRange(e){const t=this.mediaSource,i=e.fragments;if(i.length&&e.live&&null!=t&&t.setLiveSeekableRange){const s=Math.max(0,i[0].start),r=Math.max(s,s+e.totalduration);this.log(`Media Source duration is set to ${t.duration}. Setting seekable range to ${s}-${r}.`),t.setLiveSeekableRange(s,r)}}checkPendingTracks(){const{bufferCodecEventsExpected:e,operationQueue:t,pendingTracks:i}=this,s=Object.keys(i).length;if(s&&(!e||2===s||"audiovideo"in i)){this.createSourceBuffers(i),this.pendingTracks={};const e=this.getSourceBufferTypes();if(e.length)this.hls.trigger(sc.BUFFER_CREATED,{tracks:this.tracks}),e.forEach((e=>{t.executeNext(e)}));else{const e=new Error("could not create source buffer for media codec(s)");this.hls.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:e,reason:e.message})}}}createSourceBuffers(e){const{sourceBuffer:t,mediaSource:i}=this;if(!i)throw Error("createSourceBuffers called when mediaSource was null");for(const s in e)if(!t[s]){const r=e[s];if(!r)throw Error(`source buffer exists for track ${s}, however track does not`);let a=r.levelCodec||r.codec;a&&"audio"===s.slice(0,5)&&(a=$u(a,this.appendSource));const o=`${r.container};codecs=${a}`;this.log(`creating sourceBuffer(${o})`);try{const e=t[s]=i.addSourceBuffer(o),n=s;this.addBufferListener(n,"updatestart",this._onSBUpdateStart),this.addBufferListener(n,"updateend",this._onSBUpdateEnd),this.addBufferListener(n,"error",this._onSBUpdateError),this.appendSource&&this.addBufferListener(n,"bufferedchange",((e,t)=>{const i=t.removedRanges;null!=i&&i.length&&this.hls.trigger(sc.BUFFER_FLUSHED,{type:s})})),this.tracks[s]={buffer:e,codec:a,container:r.container,levelCodec:r.levelCodec,metadata:r.metadata,id:r.id}}catch(e){this.error(`error while trying to add sourceBuffer: ${e.message}`),this.hls.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:e,sourceBufferName:s,mimeType:o})}}}get mediaSrc(){var e;const t=(null==(e=this.media)?void 0:e.firstChild)||this.media;return null==t?void 0:t.src}_onSBUpdateStart(e){const{operationQueue:t}=this;t.current(e).onStart()}_onSBUpdateEnd(e){var t;if("closed"===(null==(t=this.mediaSource)?void 0:t.readyState))return void this.resetBuffer(e);const{operationQueue:i}=this;i.current(e).onComplete(),i.shiftAndExecuteNext(e)}_onSBUpdateError(e,t){var i;const s=new Error(`${e} SourceBuffer error. MediaSource readyState: ${null==(i=this.mediaSource)?void 0:i.readyState}`);this.error(`${s}`,t),this.hls.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.BUFFER_APPENDING_ERROR,sourceBufferName:e,error:s,fatal:!1});const r=this.operationQueue.current(e);r&&r.onError(s)}removeExecutor(e,t,i){const{media:s,mediaSource:r,operationQueue:a,sourceBuffer:o}=this,n=o[e];if(!s||!r||!n)return this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`),void a.shiftAndExecuteNext(e);const l=ec(s.duration)?s.duration:1/0,d=ec(r.duration)?r.duration:1/0,h=Math.max(0,t),c=Math.min(i,l,d);c>h&&(!n.ending||n.ended)?(n.ended=!1,this.log(`Removing [${h},${c}] from the ${e} SourceBuffer`),n.remove(h,c)):a.shiftAndExecuteNext(e)}appendExecutor(e,t){const i=this.sourceBuffer[t];if(i)i.ended=!1,i.appendBuffer(e);else if(!this.pendingTracks[t])throw new Error(`Attempting to append to the ${t} SourceBuffer, but it does not exist`)}blockBuffers(e,t=this.getSourceBufferTypes()){if(!t.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),void Promise.resolve().then(e);const{operationQueue:i}=this,s=t.map((e=>i.appendBlocker(e)));Promise.all(s).then((()=>{e(),t.forEach((e=>{const t=this.sourceBuffer[e];null!=t&&t.updating||i.shiftAndExecuteNext(e)}))}))}getSourceBufferTypes(){return Object.keys(this.sourceBuffer)}addBufferListener(e,t,i){const s=this.sourceBuffer[e];if(!s)return;const r=i.bind(this,e);this.listeners[e].push({event:t,listener:r}),s.addEventListener(t,r)}removeBufferListeners(e){const t=this.sourceBuffer[e];t&&this.listeners[e].forEach((e=>{t.removeEventListener(e.event,e.listener)}))}},capLevelController:fy,errorController:class{constructor(e){this.hls=void 0,this.playlistError=0,this.penalizedRenditions={},this.log=void 0,this.warn=void 0,this.error=void 0,this.hls=e,this.log=hc.log.bind(hc,"[info]:"),this.warn=hc.warn.bind(hc,"[warning]:"),this.error=hc.error.bind(hc,"[error]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(sc.ERROR,this.onError,this),e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){const e=this.hls;e&&(e.off(sc.ERROR,this.onError,this),e.off(sc.ERROR,this.onErrorOut,this),e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null,this.penalizedRenditions={}}startLoad(e){}stopLoad(){this.playlistError=0}getVariantLevelIndex(e){return(null==e?void 0:e.type)===hp?e.level:this.hls.loadLevel}onManifestLoading(){this.playlistError=0,this.penalizedRenditions={}}onLevelUpdated(){this.playlistError=0}onError(e,t){var i,s;if(t.fatal)return;const r=this.hls,a=t.context;switch(t.details){case ac.FRAG_LOAD_ERROR:case ac.FRAG_LOAD_TIMEOUT:case ac.KEY_LOAD_ERROR:case ac.KEY_LOAD_TIMEOUT:return void(t.errorAction=this.getFragRetryOrSwitchAction(t));case ac.FRAG_PARSING_ERROR:if(null!=(i=t.frag)&&i.gap)return void(t.errorAction={action:tf,flags:of});case ac.FRAG_GAP:case ac.FRAG_DECRYPT_ERROR:return t.errorAction=this.getFragRetryOrSwitchAction(t),void(t.errorAction.action=sf);case ac.LEVEL_EMPTY_ERROR:case ac.LEVEL_PARSING_ERROR:{var o,n;const e=t.parent===hp?t.level:r.loadLevel;t.details===ac.LEVEL_EMPTY_ERROR&&null!=(o=t.context)&&null!=(n=o.levelDetails)&&n.live?t.errorAction=this.getPlaylistRetryOrSwitchAction(t,e):(t.levelRetry=!1,t.errorAction=this.getLevelSwitchAction(t,e))}return;case ac.LEVEL_LOAD_ERROR:case ac.LEVEL_LOAD_TIMEOUT:return void("number"==typeof(null==a?void 0:a.level)&&(t.errorAction=this.getPlaylistRetryOrSwitchAction(t,a.level)));case ac.AUDIO_TRACK_LOAD_ERROR:case ac.AUDIO_TRACK_LOAD_TIMEOUT:case ac.SUBTITLE_LOAD_ERROR:case ac.SUBTITLE_TRACK_LOAD_TIMEOUT:if(a){const e=r.levels[r.loadLevel];if(e&&(a.type===lp&&e.hasAudioGroup(a.groupId)||a.type===dp&&e.hasSubtitleGroup(a.groupId)))return t.errorAction=this.getPlaylistRetryOrSwitchAction(t,r.loadLevel),t.errorAction.action=sf,void(t.errorAction.flags=nf)}return;case ac.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:{const e=r.levels[r.loadLevel],i=null==e?void 0:e.attrs["HDCP-LEVEL"];i?t.errorAction={action:sf,flags:lf,hdcpLevel:i}:this.keySystemError(t)}return;case ac.BUFFER_ADD_CODEC_ERROR:case ac.REMUX_ALLOC_ERROR:case ac.BUFFER_APPEND_ERROR:return void(t.errorAction=this.getLevelSwitchAction(t,null!=(s=t.level)?s:r.loadLevel));case ac.INTERNAL_EXCEPTION:case ac.BUFFER_APPENDING_ERROR:case ac.BUFFER_FULL_ERROR:case ac.LEVEL_SWITCH_ERROR:case ac.BUFFER_STALLED_ERROR:case ac.BUFFER_SEEK_OVER_HOLE:case ac.BUFFER_NUDGE_ON_STALL:return void(t.errorAction={action:tf,flags:of})}t.type===rc.KEY_SYSTEM_ERROR&&this.keySystemError(t)}keySystemError(e){const t=this.getVariantLevelIndex(e.frag);e.levelRetry=!1,e.errorAction=this.getLevelSwitchAction(e,t)}getPlaylistRetryOrSwitchAction(e,t){const i=Jp(this.hls.config.playlistLoadPolicy,e),s=this.playlistError++;if(Yp(i,s,Wp(e),e.response))return{action:af,flags:of,retryConfig:i,retryCount:s};const r=this.getLevelSwitchAction(e,t);return i&&(r.retryConfig=i,r.retryCount=s),r}getFragRetryOrSwitchAction(e){const t=this.hls,i=this.getVariantLevelIndex(e.frag),s=t.levels[i],{fragLoadPolicy:r,keyLoadPolicy:a}=t.config,o=Jp(e.details.startsWith("key")?a:r,e),n=t.levels.reduce(((e,t)=>e+t.fragmentError),0);if(s){e.details!==ac.FRAG_GAP&&s.fragmentError++;if(Yp(o,n,Wp(e),e.response))return{action:af,flags:of,retryConfig:o,retryCount:n}}const l=this.getLevelSwitchAction(e,i);return o&&(l.retryConfig=o,l.retryCount=n),l}getLevelSwitchAction(e,t){const i=this.hls;null==t&&(t=i.loadLevel);const s=this.hls.levels[t];if(s){var r,a;const t=e.details;s.loadError++,t===ac.BUFFER_APPEND_ERROR&&s.fragmentError++;let l=-1;const{levels:d,loadLevel:h,minAutoLevel:c,maxAutoLevel:u}=i;i.autoLevelEnabled||(i.loadLevel=-1);const p=null==(r=e.frag)?void 0:r.type,f=(p===cp&&t===ac.FRAG_PARSING_ERROR||"audio"===e.sourceBufferName&&(t===ac.BUFFER_ADD_CODEC_ERROR||t===ac.BUFFER_APPEND_ERROR))&&d.some((({audioCodec:e})=>s.audioCodec!==e)),m="video"===e.sourceBufferName&&(t===ac.BUFFER_ADD_CODEC_ERROR||t===ac.BUFFER_APPEND_ERROR)&&d.some((({codecSet:e,audioCodec:t})=>s.codecSet!==e&&s.audioCodec===t)),{type:g,groupId:y}=null!=(a=e.context)?a:{};for(let i=d.length;i--;){const r=(i+h)%d.length;if(r!==h&&r>=c&&r<=u&&0===d[r].loadError){var o,n;const i=d[r];if(t===ac.FRAG_GAP&&e.frag){const t=d[r].details;if(t){const i=Xp(e.frag,t.fragments,e.frag.start);if(null!=i&&i.gap)continue}}else{if(g===lp&&i.hasAudioGroup(y)||g===dp&&i.hasSubtitleGroup(y))continue;if(p===cp&&null!=(o=s.audioGroups)&&o.some((e=>i.hasAudioGroup(e)))||p===up&&null!=(n=s.subtitleGroups)&&n.some((e=>i.hasSubtitleGroup(e)))||f&&s.audioCodec===i.audioCodec||!f&&s.audioCodec!==i.audioCodec||m&&s.codecSet===i.codecSet)continue}l=r;break}}if(l>-1&&i.loadLevel!==l)return e.levelRetry=!0,this.playlistError=0,{action:sf,flags:of,nextAutoLevel:l}}return{action:sf,flags:nf}}onErrorOut(e,t){var i;switch(null==(i=t.errorAction)?void 0:i.action){case tf:break;case sf:this.sendAlternateToPenaltyBox(t),t.errorAction.resolved||t.details===ac.FRAG_GAP?/MediaSource readyState: ended/.test(t.error.message)&&(this.warn(`MediaSource ended after "${t.sourceBufferName}" sourceBuffer append error. Attempting to recover from media error.`),this.hls.recoverMediaError()):t.fatal=!0}t.fatal&&this.hls.stopLoad()}sendAlternateToPenaltyBox(e){const t=this.hls,i=e.errorAction;if(!i)return;const{flags:s,hdcpLevel:r,nextAutoLevel:a}=i;switch(s){case of:this.switchLevel(e,a);break;case lf:r&&(t.maxHdcpLevel=Dp[Dp.indexOf(r)-1],i.resolved=!0),this.warn(`Restricting playback to HDCP-LEVEL of "${t.maxHdcpLevel}" or lower`)}i.resolved||this.switchLevel(e,a)}switchLevel(e,t){void 0!==t&&e.errorAction&&(this.warn(`switching to level ${t} after ${e.details}`),this.hls.nextAutoLevel=t,e.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel)}},fpsController:class{constructor(e){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=e,this.registerListeners()}setStreamController(e){this.streamController=e}registerListeners(){this.hls.on(sc.MEDIA_ATTACHING,this.onMediaAttaching,this)}unregisterListeners(){this.hls.off(sc.MEDIA_ATTACHING,this.onMediaAttaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(e,t){const i=this.hls.config;if(i.capLevelOnFPSDrop){const e=t.media instanceof self.HTMLVideoElement?t.media:null;this.media=e,e&&"function"==typeof e.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),i.fpsDroppedMonitoringPeriod)}}checkFPS(e,t,i){const s=performance.now();if(t){if(this.lastTime){const e=s-this.lastTime,r=i-this.lastDroppedFrames,a=t-this.lastDecodedFrames,o=1e3*r/e,n=this.hls;if(n.trigger(sc.FPS_DROP,{currentDropped:r,currentDecoded:a,totalDroppedFrames:i}),o>0&&r>n.config.fpsDroppedMonitoringThreshold*a){let e=n.currentLevel;hc.warn("drop FPS ratio greater than max allowed value for currentLevel: "+e),e>0&&(-1===n.autoLevelCapping||n.autoLevelCapping>=e)&&(e-=1,n.trigger(sc.FPS_DROP_LEVEL_CAPPING,{level:e,droppedLevel:n.currentLevel}),n.autoLevelCapping=e,this.streamController.nextLevelSwitch())}}this.lastTime=s,this.lastDroppedFrames=i,this.lastDecodedFrames=t}}checkFPSInterval(){const e=this.media;if(e)if(this.isVideoPlaybackQualityAvailable){const t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}},stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:Fc,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableID3MetadataCues:!0,useMediaCapabilities:!0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3},{cueHandler:tA,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:class extends om{constructor(e,t,i){super(e,t,i,"[subtitle-stream-controller]",up),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this._registerListeners()}onHandlerDestroying(){this._unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}_registerListeners(){const{hls:e}=this;e.on(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(sc.ERROR,this.onError,this),e.on(sc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(sc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.on(sc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(sc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.on(sc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.on(sc.FRAG_BUFFERED,this.onFragBuffered,this)}_unregisterListeners(){const{hls:e}=this;e.off(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(sc.ERROR,this.onError,this),e.off(sc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(sc.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),e.off(sc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(sc.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),e.off(sc.BUFFER_FLUSHING,this.onBufferFlushing,this),e.off(sc.FRAG_BUFFERED,this.onFragBuffered,this)}startLoad(e){this.stopLoad(),this.state=Kf,this.setInterval(500),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}onManifestLoading(){this.mainDetails=null,this.fragmentTracker.removeAllFragments()}onMediaDetaching(){this.tracksBuffered=[],super.onMediaDetaching()}onLevelLoaded(e,t){this.mainDetails=t.details}onSubtitleFragProcessed(e,t){const{frag:i,success:s}=t;if(this.fragPrevious=i,this.state=Kf,!s)return;const r=this.tracksBuffered[this.currentTrackId];if(!r)return;let a;const o=i.start;for(let e=0;e=r[e].start&&o<=r[e].end){a=r[e];break}const n=i.start+i.duration;a?a.end=n:(a={start:o,end:n},r.push(a)),this.fragmentTracker.fragBuffered(i),this.fragBufferedComplete(i,null)}onBufferFlushing(e,t){const{startOffset:i,endOffset:s}=t;if(0===i&&s!==Number.POSITIVE_INFINITY){const e=s-1;if(e<=0)return;t.endOffsetSubtitles=Math.max(0,e),this.tracksBuffered.forEach((t=>{for(let i=0;inew Up(e))):(this.tracksBuffered=[],this.levels=t.map((e=>{const t=new Up(e);return this.tracksBuffered[t.id]=[],t})),this.fragmentTracker.removeFragmentsInRange(0,Number.POSITIVE_INFINITY,up),this.fragPrevious=null,this.mediaBuffer=null)}onSubtitleTrackSwitch(e,t){var i;if(this.currentTrackId=t.id,null==(i=this.levels)||!i.length||-1===this.currentTrackId)return void this.clearInterval();const s=this.levels[this.currentTrackId];null!=s&&s.details?this.mediaBuffer=this.mediaBufferTimeRanges:this.mediaBuffer=null,s&&this.setInterval(500)}onSubtitleTrackLoaded(e,t){var i;const{currentTrackId:s,levels:r}=this,{details:a,id:o}=t;if(!r)return void this.warn(`Subtitle tracks were reset while loading level ${o}`);const n=r[s];if(o>=r.length||o!==s||!n)return;this.log(`Subtitle track ${o} loaded [${a.startSN},${a.endSN}]${a.lastPartSn?`[part-${a.lastPartSn}-${a.lastPartIndex}]`:""},duration:${a.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let l=0;if(a.live||null!=(i=n.details)&&i.live){const e=this.mainDetails;if(a.deltaUpdateFailed||!e)return;const t=e.fragments[0];var d;if(n.details)l=this.alignPlaylists(a,n.details,null==(d=this.levelLastLoaded)?void 0:d.details),0===l&&t&&(l=t.start,Gp(a,l));else a.hasProgramDateTime&&e.hasProgramDateTime?(Ff(a,e),l=a.fragments[0].start):t&&(l=t.start,Gp(a,l))}if(n.details=a,this.levelLastLoaded=n,this.startFragRequested||!this.mainDetails&&a.live||this.setStartPosition(this.mainDetails||a,l),this.tick(),a.live&&!this.fragCurrent&&this.media&&this.state===Kf){Xp(null,a.fragments,this.media.currentTime,0)||(this.warn("Subtitle playlist not aligned with playback"),n.details=void 0)}}_handleFragmentLoadComplete(e){const{frag:t,payload:i}=e,s=t.decryptdata,r=this.hls;if(!this.fragContextChanged(t)&&i&&i.byteLength>0&&null!=s&&s.key&&s.iv&&"AES-128"===s.method){const e=performance.now();this.decrypter.decrypt(new Uint8Array(i),s.key.buffer,s.iv.buffer).catch((e=>{throw r.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.FRAG_DECRYPT_ERROR,fatal:!1,error:e,reason:e.message,frag:t}),e})).then((i=>{const s=performance.now();r.trigger(sc.FRAG_DECRYPTED,{frag:t,payload:i,stats:{tstart:e,tdecrypt:s}})})).catch((e=>{this.warn(`${e.name}: ${e.message}`),this.state=Kf}))}}doTick(){if(this.media){if(this.state===Kf){const{currentTrackId:e,levels:t}=this,i=null==t?void 0:t[e];if(!i||!t.length||!i.details)return;const{config:s}=this,r=this.getLoadPosition(),a=Lf.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],r,s.maxBufferHole),{end:o,len:n}=a,l=this.getFwdBufferInfo(this.media,hp),d=i.details;if(n>this.getMaxBufferLength(null==l?void 0:l.len)+d.levelTargetDuration)return;const h=d.fragments,c=h.length,u=d.edge;let p=null;const f=this.fragPrevious;if(ou-e?0:e;p=Xp(f,h,Math.max(h[0].start,o),t),!p&&f&&f.startthis.pollTrackChange(0),this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.onTextTracksChanged=()=>{if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let e=null;const t=vp(this.media.textTracks);for(let i=0;i-1&&this.toggleTrackModes()}registerListeners(){const{hls:e}=this;e.on(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(sc.LEVEL_LOADING,this.onLevelLoading,this),e.on(sc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(sc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.on(sc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(sc.LEVEL_LOADING,this.onLevelLoading,this),e.off(sc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(sc.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),e.off(sc.ERROR,this.onError,this)}onMediaAttached(e,t){this.media=t.media,this.media&&(this.queuedDefaultTrack>-1&&(this.subtitleTrack=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.useTextTrackPolling=!(this.media.textTracks&&"onchange"in this.media.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):this.media.textTracks.addEventListener("change",this.asyncPollTrackChange))}pollTrackChange(e){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,e)}onMediaDetaching(){if(!this.media)return;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||this.media.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId);vp(this.media.textTracks).forEach((e=>{Ap(e)})),this.subtitleTrack=-1,this.media=null}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.subtitleTracks}onSubtitleTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,a=this.tracksInGroup[i];if(!a||a.groupId!==s)return void this.warn(`Subtitle track with id:${i} and group:${s} not found in active group ${null==a?void 0:a.groupId}`);const o=a.details;a.details=t.details,this.log(`Subtitle track ${i} "${a.name}" lang:${a.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,o)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.subtitleGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.subtitlePreference;if(!r&&t){this.selectDefaultTrack=!1;const i=Af(t,e);if(i>-1)r=e[i];else{const e=Af(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const a={subtitleTracks:e};this.log(`Updating subtitle tracks, ${e.length} track(s) found in "${null==i?void 0:i.join(",")}" group-id`),this.hls.trigger(sc.SUBTITLE_TRACKS_UPDATED,a),-1!==s&&-1===this.trackId&&this.setSubtitleTrack(s)}else this.shouldReloadPlaylist(r)&&this.setSubtitleTrack(this.trackId)}findTrackId(e){const t=this.tracksInGroup,i=this.selectDefaultTrack;for(let s=0;s-1){const e=this.tracksInGroup[s];return this.setSubtitleTrack(s),e}if(i)return null;{const i=Af(e,t);if(i>-1)return t[i]}}}return null}loadPlaylist(e){super.loadPlaylist();const t=this.currentTrack;if(this.shouldLoadPlaylist(t)&&t){const i=t.id,s=t.groupId;let r=t.url;if(e)try{r=e.addDirectives(r)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}this.log(`Loading subtitle playlist for id ${i}`),this.hls.trigger(sc.SUBTITLE_TRACK_LOADING,{url:r,id:i,groupId:s,deliveryDirectives:e||null})}}toggleTrackModes(){const{media:e}=this;if(!e)return;const t=vp(e.textTracks),i=this.currentTrack;let s;if(i&&(s=t.filter((e=>mg(i,e)))[0],s||this.warn(`Unable to find subtitle TextTrack with name "${i.name}" and language "${i.lang}"`)),[].slice.call(t).forEach((e=>{"disabled"!==e.mode&&e!==s&&(e.mode="disabled")})),s){const e=this.subtitleDisplay?"showing":"hidden";s.mode!==e&&(s.mode=e)}}setSubtitleTrack(e){const t=this.tracksInGroup;if(!this.media)return void(this.queuedDefaultTrack=e);if(e<-1||e>=t.length||!ec(e))return void this.warn(`Invalid subtitle track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e]||null;if(this.trackId=e,this.currentTrack=s,this.toggleTrackModes(),!s)return void this.hls.trigger(sc.SUBTITLE_TRACK_SWITCH,{id:e});const r=!!s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;this.log(`Switching to subtitle-track ${e}`+(s?` "${s.name}" lang:${s.lang} group:${s.groupId}`:""));const{id:a,groupId:o="",name:n,type:l,url:d}=s;this.hls.trigger(sc.SUBTITLE_TRACK_SWITCH,{id:a,groupId:o,name:n,type:l,url:d});const h=this.switchParams(s.url,null==i?void 0:i.details);this.loadPlaylist(h)}},timelineController:class{constructor(e){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.textTracks=[],this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this.captionsProperties=void 0,this.hls=e,this.config=e.config,this.Cues=e.config.cueHandler,this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}},e.on(sc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.on(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(sc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.on(sc.FRAG_LOADING,this.onFragLoading,this),e.on(sc.FRAG_LOADED,this.onFragLoaded,this),e.on(sc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.on(sc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.on(sc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.on(sc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.on(sc.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){const{hls:e}=this;e.off(sc.MEDIA_ATTACHING,this.onMediaAttaching,this),e.off(sc.MEDIA_DETACHING,this.onMediaDetaching,this),e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(sc.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),e.off(sc.FRAG_LOADING,this.onFragLoading,this),e.off(sc.FRAG_LOADED,this.onFragLoaded,this),e.off(sc.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),e.off(sc.FRAG_DECRYPTED,this.onFragDecrypted,this),e.off(sc.INIT_PTS_FOUND,this.onInitPtsFound,this),e.off(sc.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),e.off(sc.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){if(this.config.enableCEA708Captions&&(!this.cea608Parser1||!this.cea608Parser2)){const e=new Ng(this,"textTrack1"),t=new Ng(this,"textTrack2"),i=new Ng(this,"textTrack3"),s=new Ng(this,"textTrack4");this.cea608Parser1=new Ug(1,e,t),this.cea608Parser2=new Ug(3,i,s)}}addCues(e,t,i,s,r){let a=!1;for(let e=r.length;e--;){const s=r[e],h=(o=s[0],n=s[1],l=t,d=i,Math.min(n,d)-Math.max(o,l));if(h>=0&&(s[0]=Math.min(s[0],t),s[1]=Math.max(s[1],i),a=!0,h/(i-t)>.5))return}var o,n,l,d;if(a||r.push([t,i]),this.config.renderTextTracksNatively){const r=this.captionsTracks[e];this.Cues.newCue(r,t,i,s)}else{const r=this.Cues.newCue(null,t,i,s);this.hls.trigger(sc.CUES_PARSED,{type:"captions",cues:r,track:e})}}onInitPtsFound(e,{frag:t,id:i,initPTS:s,timescale:r}){const{unparsedVttFrags:a}=this;"main"===i&&(this.initPTS[t.cc]={baseTime:s,timescale:r}),a.length&&(this.unparsedVttFrags=[],a.forEach((e=>{this.onFragLoaded(sc.FRAG_LOADED,e)})))}getExistingTrack(e,t){const{media:i}=this;if(i)for(let s=0;s{Ap(e[t]),delete e[t]})),this.nonNativeCaptionsTracks={}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}},this._cleanTracks(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.textTracks=[],this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}_cleanTracks(){const{media:e}=this;if(!e)return;const t=e.textTracks;if(t)for(let e=0;ee.textCodec===ty));if(this.config.enableWebVTT||s&&this.config.enableIMSC1){if(pg(this.tracks,i))return void(this.tracks=i);if(this.textTracks=[],this.tracks=i,this.config.renderTextTracksNatively){const e=this.media,t=e?vp(e.textTracks):null;if(this.tracks.forEach(((e,i)=>{let s;if(t){let i=null;for(let s=0;snull!==e)).map((e=>e.label));e.length&&hc.warn(`Media element contains unused subtitle tracks: ${e.join(", ")}. Replace media element for each source to clear TextTracks and captions menu.`)}}else if(this.tracks.length){const e=this.tracks.map((e=>({label:e.name,kind:e.type.toLowerCase(),default:e.default,subtitleTrack:e})));this.hls.trigger(sc.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:e})}}}onManifestLoaded(e,t){this.config.enableCEA708Captions&&t.captions&&t.captions.forEach((e=>{const t=/(?:CC|SERVICE)([1-4])/.exec(e.instreamId);if(!t)return;const i=`textTrack${t[1]}`,s=this.captionsProperties[i];s&&(s.label=e.name,e.lang&&(s.languageCode=e.lang),s.media=e)}))}closedCaptionsForLevel(e){const t=this.hls.levels[e.level];return null==t?void 0:t.attrs["CLOSED-CAPTIONS"]}onFragLoading(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s,lastCc:r,lastSn:a,lastPartIndex:o}=this;if(this.enabled&&i&&s&&t.frag.type===hp){var n,l;const{cc:e,sn:d}=t.frag,h=null!=(n=null==t||null==(l=t.part)?void 0:l.index)?n:-1;d===a+1||d===a&&h===o+1||e===r||(i.reset(),s.reset()),this.lastCc=e,this.lastSn=d,this.lastPartIndex=h}}onFragLoaded(e,t){const{frag:i,payload:s}=t;if(i.type===up)if(s.byteLength){const e=i.decryptdata,r="stats"in t;if(null==e||!e.encrypted||r){const e=this.tracks[i.level],r=this.vttCCs;r[i.cc]||(r[i.cc]={start:i.start,prevCC:this.prevCC,new:!0},this.prevCC=i.cc),e&&e.textCodec===ty?this._parseIMSC1(i,s):this._parseVTTs(t)}}else this.hls.trigger(sc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:new Error("Empty subtitle payload")})}_parseIMSC1(e,t){const i=this.hls;ay(t,this.initPTS[e.cc],(t=>{this._appendCues(t,e.level),i.trigger(sc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:e})}),(t=>{hc.log(`Failed to parse IMSC1: ${t}`),i.trigger(sc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:e,error:t})}))}_parseVTTs(e){var t;const{frag:i,payload:s}=e,{initPTS:r,unparsedVttFrags:a}=this,o=r.length-1;if(!r[i.cc]&&-1===o)return void a.push(e);const n=this.hls;ey(null!=(t=i.initSegment)&&t.data?Su(i.initSegment.data,new Uint8Array(s)):s,this.initPTS[i.cc],this.vttCCs,i.cc,i.start,(e=>{this._appendCues(e,i.level),n.trigger(sc.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:i})}),(t=>{const r="Missing initPTS for VTT MPEGTS"===t.message;r?a.push(e):this._fallbackToIMSC1(i,s),hc.log(`Failed to parse VTT cue: ${t}`),r&&o>i.cc||n.trigger(sc.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i,error:t})}))}_fallbackToIMSC1(e,t){const i=this.tracks[e.level];i.textCodec||ay(t,this.initPTS[e.cc],(()=>{i.textCodec=ty,this._parseIMSC1(e,t)}),(()=>{i.textCodec="wvtt"}))}_appendCues(e,t){const i=this.hls;if(this.config.renderTextTracksNatively){const i=this.textTracks[t];if(!i||"disabled"===i.mode)return;e.forEach((e=>yp(i,e)))}else{const s=this.tracks[t];if(!s)return;const r=s.default?"default":"subtitles"+t;i.trigger(sc.CUES_PARSED,{type:"subtitles",cues:e,track:r})}}onFragDecrypted(e,t){const{frag:i}=t;i.type===up&&this.onFragLoaded(sc.FRAG_LOADED,t)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(e,t){this.initCea608Parsers();const{cea608Parser1:i,cea608Parser2:s}=this;if(!this.enabled||!i||!s)return;const{frag:r,samples:a}=t;if(r.type!==hp||"NONE"!==this.closedCaptionsForLevel(r))for(let e=0;ebp(e[s],t,i)))}if(this.config.renderTextTracksNatively&&0===t&&void 0!==s){const{textTracks:e}=this;Object.keys(e).forEach((i=>bp(e[i],t,s)))}}}extractCea608Data(e){const t=[[],[]],i=31&e[0];let s=2;for(let r=0;r0&&-1===e?(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t,this.state=Kf):(this.loadedmetadata=!1,this.state=Zf),this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}doTick(){switch(this.state){case Kf:this.doTickIdle();break;case Zf:{var e;const{levels:t,trackId:i}=this,s=null==t||null==(e=t[i])?void 0:e.details;if(s){if(this.waitForCdnTuneIn(s))break;this.state=rm}break}case Xf:{var t;const e=performance.now(),i=this.retryDate;if(!i||e>=i||null!=(t=this.media)&&t.seeking){const{levels:e,trackId:t}=this;this.log("RetryDate reached, switch back to IDLE state"),this.resetStartWhenNotLoaded((null==e?void 0:e[t])||null),this.state=Kf}break}case rm:{const e=this.waitingData;if(e){const{frag:t,part:i,cache:s,complete:r}=e;if(void 0!==this.initPTS[t.cc]){this.waitingData=null,this.waitingVideoCC=-1,this.state=Qf;const e={frag:t,part:i,payload:s.flush(),networkDetails:null};this._handleFragmentLoadProgress(e),r&&super._handleFragmentLoadComplete(e)}else if(this.videoTrackCC!==this.waitingVideoCC)this.log(`Waiting fragment cc (${t.cc}) cancelled because video is at cc ${this.videoTrackCC}`),this.clearWaitingFragment();else{const e=this.getLoadPosition(),i=Lf.bufferInfo(this.mediaBuffer,e,this.config.maxBufferHole);Zp(i.end,this.config.maxFragLookUpTolerance,t)<0&&(this.log(`Waiting fragment cc (${t.cc}) @ ${t.start} cancelled because another fragment at ${i.end} is needed`),this.clearWaitingFragment())}}else this.state=Kf}}this.onTickEnd()}clearWaitingFragment(){const e=this.waitingData;e&&(this.fragmentTracker.removeFragment(e.frag),this.waitingData=null,this.waitingVideoCC=-1,this.state=Kf)}resetLoadingState(){this.clearWaitingFragment(),super.resetLoadingState()}onTickEnd(){const{media:e}=this;null!=e&&e.readyState&&(this.lastCurrentTime=e.currentTime)}doTickIdle(){const{hls:e,levels:t,media:i,trackId:s}=this,r=e.config;if(!i&&(this.startFragRequested||!r.startFragPrefetch)||null==t||!t[s])return;const a=t[s],o=a.details;if(!o||o.live&&this.levelLastLoaded!==a||this.waitForCdnTuneIn(o))return void(this.state=Zf);const n=this.mediaBuffer?this.mediaBuffer:this.media;this.bufferFlushed&&n&&(this.bufferFlushed=!1,this.afterBufferFlushed(n,yc,cp));const l=this.getFwdBufferInfo(n,cp);if(null===l)return;const{bufferedTrack:d,switchingTrack:h}=this;if(!h&&this._streamEnded(l,o))return e.trigger(sc.BUFFER_EOS,{type:"audio"}),void(this.state=im);const c=this.getFwdBufferInfo(this.videoBuffer?this.videoBuffer:this.media,hp),u=l.len,p=this.getMaxBufferLength(null==c?void 0:c.len),f=o.fragments,m=f[0].start;let g=this.flushing?this.getLoadPosition():l.end;if(h&&i){const e=this.getLoadPosition();d&&!fg(h.attrs,d.attrs)&&(g=e),o.PTSKnown&&em||l.nextStart)&&(this.log("Alt audio track ahead of main track, seek to start of alt audio track"),i.currentTime=m+.05)}if(u>=p&&!h&&gc.end+o.targetduration;if(b||(null==c||!c.len)&&l.len){const e=this.getAppendedFrag(y.start,hp);if(null===e)return;if(A||(A=!!e.gap||!!b&&0===c.len),b&&!A||A&&l.nextStart&&l.nextStartnew Up(e)))}onAudioTrackSwitching(e,t){const i=!!t.url;this.trackId=t.id;const{fragCurrent:s}=this;s&&(s.abortRequests(),this.removeUnbufferedFrags(s.start)),this.resetLoadingState(),i?this.setInterval(100):this.resetTransmuxer(),i?(this.switchingTrack=t,this.state=Kf,this.flushAudioIfNeeded(t)):(this.switchingTrack=null,this.bufferedTrack=t,this.state=qf),this.tick()}onManifestLoading(){this.fragmentTracker.removeAllFragments(),this.startPosition=this.lastCurrentTime=0,this.bufferFlushed=this.flushing=!1,this.levels=this.mainDetails=this.waitingData=this.bufferedTrack=this.cachedTrackLoadedData=this.switchingTrack=null,this.startFragRequested=!1,this.trackId=this.videoTrackCC=this.waitingVideoCC=-1}onLevelLoaded(e,t){this.mainDetails=t.details,null!==this.cachedTrackLoadedData&&(this.hls.trigger(sc.AUDIO_TRACK_LOADED,this.cachedTrackLoadedData),this.cachedTrackLoadedData=null)}onAudioTrackLoaded(e,t){var i;if(null==this.mainDetails)return void(this.cachedTrackLoadedData=t);const{levels:s}=this,{details:r,id:a}=t;if(!s)return void this.warn(`Audio tracks were reset while loading level ${a}`);this.log(`Audio track ${a} loaded [${r.startSN},${r.endSN}]${r.lastPartSn?`[part-${r.lastPartSn}-${r.lastPartIndex}]`:""},duration:${r.totalduration}`);const o=s[a];let n=0;if(r.live||null!=(i=o.details)&&i.live){this.checkLiveUpdate(r);const e=this.mainDetails;if(r.deltaUpdateFailed||!e)return;var l;if(!o.details&&r.hasProgramDateTime&&e.hasProgramDateTime)Ff(r,e),n=r.fragments[0].start;else n=this.alignPlaylists(r,o.details,null==(l=this.levelLastLoaded)?void 0:l.details)}o.details=r,this.levelLastLoaded=o,this.startFragRequested||!this.mainDetails&&r.live||this.setStartPosition(this.mainDetails||r,n),this.state!==Zf||this.waitForCdnTuneIn(r)||(this.state=Kf),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{config:a,trackId:o,levels:n}=this;if(!n)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const l=n[o];if(!l)return void this.warn("Audio track is undefined on fragment load progress");const d=l.details;if(!d)return this.warn("Audio track details undefined on fragment load progress"),void this.removeUnbufferedFrags(i.start);const h=a.defaultAudioCodec||l.audioCodec||"mp4a.40.2";let c=this.transmuxer;c||(c=this.transmuxer=new ug(this.hls,cp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));const u=this.initPTS[i.cc],p=null==(t=i.initSegment)?void 0:t.data;if(void 0!==u){const e=!1,t=s?s.index:-1,a=-1!==t,o=new Pf(i.level,i.sn,i.stats.chunkCount,r.byteLength,t,a);c.push(r,p,h,"",i,s,d.totalduration,e,o,u)}else{this.log(`Unknown video PTS for cc ${i.cc}, waiting for video PTS before demuxing audio frag ${i.sn} of [${d.startSN} ,${d.endSN}],track ${o}`);const{cache:e}=this.waitingData=this.waitingData||{frag:i,part:s,cache:new nm,complete:!1};e.push(new Uint8Array(r)),this.waitingVideoCC=this.videoTrackCC,this.state=rm}}_handleFragmentLoadComplete(e){this.waitingData?this.waitingData.complete=!0:super._handleFragmentLoadComplete(e)}onBufferReset(){this.mediaBuffer=this.videoBuffer=null,this.loadedmetadata=!1}onBufferCreated(e,t){const i=t.tracks.audio;i&&(this.mediaBuffer=i.buffer||null),t.tracks.video&&(this.videoBuffer=t.tracks.video.buffer||null)}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i.type===cp)if(this.fragContextChanged(i))this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);else{if("initSegment"!==i.sn){this.fragPrevious=i;const e=this.switchingTrack;e&&(this.bufferedTrack=e,this.switchingTrack=null,this.hls.trigger(sc.AUDIO_TRACK_SWITCHED,Yh({},e)))}this.fragBufferedComplete(i,s)}else if(!this.loadedmetadata&&i.type===hp){const e=this.videoBuffer||this.media;if(e){Lf.getBuffered(e).length&&(this.loadedmetadata=!0)}}}onError(e,t){var i;if(t.fatal)this.state=sm;else switch(t.details){case ac.FRAG_GAP:case ac.FRAG_PARSING_ERROR:case ac.FRAG_DECRYPT_ERROR:case ac.FRAG_LOAD_ERROR:case ac.FRAG_LOAD_TIMEOUT:case ac.KEY_LOAD_ERROR:case ac.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(cp,t);break;case ac.AUDIO_TRACK_LOAD_ERROR:case ac.AUDIO_TRACK_LOAD_TIMEOUT:case ac.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==Zf||(null==(i=t.context)?void 0:i.type)!==lp||(this.state=Kf);break;case ac.BUFFER_APPEND_ERROR:case ac.BUFFER_FULL_ERROR:if(!t.parent||"audio"!==t.parent)return;if(t.details===ac.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&(this.bufferedTrack=null,super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"));break;case ac.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}onBufferFlushing(e,{type:t}){t!==Ac&&(this.flushing=!0)}onBufferFlushed(e,{type:t}){if(t!==Ac){this.flushing=!1,this.bufferFlushed=!0,this.state===im&&(this.state=Kf);const e=this.mediaBuffer||this.media;e&&(this.afterBufferFlushed(e,t,cp),this.tick())}}_handleTransmuxComplete(e){var t;const i="audio",{hls:s}=this,{remuxResult:r,chunkMeta:a}=e,o=this.getCurrentContext(a);if(!o)return void this.resetWhenMissingContext(a);const{frag:n,part:l,level:d}=o,{details:h}=d,{audio:c,text:u,id3:p,initSegment:f}=r;if(!this.fragContextChanged(n)&&h){if(this.state=em,this.switchingTrack&&c&&this.completeAudioSwitch(this.switchingTrack),null!=f&&f.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,f.tracks,e,a),s.trigger(sc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:f.tracks})}if(c){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=c;l&&(l.elementaryStreams[yc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(yc,e,t,i,s),this.bufferFragmentData(c,n,l,a)}if(null!=p&&null!=(t=p.samples)&&t.length){const e=Zh({id:i,frag:n,details:h},p);s.trigger(sc.FRAG_PARSING_METADATA,e)}if(u){const e=Zh({id:i,frag:n,details:h},u);s.trigger(sc.FRAG_PARSING_USERDATA,e)}}else this.fragmentTracker.removeFragment(n)}_bufferInitSegment(e,t,i,s){if(this.state!==em)return;t.video&&delete t.video;const r=t.audio;if(!r)return;r.id="audio";const a=e.audioCodec;this.log(`Init audio buffer, container:${r.container}, codecs[level/parsed]=[${a}/${r.codec}]`),a&&1===a.split(",").length&&(r.levelCodec=a),this.hls.trigger(sc.BUFFER_CODECS,t);const o=r.initSegment;if(null!=o&&o.byteLength){const e={type:"audio",frag:i,part:null,chunkMeta:s,parent:i.type,data:o};this.hls.trigger(sc.BUFFER_APPENDING,e)}this.tickImmediate()}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);var r;if(this.fragCurrent=e,this.switchingTrack||s===wf||s===Tf)if("initSegment"===e.sn)this._loadInitSegment(e,t);else if(null!=(r=t.details)&&r.live&&!this.initPTS[e.cc]){this.log(`Waiting for video PTS in continuity counter ${e.cc} of live stream before loading audio fragment ${e.sn} of level ${this.trackId}`),this.state=rm;const i=this.mainDetails;i&&i.fragments[0].start!==t.details.fragments[0].start&&Ff(t.details,i)}else this.startFragRequested=!0,super.loadFragment(e,t,i);else this.clearTrackerIfNeeded(e)}flushAudioIfNeeded(e){const{media:t,bufferedTrack:i}=this,s=null==i?void 0:i.attrs,r=e.attrs;t&&s&&(s.CHANNELS!==r.CHANNELS||i.name!==e.name||i.lang!==e.lang)&&(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,Number.POSITIVE_INFINITY,"audio"),this.bufferedTrack=null)}completeAudioSwitch(e){const{hls:t}=this;this.flushAudioIfNeeded(e),this.bufferedTrack=e,this.switchingTrack=null,t.trigger(sc.AUDIO_TRACK_SWITCHED,Yh({},e))}},audioTrackController:class extends df{constructor(e){super(e,"[audio-track-controller]"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){const{hls:e}=this;e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(sc.LEVEL_LOADING,this.onLevelLoading,this),e.on(sc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.on(sc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.on(sc.ERROR,this.onError,this)}unregisterListeners(){const{hls:e}=this;e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(sc.LEVEL_LOADING,this.onLevelLoading,this),e.off(sc.LEVEL_SWITCHING,this.onLevelSwitching,this),e.off(sc.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),e.off(sc.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(e,t){this.tracks=t.audioTracks||[]}onAudioTrackLoaded(e,t){const{id:i,groupId:s,details:r}=t,a=this.tracksInGroup[i];if(!a||a.groupId!==s)return void this.warn(`Audio track with id:${i} and group:${s} not found in active group ${null==a?void 0:a.groupId}`);const o=a.details;a.details=t.details,this.log(`Audio track ${i} "${a.name}" lang:${a.lang} group:${s} loaded [${r.startSN}-${r.endSN}]`),i===this.trackId&&this.playlistLoaded(i,t,o)}onLevelLoading(e,t){this.switchLevel(t.level)}onLevelSwitching(e,t){this.switchLevel(t.level)}switchLevel(e){const t=this.hls.levels[e];if(!t)return;const i=t.audioGroups||null,s=this.groupIds;let r=this.currentTrack;if(!i||(null==s?void 0:s.length)!==(null==i?void 0:i.length)||null!=i&&i.some((e=>-1===(null==s?void 0:s.indexOf(e))))){this.groupIds=i,this.trackId=-1,this.currentTrack=null;const e=this.tracks.filter((e=>!i||-1!==i.indexOf(e.groupId)));if(e.length)this.selectDefaultTrack&&!e.some((e=>e.default))&&(this.selectDefaultTrack=!1),e.forEach(((e,t)=>{e.id=t}));else if(!r&&!this.tracksInGroup.length)return;this.tracksInGroup=e;const t=this.hls.config.audioPreference;if(!r&&t){const i=Af(t,e,vf);if(i>-1)r=e[i];else{const e=Af(t,this.tracks);r=this.tracks[e]}}let s=this.findTrackId(r);-1===s&&r&&(s=this.findTrackId(null));const o={audioTracks:e};this.log(`Updating audio tracks, ${e.length} track(s) found in group(s): ${null==i?void 0:i.join(",")}`),this.hls.trigger(sc.AUDIO_TRACKS_UPDATED,o);const n=this.trackId;if(-1!==s&&-1===n)this.setAudioTrack(s);else if(e.length&&-1===n){var a;const t=new Error(`No audio track selected for current audio group-ID(s): ${null==(a=this.groupIds)?void 0:a.join(",")} track count: ${e.length}`);this.warn(t.message),this.hls.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:t})}}else this.shouldReloadPlaylist(r)&&this.setAudioTrack(this.trackId)}onError(e,t){!t.fatal&&t.context&&(t.context.type!==lp||t.context.id!==this.trackId||this.groupIds&&-1===this.groupIds.indexOf(t.context.groupId)||(this.requestScheduled=-1,this.checkRetry(t)))}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(e){this.selectDefaultTrack=!1,this.setAudioTrack(e)}setAudioOption(e){const t=this.hls;if(t.config.audioPreference=e,e){const i=this.allAudioTracks;if(this.selectDefaultTrack=!1,i.length){const s=this.currentTrack;if(s&&bf(e,s,vf))return s;const r=Af(e,this.tracksInGroup,vf);if(r>-1){const e=this.tracksInGroup[r];return this.setAudioTrack(r),e}if(s){let s=t.loadLevel;-1===s&&(s=t.firstAutoLevel);const r=function(e,t,i,s,r){const a=t[s],o=t.reduce(((e,t,i)=>{const s=t.uri;return(e[s]||(e[s]=[])).push(i),e}),{})[a.uri];o.length>1&&(s=Math.max.apply(Math,o));const n=a.videoRange,l=a.frameRate,d=a.codecSet.substring(0,4),h=_f(t,s,(t=>{if(t.videoRange!==n||t.frameRate!==l||t.codecSet.substring(0,4)!==d)return!1;const s=t.audioGroups,a=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return Af(e,a,r)>-1}));return h>-1?h:_f(t,s,(t=>{const s=t.audioGroups,a=i.filter((e=>!s||-1!==s.indexOf(e.groupId)));return Af(e,a,r)>-1}))}(e,t.levels,i,s,vf);if(-1===r)return null;t.nextLoadLevel=r}if(e.channels||e.audioCodec){const t=Af(e,i);if(t>-1)return i[t]}}}return null}setAudioTrack(e){const t=this.tracksInGroup;if(e<0||e>=t.length)return void this.warn(`Invalid audio track id: ${e}`);this.clearTimer(),this.selectDefaultTrack=!1;const i=this.currentTrack,s=t[e],r=s.details&&!s.details.live;if(e===this.trackId&&s===i&&r)return;if(this.log(`Switching to audio-track ${e} "${s.name}" lang:${s.lang} group:${s.groupId} channels:${s.channels}`),this.trackId=e,this.currentTrack=s,this.hls.trigger(sc.AUDIO_TRACK_SWITCHING,Yh({},s)),r)return;const a=this.switchParams(s.url,null==i?void 0:i.details);this.loadPlaylist(a)}findTrackId(e){const t=this.tracksInGroup;for(let i=0;i{this.initialized&&(this.starved=!0),this.buffering=!0},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1},this.applyPlaylistData=e=>{try{this.apply(e,{ot:Ay.MANIFEST,su:!this.initialized})}catch(e){hc.warn("Could not generate manifest CMCD data.",e)}},this.applyFragmentData=e=>{try{const t=e.frag,i=this.hls.levels[t.level],s=this.getObjectType(t),r={d:1e3*t.duration,ot:s};s!==Ay.VIDEO&&s!==Ay.AUDIO&&s!=Ay.MUXED||(r.br=i.bitrate/1e3,r.tb=this.getTopBandwidth(s)/1e3,r.bl=this.getBufferLength(s)),this.apply(e,r)}catch(e){hc.warn("Could not generate segment CMCD data.",e)}},this.hls=e;const t=this.config=e.config,{cmcd:i}=t;null!=i&&(t.pLoader=this.createPlaylistLoader(),t.fLoader=this.createFragmentLoader(),this.sid=i.sessionId||function(){try{return crypto.randomUUID()}catch(e){try{const e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.slice(t.lastIndexOf("/")+1)}catch(e){let t=(new Date).getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{const i=(t+16*Math.random())%16|0;return t=Math.floor(t/16),("x"==e?i:3&i|8).toString(16)}))}}}(),this.cid=i.contentId,this.useHeaders=!0===i.useHeaders,this.includeKeys=i.includeKeys,this.registerListeners())}registerListeners(){const e=this.hls;e.on(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.on(sc.MEDIA_DETACHED,this.onMediaDetached,this),e.on(sc.BUFFER_CREATED,this.onBufferCreated,this)}unregisterListeners(){const e=this.hls;e.off(sc.MEDIA_ATTACHED,this.onMediaAttached,this),e.off(sc.MEDIA_DETACHED,this.onMediaDetached,this),e.off(sc.BUFFER_CREATED,this.onBufferCreated,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.hls=this.config=this.audioBuffer=this.videoBuffer=null,this.onWaiting=this.onPlaying=null}onMediaAttached(e,t){this.media=t.media,this.media.addEventListener("waiting",this.onWaiting),this.media.addEventListener("playing",this.onPlaying)}onMediaDetached(){this.media&&(this.media.removeEventListener("waiting",this.onWaiting),this.media.removeEventListener("playing",this.onPlaying),this.media=null)}onBufferCreated(e,t){var i,s;this.audioBuffer=null==(i=t.tracks.audio)?void 0:i.buffer,this.videoBuffer=null==(s=t.tracks.video)?void 0:s.buffer}createData(){var e;return{v:1,sf:by.HLS,sid:this.sid,cid:this.cid,pr:null==(e=this.media)?void 0:e.playbackRate,mtp:this.hls.bandwidthEstimate/1e3}}apply(e,t={}){Zh(t,this.createData());const i=t.ot===Ay.INIT||t.ot===Ay.VIDEO||t.ot===Ay.MUXED;this.starved&&i&&(t.bs=!0,t.su=!0,this.starved=!1),null==t.su&&(t.su=this.buffering);const{includeKeys:s}=this;s&&(t=Object.keys(t).reduce(((e,i)=>(s.includes(i)&&(e[i]=t[i]),e)),{})),this.useHeaders?(e.headers||(e.headers={}),Hy(e.headers,t)):e.url=$y(e.url,t)}getObjectType(e){const{type:t}=e;return"subtitle"===t?Ay.TIMED_TEXT:"initSegment"===e.sn?Ay.INIT:"audio"===t?Ay.AUDIO:"main"===t?this.hls.audioTracks.length?Ay.VIDEO:Ay.MUXED:void 0}getTopBandwidth(e){let t,i=0;const s=this.hls;if(e===Ay.AUDIO)t=s.audioTracks;else{const e=s.maxAutoLevel,i=e>-1?e+1:s.levels.length;t=s.levels.slice(0,i)}for(const e of t)e.bitrate>i&&(i=e.bitrate);return i>0?i:NaN}getBufferLength(e){const t=this.hls.media,i=e===Ay.AUDIO?this.audioBuffer:this.videoBuffer;if(!i||!t)return NaN;return 1e3*Lf.bufferInfo(i,t.currentTime,this.config.maxBufferHole).len}createPlaylistLoader(){const{pLoader:e}=this.config,t=this.applyPlaylistData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}createFragmentLoader(){const{fLoader:e}=this.config,t=this.applyFragmentData,i=e||this.config.loader;return class{constructor(e){this.loader=void 0,this.loader=new i(e)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(e,i,s){t(e),this.loader.load(e,i,s)}}}},contentSteeringController:class{constructor(e){this.hls=void 0,this.log=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this.pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=e,this.log=hc.log.bind(hc,"[content-steering]:"),this.registerListeners()}registerListeners(){const e=this.hls;e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.on(sc.ERROR,this.onError,this)}unregisterListeners(){const e=this.hls;e&&(e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(sc.MANIFEST_PARSED,this.onManifestParsed,this),e.off(sc.ERROR,this.onError,this))}startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){const e=1e3*this.timeToLoad-(performance.now()-this.updated);if(e>0)return void this.scheduleRefresh(this.uri,e)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(e){const t=this.levels;t&&(this.levels=t.filter((t=>t!==e)))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(e,t){const{contentSteering:i}=t;null!==i&&(this.pathwayId=i.pathwayId,this.uri=i.uri,this.started&&this.startLoad())}onManifestParsed(e,t){this.audioTracks=t.audioTracks,this.subtitleTracks=t.subtitleTracks}onError(e,t){const{errorAction:i}=t;if((null==i?void 0:i.action)===sf&&i.flags===nf){const e=this.levels;let s=this.pathwayPriority,r=this.pathwayId;if(t.context){const{groupId:i,pathwayId:s,type:a}=t.context;i&&e?r=this.getPathwayForGroupId(i,a,r):s&&(r=s)}r in this.penalizedPathways||(this.penalizedPathways[r]=performance.now()),!s&&e&&(s=e.reduce(((e,t)=>(-1===e.indexOf(t.pathwayId)&&e.push(t.pathwayId),e)),[])),s&&s.length>1&&(this.updatePathwayPriority(s),i.resolved=this.pathwayId!==r),i.resolved||hc.warn(`Could not resolve ${t.details} ("${t.error.message}") with content-steering for Pathway: ${r} levels: ${e?e.length:e} priorities: ${JSON.stringify(s)} penalized: ${JSON.stringify(this.penalizedPathways)}`)}}filterParsedLevels(e){this.levels=e;let t=this.getLevelsForPathway(this.pathwayId);if(0===t.length){const i=e[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${i}"`),t=this.getLevelsForPathway(i),this.pathwayId=i}return t.length!==e.length?(this.log(`Found ${t.length}/${e.length} levels in Pathway "${this.pathwayId}"`),t):e}getLevelsForPathway(e){return null===this.levels?[]:this.levels.filter((t=>e===t.pathwayId))}updatePathwayPriority(e){let t;this.pathwayPriority=e;const i=this.penalizedPathways,s=performance.now();Object.keys(i).forEach((e=>{s-i[e]>3e5&&delete i[e]}));for(let s=0;s0){this.log(`Setting Pathway to "${r}"`),this.pathwayId=r,$p(t),this.hls.trigger(sc.LEVELS_UPDATED,{levels:t});const e=this.hls.levels[a];o&&e&&this.levels&&(e.attrs["STABLE-VARIANT-ID"]!==o.attrs["STABLE-VARIANT-ID"]&&e.bitrate!==o.bitrate&&this.log(`Unstable Pathways change from bitrate ${o.bitrate} to ${e.bitrate}`),this.hls.nextLoadLevel=a);break}}}getPathwayForGroupId(e,t,i){const s=this.getLevelsForPathway(i).concat(this.levels||[]);for(let i=0;i{const{ID:r,"BASE-ID":a,"URI-REPLACEMENT":o}=e;if(t.some((e=>e.pathwayId===r)))return;const n=this.getLevelsForPathway(a).map((e=>{const t=new pc(e.attrs);t["PATHWAY-ID"]=r;const a=t.AUDIO&&`${t.AUDIO}_clone_${r}`,n=t.SUBTITLES&&`${t.SUBTITLES}_clone_${r}`;a&&(i[t.AUDIO]=a,t.AUDIO=a),n&&(s[t.SUBTITLES]=n,t.SUBTITLES=n);const l=Jy(e.uri,t["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",o),d=new Up({attrs:t,audioCodec:e.audioCodec,bitrate:e.bitrate,height:e.height,name:e.name,url:l,videoCodec:e.videoCodec,width:e.width});if(e.audioGroups)for(let t=1;t{this.log(`Loaded steering manifest: "${s}"`);const a=e.data;if(1!==a.VERSION)return void this.log(`Steering VERSION ${a.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=a.TTL;const{"RELOAD-URI":o,"PATHWAY-CLONES":n,"PATHWAY-PRIORITY":l}=a;if(o)try{this.uri=new self.URL(o,s).href}catch(e){return this.enabled=!1,void this.log(`Failed to parse Steering Manifest RELOAD-URI: ${o}`)}this.scheduleRefresh(this.uri||i.url),n&&this.clonePathways(n);const d={steeringManifest:a,url:s.toString()};this.hls.trigger(sc.STEERING_MANIFEST_LOADED,d),l&&this.updatePathwayPriority(l)},onError:(e,t,i,s)=>{if(this.log(`Error loading steering manifest: ${e.code} ${e.text} (${t.url})`),this.stopLoad(),410===e.code)return this.enabled=!1,void this.log(`Steering manifest ${t.url} no longer available`);let r=1e3*this.timeToLoad;if(429!==e.code)this.scheduleRefresh(this.uri||t.url,r);else{const e=this.loader;if("function"==typeof(null==e?void 0:e.getResponseHeader)){const t=e.getResponseHeader("Retry-After");t&&(r=1e3*parseFloat(t))}this.log(`Steering manifest ${t.url} rate limited`)}},onTimeout:(e,t,i)=>{this.log(`Timeout loading steering manifest (${t.url})`),this.scheduleRefresh(this.uri||t.url)}};this.log(`Requesting steering manifest: ${s}`),this.loader.load(r,n,l)}scheduleRefresh(e,t=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout((()=>{var t;const i=null==(t=this.hls)?void 0:t.media;!i||i.ended?this.scheduleRefresh(e,1e3*this.timeToLoad):this.loadSteeringManifest(e)}),t)}}});function sA(e){return e&&"object"==typeof e?Array.isArray(e)?e.map(sA):Object.keys(e).reduce(((t,i)=>(t[i]=sA(e[i]),t)),{}):e}function rA(e){const t=e.loader;if(t!==Qy&&t!==Ky)hc.log("[config]: Custom loader detected, cannot enable progressive streaming"),e.progressive=!1;else{(function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch(e){}return!1})()&&(e.loader=Qy,e.progressive=!0,e.enableSoftwareAES=!0,hc.log("[config]: Progressive streaming enabled, using FetchLoader"))}}let aA;class oA extends df{constructor(e,t){super(e,"[level-controller]"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.onParsedComplete=void 0,this.steering=t,this._registerListeners()}_registerListeners(){const{hls:e}=this;e.on(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.on(sc.MANIFEST_LOADED,this.onManifestLoaded,this),e.on(sc.LEVEL_LOADED,this.onLevelLoaded,this),e.on(sc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.on(sc.FRAG_BUFFERED,this.onFragBuffered,this),e.on(sc.ERROR,this.onError,this)}_unregisterListeners(){const{hls:e}=this;e.off(sc.MANIFEST_LOADING,this.onManifestLoading,this),e.off(sc.MANIFEST_LOADED,this.onManifestLoaded,this),e.off(sc.LEVEL_LOADED,this.onLevelLoaded,this),e.off(sc.LEVELS_UPDATED,this.onLevelsUpdated,this),e.off(sc.FRAG_BUFFERED,this.onFragBuffered,this),e.off(sc.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}stopLoad(){this._levels.forEach((e=>{e.loadError=0,e.fragmentError=0})),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1}onManifestLoading(e,t){this.resetLevels()}onManifestLoaded(e,t){const i=this.hls.config.preferManagedMediaSource,s=[],r={},a={};let o=!1,n=!1,l=!1;t.levels.forEach((e=>{var t,d;const h=e.attrs;let{audioCodec:c,videoCodec:u}=e;-1!==(null==(t=c)?void 0:t.indexOf("mp4a.40.34"))&&(aA||(aA=/chrome|firefox/i.test(navigator.userAgent)),aA&&(e.audioCodec=c=void 0)),c&&(e.audioCodec=c=$u(c,i)),0===(null==(d=u)?void 0:d.indexOf("avc1"))&&(u=e.videoCodec=function(e){const t=e.split(".");if(t.length>2){let e=t.shift()+".";return e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).slice(-4),e}return e}(u));const{width:p,height:f,unknownCodecs:m}=e;if(o||(o=!(!p||!f)),n||(n=!!u),l||(l=!!c),null!=m&&m.length||c&&!Ou(c,"audio",i)||u&&!Ou(u,"video",i))return;const{CODECS:g,"FRAME-RATE":y,"HDCP-LEVEL":A,"PATHWAY-ID":b,RESOLUTION:v,"VIDEO-RANGE":_}=h,S=`${`${b||"."}-`}${e.bitrate}-${v}-${y}-${g}-${_}-${A}`;if(r[S])if(r[S].uri===e.url||e.attrs["PATHWAY-ID"])r[S].addGroupId("audio",h.AUDIO),r[S].addGroupId("text",h.SUBTITLES);else{const t=a[S]+=1;e.attrs["PATHWAY-ID"]=new Array(t+1).join(".");const i=new Up(e);r[S]=i,s.push(i)}else{const t=new Up(e);r[S]=t,a[S]=1,s.push(t)}})),this.filterAndSortMediaOptions(s,t,o,n,l)}filterAndSortMediaOptions(e,t,i,s,r){let a=[],o=[],n=e;if((i||s)&&r&&(n=n.filter((({videoCodec:e,videoRange:t,width:i,height:s})=>{return(!!e||!(!i||!s))&&(!!(r=t)&&Lp.indexOf(r)>-1);var r}))),0===n.length)return void Promise.resolve().then((()=>{if(this.hls){t.levels.length&&this.warn(`One or more CODECS in variant not supported: ${JSON.stringify(t.levels[0].attrs)}`);const e=new Error("no level with compatible codecs found in manifest");this.hls.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:t.url,error:e,reason:e.message})}}));if(t.audioTracks){const{preferManagedMediaSource:e}=this.hls.config;a=t.audioTracks.filter((t=>!t.audioCodec||Ou(t.audioCodec,"audio",e))),nA(a)}t.subtitles&&(o=t.subtitles,nA(o));const l=n.slice(0);n.sort(((e,t)=>{if(e.attrs["HDCP-LEVEL"]!==t.attrs["HDCP-LEVEL"])return(e.attrs["HDCP-LEVEL"]||"")>(t.attrs["HDCP-LEVEL"]||"")?1:-1;if(i&&e.height!==t.height)return e.height-t.height;if(e.frameRate!==t.frameRate)return e.frameRate-t.frameRate;if(e.videoRange!==t.videoRange)return Lp.indexOf(e.videoRange)-Lp.indexOf(t.videoRange);if(e.videoCodec!==t.videoCodec){const i=zu(e.videoCodec),s=zu(t.videoCodec);if(i!==s)return s-i}if(e.uri===t.uri&&e.codecSet!==t.codecSet){const i=Gu(e.codecSet),s=Gu(t.codecSet);if(i!==s)return s-i}return e.averageBitrate!==t.averageBitrate?e.averageBitrate-t.averageBitrate:0}));let d=l[0];if(this.steering&&(n=this.steering.filterParsedLevels(n),n.length!==l.length))for(let e=0;ei&&i===iA.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=e)}break}const c=r&&!s,u={levels:n,audioTracks:a,subtitleTracks:o,sessionData:t.sessionData,sessionKeys:t.sessionKeys,firstLevel:this._firstLevel,stats:t.stats,audio:r,video:s,altAudio:!c&&a.some((e=>!!e.url))};this.hls.trigger(sc.MANIFEST_PARSED,u),(this.hls.config.autoStartLoad||this.hls.forceStartLoad)&&this.hls.startLoad(this.hls.config.startPosition)}get levels(){return 0===this._levels.length?null:this._levels}get level(){return this.currentLevelIndex}set level(e){const t=this._levels;if(0===t.length)return;if(e<0||e>=t.length){const i=new Error("invalid level idx"),s=e<0;if(this.hls.trigger(sc.ERROR,{type:rc.OTHER_ERROR,details:ac.LEVEL_SWITCH_ERROR,level:e,fatal:s,error:i,reason:i.message}),s)return;e=Math.min(e,t.length-1)}const i=this.currentLevelIndex,s=this.currentLevel,r=s?s.attrs["PATHWAY-ID"]:void 0,a=t[e],o=a.attrs["PATHWAY-ID"];if(this.currentLevelIndex=e,this.currentLevel=a,i===e&&a.details&&s&&r===o)return;this.log(`Switching to level ${e} (${a.height?a.height+"p ":""}${a.videoRange?a.videoRange+" ":""}${a.codecSet?a.codecSet+" ":""}@${a.bitrate})${o?" with Pathway "+o:""} from level ${i}${r?" with Pathway "+r:""}`);const n={level:e,attrs:a.attrs,details:a.details,bitrate:a.bitrate,averageBitrate:a.averageBitrate,maxBitrate:a.maxBitrate,realBitrate:a.realBitrate,width:a.width,height:a.height,codecSet:a.codecSet,audioCodec:a.audioCodec,videoCodec:a.videoCodec,audioGroups:a.audioGroups,subtitleGroups:a.subtitleGroups,loaded:a.loaded,loadError:a.loadError,fragmentError:a.fragmentError,name:a.name,id:a.id,uri:a.uri,url:a.url,urlId:0,audioGroupIds:a.audioGroupIds,textGroupIds:a.textGroupIds};this.hls.trigger(sc.LEVEL_SWITCHING,n);const l=a.details;if(!l||l.live){const e=this.switchParams(a.uri,null==s?void 0:s.details);this.loadPlaylist(e)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(e){this.manualLevelIndex=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}get firstLevel(){return this._firstLevel}set firstLevel(e){this._firstLevel=e}get startLevel(){if(void 0===this._startLevel){const e=this.hls.config.startLevel;return void 0!==e?e:this.hls.firstAutoLevel}return this._startLevel}set startLevel(e){this._startLevel=e}onError(e,t){!t.fatal&&t.context&&t.context.type===np&&t.context.level===this.level&&this.checkRetry(t)}onFragBuffered(e,{frag:t}){if(void 0!==t&&t.type===hp){const e=t.elementaryStreams;if(!Object.keys(e).some((t=>!!e[t])))return;const i=this._levels[t.level];null!=i&&i.loadError&&(this.log(`Resetting level error count of ${i.loadError} on frag buffered`),i.loadError=0)}}onLevelLoaded(e,t){var i;const{level:s,details:r}=t,a=this._levels[s];var o;if(!a)return this.warn(`Invalid level index ${s}`),void(null!=(o=t.deliveryDirectives)&&o.skip&&(r.deltaUpdateFailed=!0));s===this.currentLevelIndex?(0===a.fragmentError&&(a.loadError=0),this.playlistLoaded(s,t,a.details)):null!=(i=t.deliveryDirectives)&&i.skip&&(r.deltaUpdateFailed=!0)}loadPlaylist(e){super.loadPlaylist();const t=this.currentLevelIndex,i=this.currentLevel;if(i&&this.shouldLoadPlaylist(i)){let s=i.uri;if(e)try{s=e.addDirectives(s)}catch(e){this.warn(`Could not construct new URL with HLS Delivery Directives: ${e}`)}const r=i.attrs["PATHWAY-ID"];this.log(`Loading level index ${t}${void 0!==(null==e?void 0:e.msn)?" at sn "+e.msn+" part "+e.part:""} with${r?" Pathway "+r:""} ${s}`),this.clearTimer(),this.hls.trigger(sc.LEVEL_LOADING,{url:s,level:t,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:e||null})}}get nextLoadLevel(){return-1!==this.manualLevelIndex?this.manualLevelIndex:this.hls.nextAutoLevel}set nextLoadLevel(e){this.level=e,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=e)}removeLevel(e){var t;const i=this._levels.filter(((t,i)=>i!==e||(this.steering&&this.steering.removeLevel(t),t===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,t.details&&t.details.fragments.forEach((e=>e.level=-1))),!1)));$p(i),this._levels=i,this.currentLevelIndex>-1&&null!=(t=this.currentLevel)&&t.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.hls.trigger(sc.LEVELS_UPDATED,{levels:i})}onLevelsUpdated(e,{levels:t}){this._levels=t}checkMaxAutoUpdated(){const{autoLevelCapping:e,maxAutoLevel:t,maxHdcpLevel:i}=this.hls;this._maxAutoLevel!==t&&(this._maxAutoLevel=t,this.hls.trigger(sc.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:e,levels:this.levels,maxAutoLevel:t,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:i}))}}function nA(e){const t={};e.forEach((e=>{const i=e.groupId||"";e.id=t[i]=t[i]||0,t[i]++}))}class lA{constructor(e){this.config=void 0,this.keyUriToKeyInfo={},this.emeController=null,this.config=e}abort(e){for(const i in this.keyUriToKeyInfo){const s=this.keyUriToKeyInfo[i].loader;if(s){var t;if(e&&e!==(null==(t=s.context)?void 0:t.frag.type))return;s.abort()}}}detach(){for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e];(t.mediaKeySessionContext||t.decryptdata.isCommonEncryption)&&delete this.keyUriToKeyInfo[e]}}destroy(){this.detach();for(const e in this.keyUriToKeyInfo){const t=this.keyUriToKeyInfo[e].loader;t&&t.destroy()}this.keyUriToKeyInfo={}}createKeyLoadError(e,t=ac.KEY_LOAD_ERROR,i,s,r){return new Gf({type:rc.NETWORK_ERROR,details:t,fatal:!1,frag:e,response:r,error:i,networkDetails:s})}loadClear(e,t){if(this.emeController&&this.config.emeEnabled){const{sn:i,cc:s}=e;for(let e=0;e{r.setKeyFormat(e)}));break}}}}load(e){return!e.decryptdata&&e.encrypted&&this.emeController?this.emeController.selectKeySystemFormat(e).then((t=>this.loadInternal(e,t))):this.loadInternal(e)}loadInternal(e,t){var i,s;t&&e.setKeyFormat(t);const r=e.decryptdata;if(!r){const i=new Error(t?`Expected frag.decryptdata to be defined after setting format ${t}`:"Missing decryption data on fragment in onKeyLoading");return Promise.reject(this.createKeyLoadError(e,ac.KEY_LOAD_ERROR,i))}const a=r.uri;if(!a)return Promise.reject(this.createKeyLoadError(e,ac.KEY_LOAD_ERROR,new Error(`Invalid key URI: "${a}"`)));let o=this.keyUriToKeyInfo[a];if(null!=(i=o)&&i.decryptdata.key)return r.key=o.decryptdata.key,Promise.resolve({frag:e,keyInfo:o});var n;if(null!=(s=o)&&s.keyLoadPromise)switch(null==(n=o.mediaKeySessionContext)?void 0:n.keyStatus){case void 0:case"status-pending":case"usable":case"usable-in-future":return o.keyLoadPromise.then((t=>(r.key=t.keyInfo.decryptdata.key,{frag:e,keyInfo:o})))}switch(o=this.keyUriToKeyInfo[a]={decryptdata:r,keyLoadPromise:null,loader:null,mediaKeySessionContext:null},r.method){case"ISO-23001-7":case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===r.keyFormat?this.loadKeyHTTP(o,e):this.loadKeyEME(o,e);case"AES-128":return this.loadKeyHTTP(o,e);default:return Promise.reject(this.createKeyLoadError(e,ac.KEY_LOAD_ERROR,new Error(`Key supplied with unsupported METHOD: "${r.method}"`)))}}loadKeyEME(e,t){const i={frag:t,keyInfo:e};if(this.emeController&&this.config.emeEnabled){const t=this.emeController.loadKey(i);if(t)return(e.keyLoadPromise=t.then((t=>(e.mediaKeySessionContext=t,i)))).catch((t=>{throw e.keyLoadPromise=null,t}))}return Promise.resolve(i)}loadKeyHTTP(e,t){const i=this.config,s=new(0,i.loader)(i);return t.keyLoader=e.loader=s,e.keyLoadPromise=new Promise(((r,a)=>{const o={keyInfo:e,frag:t,responseType:"arraybuffer",url:e.decryptdata.uri},n=i.keyLoadPolicy.default,l={loadPolicy:n,timeout:n.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0},d={onSuccess:(e,t,i,s)=>{const{frag:o,keyInfo:n,url:l}=i;if(!o.decryptdata||n!==this.keyUriToKeyInfo[l])return a(this.createKeyLoadError(o,ac.KEY_LOAD_ERROR,new Error("after key load, decryptdata unset or changed"),s));n.decryptdata.key=o.decryptdata.key=new Uint8Array(e.data),o.keyLoader=null,n.loader=null,r({frag:o,keyInfo:n})},onError:(e,i,s,r)=>{this.resetLoader(i),a(this.createKeyLoadError(t,ac.KEY_LOAD_ERROR,new Error(`HTTP Error ${e.code} loading key ${e.text}`),s,Yh({url:o.url,data:void 0},e)))},onTimeout:(e,i,s)=>{this.resetLoader(i),a(this.createKeyLoadError(t,ac.KEY_LOAD_TIMEOUT,new Error("key loading timed out"),s))},onAbort:(e,i,s)=>{this.resetLoader(i),a(this.createKeyLoadError(t,ac.INTERNAL_ABORTED,new Error("key loading aborted"),s))}};s.load(o,l,d)}))}resetLoader(e){const{frag:t,keyInfo:i,url:s}=e,r=i.loader;t.keyLoader===r&&(t.keyLoader=null,i.loader=null),delete this.keyUriToKeyInfo[s],r&&r.destroy()}}function dA(){return self.SourceBuffer||self.WebKitSourceBuffer}function hA(){if(!Uu())return!1;const e=dA();return!e||e.prototype&&"function"==typeof e.prototype.appendBuffer&&"function"==typeof e.prototype.remove}class cA{constructor(e,t,i,s){this.config=void 0,this.media=null,this.fragmentTracker=void 0,this.hls=void 0,this.nudgeRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.config=e,this.media=t,this.fragmentTracker=i,this.hls=s}destroy(){this.media=null,this.hls=this.fragmentTracker=null}poll(e,t){const{config:i,media:s,stalled:r}=this;if(null===s)return;const{currentTime:a,seeking:o}=s,n=this.seeking&&!o,l=!this.seeking&&o;if(this.seeking=o,a!==e){if(this.moved=!0,o||(this.nudgeRetry=0),null!==r){if(this.stallReported){const e=self.performance.now()-r;hc.warn(`playback not stuck anymore @${a}, after ${Math.round(e)}ms`),this.stallReported=!1}this.stalled=null}return}if(l||n)return void(this.stalled=null);if(s.paused&&!o||s.ended||0===s.playbackRate||!Lf.getBuffered(s).length)return void(this.nudgeRetry=0);const d=Lf.bufferInfo(s,a,0),h=d.nextStart||0;if(o){const e=d.len>2,i=!h||t&&t.start<=a||h-a>2&&!this.fragmentTracker.getPartialFragment(a);if(e||i)return;this.moved=!1}if(!this.moved&&null!==this.stalled){var c;if(!(d.len>0)&&!h)return;const e=Math.max(h,d.start||0)-a,t=this.hls.levels?this.hls.levels[this.hls.currentLevel]:null,i=(null==t||null==(c=t.details)?void 0:c.live)?2*t.details.targetduration:2,r=this.fragmentTracker.getPartialFragment(a);if(e>0&&(e<=i||r))return void(s.paused||this._trySkipBufferHole(r))}const u=self.performance.now();if(null===r)return void(this.stalled=u);const p=u-r;if(!o&&p>=250&&(this._reportStall(d),!this.media))return;const f=Lf.bufferInfo(s,a,i.maxBufferHole);this._tryFixBufferStall(f,p)}_tryFixBufferStall(e,t){const{config:i,fragmentTracker:s,media:r}=this;if(null===r)return;const a=r.currentTime,o=s.getPartialFragment(a);if(o){if(this._trySkipBufferHole(o)||!this.media)return}(e.len>i.maxBufferHole||e.nextStart&&e.nextStart-a1e3*i.highBufferWatchdogPeriod&&(hc.warn("Trying to nudge playhead over buffer-hole"),this.stalled=null,this._tryNudgeBuffer())}_reportStall(e){const{hls:t,media:i,stallReported:s}=this;if(!s&&i){this.stallReported=!0;const s=new Error(`Playback stalling at @${i.currentTime} due to low buffer (${JSON.stringify(e)})`);hc.warn(s.message),t.trigger(sc.ERROR,{type:rc.MEDIA_ERROR,details:ac.BUFFER_STALLED_ERROR,fatal:!1,error:s,buffer:e.len})}}_trySkipBufferHole(e){const{config:t,hls:i,media:s}=this;if(null===s)return 0;const r=s.currentTime,a=Lf.bufferInfo(s,r,0),o=r0&&a.len<1&&s.readyState<3,d=o-r;if(d>0&&(n||l)){if(d>t.maxBufferHole){const{fragmentTracker:t}=this;let i=!1;if(0===r){const e=t.getAppendedFrag(0,hp);e&&o1?(e=0,this.bitrateTest=!0):e=i.firstAutoLevel),i.nextLoadLevel=e,this.level=i.loadLevel,this.loadedmetadata=!1}t>0&&-1===e&&(this.log(`Override startPosition with lastCurrentTime @${t.toFixed(3)}`),e=t),this.state=Kf,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this._forceStartLoad=!0,this.state=qf}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case am:{const{levels:e,level:t}=this,i=null==e?void 0:e[t],s=null==i?void 0:i.details;if(s&&(!s.live||this.levelLastLoaded===i)){if(this.waitForCdnTuneIn(s))break;this.state=Kf;break}if(this.hls.nextLoadLevel!==this.level){this.state=Kf;break}break}case Xf:{var e;const t=self.performance.now(),i=this.retryDate;if(!i||t>=i||null!=(e=this.media)&&e.seeking){const{levels:e,level:t}=this,i=null==e?void 0:e[t];this.resetStartWhenNotLoaded(i||null),this.state=Kf}}}this.state===Kf&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){super.onTickEnd(),this.checkBuffer(),this.checkFragmentChanged()}doTickIdle(){const{hls:e,levelLastLoaded:t,levels:i,media:s}=this;if(null===t||!s&&(this.startFragRequested||!e.config.startFragPrefetch))return;if(this.altAudio&&this.audioOnly)return;const r=e.nextLoadLevel;if(null==i||!i[r])return;const a=i[r],o=this.getMainFwdBufferInfo();if(null===o)return;const n=this.getLevelDetails();if(n&&this._streamEnded(o,n)){const e={};return this.altAudio&&(e.type="video"),this.hls.trigger(sc.BUFFER_EOS,e),void(this.state=im)}e.loadLevel!==r&&-1===e.manualLevel&&this.log(`Adapting to level ${r} from level ${this.level}`),this.level=e.nextLoadLevel=r;const l=a.details;if(!l||this.state===am||l.live&&this.levelLastLoaded!==a)return this.level=r,void(this.state=am);const d=o.len,h=this.getMaxBufferLength(a.maxBitrate);if(d>=h)return;this.backtrackFragment&&this.backtrackFragment.start>o.end&&(this.backtrackFragment=null);const c=this.backtrackFragment?this.backtrackFragment.start:o.end;let u=this.getNextFragment(c,l);if(this.couldBacktrack&&!this.fragPrevious&&u&&"initSegment"!==u.sn&&this.fragmentTracker.getState(u)!==kf){var p;const e=(null!=(p=this.backtrackFragment)?p:u).sn-l.startSN,t=l.fragments[e-1];t&&u.cc===t.cc&&(u=t,this.fragmentTracker.removeFragment(t))}else this.backtrackFragment&&o.len&&(this.backtrackFragment=null);if(u&&this.isLoopLoading(u,c)){if(!u.gap){const e=this.audioOnly&&!this.altAudio?yc:Ac,t=(e===Ac?this.videoBuffer:this.mediaBuffer)||this.media;t&&this.afterBufferFlushed(t,e,hp)}u=this.getNextFragmentLoopLoading(u,l,o,hp,h)}u&&(!u.initSegment||u.initSegment.data||this.bitrateTest||(u=u.initSegment),this.loadFragment(u,a,c))}loadFragment(e,t,i){const s=this.fragmentTracker.getState(e);this.fragCurrent=e,s===wf||s===Tf?"initSegment"===e.sn?this._loadInitSegment(e,t):this.bitrateTest?(this.log(`Fragment ${e.sn} of level ${e.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(e,t)):(this.startFragRequested=!0,super.loadFragment(e,t,i)):this.clearTrackerIfNeeded(e)}getBufferedFrag(e){return this.fragmentTracker.getBufferedFrag(e,hp)}followingBufferedFrag(e){return e?this.getBufferedFrag(e.end+.5):null}immediateLevelSwitch(){this.abortCurrentFrag(),this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}nextLevelSwitch(){const{levels:e,media:t}=this;if(null!=t&&t.readyState){let i;const s=this.getAppendedFrag(t.currentTime);s&&s.start>1&&this.flushMainBuffer(0,s.start-1);const r=this.getLevelDetails();if(null!=r&&r.live){const e=this.getMainFwdBufferInfo();if(!e||e.len<2*r.targetduration)return}if(!t.paused&&e){const t=e[this.hls.nextLoadLevel],s=this.fragLastKbps;i=s&&this.fragCurrent?this.fragCurrent.duration*t.maxBitrate/(1e3*s)+1:0}else i=0;const a=this.getBufferedFrag(t.currentTime+i);if(a){const e=this.followingBufferedFrag(a);if(e){this.abortCurrentFrag();const t=e.maxStartPTS?e.maxStartPTS:e.start,i=e.duration,s=Math.max(a.end,t+Math.min(Math.max(i-this.config.maxFragLookUpTolerance,i*(this.couldBacktrack?.5:.125)),i*(this.couldBacktrack?.75:.25)));this.flushMainBuffer(s,Number.POSITIVE_INFINITY)}}}}abortCurrentFrag(){const e=this.fragCurrent;switch(this.fragCurrent=null,this.backtrackFragment=null,e&&(e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.state){case Yf:case Qf:case Xf:case em:case tm:this.state=Kf}this.nextLoadPosition=this.getLoadPosition()}flushMainBuffer(e,t){super.flushMainBuffer(e,t,this.altAudio?"video":null)}onMediaAttached(e,t){super.onMediaAttached(e,t);const i=t.media;this.onvplaying=this.onMediaPlaying.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),i.addEventListener("playing",this.onvplaying),i.addEventListener("seeked",this.onvseeked),this.gapController=new cA(this.config,i,this.fragmentTracker,this.hls)}onMediaDetaching(){const{media:e}=this;e&&this.onvplaying&&this.onvseeked&&(e.removeEventListener("playing",this.onvplaying),e.removeEventListener("seeked",this.onvseeked),this.onvplaying=this.onvseeked=null,this.videoBuffer=null),this.fragPlaying=null,this.gapController&&(this.gapController.destroy(),this.gapController=null),super.onMediaDetaching()}onMediaPlaying(){this.tick()}onMediaSeeked(){const e=this.media,t=e?e.currentTime:null;ec(t)&&this.log(`Media seeked to ${t.toFixed(3)}`);const i=this.getMainFwdBufferInfo();null!==i&&0!==i.len?this.tick():this.warn(`Main forward buffer length on "seeked" event ${i?i.len:"empty"})`)}onManifestLoading(){this.log("Trigger BUFFER_RESET"),this.hls.trigger(sc.BUFFER_RESET,void 0),this.fragmentTracker.removeAllFragments(),this.couldBacktrack=!1,this.startPosition=this.lastCurrentTime=this.fragLastKbps=0,this.levels=this.fragPlaying=this.backtrackFragment=this.levelLastLoaded=null,this.altAudio=this.audioOnly=this.startFragRequested=!1}onManifestParsed(e,t){let i=!1,s=!1;t.levels.forEach((e=>{const t=e.audioCodec;t&&(i=i||-1!==t.indexOf("mp4a.40.2"),s=s||-1!==t.indexOf("mp4a.40.5"))})),this.audioCodecSwitch=i&&s&&!function(){var e;const t=dA();return"function"==typeof(null==t||null==(e=t.prototype)?void 0:e.changeType)}(),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=t.levels,this.startFragRequested=!1}onLevelLoading(e,t){const{levels:i}=this;if(!i||this.state!==Kf)return;const s=i[t.level];(!s.details||s.details.live&&this.levelLastLoaded!==s||this.waitForCdnTuneIn(s.details))&&(this.state=am)}onLevelLoaded(e,t){var i;const{levels:s}=this,r=t.level,a=t.details,o=a.totalduration;if(!s)return void this.warn(`Levels were reset while loading level ${r}`);this.log(`Level ${r} loaded [${a.startSN},${a.endSN}]${a.lastPartSn?`[part-${a.lastPartSn}-${a.lastPartIndex}]`:""}, cc [${a.startCC}, ${a.endCC}] duration:${o}`);const n=s[r],l=this.fragCurrent;!l||this.state!==Qf&&this.state!==Xf||l.level!==t.level&&l.loader&&this.abortCurrentFrag();let d=0;if(a.live||null!=(i=n.details)&&i.live){var h;if(this.checkLiveUpdate(a),a.deltaUpdateFailed)return;d=this.alignPlaylists(a,n.details,null==(h=this.levelLastLoaded)?void 0:h.details)}if(n.details=a,this.levelLastLoaded=n,this.hls.trigger(sc.LEVEL_UPDATED,{details:a,level:r}),this.state===am){if(this.waitForCdnTuneIn(a))return;this.state=Kf}this.startFragRequested?a.live&&this.synchronizeToLiveEdge(a):this.setStartPosition(a,d),this.tick()}_handleFragmentLoadProgress(e){var t;const{frag:i,part:s,payload:r}=e,{levels:a}=this;if(!a)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${i.sn} of level ${i.level} will not be buffered`);const o=a[i.level],n=o.details;if(!n)return this.warn(`Dropping fragment ${i.sn} of level ${i.level} after level details were reset`),void this.fragmentTracker.removeFragment(i);const l=o.videoCodec,d=n.PTSKnown||!n.live,h=null==(t=i.initSegment)?void 0:t.data,c=this._getAudioCodec(o),u=this.transmuxer=this.transmuxer||new ug(this.hls,hp,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),p=s?s.index:-1,f=-1!==p,m=new Pf(i.level,i.sn,i.stats.chunkCount,r.byteLength,p,f),g=this.initPTS[i.cc];u.push(r,h,c,l,i,s,n.totalduration,d,m,g)}onAudioTrackSwitching(e,t){const i=this.altAudio;if(!!!t.url){if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;const e=this.fragCurrent;e&&(this.log("Switching to main audio track, cancel main fragment load"),e.abortRequests(),this.fragmentTracker.removeFragment(e)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();const e=this.hls;i&&(e.trigger(sc.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:null}),this.fragmentTracker.removeAllFragments()),e.trigger(sc.AUDIO_TRACK_SWITCHED,t)}}onAudioTrackSwitched(e,t){const i=t.id,s=!!this.hls.audioTracks[i].url;if(s){const e=this.videoBuffer;e&&this.mediaBuffer!==e&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=e)}this.altAudio=s,this.tick()}onBufferCreated(e,t){const i=t.tracks;let s,r,a=!1;for(const e in i){const t=i[e];if("main"===t.id){if(r=e,s=t,"video"===e){const t=i[e];t&&(this.videoBuffer=t.buffer)}}else a=!0}a&&s?(this.log(`Alternate track found, use ${r}.buffered to schedule main fragment loading`),this.mediaBuffer=s.buffer):this.mediaBuffer=this.media}onFragBuffered(e,t){const{frag:i,part:s}=t;if(i&&i.type!==hp)return;if(this.fragContextChanged(i))return this.warn(`Fragment ${i.sn}${s?" p: "+s.index:""} of level ${i.level} finished buffering, but was aborted. state: ${this.state}`),void(this.state===tm&&(this.state=Kf));const r=s?s.stats:i.stats;this.fragLastKbps=Math.round(8*r.total/(r.buffering.end-r.loading.first)),"initSegment"!==i.sn&&(this.fragPrevious=i),this.fragBufferedComplete(i,s)}onError(e,t){var i;if(t.fatal)this.state=sm;else switch(t.details){case ac.FRAG_GAP:case ac.FRAG_PARSING_ERROR:case ac.FRAG_DECRYPT_ERROR:case ac.FRAG_LOAD_ERROR:case ac.FRAG_LOAD_TIMEOUT:case ac.KEY_LOAD_ERROR:case ac.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(hp,t);break;case ac.LEVEL_LOAD_ERROR:case ac.LEVEL_LOAD_TIMEOUT:case ac.LEVEL_PARSING_ERROR:t.levelRetry||this.state!==am||(null==(i=t.context)?void 0:i.type)!==np||(this.state=Kf);break;case ac.BUFFER_APPEND_ERROR:case ac.BUFFER_FULL_ERROR:if(!t.parent||"main"!==t.parent)return;if(t.details===ac.BUFFER_APPEND_ERROR)return void this.resetLoadingState();this.reduceLengthAndFlushBuffer(t)&&this.flushMainBuffer(0,Number.POSITIVE_INFINITY);break;case ac.INTERNAL_EXCEPTION:this.recoverWorkerError(t)}}checkBuffer(){const{media:e,gapController:t}=this;if(e&&t&&e.readyState){if(this.loadedmetadata||!Lf.getBuffered(e).length){const e=this.state!==Kf?this.fragCurrent:null;t.poll(this.lastCurrentTime,e)}this.lastCurrentTime=e.currentTime}}onFragLoadEmergencyAborted(){this.state=Kf,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tickImmediate()}onBufferFlushed(e,{type:t}){if(t!==yc||this.audioOnly&&!this.altAudio){const e=(t===Ac?this.videoBuffer:this.mediaBuffer)||this.media;this.afterBufferFlushed(e,t,hp),this.tick()}}onLevelsUpdated(e,t){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level),this.levels=t.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){const{media:e}=this;if(!e)return;const t=e.currentTime;let i=this.startPosition;if(i>=0&&t0&&(r{const{hls:s}=this;if(!i||this.fragContextChanged(e))return;t.fragmentError=0,this.state=Kf,this.startFragRequested=!1,this.bitrateTest=!1;const r=e.stats;r.parsing.start=r.parsing.end=r.buffering.start=r.buffering.end=self.performance.now(),s.trigger(sc.FRAG_LOADED,i),e.bitrateTest=!1}))}_handleTransmuxComplete(e){var t;const i="main",{hls:s}=this,{remuxResult:r,chunkMeta:a}=e,o=this.getCurrentContext(a);if(!o)return void this.resetWhenMissingContext(a);const{frag:n,part:l,level:d}=o,{video:h,text:c,id3:u,initSegment:p}=r,{details:f}=d,m=this.altAudio?void 0:r.audio;if(this.fragContextChanged(n))this.fragmentTracker.removeFragment(n);else{if(this.state=em,p){if(null!=p&&p.tracks){const e=n.initSegment||n;this._bufferInitSegment(d,p.tracks,e,a),s.trigger(sc.FRAG_PARSING_INIT_SEGMENT,{frag:e,id:i,tracks:p.tracks})}const e=p.initPTS,t=p.timescale;ec(e)&&(this.initPTS[n.cc]={baseTime:e,timescale:t},s.trigger(sc.INIT_PTS_FOUND,{frag:n,id:i,initPTS:e,timescale:t}))}if(h&&f&&"initSegment"!==n.sn){const e=f.fragments[n.sn-1-f.startSN],t=n.sn===f.startSN,i=!e||n.cc>e.cc;if(!1!==r.independent){const{startPTS:e,endPTS:s,startDTS:r,endDTS:o}=h;if(l)l.elementaryStreams[h.type]={startPTS:e,endPTS:s,startDTS:r,endDTS:o};else if(h.firstKeyFrame&&h.independent&&1===a.id&&!i&&(this.couldBacktrack=!0),h.dropped&&h.independent){const r=this.getMainFwdBufferInfo(),a=(r?r.end:this.getLoadPosition())+this.config.maxBufferHole,l=h.firstKeyFramePTS?h.firstKeyFramePTS:e;if(!t&&a2&&(n.gap=!0);n.setElementaryStreamInfo(h.type,e,s,r,o),this.backtrackFragment&&(this.backtrackFragment=n),this.bufferFragmentData(h,n,l,a,t||i)}else{if(!t&&!i)return void this.backtrack(n);n.gap=!0}}if(m){const{startPTS:e,endPTS:t,startDTS:i,endDTS:s}=m;l&&(l.elementaryStreams[yc]={startPTS:e,endPTS:t,startDTS:i,endDTS:s}),n.setElementaryStreamInfo(yc,e,t,i,s),this.bufferFragmentData(m,n,l,a)}if(f&&null!=u&&null!=(t=u.samples)&&t.length){const e={id:i,frag:n,details:f,samples:u.samples};s.trigger(sc.FRAG_PARSING_METADATA,e)}if(f&&c){const e={id:i,frag:n,details:f,samples:c.samples};s.trigger(sc.FRAG_PARSING_USERDATA,e)}}}_bufferInitSegment(e,t,i,s){if(this.state!==em)return;this.audioOnly=!!t.audio&&!t.video,this.altAudio&&!this.audioOnly&&delete t.audio;const{audio:r,video:a,audiovideo:o}=t;if(r){let t=e.audioCodec;const i=navigator.userAgent.toLowerCase();this.audioCodecSwitch&&(t&&(t=-1!==t.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),1!==r.metadata.channelCount&&-1===i.indexOf("firefox")&&(t="mp4a.40.5")),t&&-1!==t.indexOf("mp4a.40.5")&&-1!==i.indexOf("android")&&"audio/mpeg"!==r.container&&(t="mp4a.40.2",this.log(`Android: force audio codec to ${t}`)),e.audioCodec&&e.audioCodec!==t&&this.log(`Swapping manifest audio codec "${e.audioCodec}" for "${t}"`),r.levelCodec=t,r.id="main",this.log(`Init audio buffer, container:${r.container}, codecs[selected/level/parsed]=[${t||""}/${e.audioCodec||""}/${r.codec}]`)}a&&(a.levelCodec=e.videoCodec,a.id="main",this.log(`Init video buffer, container:${a.container}, codecs[level/parsed]=[${e.videoCodec||""}/${a.codec}]`)),o&&this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${e.codecs}/${o.codec}]`),this.hls.trigger(sc.BUFFER_CODECS,t),Object.keys(t).forEach((e=>{const r=t[e].initSegment;null!=r&&r.byteLength&&this.hls.trigger(sc.BUFFER_APPENDING,{type:e,data:r,frag:i,part:null,chunkMeta:s,parent:i.type})})),this.tickImmediate()}getMainFwdBufferInfo(){return this.getFwdBufferInfo(this.mediaBuffer?this.mediaBuffer:this.media,hp)}backtrack(e){this.couldBacktrack=!0,this.backtrackFragment=e,this.resetTransmuxer(),this.flushBufferGap(e),this.fragmentTracker.removeFragment(e),this.fragPrevious=null,this.nextLoadPosition=e.start,this.state=Kf}checkFragmentChanged(){const e=this.media;let t=null;if(e&&e.readyState>1&&!1===e.seeking){const i=e.currentTime;if(Lf.isBuffered(e,i)?t=this.getAppendedFrag(i):Lf.isBuffered(e,i+.1)&&(t=this.getAppendedFrag(i+.1)),t){this.backtrackFragment=null;const e=this.fragPlaying,i=t.level;e&&t.sn===e.sn&&e.level===i||(this.fragPlaying=t,this.hls.trigger(sc.FRAG_CHANGED,{frag:t}),e&&e.level===i||this.hls.trigger(sc.LEVEL_SWITCHED,{level:i}))}}}get nextLevel(){const e=this.nextBufferedFrag;return e?e.level:-1}get currentFrag(){const e=this.media;return e?this.fragPlaying||this.getAppendedFrag(e.currentTime):null}get currentProgramDateTime(){const e=this.media;if(e){const t=e.currentTime,i=this.currentFrag;if(i&&ec(t)&&ec(i.programDateTime)){const e=i.programDateTime+1e3*(t-i.start);return new Date(e)}}return null}get currentLevel(){const e=this.currentFrag;return e?e.level:-1}get nextBufferedFrag(){const e=this.currentFrag;return e?this.followingBufferedFrag(e):null}get forceStartLoad(){return this._forceStartLoad}}class pA{static get version(){return"1.5.7"}static isMSESupported(){return hA()}static isSupported(){return function(){if(!hA())return!1;const e=Uu();return"function"==typeof(null==e?void 0:e.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some((t=>e.isTypeSupported(ju(t,"video"))))||["mp4a.40.2","fLaC"].some((t=>e.isTypeSupported(ju(t,"audio")))))}()}static getMediaSource(){return Uu()}static get Events(){return sc}static get ErrorTypes(){return rc}static get ErrorDetails(){return ac}static get DefaultConfig(){return pA.defaultConfig?pA.defaultConfig:iA}static set DefaultConfig(e){pA.defaultConfig=e}constructor(e={}){this.config=void 0,this.userConfig=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this.started=!1,this._emitter=new cg,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.streamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this.url=null,this.triggeringException=void 0,function(e,t){if("object"==typeof console&&!0===e||"object"==typeof e){dc(e,"debug","log","info","warn","error");try{lc.log(`Debug logs enabled for "${t}" in hls.js version 1.5.7`)}catch(e){lc=nc}}else lc=nc}(e.debug||!1,"Hls instance");const t=this.config=function(e,t){if((t.liveSyncDurationCount||t.liveMaxLatencyDurationCount)&&(t.liveSyncDuration||t.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==t.liveMaxLatencyDurationCount&&(void 0===t.liveSyncDurationCount||t.liveMaxLatencyDurationCount<=t.liveSyncDurationCount))throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==t.liveMaxLatencyDuration&&(void 0===t.liveSyncDuration||t.liveMaxLatencyDuration<=t.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');const i=sA(e),s=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach((e=>{const r=`${"level"===e?"playlist":e}LoadPolicy`,a=void 0===t[r],o=[];s.forEach((s=>{const n=`${e}Loading${s}`,l=t[n];if(void 0!==l&&a){o.push(n);const e=i[r].default;switch(t[r]={default:e},s){case"TimeOut":e.maxLoadTimeMs=l,e.maxTimeToFirstByteMs=l;break;case"MaxRetry":e.errorRetry.maxNumRetry=l,e.timeoutRetry.maxNumRetry=l;break;case"RetryDelay":e.errorRetry.retryDelayMs=l,e.timeoutRetry.retryDelayMs=l;break;case"MaxRetryTimeout":e.errorRetry.maxRetryDelayMs=l,e.timeoutRetry.maxRetryDelayMs=l}}})),o.length&&hc.warn(`hls.js config: "${o.join('", "')}" setting(s) are deprecated, use "${r}": ${JSON.stringify(t[r])}`)})),Yh(Yh({},i),t)}(pA.DefaultConfig,e);this.userConfig=e,t.progressive&&rA(t);const{abrController:i,bufferController:s,capLevelController:r,errorController:a,fpsController:o}=t,n=new a(this),l=this.abrController=new i(this),d=this.bufferController=new s(this),h=this.capLevelController=new r(this),c=new o(this),u=new mp(this),p=new xp(this),f=t.contentSteeringController,m=f?new f(this):null,g=this.levelController=new oA(this,m),y=new Cf(this),A=new lA(this.config),b=this.streamController=new uA(this,y,A);h.setStreamController(b),c.setStreamController(b);const v=[u,g,b];m&&v.splice(1,0,m),this.networkControllers=v;const _=[l,d,h,c,p,y];this.audioTrackController=this.createController(t.audioTrackController,v);const S=t.audioStreamController;S&&v.push(new S(this,y,A)),this.subtitleTrackController=this.createController(t.subtitleTrackController,v);const w=t.subtitleStreamController;w&&v.push(new w(this,y,A)),this.createController(t.timelineController,_),A.emeController=this.emeController=this.createController(t.emeController,_),this.cmcdController=this.createController(t.cmcdController,_),this.latencyController=this.createController(Rp,_),this.coreComponents=_,v.push(n);const E=n.onErrorOut;"function"==typeof E&&this.on(sc.ERROR,E,n)}createController(e,t){if(e){const i=new e(this);return t&&t.push(i),i}return null}on(e,t,i=this){this._emitter.on(e,t,i)}once(e,t,i=this){this._emitter.once(e,t,i)}removeAllListeners(e){this._emitter.removeAllListeners(e)}off(e,t,i=this,s){this._emitter.off(e,t,i,s)}listeners(e){return this._emitter.listeners(e)}emit(e,t,i){return this._emitter.emit(e,t,i)}trigger(e,t){if(this.config.debug)return this.emit(e,e,t);try{return this.emit(e,e,t)}catch(t){if(hc.error("An internal error happened while handling event "+e+'. Error message: "'+t.message+'". Here is a stacktrace:',t),!this.triggeringException){this.triggeringException=!0;const i=e===sc.ERROR;this.trigger(sc.ERROR,{type:rc.OTHER_ERROR,details:ac.INTERNAL_EXCEPTION,fatal:i,event:e,error:t}),this.triggeringException=!1}}return!1}listenerCount(e){return this._emitter.listenerCount(e)}destroy(){hc.log("destroy"),this.trigger(sc.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this.url=null,this.networkControllers.forEach((e=>e.destroy())),this.networkControllers.length=0,this.coreComponents.forEach((e=>e.destroy())),this.coreComponents.length=0;const e=this.config;e.xhrSetup=e.fetchSetup=void 0,this.userConfig=null}attachMedia(e){hc.log("attachMedia"),this._media=e,this.trigger(sc.MEDIA_ATTACHING,{media:e})}detachMedia(){hc.log("detachMedia"),this.trigger(sc.MEDIA_DETACHING,void 0),this._media=null}loadSource(e){this.stopLoad();const t=this.media,i=this.url,s=this.url=qh.buildAbsoluteURL(self.location.href,e,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,hc.log(`loadSource:${s}`),t&&i&&(i!==s||this.bufferController.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(t)),this.trigger(sc.MANIFEST_LOADING,{url:e})}startLoad(e=-1){hc.log(`startLoad(${e})`),this.started=!0,this.networkControllers.forEach((t=>{t.startLoad(e)}))}stopLoad(){hc.log("stopLoad"),this.started=!1,this.networkControllers.forEach((e=>{e.stopLoad()}))}resumeBuffering(){this.started&&this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.startLoad(-1)}))}pauseBuffering(){this.networkControllers.forEach((e=>{"fragmentLoader"in e&&e.stopLoad()}))}swapAudioCodec(){hc.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){hc.log("recoverMediaError");const e=this._media;this.detachMedia(),e&&this.attachMedia(e)}removeLevel(e){this.levelController.removeLevel(e)}get levels(){const e=this.levelController.levels;return e||[]}get currentLevel(){return this.streamController.currentLevel}set currentLevel(e){hc.log(`set currentLevel:${e}`),this.levelController.manualLevel=e,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(e){hc.log(`set nextLevel:${e}`),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(e){hc.log(`set loadLevel:${e}`),this.levelController.manualLevel=e}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(e){this.levelController.nextLoadLevel=e}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(e){hc.log(`set firstLevel:${e}`),this.levelController.firstLevel=e}get startLevel(){const e=this.levelController.startLevel;return-1===e&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:e}set startLevel(e){hc.log(`set startLevel:${e}`),-1!==e&&(e=Math.max(e,this.minAutoLevel)),this.levelController.startLevel=e}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(e){const t=!!e;t!==this.config.capLevelToPlayerSize&&(t?this.capLevelController.startCapping():(this.capLevelController.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=t)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimate():NaN}set bandwidthEstimate(e){this.abrController.resetEstimator(e)}get ttfbEstimate(){const{bwEstimator:e}=this.abrController;return e?e.getEstimateTTFB():NaN}set autoLevelCapping(e){this._autoLevelCapping!==e&&(hc.log(`set autoLevelCapping:${e}`),this._autoLevelCapping=e,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(e){(function(e){return Dp.indexOf(e)>-1})(e)&&this._maxHdcpLevel!==e&&(this._maxHdcpLevel=e,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return-1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){const{levels:e,config:{minAutoBitrate:t}}=this;if(!e)return 0;const i=e.length;for(let s=0;s=t)return s;return 0}get maxAutoLevel(){const{levels:e,autoLevelCapping:t,maxHdcpLevel:i}=this;let s;if(s=-1===t&&null!=e&&e.length?e.length-1:t,i)for(let t=s;t--;){const s=e[t].attrs["HDCP-LEVEL"];if(s&&s<=i)return t}return s}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(e){this.abrController.nextAutoLevel=e}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}setAudioOption(e){var t;return null==(t=this.audioTrackController)?void 0:t.setAudioOption(e)}setSubtitleOption(e){var t;return null==(t=this.subtitleTrackController)||t.setSubtitleOption(e),null}get allAudioTracks(){const e=this.audioTrackController;return e?e.allAudioTracks:[]}get audioTracks(){const e=this.audioTrackController;return e?e.audioTracks:[]}get audioTrack(){const e=this.audioTrackController;return e?e.audioTrack:-1}set audioTrack(e){const t=this.audioTrackController;t&&(t.audioTrack=e)}get allSubtitleTracks(){const e=this.subtitleTrackController;return e?e.allSubtitleTracks:[]}get subtitleTracks(){const e=this.subtitleTrackController;return e?e.subtitleTracks:[]}get subtitleTrack(){const e=this.subtitleTrackController;return e?e.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(e){const t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}get subtitleDisplay(){const e=this.subtitleTrackController;return!!e&&e.subtitleDisplay}set subtitleDisplay(e){const t=this.subtitleTrackController;t&&(t.subtitleDisplay=e)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(e){this.config.lowLatencyMode=e}get liveSyncPosition(){return this.latencyController.liveSyncPosition}get latency(){return this.latencyController.latency}get maxLatency(){return this.latencyController.maxLatency}get targetLatency(){return this.latencyController.targetLatency}get drift(){return this.latencyController.drift}get forceStartLoad(){return this.streamController.forceStartLoad}}pA.defaultConfig=void 0;class fA extends So{constructor(e){super(),this.player=e,this.TAG_NAME="HlsDecoder",e._opt,this.canVideoPlay=!1,this.$videoElement=null,this.canvasRenderInterval=null,this.bandwidthEstimateInterval=null,this.fpsInterval=null,this.hlsFps=0,this.hlsPrevFrams=0,this.isInitInfo=!1,this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.player.isHlsCanVideoPlay()?(this.$videoElement=this.player.video.$videoElement,this.canVideoPlay=!0):pA.isSupported()?(this.$videoElement=this.player.video.$videoElement,this.hls=new pA({}),this._initHls(),this._bindEvents()):this.player.debug.error(this.TAG_NAME,"init hls error ,not support "),this.player.debug.log(this.TAG_NAME,"init")}destroy(){return new Promise(((e,t)=>{this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.hls&&(this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isInitInfo=!1,this._stopCanvasRender(),this._stopBandwidthEstimateInterval(),this._stopFpsInterval(),this.$videoElement=null,this.hlsFps=0,this.player.debug.log(this.TAG_NAME,"destroy"),setTimeout((()=>{e()}),0)}))}checkHlsBufferedDelay(){const e=this.$videoElement;let t=0;const i=e.buffered,s=i.length?i.end(i.length-1):0;return t=s-e.currentTime,t<0&&(this.player.debug.warn(this.TAG_NAME,`checkHlsBufferedDelay ${t} < 0, and buffered is ${s} ,currentTime is ${e.currentTime} , try to seek ${e.currentTime} to ${s}`),e.currentTime=s,t=0),t}getFps(){return this.hlsFps}_startCanvasRender(){bo()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:parseInt(1e3*this.$videoElement.currentTime,10)||0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.player.isDestroyedOrClosed())return void this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed");const i=parseInt(1e3*Math.max(t.mediaTime,this.$videoElement.currentTime),10)||0;this.player.video.render({$video:this.$videoElement,ts:i}),this.player.handleRender(),this.player.updateStats({dts:i}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this))}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{let e=0;this.hls.bandwidthEstimate&&(e=this.hls.bandwidthEstimate),this.player.emit(nt.kBps,(e/1024/8/10).toFixed(2))}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startFpsInterval(){this._stopCanvasRender(),this.fpsInterval=setInterval((()=>{if(this.$videoElement)if(Ya(this.$videoElement.getVideoPlaybackQuality)){const e=this.$videoElement.getVideoPlaybackQuality();this.hlsFps=e.totalVideoFrames-this.hlsPrevFrams,this.hlsPrevFrams=e.totalVideoFrames}else{const e=this.$videoElement.webkitDecodedFrameCount||0;this.hlsFps=e-this.hlsPrevFrams,this.hlsPrevFrams=e}}),1e3)}_stopFpsInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_initHls(){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.$videoElement.muted=!0,Aa()&&(this.$videoElement.style.position="absolute"),this.initVideoEvents()),this.hls.attachMedia(this.$videoElement)}_bindEvents(){const e=this.player,{proxy:t}=this.player.events;this.hls;const i=this.$videoElement,s=bo(),r=t(i,is,(t=>{if(this.hls){const i=parseInt(t.timeStamp,10);this.player._opt.useCanvasRender&&po(s)&&e.updateStats({ts:i,dts:i})}}));this.eventsDestroy.push(r),this._startBandwidthEstimateInterval(),this._startFpsInterval(),this.hls.on(pA.Events.ERROR,((e,t)=>{if(t.fatal)switch(t.type){case pA.ErrorTypes.NETWORK_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal network error encountered, try to recover"),this.hls.startLoad();break;case pA.ErrorTypes.MEDIA_ERROR:this.player.debug.warn(this.TAG_NAME,"fatal media error encountered, try to recover"),this.hls.recoverMediaError()}})),this.hls.on(pA.Events.MEDIA_ATTACHING,(()=>{})),this.hls.on(pA.Events.MEDIA_ATTACHED,(()=>{})),this.hls.on(pA.Events.MEDIA_DETACHING,(()=>{})),this.hls.on(pA.Events.MEDIA_DETACHED,(()=>{})),this.hls.on(pA.Events.BUFFER_RESET,(()=>{})),this.hls.on(pA.Events.BUFFER_CODECS,(()=>{})),this.hls.on(pA.Events.BUFFER_CREATED,(()=>{})),this.hls.on(pA.Events.BUFFER_APPENDING,((e,t)=>{this.player.debug.log(this.TAG_NAME,"BUFFER_APPENDING",t.type)})),this.hls.on(pA.Events.BUFFER_APPENDED,(()=>{})),this.hls.on(pA.Events.BUFFER_EOS,(()=>{})),this.hls.on(pA.Events.BUFFER_FLUSHING,(()=>{})),this.hls.on(pA.Events.BUFFER_FLUSHED,(()=>{})),this.hls.on(pA.Events.MANIFEST_LOADING,(()=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_LOADING 开始加载playlist m3u8资源")})),this.hls.on(pA.Events.MANIFEST_LOADED,((e,t)=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_LOADED playlist m3u8文件加载完成",t.url)})),this.hls.on(pA.Events.MANIFEST_PARSED,(()=>{this.player.debug.log(this.TAG_NAME,"MANIFEST_PARSED playlist m3u8解析完成"),e._times.demuxStart||(e._times.demuxStart=aa())})),this.hls.on(pA.Events.LEVEL_LOADING,(()=>{})),this.hls.on(pA.Events.LEVEL_LOADED,((e,t)=>{})),this.hls.on(pA.Events.FRAG_LOADING,(()=>{})),this.hls.on(pA.Events.FRAG_LOADED,((t,i)=>{e._times.decodeStart||(e._times.decodeStart=aa())})),this.hls.on(pA.Events.BUFFER_APPENDING,(()=>{e._times.videoStart||(e._times.videoStart=aa(),e.handlePlayToRenderTimes())})),this.hls.on(pA.Events.FRAG_DECRYPTED,(()=>{})),this.hls.on(pA.Events.KEY_LOADING,(()=>{})),this.hls.on(pA.Events.KEY_LOADING,(()=>{})),this.hls.on(pA.Events.FPS_DROP,(e=>{})),this.hls.on(pA.Events.FPS_DROP_LEVEL_CAPPING,(e=>{})),this.hls.on(pA.Events.FRAG_PARSING_INIT_SEGMENT,((e,t)=>{this.player.debug.log(this.TAG_NAME,"FRAG_PARSING_INIT_SEGMENT",t);const i=!!(t&&t.tracks&&t.tracks.audio),s=!!(t&&t.tracks&&t.tracks.video);if(i&&t.tracks.audio){let e=t.tracks.audio;const i=e.metadata&&e.metadata.channelCount?e.metadata.channelCount:0,s=e.codec;this.player.audio&&this.player.audio.updateAudioInfo({encType:s,channels:i,sampleRate:44100})}if(s&&t.tracks.video){let e=t.tracks.video;const i={encTypeCode:-1!==e.codec.indexOf("avc")?vt:_t};e.metadata&&(i.width=e.metadata.width,i.height=e.metadata.height),this.player.video&&this.player.video.updateVideoInfo(i)}}))}initVideoPlay(e){this.player._opt.useCanvasRender&&(this.$videoElement=document.createElement("video"),this.initVideoEvents()),this.$videoElement.autoplay=!0,this.$videoElement.muted=!0,this.$videoElement.src=e}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,es,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ts,(()=>{this.player.debug.log(this.TAG_NAME,"video waiting")})),s=e(this.$videoElement,is,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn(this.TAG_NAME,"video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video is paused and replay success")})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video is paused and replay error ",e)})))})),r=e(this.$videoElement,ss,(()=>{this.player.debug.log(this.TAG_NAME,"video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}loadSource(e){return new Promise(((t,i)=>{this.canVideoPlay?(this.initVideoPlay(e),t()):this.hls.on(pA.Events.MEDIA_ATTACHED,(()=>{this.hls.loadSource(e),t()}))}))}}const mA=2097152,gA="fetch",yA="xhr",AA="arraybuffer",bA="text",vA="json",_A="real_time_speed",SA=Object.prototype.toString;function wA(e){if("[object Object]"!==SA.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function EA(e){if(!e||null===e[0]||void 0===e[0]||0===e[0]&&(null===e[1]||void 0===e[1]))return;let t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}function TA(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function kA(e,t){if(!e)return;if(!t)return e;let i;const s=Object.keys(t).map((e=>{if(i=t[e],null!=i)return Array.isArray(i)?e+="[]":i=[i],i.map((t=>{var i;return i=t,"[object Date]"===SA.call(i)?t=t.toISOString():function(e){return null!==e&&"object"==typeof e}(t)&&(t=JSON.stringify(t)),`${TA(e)}=${TA(t)}`})).join("&")})).filter(Boolean).join("&");if(s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}function CA(e,t,i,s,r,a,o,n,l,d,h){r=null!=r?parseFloat(r):null,s=parseInt(s||"0",10),Number.isNaN(s)&&(s=0);return{data:e,done:t,option:{range:l,vid:d,index:n,contentLength:s,age:r,startTime:a,firstByteTime:o,endTime:Date.now(),priOptions:h},response:i}}function xA(e,t){return Math.round(8*e*1e3/t/1024)}class RA extends Error{constructor(e,t,i,s){super(s),zd(this,"retryCount",0),zd(this,"isTimeout",!1),zd(this,"loaderType",gA),zd(this,"startTime",0),zd(this,"endTime",0),zd(this,"options",{}),this.url=e,this.request=t,this.response=i}}class DA extends So{constructor(e){super(),zd(this,"_abortController",null),zd(this,"_timeoutTimer",null),zd(this,"_reader",null),zd(this,"_response",null),zd(this,"_aborted",!1),zd(this,"_index",-1),zd(this,"_range",null),zd(this,"_receivedLength",0),zd(this,"_running",!1),zd(this,"_logger",null),zd(this,"_vid",""),zd(this,"_onProcessMinLen",0),zd(this,"_onCancel",null),zd(this,"_priOptions",null),zd(this,"TAG_NAME","FetchLoader"),this.player=e}load(e){var t;let{url:i,vid:s,timeout:r,responseType:a,onProgress:o,index:n,onTimeout:l,onCancel:d,range:h,transformResponse:c,request:u,params:p,logger:f,method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:w,onProcessMinLen:E,priOptions:T}=e;this._aborted=!1,this._onProcessMinLen=E,this._onCancel=d,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=n,this._range=h||[0,0],this._vid=s||i,this._priOptions=T||{};const k={method:m,headers:g,body:y,mode:A,credentials:b,cache:v,redirect:_,referrer:S,referrerPolicy:w,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal};let C=!1;clearTimeout(this._timeoutTimer),i=kA(i,p);const x=EA(h);x&&(g=u?u.headers:k.headers=k.headers||(Headers?new Headers:{}),Headers&&g instanceof Headers?g.append("Range",x):g.Range=x),r&&(this._timeoutTimer=setTimeout((()=>{if(C=!0,this.cancel(),l){const e=new RA(i,k,null,"timeout");e.isTimeout=!0,l(e,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}),r));const R=Date.now();return(Ba(n)||Ba(h))&&this.player.debug.log(this.TAG_NAME,"[fetch load start], index,",n,",range,",h),new Promise(((e,t)=>{fetch(u||i,u?void 0:k).then((async s=>{if(clearTimeout(this._timeoutTimer),this._response=s,this._aborted||!this._running)return;if(c&&(s=c(s,i)||s),!s.ok)throw new RA(i,k,s,"bad network response");const r=Date.now();let l;if(a===bA)l=await s.text(),this._running=!1;else if(a===vA)l=await s.json(),this._running=!1;else{if(o)return this.resolve=e,this.reject=t,void this._loadChunk(s,o,R,r);{l=await s.arrayBuffer(),l=new Uint8Array(l),this._running=!1;const e=Date.now()-R,t=xA(l.byteLength,e);this.emit(_A,{speed:t,len:l.byteLength,time:e,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions})}}(Ba(n)||Ba(h))&&this.player.debug.log(this.TAG_NAME,"[fetch load end], index,",n,",range,",h),e(CA(l,!0,s,s.headers.get("Content-Length"),s.headers.get("age"),R,r,n,h,this._vid,this._priOptions))})).catch((e=>{var s;clearTimeout(this._timeoutTimer),this._running=!1,this._aborted&&!C||((e=e instanceof RA?e:new RA(i,k,null,null===(s=e)||void 0===s?void 0:s.message)).startTime=R,e.endTime=Date.now(),e.isTimeout=C,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},t(e))}))}))}async cancel(){if(!this._aborted){if(this._aborted=!0,this._running=!1,this._response){try{this._reader&&await this._reader.cancel()}catch(e){}this._response=this._reader=null}if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})}}_loadChunk(e,t,i,s){if(!e.body||!e.body.getReader){this._running=!1;const t=new RA(e.url,"",e,"onProgress of bad response.body.getReader");return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},void this.reject(t)}this._onProcessMinLen>0&&(this._cache=new Uint8Array(mA),this._writeIdx=0);const r=this._reader=e.body.getReader();let a,o,n;const l=async()=>{var d;o=Date.now();try{a=await r.read(),n=Date.now()}catch(e){return n=Date.now(),void(this._aborted||(this._running=!1,e.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this.reject(e)))}const h=(null===(d=this._range)||void 0===d?void 0:d.length)>0?this._range[0]:0,c=h+this._receivedLength;if(this._aborted)return this._running=!1,void t(void 0,!1,{range:[c,c],vid:this._vid,index:this._index,startTime:o,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e);const u=a.value?a.value.byteLength:0;let p;if(this._receivedLength+=u,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress call】,task,",this._range,", start,",c,", end,",h+this._receivedLength,", done,",a.done),this._onProcessMinLen>0){if(this._writeIdx+u>=this._onProcessMinLen||a.done)p=new Uint8Array(this._writeIdx+u),p.set(this._cache.slice(0,this._writeIdx),0),u>0&&p.set(a.value,this._writeIdx),this._writeIdx=0,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress enough】,done,",a.done,",len,",p.byteLength,", writeIdx,",this._writeIdx);else if(u>0&&this._writeIdx+u0){const e=new Uint8Array(this._writeIdx+u+2048);this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra start】,size,",this._writeIdx+u+2048,", datalen,",u,", writeIdx,",this._writeIdx),e.set(this._cache.slice(0,this._writeIdx),0),u>0&&e.set(a.value,this._writeIdx),this._writeIdx+=u,delete this._cache,this._cache=e,this.player.debug.log(this.TAG_NAME,"【fetchLoader,onProgress extra end】,len,",u,", writeIdx,",this._writeIdx)}}else p=a.value;if((p&&p.byteLength>0||a.done)&&t(p,a.done,{range:[this._range[0]+this._receivedLength-(p?p.byteLength:0),this._range[0]+this._receivedLength],vid:this._vid,index:this._index,startTime:o,endTime:n,st:i,firstByteTime:s,priOptions:this._priOptions},e),a.done){const t=Date.now()-i,r=xA(this._receivedLength,t);this.emit(_A,{speed:r,len:this._receivedLength,time:t,vid:this._vid,index:this._index,range:this._range,priOptions:this._priOptions}),this._running=!1,this.player.debug.log(this.TAG_NAME,"[fetchLoader onProgress end],task,",this._range,",done,",a.done),this.resolve(CA(a,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),i,s,this._index,this._range,this._vid,this._priOptions))}else l()};l()}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}static isSupported(){return!("undefined"==typeof fetch)}}class LA{constructor(e,t,i){zd(this,"TAG_NAME","Task"),this.promise=function(){let e,t;const i=new Promise(((i,s)=>{e=i,t=s}));return i.used=!1,i.resolve=function(){return i.used=!0,e(...arguments)},i.reject=function(){return i.used=!0,t(...arguments)},i}(),this.alive=!!t.onProgress,this._loaderType=e,this.player=i,this._loader=e===gA&&window.fetch?new DA(i):new PA(i),this._config=t,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._retryCheckFunc=t.retryCheckFunc}exec(){const{retry:e,retryDelay:t,onRetryError:i,transformError:s,...r}=this._config,a=async()=>{try{const e=await this._loader.load(r);this.promise.resolve(e)}catch(o){if(this._loader.running=!1,this.player.debug.log(this.TAG_NAME,"[task request catch err]",o),this._canceled)return;o.loaderType=this._loaderType,o.retryCount=this._retryCount;let n=o;s&&(n=s(n)||n),i&&this._retryCount>0&&i(n,this._retryCount,{index:r.index,vid:r.vid,range:r.range,priOptions:r.priOptions}),this._retryCount++;let l=!0;if(this._retryCheckFunc&&(l=this._retryCheckFunc(o)),l&&this._retryCount<=e)return clearTimeout(this._retryTimer),this.player.debug.log(this.TAG_NAME,"[task request setTimeout],retry",this._retryCount,",retry range,",r.range),void(this._retryTimer=setTimeout(a,t));this.promise.reject(n)}};return a(),this.promise}async cancel(){return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,this._loader.cancel()}get running(){return this._loader&&this._loader.running}get loader(){return this._loader}}class PA extends So{constructor(e){super(),zd(this,"_xhr",null),zd(this,"_aborted",!1),zd(this,"_timeoutTimer",null),zd(this,"_range",null),zd(this,"_receivedLength",0),zd(this,"_url",null),zd(this,"_onProgress",null),zd(this,"_index",-1),zd(this,"_headers",null),zd(this,"_currentChunkSizeKB",384),zd(this,"_timeout",null),zd(this,"_xhr",null),zd(this,"_withCredentials",null),zd(this,"_startTime",-1),zd(this,"_loadCompleteResolve",null),zd(this,"_loadCompleteReject",null),zd(this,"_runing",!1),zd(this,"_logger",!1),zd(this,"_vid",""),zd(this,"_responseType",void 0),zd(this,"_credentials",void 0),zd(this,"_method",void 0),zd(this,"_transformResponse",void 0),zd(this,"_firstRtt",void 0),zd(this,"_onCancel",null),zd(this,"_priOptions",null),zd(this,"TAG_NAME","XhrLoader"),this.player=e}load(e){clearTimeout(this._timeoutTimer),this._range=e.range,this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._body=e.body||null,e.method&&(this._method=e.method),this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._priOptions=e.priOptions||{},this.player.debug.log(this.TAG_NAME,"【xhrLoader task】, range",this._range),this._url=kA(e.url,e.params);const t=Date.now();return new Promise(((e,t)=>{this._loadCompleteResolve=e,this._loadCompleteReject=t,this._startLoad()})).catch((e=>{if(clearTimeout(this._timeoutTimer),this._runing=!1,!this._aborted)throw(e=e instanceof RA?e:new RA(this._url,this._request)).startTime=t,e.endTime=Date.now(),e.options={index:this._index,vid:this._vid,priOptions:this._priOptions},e}))}_startLoad(){let e=null;if(this._responseType===AA&&this._range&&this._range.length>1)if(this._onProgress){this._firstRtt=-1;const t=1024*this._currentChunkSizeKB,i=this._range[0]+this._receivedLength;let s=this._range[1];t],tast :",this._range,", SubRange, ",e)}else e=this._range,this.player.debug.log(this.TAG_NAME,"[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}_internalOpen(e){try{this._startTime=Date.now();const t=this._xhr=new XMLHttpRequest;t.open(this._method||"GET",this._url,!0),t.responseType=this._responseType,this._timeout&&(t.timeout=this._timeout),t.withCredentials=this._withCredentials,t.onload=this._onLoad.bind(this),t.onreadystatechange=this._onReadyStatechange.bind(this),t.onerror=e=>{var t,i,s;this._running=!1;const r=new RA(this._url,this._request,null==e||null===(t=e.currentTarget)||void 0===t?void 0:t.response,"xhr.onerror.status:"+(null==e||null===(i=e.currentTarget)||void 0===i?void 0:i.status)+",statusText,"+(null==e||null===(s=e.currentTarget)||void 0===s?void 0:s.statusText));r.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(r)},t.ontimeout=e=>{this.cancel();const t=new RA(this._url,this._request,{status:408},"timeout");this._onTimeout&&(t.isTimeout=!0,this._onTimeout(t,{index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions})),t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)};const i=this._headers||{},s=EA(e);s&&(i.Range=s),i&&Object.keys(i).forEach((e=>{t.setRequestHeader(e,i[e])})),this.player.debug.log(this.TAG_NAME,"[xhr.send->] tast,",this._range,",load sub range, ",e),t.send(this._body)}catch(t){t.options={index:this._index,range:e,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}}_onReadyStatechange(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}_onLoad(e){var t;const i=e.target.status;if(i<200||i>299){const t=new RA(this._url,null,{...e.target.response,status:i},"bad response,status:"+i);return t.options={index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions},this._loadCompleteReject(t)}let s,r=null,a=!1;const o=(null===(t=this._range)||void 0===t?void 0:t.length)>0?this._range[0]:0;if(this._responseType===AA){var n;const t=new Uint8Array(e.target.response);if(s=o+this._receivedLength,t&&t.byteLength>0){this._receivedLength+=t.byteLength;const e=Date.now()-this._startTime,i=xA(this._receivedLength,e);this.emit(_A,{speed:i,len:this._receivedLength,time:e,vid:this._vid,index:this._index,range:[s,o+this._receivedLength],priOptions:this._priOptions})}r=t,a=!((null===(n=this._range)||void 0===n?void 0:n.length)>1&&this._range[1]&&this._receivedLength], tast :",this._range,", start",s,"end ",o+this._receivedLength,",dataLen,",t?t.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",a)}else a=!0,r=e.target.response;let l={ok:i>=200&&i<300,status:i,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(l=this._transformResponse(l,this._url)||l),this._onProgress&&this._onProgress(r,a,{index:this._index,vid:this._vid,range:[s,o+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},l),a?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(CA(this._onProgress?null:r,a,l,l.headers["content-length"],l.headers.age,this._startTime,this._firstRtt,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}cancel(){if(!this._aborted)return this._aborted=!0,this._runing=!1,super.removeAllListeners(),this._onCancel&&this._onCancel({index:this._index,range:this._range,vid:this._vid,priOptions:this._priOptions}),this._xhr?this._xhr.abort():void 0}static isSupported(){return"undefined"!=typeof XMLHttpRequest}get receiveLen(){return this._receivedLength}get running(){return this._running}set running(e){this._running=e}_getHeaders(e){const t=e.getAllResponseHeaders().trim().split("\r\n"),i={};for(const e of t){const t=e.split(": ");i[t[0].toLowerCase()]=t.slice(1).join(": ")}return i}}class BA extends So{constructor(e,t){super(),zd(this,"type",gA),zd(this,"_queue",[]),zd(this,"_alive",[]),zd(this,"_currentTask",null),zd(this,"_config",void 0),this.player=t,this._config=function(e){return{loaderType:gA,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:bA,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0,...e}}(e),this._config.loaderType!==yA&&DA.isSupported()||(this.type=yA)}destroy(){this._queue=[],this._alive=[],this._currentTask=null}isFetch(){return this.type===gA}static isFetchSupport(){return DA.isSupported()}load(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?t=e:t.url=e||t.url||this._config.url,t=Object.assign({},this._config,t),t.params&&(t.params=Object.assign({},t.params)),t.headers&&wA(t.headers)&&(t.headers=Object.assign({},t.headers)),t.body&&wA(t.body)&&(t.body=Object.assign({},t.body)),t.transformRequest&&(t=t.transformRequest(t)||t);const i=new LA(this.type,t,this.player);return i.loader.on(_A,(e=>{this.emit(_A,e)})),this._queue.push(i),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),i.promise}async cancel(){const e=this._queue.map((e=>e.cancel())).concat(this._alive.map((e=>e.cancel())));this._currentTask&&e.push(this._currentTask.cancel()),this._queue=[],this._alive=[],await Promise.all(e),await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((t=>setTimeout(t,e)))}()}_processTask(){if(this._currentTask=this._queue.shift(),!this._currentTask)return;this._currentTask.alive&&this._alive.push(this._currentTask);const e=this._currentTask.exec().catch((e=>{}));e&&"function"==typeof e.finally&&e.finally((()=>{var e,t;null!==(e=this._currentTask)&&void 0!==e&&e.alive&&(null===(t=this._alive)||void 0===t?void 0:t.length)>0&&(this._alive=this._alive.filter((e=>e&&e!==this._currentTask))),this._processTask()}))}}const IA="network",MA="network_timeout",UA="other",FA="manifest",OA="hls",NA="demux";class jA extends Error{constructor(e,t,i,s,r){super(r||(null==i?void 0:i.message)),this.errorType=e===MA?IA:e,this.originError=i,this.ext=s,this.errorMessage=this.message}static create(e,t,i,s,r){return e instanceof jA?e:(e instanceof Error&&(i=e,e=""),e||(e=UA),new jA(e,t,i,s,r))}static network(e){var t;return new jA(null!=e&&e.isTimeout?MA:IA,null,e instanceof Error?e:null,{url:null==e?void 0:e.url,response:null==e?void 0:e.response,httpCode:null==e||null===(t=e.response)||void 0===t?void 0:t.status})}}const zA=/^#(EXT[^:]*)(?::(.*))?$/,GA=/([^=]+)=(?:"([^"]*)"|([^",]*))(?:,|$)/g,HA=/^(?:[a-zA-Z0-9+\-.]+:)?\/\//,VA=/^((?:[a-zA-Z0-9+\-.]+:)?\/\/[^/?#]*)?([^?#]*\/)?/;function $A(e){const t=e.match(zA);if(t&&t[1])return[t[1].replace("EXT-X-",""),t[2]]}function WA(e){const t={};let i=GA.exec(e);for(;i;)t[i[1]]=i[2]||i[3],i=GA.exec(e);return t}function JA(e,t){if(!t||!e||HA.test(e))return e;const i=VA.exec(t);return i?"/"===e[0]?i[1]+e:i[1]+i[2]+e:e}const qA={audio:[/^mp4a/,/^vorbis$/,/^opus$/,/^flac$/,/^[ae]c-3$/],video:[/^avc/,/^hev/,/^hvc/,/^vp0?[89]/,/^av1$/],text:[/^vtt$/,/^wvtt/,/^stpp/]};function KA(e,t){const i=qA[e];if(i&&t&&t.length)for(let e=0;e>8*(15-t)&255}}}class ob{static parse(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0;if(!e.includes("#EXTM3U"))throw new Error("Invalid m3u8 file");const i=function(e){return e.split(/[\r\n]/).map((e=>e.trim())).filter(Boolean)}(e);return ob.isMediaPlaylist(e)?function(e,t){const i=new sb;i.url=t;let s,r=new rb,a=null,o=null,n=0,l=0,d=0,h=0,c=!1;for(;(s=e[h++])&&!c;){if("#"!==s[0]){r.sn=l,r.cc=d,r.url=JA(s,t),o&&(r.key=o.clone(l)),a&&(r.initSegment=a),i.segments.push(r),r=new rb,l++;continue}const e=$A(s);if(!e)continue;const[h,u]=e;switch(h){case"VERSION":i.version=parseInt(u);break;case"PLAYLIST-TYPE":i.type=null==u?void 0:u.toUpperCase();break;case"TARGETDURATION":i.targetDuration=parseFloat(u);break;case"ENDLIST":{const e=i.segments[i.segments.length-1];e&&(e.isLast=!0),i.live=!1,c=!0}break;case"MEDIA-SEQUENCE":l=i.startSN=parseInt(u);break;case"DISCONTINUITY-SEQUENCE":d=i.startCC=parseInt(u);break;case"DISCONTINUITY":d++;break;case"BYTERANGE":r.setByteRange(u,i.segments[i.segments.length-1]);break;case"EXTINF":{const[e,t]=u.split(",");r.start=n,r.duration=parseFloat(e),n+=r.duration,r.title=t}break;case"KEY":{const e=WA(u);if("NONE"===e.METHOD){o=null;break}if("AES-128"!==e.METHOD)throw new Error(`encrypt ${e.METHOD}/${e.KEYFORMAT} is not supported`);if(o=new ab,o.method=e.METHOD,o.url=/^blob:/.test(e.URI)?e.URI:JA(e.URI,t),o.keyFormat=e.KEYFORMAT||"identity",o.keyFormatVersions=e.KEYFORMATVERSIONS,e.IV){let t=e.IV.slice(2);t=(1&t.length?"0":"")+t,o.iv=new Uint8Array(t.length/2);for(let e=0,i=t.length/2;e{e.id=t})),a.length&&(a.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.audioGroup&&(e.audioStreams=a.filter((t=>t.group===e.audioGroup)))}))),o.length&&(o.forEach(((e,t)=>{e.id=t})),i.streams.forEach((e=>{e.subtitleGroup&&(e.subtitleStreams=o.filter((t=>t.group===e.subtitleGroup)))}))),i}(i,t)}static isMediaPlaylist(e){return e.includes("#EXTINF:")||e.includes("#EXT-X-TARGETDURATION:")}}class nb{constructor(e){zd(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(qs,{error:jA.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this.TAG_NAME="HlsManifestLoader",this._timer=null;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._loader=new BA({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioLoader=new BA({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._subtitleLoader=new BA({...r,responseType:"text",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}async destroy(){await this.stopPoll(),this._audioLoader&&(this._audioLoader.destroy(),this._audioLoader=null),this._subtitleLoader&&(this._subtitleLoader.destroy(),this._subtitleLoader=null),this._loader&&(this._loader.destroy(),this._loader=null)}async load(e,t,i){this.player.debug.log(this.TAG_NAME,"load()",e,t,i);const s=[this._loader.load(e)];let r,a,o,n,l,d;t&&s.push(this._audioLoader.load(t)),i&&s.push(this._subtitleLoader.load(i));try{const[e,i,n]=await Promise.all(s);if(!e)return[];r=e.data,t?(a=null==i?void 0:i.data,o=null==n?void 0:n.data):o=null==i?void 0:i.data}catch(e){throw jA.network(e)}try{var h;if(n=ob.parse(r,e),!1===(null===(h=n)||void 0===h?void 0:h.live)&&n.segments&&!n.segments.length)throw new Error("empty segments list");a&&(l=ob.parse(a,t)),o&&(d=ob.parse(o,i))}catch(e){throw new jA(FA,OA,e)}return n&&(n.isMaster?this.hls.emit(Gs,{playlist:n}):this.hls.emit(Hs,{playlist:n})),[n,l,d]}poll(e,t,i,s,r,a){clearTimeout(this._timer),a=a||3e3;let o=this.hls.config.pollRetryCount;const n=async()=>{clearTimeout(this._timer);try{const r=await this.load(e,t,i);if(!r[0])return;o=this.hls.config.pollRetryCount,s(r[0],r[1],r[2])}catch(e){o--,o<=0&&r(e)}this._timer=setTimeout(n,a)};this._timer=setTimeout(n,a)}stopPoll(){return clearTimeout(this._timer),this.cancel()}cancel(){return Promise.all([this._loader.cancel(),this._audioLoader.cancel()])}}class lb{constructor(){zd(this,"_chunkSpeeds",[]),zd(this,"_speeds",[])}addRecord(e,t){e&&t&&(this._speeds.push(8e3*e/t),this._speeds=this._speeds.slice(-3))}addChunkRecord(e,t){e&&t&&(this._chunkSpeeds.push(8e3*e/t),this._chunkSpeeds=this._chunkSpeeds.slice(-100))}getAvgSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds.reduce(((e,t)=>e+t))/this._speeds.length:this._chunkSpeeds.reduce(((e,t)=>e+t))/this._chunkSpeeds.length:0}getLatestSpeed(){return this._chunkSpeeds.length||this._speeds.length?this._speeds.length?this._speeds[this._speeds.length-1]:this._chunkSpeeds[this._chunkSpeeds.length-1]:0}reset(){this._chunkSpeeds=[],this._speeds=[]}}class db{constructor(e){zd(this,"_emitOnLoaded",((e,t)=>{const{data:i,response:s,option:r}=e,{firstByteTime:a,startTime:o,endTime:n,contentLength:l}=r||{},d=n-o;this._bandwidthService.addRecord(l||i.byteLength,d),this.hls.emit(Ys,{time:d,byteLength:l,url:t}),this.hls.emit(Qs,{url:t,elapsed:d||0}),this.hls.emit(Js,{url:t,responseUrl:s.url,elapsed:a-o}),this.hls.emit(Xs,{headers:s.headers})})),zd(this,"_onLoaderRetry",((e,t)=>{this.hls.emit(qs,{error:jA.network(e),retryTime:t})})),this.hls=e,this.player=e.player,this._bandwidthService=new lb;const{retryCount:t,retryDelay:i,loadTimeout:s,fetchOptions:r}=this.hls.config;this._segmentLoader=new BA({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._audioSegmentLoader=new BA({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player),this._keyLoader=new BA({...r,responseType:"arraybuffer",retry:t,retryDelay:i,timeout:s,onRetryError:this._onLoaderRetry},this.player)}destroy(){this.reset(),this._keyLoader&&(this._keyLoader.destroy(),this._keyLoader=null),this._audioSegmentLoader&&(this._audioSegmentLoader.destroy(),this._audioSegmentLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null)}speedInfo(){return{speed:this._bandwidthService.getLatestSpeed(),avgSpeed:this._bandwidthService.getAvgSpeed()}}resetBandwidth(){this._bandwidthService.reset()}load(e,t,i){let s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:i;const r=[];return e&&(r[0]=this.loadVideoSegment(e,i)),t&&(r[1]=this.loadAudioSegment(t,s)),Promise.all(r)}loadVideoSegment(e,t){return this._loadSegment(this._segmentLoader,e,t)}loadAudioSegment(e,t){return this._loadSegment(this._audioSegmentLoader,e,t)}async _loadSegment(e,t,i){var s;let r,a,o,n,l;const d=[];if(this.hls.emit(Ks,{url:t.url}),d[0]=e.load(t.url),i&&t.initSegment){var h;const i=t.initSegment.url;r=this._mapCache[i],r||(this.hls.emit(Ks,{url:i}),d[1]=e.load(i).then((e=>{if(e){Object.keys(this._mapCache)>30&&(this._mapCache={}),r=this._mapCache[i]=e.data,this._emitOnLoaded(e,i)}})));const s=null===(h=t.initSegment.key)||void 0===h?void 0:h.url;s&&(l=t.initSegment.key.iv,n=this._keyCache[s],n||(this.hls.emit(Ks,{url:s}),d[2]=this._keyLoader.load(s).then((e=>{e&&(n=this._keyCache[s]=e.data,this._emitOnLoaded(e,s))}))))}const c=null===(s=t.key)||void 0===s?void 0:s.url;c&&(o=t.key.iv,a=this._keyCache[c],a||(this.hls.emit(Ks,{url:c}),d[3]=this._keyLoader.load(c).then((e=>{e&&(a=this._keyCache[c]=e.data,this._emitOnLoaded(e,c))}))));const[u]=await Promise.all(d);if(!u)return;const p=u.data;return this._emitOnLoaded(u,t.url),{data:p,map:r,key:a,mapKey:n,keyIv:o,mapKeyIv:l}}reset(){this.error=null,this._mapCache={},this._keyCache={},this._bandwidthService.reset()}async cancel(){await Promise.all([this._keyLoader.cancel(),this._segmentLoader.cancel(),this._audioSegmentLoader.cancel()])}}class hb{constructor(e,t,i){this.live=void 0,this.id=0,this.bitrate=0,this.width=0,this.height=0,this.name="",this.url="",this.audioCodec="",this.videoCodec="",this.textCodec="",this.startCC=0,this.endCC=0,this.startSN=0,this.endSN=-1,this.totalDuration=0,this.targetDuration=0,this.snDiff=null,this.segments=[],this.audioStreams=[],this.subtitleStreams=[],this.closedCaptions=[],this.currentAudioStream=null,this.currentSubtitleStream=null,this.TAG_NAME="HlsStream",this.update(e,t,i)}get lastSegment(){return this.segments.length?this.segments[this.segments.length-1]:null}get segmentDuration(){var e;return this.targetDuration||(null===(e=this.segments[0])||void 0===e?void 0:e.duration)||0}get liveEdge(){return this.endTime}get endTime(){var e;return(null===(e=this.lastSegment)||void 0===e?void 0:e.end)||0}get currentSubtitleEndSn(){var e;return(null===(e=this.currentSubtitleStream)||void 0===e?void 0:e.endSN)||0}clearOldSegment(e,t){return this._clearSegments(e,t)}getAudioSegment(e){if(!e||!this.currentAudioStream)return;const t=e.sn-this.snDiff;return this.currentAudioStream.segments.find((e=>e.sn===t))}update(e,t){this.url=e.url,Array.isArray(e.segments)?(null!==this.live&&void 0!==this.live||(this.live=e.live),this._updateSegments(e,this),this.startCC=e.startCC,this.endCC=e.endCC,this.startSN=e.startSN,this.endSN=e.endSN||-1,this.totalDuration=e.totalDuration,this.targetDuration=e.targetDuration,this.live=e.live,t&&this.currentAudioStream&&Array.isArray(t.segments)&&(this._updateSegments(t,this.currentAudioStream),(null===this.snDiff||void 0===this.snDiff)&&e.segments.length&&t.segments.length&&(this.snDiff=e.segments[0].sn-t.segments[0].sn))):(this.id=e.id,this.bitrate=e.bitrate,this.width=e.width,this.height=e.height,this.name=e.name,this.audioCodec=e.audioCodec,this.videoCodec=e.videoCodec,this.textCodec=e.textCodec,this.audioStreams=e.audioStreams,this.subtitleStreams=e.subtitleStreams,!this.currentAudioStream&&this.audioStreams.length&&(this.currentAudioStream=this.audioStreams.find((e=>e.default))||this.audioStreams[0]),!this.currentSubtitleStream&&this.subtitleStreams.length&&(this.currentSubtitleStream=this.subtitleStreams.find((e=>e.default))||this.subtitleStreams[0]))}updateSubtitle(e){if(!(e&&this.currentSubtitleStream&&Array.isArray(e.segments)))return;const t=this._updateSegments(e,this.currentSubtitleStream),i=this.currentSubtitleStream.segments;return i.length>100&&(this.currentSubtitleStream.segments=i.slice(100)),t?t.map((e=>({sn:e.sn,url:e.url,duration:e.duration,start:e.start,end:e.end,lang:this.currentSubtitleStream.lang}))):void 0}switchSubtitle(e){const t=this.subtitleStreams.find((t=>t.lang===e)),i=this.currentSubtitleStream;t&&(this.currentSubtitleStream=t,i.segments=[])}_clearSegments(e,t){let i=0;const s=this.segments;for(let t=0,r=s.length;t=e){i=t;break}return i>t&&(i=t),i&&(this.segments=this.segments.slice(i),this.currentAudioStream&&(this.currentAudioStream.segments=this.currentAudioStream.segments.slice(i))),t-i}_updateSegments(e,t){const i=t.segments;if(this.live){const s=i[i.length-1],r=(null==s?void 0:s.sn)||-1;if(re.sn===r)),o=a<0?e.segments:e.segments.slice(a+1);if(i.length&&o.length){let e=s.end;o.forEach((t=>{t.start=e,e=t.end}));const t=(null==s?void 0:s.cc)||-1;t>o[0].cc&&o.forEach((e=>e.cc+=t))}return t.endSN=e.endSN,t.segments=i.concat(o),o}}else t.segments=e.segments}}class cb{constructor(e){this.hls=e,this.player=e.player,this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1,this.TAG_NAME="HlsPlaylist"}destroy(){this.reset()}get lastSegment(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.lastSegment}get currentSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer]}get nextSegment(){var e;return null===(e=this.currentSegments)||void 0===e?void 0:e[this._segmentPointer+1]}get currentSegments(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.segments}get currentSubtitleEndSn(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.currentSubtitleEndSn}get liveEdge(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.liveEdge}get totalDuration(){var e;return(null===(e=this.currentStream)||void 0===e?void 0:e.totalDuration)||0}get seekRange(){const e=this.currentSegments;if(e&&e.length)return[e[0].start,e[e.length-1].end]}get isEmpty(){var e;return!(null!==(e=this.currentSegments)&&void 0!==e&&e.length)}get isLive(){var e;return null===(e=this.currentStream)||void 0===e?void 0:e.live}get hasSubtitle(){var e;return!(null===(e=this.currentStream)||void 0===e||!e.currentSubtitleStream)}getAudioSegment(e){var t;return null===(t=this.currentStream)||void 0===t?void 0:t.getAudioSegment(e)}moveSegmentPointer(e){var t;null==e&&(e=this._segmentPointer+1),this._segmentPointer=oa(e,-1,null===(t=this.currentSegments)||void 0===t?void 0:t.length),this.player.debug.log(this.TAG_NAME,`moveSegmentPointer() and param pos is ${e} and clamp result is ${this._segmentPointer}`)}reset(){this.streams=[],this.currentStream=null,this.dvrWindow=0,this._segmentPointer=-1}getSegmentByIndex(e){var t;return null===(t=this.currentSegments)||void 0===t?void 0:t[e]}setNextSegmentByIndex(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this._segmentPointer=e-1,this.player.debug.log(this.TAG_NAME,"setNextSegmentByIndex()",e,this._segmentPointer)}findSegmentIndexByTime(e){const t=this.currentSegments;if(t){for(let i,s=0,r=t.length;s=i.start&&ee.url)).forEach(((e,t)=>{this.streams[t]?this.streams[t].update(e):this.streams[t]=new hb(e)})),this.currentStream=this.streams[0];else if(Array.isArray(e.segments)){const s=this.currentStream;if(s){s.update(e,t,i);const r=s.updateSubtitle(i);r&&this.hls.emit(zs,{list:r})}else this.reset(),this.currentStream=this.streams[0]=new hb(e,t,i)}this.currentStream&&this.hls.isLive&&!this.dvrWindow&&(this.dvrWindow=this.currentSegments.reduce(((e,t)=>e+=t.duration),0))}switchSubtitle(e){var t;null===(t=this.currentStream)||void 0===t||t.switchSubtitle(e)}clearOldSegment(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;const t=this.currentStream;if(!this.dvrWindow||!t)return;const i=t.endTime-this.dvrWindow;if(i<=0)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() stream.endTime:${t.endTime}, this.dvrWindow:${this.dvrWindow} startTime <= 0`);const s=t.segments;if(s.length<=e)return void this.player.debug.log(this.TAG_NAME,`clearOldSegment() segments.length:${s.length} <= maxPlaylistSize:${e}`);const r=this._segmentPointer;this._segmentPointer=t.clearOldSegment(i,r),this.player.debug.log(this.TAG_NAME,"clearOldSegment() update _segmentPointer:",r,this._segmentPointer),this.player.debug.log(this.TAG_NAME,"currentSegments",this.currentSegments)}checkSegmentTrackChange(e,t){const i=this.findSegmentIndexByTime(e),s=this.getSegmentByIndex(i);if(!s)return;if(!s.hasAudio&&!s.hasVideo)return;if(2!==t&&s.hasAudio&&s.hasVideo)return s;if(s.end-e>.3)return;const r=this.getSegmentByIndex(i+1);return r&&(r.hasAudio||r.hasVideo)&&(r.hasAudio!==s.hasAudio||r.hasVideo!==s.hasVideo)?r:void 0}}class ub{constructor(e,t){this.hls=e,this.player=t;const i=window.crypto||window.msCrypto;this.subtle=i&&(i.subtle||i.webkitSubtle),this.externalDecryptor=null}decrypt(e,t){if(!e&&!t)return;const i=[];return e&&(i[0]=this._decryptSegment(e)),t&&(i[1]=this._decryptSegment(t)),Promise.all(i)}async _decryptSegment(e){let t=e.data;return e.key&&(t=await this._decryptData(e.data,e.key,e.keyIv)),e.map?Yd(e.map,t):t}async _decryptData(e,t,i){if(this.externalDecryptor)return await this.externalDecryptor.decrypt(e,t,i);if(this.subtle){const s=await this.subtle.importKey("raw",t,{name:"AES-CBC"},!1,["encrypt","decrypt"]),r=await this.subtle.decrypt({name:"AES-CBC",iv:i},s,e);return new Uint8Array(r)}e=ud(e),t=ud(t),i=ud(i);return function(e){const{words:t}=e,{sigBytes:i}=e,s=new Uint8Array(i);for(let e=0;e>>2]>>>24-e%4*8&255;return s}(hd.AES.decrypt({ciphertext:e},t,{iv:i,mode:hd.mode.CBC}))}}class pb extends Dd{constructor(e){super(e),this.player=e,this._pmtId=-1,this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[],this._gopId=0,this._videoPid=-1,this._audioPid=-1,this._codecType=vt,this._audioCodecType=Et,this._vps=null,this._sps=null,this._pps=null,this.TAG_NAME="HlsTsLoader",this._isForHls=!0,this.videoTrack=pb.initVideoTrack(),this.audioTrack=pb.initAudioTrack(),this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._baseFpsInterval=null,this._tempSampleTsList=[],this._hasAudio=!1,this._hasVideo=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isSendAACSeqHeader=!1,this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this.tempSampleListInfo={},this._isUseWorker()&&this._initLoopWorker(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._stopDecodeLoopInterval(),this.videoTrack=null,this.audioTrack=null,this.tempSampleListInfo={},this._baseDts=-1,this._baseDtsInited=!1,this._basefps=25,this._hasCalcFps=!1,this._audioNextPts=void 0,this._videoNextDts=void 0,this._audioTimestampBreak=!1,this._videoTimestampBreak=!1,this._lastAudioExceptionGapDot=0,this._lastAudioExceptionOverlapDot=0,this._lastAudioExceptionLargeGapDot=0,this._isForHls=!0,this._isSendAACSeqHeader=!1,this.player.debug.log(this.TAG_NAME,"destroy")}static initVideoTrack(){return{samples:[]}}static initAudioTrack(){return{samples:[]}}static probe(e){return!!e.length&&(71===e[0]&&71===e[188]&&71===e[376])}_parsePES(e){const t=e[8];if(null==t||e.lengthe.length-6)return;let r,a;const o=e[7];return 192&o&&(r=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,64&o?(a=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r-a>54e5&&(r=a)):a=r),{data:e.subarray(9+t),pts:r,dts:a,originalPts:r,originalDts:a}}_demux(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];t&&(this._pmtId=-1,this.videoTrack=pb.initVideoTrack(),this.audioTrack=pb.initAudioTrack()),!i||t?(this._remainingPacketData=null,this._videoPesData=[],this._audioPesData=[]):(this.videoTrack.samples=[],this.audioTrack.samples=[],this._remainingPacketData&&(e=Yd(this._remainingPacketData,e),this._remainingPacketData=null));let s=e.length;const r=s%188;r&&(this._remainingPacketData=e.subarray(s-r),s-=r);for(let t=0;t>4>1){if(r=t+5+e[t+4],r===t+188)continue}else r=t+4;switch(s){case 0:i&&(r+=e[r]+1),this._pmtId=(31&e[r+10])<<8|e[r+11];break;case this._pmtId:{i&&(r+=e[r]+1);const t=r+3+((15&e[r+1])<<8|e[r+2])-4;for(r+=12+((15&e[r+10])<<8|e[r+11]);r=t)return[];const r=[];for(;s{const t=s?e[0]>>>1&63:31&e[0];switch(t){case 5:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:if(!s&&5!==t||s&&5===t)break;r.isIFrame=!0,this._gopId++;break;case 6:case 39:case 40:if(!s&&6!==t||s&&6===t)break;return void function(e,t){const i=e.length;let s=t?2:1,r=0,a=0,o="";for(;255===e[s];)r+=255,s++;for(r+=e[s++];255===e[s];)a+=255,s++;if(a+=e[s++],5===r&&i>s+16)for(let t=0;t<16;t++)o+=e[s].toString(16),s++;e.subarray(s)}(function(e){const t=e.byteLength,i=[];let s=1;for(;s=i)return;const r=s,a=[],o=(60&e[s+2])>>>2,n=Fr[o];if(!n)throw new Error(`Invalid sampling index: ${o}`);const l=1+((192&e[s+2])>>>6),d=(1&e[s+2])<<2|(192&e[s+3])>>>6;let h,c,u=0;const p=Vr(n);for(;s+7>5,i-s=i?void 0:e.subarray(s),frames:a,samplingFrequencyIndex:o,sampleRate:n,objectType:l,channelCount:d,originCodec:`mp4a.40.${l}`}}(e.data,e.originalPts);if(t){if(this.audioTrack.codec=t.codec,this.audioTrack.sampleRate=t.sampleRate,this.audioTrack.channelCount=t.channelCount,!this._isSendAACSeqHeader){const e=jr({profile:t.objectType,sampleRate:t.samplingFrequencyIndex,channel:t.channelCount});this._isSendAACSeqHeader=!0,this.player.debug.log(this.TAG_NAME,"aac seq header",`profile: ${t.objectType}, sampleRate:${t.sampleRate},sampleRateIndex: ${t.samplingFrequencyIndex}, channel: ${t.channelCount}`),this._doDecodeByHls(e,Ne,0,!1,0)}if(this._isSendAACSeqHeader){const e=[];t.frames.forEach((t=>{const i=t.pts,s=new Uint8Array(t.data.length+2);s.set([175,1],0),s.set(t.data,2);const r={type:Ne,pts:i,dts:i,payload:s};e.push(r)})),this.audioTrack.samples=this.audioTrack.samples.concat(e)}else this.player.debug.warn(this.TAG_NAME,"aac seq header not send")}else this.player.debug.warn(this.TAG_NAME,"aac parseADTS error")}this._audioPesData=[]}else e&&"startPrefixError"===e.code&&(this._audioPesData=[])}_fix(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e=Math.round(9e4*e);const s=this.videoTrack,r=this.audioTrack,a=s.samples,o=r.samples;if(!a.length&&!o.length)return;const n=a[0],l=o[0];let d=0;if(a.length&&o.length&&(d=n.dts-l.pts),this._baseDtsInited||this._calculateBaseDts(),t&&(this._calculateBaseDts(),this._baseDts-=e),!i){this._videoNextDts=d>0?e+d:e,this._audioNextPts=d>0?e:e-d;const t=n?n.dts-this._baseDts-this._videoNextDts:0,i=l?l.pts-this._baseDts-this._audioNextPts:0;Math.abs(t||i)>xr&&(this._calculateBaseDts(this.audioTrack,this.videoTrack),this._baseDts-=e)}this._resetBaseDtsWhenStreamBreaked(),this._fixAudio(r),this._fixVideo(s);let h=s.samples.concat(r.samples);h=h.map((e=>(e.dts=Math.round(e.dts/90),e.pts=Math.round(e.pts/90),e.cts=e.pts-e.dts,e))).sort(((e,t)=>e.dts-t.dts)),h.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this._isUseWorker()?this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer]):e.type===je?this._doDecodeVideo({...e,payload:t}):e.type===Ne&&this._doDecodeAudio({...e,payload:t})})),po(this._hasCalcFps)&&this._isUseWorker()&&(this._hasCalcFps=!0,this._calcDecodeFps(h))}_isUseWorker(){return!this.player.isUseMSE()&&this.isForHls()}_calculateBaseDts(){const e=this.audioTrack,t=this.videoTrack,i=e.samples,s=t.samples;if(!i.length&&!s.length)return!1;let r=1/0,a=1/0;i.length&&(e.baseDts=r=i[0].pts),s.length&&(t.baseDts=a=s[0].dts),this._baseDts=Math.min(r,a);const o=a-r;return Number.isFinite(o)&&Math.abs(o)>45e3&&this.player.debug.warn(this.TAG_NAME,`large av first frame gap,\n video pts: ${a},\n audio pts: ${r},\n base dts: ${this._baseDts},\n detect is: ${o}`),this._baseDtsInited=!0,!0}_resetBaseDtsWhenStreamBreaked(){if(this._baseDtsInited&&this._videoTimestampBreak&&this._audioTimestampBreak){if(!this._calculateBaseDts(this.audioTrack,this.videoTrack))return;this._baseDts-=Math.min(this._audioNextPts,this._videoNextDts),this._audioLastSample=null,this._videoLastSample=null,this._videoTimestampBreak=!1,this._audioTimestampBreak=!1}}_fixAudio(e){const t=e.samples;t.length&&(t.forEach((e=>{e.pts-=this._baseDts,e.dts=e.pts})),this._doFixAudioInternal(e,t,9e4))}_fixVideo(e){const t=e.samples;if(!t.length)return;if(t.forEach((e=>{e.dts-=this._baseDts,e.pts-=this._baseDts})),void 0===this._videoNextDts){const e=t[0];this._videoNextDts=e.dts}const i=t.length;let s=0;const r=t[0],a=t[1],o=this._videoNextDts-r.dts;let n;Math.abs(o)>45e3&&(r.dts+=o,r.pts+=o,this.player.debug.warn(this.TAG_NAME,`large video gap between chunk,\n next dts is ${this._videoNextDts},\n first dts is ${r.dts},\n next dts is ${a.dts},\n duration is ${o}`),a&&Math.abs(a.dts-r.dts)>xr&&(this._videoTimestampBreak=!0,t.forEach(((e,t)=>{0!==t&&(e.dts+=o,e.pts+=o)}))));const l=e.samples[0],d=e.samples[i-1];n=1===i?9e3:Math.floor((d.dts-l.dts)/(i-1));for(let r=0;rxr||s<0){this._videoTimestampBreak=!0,s=this._audioTimestampBreak?n:Math.max(s,2700);const i=this._audioNextPts||0;o&&o.dts>i&&(s=n),this.player.debug.warn(this.TAG_NAME,`large video gap between frames,\n time is ${a/e.timescale},\n dts is ${a},\n origin dts is ${t[r].originalDts},\n next dts is ${this._videoNextDts},\n sample Duration is ${s} ,\n ref Sample DurationInt is ${n}`)}t[r].duration=s,this._videoNextDts+=s}}_doFixAudioInternal(e,t,i){e.sampleDuration||(e.sampleDuration=Vr(e.timescale,i));const s=e.sampleDuration;if(void 0===this._audioNextPts){const e=t[0];this._audioNextPts=e.pts}for(let i=0;i=3*s&&o<=kr&&!Aa()){Hr(e.codec,e.channelCount)||t[0].data.subarray();const n=Math.floor(o/s);Math.abs(a.pts-this._lastAudioExceptionGapDot)>Cr&&(this._lastAudioExceptionGapDot=a.pts),this.player.debug.warn(this.TAG_NAME,`audio gap detected,\n pts is ${t.pts},\n originPts is ${t.originalPts},\n count is ${n},\n nextPts is ${r},\n ref sample duration is ${s}`);for(let e=0;e=-9e4?(Math.abs(a.pts-this._lastAudioExceptionOverlapDot)>Cr&&(this._lastAudioExceptionOverlapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`audio overlap detected,\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${r},\n ref sample duration is ${s}`)),t.splice(i,1),i--):(Math.abs(o)>=kr&&(this._audioTimestampBreak=!0,Math.abs(a.pts-this._lastAudioExceptionLargeGapDot)>Cr&&(this._lastAudioExceptionLargeGapDot=a.pts,this.player.debug.warn(this.TAG_NAME,`large audio gap detected,\n time is ${a.pts/1e3}\n pts is ${a.pts},\n originPts is ${a.originalPts},\n nextPts is ${r},\n sample duration is ${o}\n ref sample duration is ${s}`))),a.dts=a.pts=r,this._audioNextPts+=s)}}_calcDecodeFps(e){const t=ro(e.map((e=>({ts:e.dts||e.pts,type:e.type}))),je);t&&(this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${t}, update base fps is ${this._basefps}`),this._basefps=t),this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps})}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=Ao(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`JbPro:[TsLoader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=Math.round(s.duration/90))):s.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),this.allSampleList.length&&this.allSampleList[0].type===t&&(i=this.allSampleList.shift(),postMessage({cmd:"decodeVideo",...i},[i.payload.buffer])))}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te),s.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=s}_postMessageToLoopWorker(e,t){this._isUseWorker()&&(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this.player.updateStats({abps:t.byteLength});let i=t;uo(this.player._opt.m7sCryptoAudio)&&(i=this.cryptoPayloadAudio(t)),this.isForHls()?this._doDecodeByHls(i,Ne,e.dts,!1,0):this._doDecodeByTs(i,Ne,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?jn(t,e.isIFrame):kn(t,e.isIFrame),this.player.updateStats({dts:e.dts,vbps:i.byteLength});const s=e.pts-e.dts;let r=this.cryptoPayload(i,e.isIFrame);this.isForHls()?this._doDecodeByHls(r,je,e.dts,e.isIFrame,s):this._doDecodeByTs(r,je,e.dts,e.isIFrame,s)}_stopDecodeLoopInterval(){this._baseFpsInterval&&(clearInterval(this._baseFpsInterval),this._baseFpsInterval=null)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}isForHls(){return this._isForHls}getInputByteLength(){return this._remainingPacketData&&this._remainingPacketData.byteLength||0}}function fb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function mb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function gb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;const i=Math.pow(2,32);return mb(e,t)*i+mb(e,t+4)}const yb="aac",Ab="g7110a",bb="g7110m",vb="avc",_b="hevc";class Sb{static getFrameDuration(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}static getRateIndexByRate(e){return Sb.FREQ.indexOf(e)}}function wb(e,t,i,s,r,a){const o=[],n=null==r?void 0:r.entries,l=t.entries,d=s.entries,h=i.entrySizes,c=null==a?void 0:a.entries;let u,p,f;c&&(u={},c.forEach((e=>{u[e-1]=!0}))),n&&(p=[],n.forEach((e=>{let{count:t,offset:i}=e;for(let e=0;e{let{count:t,delta:s}=e;for(let e=0;e=S&&(b++,S=l[b+1]?l[b+1].firstChunk-1:1/0),_+=l[b].samplesPerChunk)})),o}function Eb(e,t){return e.dataReferenceIndex=fb(t,6),e.width=fb(t,24),e.height=fb(t,26),e.horizresolution=mb(t,28),e.vertresolution=mb(t,32),e.frameCount=fb(t,40),e.depth=fb(t,74),78}function Tb(e,t){return e.dataReferenceIndex=fb(t,6),e.channelCount=fb(t,16),e.sampleSize=fb(t,18),e.sampleRate=mb(t,24)/65536,28}function kb(e,t,i){if(!e)return;if(e.size!==e.data.length)throw new Error(`box ${e.type} size !== data.length`);const s={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(s.version=e.data[e.headerSize],s.flags=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}(e.data,e.headerSize+1),s.headerSize+=4),i(s,e.data.subarray(s.headerSize),s.start+s.headerSize),s}zd(Sb,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);const Cb=function(e,t,i){const s=String(i),r=t>>0;let a=Math.ceil(r/s.length);const o=[],n=String(e);for(;a--;)o.push(s);return o.join("").substring(0,r-n.length)+n},xb=function(){const e=[];for(var t=arguments.length,i=new Array(t),s=0;s{e.push(Cb(Number(t).toString(16),2,0))})),e[0]};class Rb{static probe(e){return!!Rb.findBox(e,["ftyp"])}static findBox(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;const s=[];if(!e)return s;let r=0,a="",o=0;for(;e.length>7;){if(r=mb(e),a=String.fromCharCode.apply(null,e.subarray(4,8)),o=8,1===r?(r=gb(e,8),o+=8):r||(r=e.length),!t[0]||a===t[0]){const n=e.subarray(0,r);if(!(t.length<2))return Rb.findBox(n.subarray(o),t.slice(1),i+o);s.push({start:i,size:r,headerSize:o,type:a,data:n})}i+=r,e=e.subarray(r)}return s}static tfhd(e){return kb(e,!0,((e,t)=>{e.trackId=mb(t);let i=4;const s=1&e.flags,r=2&e.flags,a=8&e.flags,o=16&e.flags,n=32&e.flags;s&&(i+=4,e.baseDataOffset=mb(t,i),i+=4),r&&(e.sampleDescriptionIndex=mb(t,i),i+=4),a&&(e.defaultSampleDuration=mb(t,i),i+=4),o&&(e.defaultSampleSize=mb(t,i),i+=4),n&&(e.defaultSampleFlags=mb(t,i))}))}static sidx(e){return kb(e,!0,((e,t)=>{let i=0;e.reference_ID=mb(t,i),i+=4,e.timescale=mb(t,i),i+=4,0===e.version?(e.earliest_presentation_time=mb(t,i),i+=4,e.first_offset=mb(t,i),i+=4):(e.earliest_presentation_time=gb(t,i),i+=8,e.first_offset=gb(t,i),i+=8),i+=2,e.references=[];const s=fb(t,i);i+=2;for(let r=0;r>31&1,s.referenced_size=2147483647&r,s.subsegment_duration=mb(t,i),i+=4,r=mb(t,i),i+=4,s.starts_with_SAP=r>>31&1,s.SAP_type=r>>28&7,s.SAP_delta_time=268435455&r}}))}static moov(e){return kb(e,!1,((e,t,i)=>{e.mvhd=Rb.mvhd(Rb.findBox(t,["mvhd"],i)[0]),e.trak=Rb.findBox(t,["trak"],i).map((e=>Rb.trak(e))),e.pssh=Rb.pssh(Rb.findBox(t,["pssh"],i)[0])}))}static mvhd(e){return kb(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=mb(t,16),e.duration=gb(t,20),i+=28):(e.timescale=mb(t,8),e.duration=mb(t,12),i+=16),e.nextTrackId=mb(t,i+76)}))}static trak(e){return kb(e,!1,((e,t,i)=>{e.tkhd=Rb.tkhd(Rb.findBox(t,["tkhd"],i)[0]),e.mdia=Rb.mdia(Rb.findBox(t,["mdia"],i)[0])}))}static tkhd(e){return kb(e,!0,((e,t)=>{let i=0;1===e.version?(e.trackId=mb(t,16),e.duration=gb(t,24),i+=32):(e.trackId=mb(t,8),e.duration=mb(t,16),i+=20),e.width=mb(t,i+52),e.height=mb(t,i+56)}))}static mdia(e){return kb(e,!1,((e,t,i)=>{e.mdhd=Rb.mdhd(Rb.findBox(t,["mdhd"],i)[0]),e.hdlr=Rb.hdlr(Rb.findBox(t,["hdlr"],i)[0]),e.minf=Rb.minf(Rb.findBox(t,["minf"],i)[0])}))}static mdhd(e){return kb(e,!0,((e,t)=>{let i=0;1===e.version?(e.timescale=mb(t,16),e.duration=gb(t,20),i+=28):(e.timescale=mb(t,8),e.duration=mb(t,12),i+=16);const s=fb(t,i);e.language=String.fromCharCode(96+(s>>10&31),96+(s>>5&31),96+(31&s))}))}static hdlr(e){return kb(e,!0,((e,t)=>{0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}static minf(e){return kb(e,!1,((e,t,i)=>{e.vmhd=Rb.vmhd(Rb.findBox(t,["vmhd"],i)[0]),e.smhd=Rb.smhd(Rb.findBox(t,["smhd"],i)[0]),e.stbl=Rb.stbl(Rb.findBox(t,["stbl"],i)[0])}))}static vmhd(e){return kb(e,!0,((e,t)=>{e.graphicsmode=fb(t),e.opcolor=[fb(t,2),fb(t,4),fb(t,6)]}))}static smhd(e){return kb(e,!0,((e,t)=>{e.balance=fb(t)}))}static stbl(e){return kb(e,!1,((e,t,i)=>{var s,r,a;e.stsd=Rb.stsd(Rb.findBox(t,["stsd"],i)[0]),e.stts=Rb.stts(Rb.findBox(t,["stts"],i)[0]),e.ctts=Rb.ctts(Rb.findBox(t,["ctts"],i)[0]),e.stsc=Rb.stsc(Rb.findBox(t,["stsc"],i)[0]),e.stsz=Rb.stsz(Rb.findBox(t,["stsz"],i)[0]),e.stco=Rb.stco(Rb.findBox(t,["stco"],i)[0]),e.stco||(e.co64=Rb.co64(Rb.findBox(t,["co64"],i)[0]),e.stco=e.co64);const o=null===(s=e.stsd.entries[0])||void 0===s||null===(r=s.sinf)||void 0===r||null===(a=r.schi)||void 0===a?void 0:a.tenc.default_IV_size;e.stss=Rb.stss(Rb.findBox(t,["stss"],i)[0]),e.senc=Rb.senc(Rb.findBox(t,["senc"],i)[0],o)}))}static senc(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:8;return kb(e,!0,((e,i)=>{let s=0;const r=mb(i,s);s+=4,e.samples=[];for(let a=0;a{const i=[],s=[];let r=0;for(let e=0;e<16;e++)s.push(xb(t[r+e]));if(r+=16,e.version>0){const e=mb(t,r);r+=4;for(let s=0;s<(""+e).length;s++)for(let e=0;e<16;e++){const e=t[r];r+=1,i.push(xb(e))}}const a=mb(t,r);e.data_size=a,r+=4,e.kid=i,e.system_id=s,e.buffer=t}))}static stsd(e){return kb(e,!0,((e,t,i)=>{e.entryCount=mb(t),e.entries=Rb.findBox(t.subarray(4),[],i+4).map((e=>{switch(e.type){case"avc1":case"avc2":case"avc3":case"avc4":return Rb.avc1(e);case"hvc1":case"hev1":return Rb.hvc1(e);case"mp4a":return Rb.mp4a(e);case"alaw":case"ulaw":return Rb.alaw(e);case"enca":return kb(e,!1,((e,t,i)=>{e.channelCount=fb(t,16),e.samplesize=fb(t,18),e.sampleRate=mb(t,24)/65536,t=t.subarray(28),e.sinf=Rb.sinf(Rb.findBox(t,["sinf"],i)[0]),e.esds=Rb.esds(Rb.findBox(t,["esds"],i)[0])}));case"encv":return kb(e,!1,((e,t,i)=>{e.width=fb(t,24),e.height=fb(t,26),e.horizresolution=mb(t,28),e.vertresolution=mb(t,32),t=t.subarray(78),e.sinf=Rb.sinf(Rb.findBox(t,["sinf"],i)[0]),e.avcC=Rb.avcC(Rb.findBox(t,["avcC"],i)[0]),e.hvcC=Rb.hvcC(Rb.findBox(t,["hvcC"],i)[0]),e.pasp=Rb.pasp(Rb.findBox(t,["pasp"],i)[0])}))}})).filter(Boolean)}))}static tenc(e){return kb(e,!1,((e,t)=>{let i=6;e.default_IsEncrypted=t[i],i+=1,e.default_IV_size=t[i],i+=1,e.default_KID=[];for(let s=0;s<16;s++)e.default_KID.push(xb(t[i])),i+=1}))}static schi(e){return kb(e,!1,((e,t,i)=>{e.tenc=Rb.tenc(Rb.findBox(t,["tenc"],i)[0])}))}static sinf(e){return kb(e,!1,((e,t,i)=>{e.schi=Rb.schi(Rb.findBox(t,["schi"],i)[0]),e.frma=Rb.frma(Rb.findBox(t,["frma"],i)[0])}))}static frma(e){return kb(e,!1,((e,t)=>{e.data_format="";for(let i=0;i<4;i++)e.data_format+=String.fromCharCode(t[i])}))}static avc1(e){return kb(e,!1,((e,t,i)=>{const s=Eb(e,t),r=t.subarray(s);i+=s,e.avcC=Rb.avcC(Rb.findBox(r,["avcC"],i)[0]),e.pasp=Rb.pasp(Rb.findBox(r,["pasp"],i)[0])}))}static avcC(e){return kb(e,!1,((e,t)=>{e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=function(e){let t,i="avc1.";for(let s=0;s<3;s++)t=e[s].toString(16),t.length<2&&(t=`0${t}`),i+=t;return i}([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];let i=6;for(let s=0;s{const s=Eb(e,t),r=t.subarray(s);i+=s,e.hvcC=Rb.hvcC(Rb.findBox(r,["hvcC"],i)[0]),e.pasp=Rb.pasp(Rb.findBox(r,["pasp"],i)[0])}))}static hvcC(e){return kb(e,!1,((t,i)=>{t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=i[0];const s=i[1];t.generalProfileSpace=s>>6,t.generalTierFlag=(32&s)>>5,t.generalProfileIdc=31&s,t.generalProfileCompatibility=mb(i,2),t.generalConstraintIndicatorFlags=i.subarray(6,12),t.generalLevelIdc=i[12],t.avgFrameRate=fb(i,19),t.numOfArrays=i[22],t.vps=[],t.sps=[],t.pps=[];let r=23,a=0,o=0,n=0;for(let e=0;e{e.hSpacing=mb(t),e.vSpacing=mb(t,4)}))}static mp4a(e){return kb(e,!1,((e,t,i)=>{const s=Tb(e,t);e.esds=Rb.esds(Rb.findBox(t.subarray(s),["esds"],i+s)[0])}))}static esds(e){return kb(e,!0,((e,t)=>{e.codec="mp4a.";let i=0,s=0,r=0,a=0;for(;t.length;){for(i=0,a=t[i],s=t[i+1],i+=2;128&s;)r=(127&s)<<7,s=t[i],i+=1;if(r+=127&s,3===a)t=t.subarray(i+3);else{if(4!==a){if(5===a){const s=e.config=t.subarray(i,i+r);let a=(248&s[0])>>3;return 31===a&&s.length>=2&&(a=32+((7&s[0])<<3)+((224&s[1])>>5)),e.objectType=a,e.codec+=a.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[i].toString(16)+".").padStart(3,"0"),t=t.subarray(i+13)}}}))}static alaw(e){return kb(e,!1,((e,t)=>{Tb(e,t)}))}static stts(e){return kb(e,!0,((e,t)=>{const i=mb(t),s=[];let r=4;for(let e=0;e{const i=mb(t),s=[];let r=4;if(1===e.version)for(let e=0;e{const i=mb(t),s=[];let r=4;for(let e=0;e{const i=mb(t),s=mb(t,4),r=[];if(!i){let e=8;for(let i=0;i{const i=mb(t),s=[];let r=4;for(let e=0;e{const i=mb(t),s=[];let r=4;for(let e=0;e{const i=mb(t),s=[];let r=4;for(let e=0;e{e.mfhd=Rb.mfhd(Rb.findBox(t,["mfhd"],i)[0]),e.traf=Rb.findBox(t,["traf"],i).map((e=>Rb.traf(e)))}))}static mfhd(e){return kb(e,!0,((e,t)=>{e.sequenceNumber=mb(t)}))}static traf(e){return kb(e,!1,((e,t,i)=>{e.tfhd=Rb.tfhd(Rb.findBox(t,["tfhd"],i)[0]),e.tfdt=Rb.tfdt(Rb.findBox(t,["tfdt"],i)[0]),e.trun=Rb.trun(Rb.findBox(t,["trun"],i)[0])}))}static trun(e){return kb(e,!0,((e,t)=>{const{version:i,flags:s}=e,r=t.length,a=e.sampleCount=mb(t);let o=4;if(r>o&&1&s&&(e.dataOffset=-(1+~mb(t,o)),o+=4),r>o&&4&s&&(e.firstSampleFlags=mb(t,o),o+=4),e.samples=[],r>o){let r;for(let n=0;n{1===e.version?e.baseMediaDecodeTime=gb(t):e.baseMediaDecodeTime=mb(t)}))}static probe(e){return!!Rb.findBox(e,["ftyp"])}static parseSampleFlags(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}static moovToTrack(e,t,i){var s,r;const a=e.trak;if(!a||!a.length)return;const o=a.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),n=a.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(o&&t){var l,d,h,c,u,p,f;const i=t,s=null===(l=o.tkhd)||void 0===l?void 0:l.trackId;null!=s&&(i.id=o.tkhd.trackId),i.tkhdDuration=o.tkhd.duration,i.mvhdDurtion=e.mvhd.duration,i.mvhdTimecale=e.mvhd.timescale,i.timescale=i.formatTimescale=o.mdia.mdhd.timescale,i.duration=o.mdia.mdhd.duration||i.mvhdDurtion/i.mvhdTimecale*i.timescale;const r=o.mdia.minf.stbl.stsd.entries[0];if(i.width=r.width,i.height=r.height,r.pasp&&(i.sarRatio=[r.pasp.hSpacing,r.pasp.vSpacing]),r.hvcC)i.codecType=_b,i.codec=r.hvcC.codec,i.vps=r.hvcC.vps,i.sps=r.hvcC.sps,i.pps=r.hvcC.pps,i.hvcC=r.hvcC.data;else{if(!r.avcC)throw new Error("unknown video stsd entry");i.codecType=vb,i.codec=r.avcC.codec,i.sps=r.avcC.sps,i.pps=r.avcC.pps}var m,g,y,A,b,v,_,S;if(i.present=!0,i.ext={},i.ext.stss=null===(d=o.mdia)||void 0===d||null===(h=d.minf)||void 0===h||null===(c=h.stbl)||void 0===c?void 0:c.stss,i.ext.ctts=null===(u=o.mdia)||void 0===u||null===(p=u.minf)||void 0===p||null===(f=p.stbl)||void 0===f?void 0:f.ctts,r&&"encv"===r.type)i.isVideoEncryption=!0,r.default_KID=null===(m=r.sinf)||void 0===m||null===(g=m.schi)||void 0===g?void 0:g.tenc.default_KID,r.default_IsEncrypted=null===(y=r.sinf)||void 0===y||null===(A=y.schi)||void 0===A?void 0:A.tenc.default_IsEncrypted,r.default_IV_size=null===(b=r.sinf)||void 0===b||null===(v=b.schi)||void 0===v?void 0:v.tenc.default_IV_size,i.videoSenc=o.mdia.minf.stbl.senc&&o.mdia.minf.stbl.senc.samples,r.data_format=null===(_=r.sinf)||void 0===_||null===(S=_.frma)||void 0===S?void 0:S.data_format,i.useEME=e.useEME,i.kidValue=e.kidValue,i.pssh=e.pssh,i.encv=r}if(n&&i){var w,E,T,k,C,x,R,D,L;const t=i,a=null===(w=n.tkhd)||void 0===w?void 0:w.trackId;null!=a&&(t.id=n.tkhd.trackId),t.tkhdDuration=n.tkhd.duration,t.mvhdDurtion=e.mvhd.duration,t.mvhdTimecale=e.mvhd.timescale,t.timescale=t.formatTimescale=n.mdia.mdhd.timescale,t.duration=n.mdia.mdhd.duration||t.mvhdDurtion/t.mvhdTimecale*t.timescale;const o=n.mdia.minf.stbl.stsd.entries[0];switch(t.sampleSize=o.sampleSize,t.sampleRate=o.sampleRate,t.channelCount=o.channelCount,t.present=!0,o.type){case"alaw":t.codecType=t.codec=Ab,t.sampleRate=8e3;break;case"ulaw":t.codecType=t.codec=bb,t.sampleRate=8e3;break;default:t.codecType=yb,t.sampleDuration=Sb.getFrameDuration(t.sampleRate,t.timescale),t.sampleRateIndex=Sb.getRateIndexByRate(t.sampleRate),t.objectType=(null===(s=o.esds)||void 0===s?void 0:s.objectType)||2,o.esds&&(t.config=Array.from(o.esds.config)),t.codec=(null===(r=o.esds)||void 0===r?void 0:r.codec)||"mp4a.40.2"}var P,B,I,M,U,F,O,N;if(t.sampleDuration=Sb.getFrameDuration(t.sampleRate,t.timescale),t.objectType=(null===(E=o.esds)||void 0===E?void 0:E.objectType)||2,o.esds&&(o.esds.config?t.config=Array.from(o.esds.config):console.warn("esds config is null")),t.codec=(null===(T=o.esds)||void 0===T?void 0:T.codec)||"mp4a.40.2",t.sampleRateIndex=Sb.getRateIndexByRate(t.sampleRate),t.ext={},t.ext.stss=null===(k=n.mdia)||void 0===k||null===(C=k.minf)||void 0===C||null===(x=C.stbl)||void 0===x?void 0:x.stss,t.ext.ctts=null===(R=n.mdia)||void 0===R||null===(D=R.minf)||void 0===D||null===(L=D.stbl)||void 0===L?void 0:L.ctts,t.present=!0,o&&"enca"===o.type)t.isAudioEncryption=!0,o.data_format=null===(P=o.sinf)||void 0===P||null===(B=P.frma)||void 0===B?void 0:B.data_format,o.default_KID=null===(I=o.sinf)||void 0===I||null===(M=I.schi)||void 0===M?void 0:M.tenc.default_KID,o.default_IsEncrypted=null===(U=o.sinf)||void 0===U||null===(F=U.schi)||void 0===F?void 0:F.tenc.default_IsEncrypted,o.default_IV_size=null===(O=o.sinf)||void 0===O||null===(N=O.schi)||void 0===N?void 0:N.tenc.default_IV_size,t.audioSenc=n.mdia.minf.stbl.senc&&n.mdia.minf.stbl.senc.samples,t.useEME=e.useEME,t.kidValue=e.kidValue,t.enca=o}if(i&&(i.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!i&&i.isAudioEncryption),null!=t&&t.encv||null!=i&&i.enca){var j,z;const e=null==t||null===(j=t.encv)||void 0===j?void 0:j.default_KID,s=null==i||null===(z=i.enca)||void 0===z?void 0:z.default_KID,r=e||s?(e||s).join(""):null;t&&(t.kid=r),i&&(i.kid=r)}return t&&(t.flags=3841),i&&(i.flags=1793),{videoTrack:t,audioTrack:i}}static evaluateDefaultDuration(e,t,i){var s;const r=null==t||null===(s=t.samples)||void 0===s?void 0:s.length;if(!r)return 1024;return 1024*r/t.timescale*e.timescale/i}static moofToSamples(e,t,i){const s={};return e.mfhd&&(t&&(t.sequenceNumber=e.mfhd.sequenceNumber),i&&(i.sequenceNumber=e.mfhd.sequenceNumber)),e.traf.forEach((e=>{let{tfhd:r,tfdt:a,trun:o}=e;if(!r||!o)return;a&&(t&&t.id===r.trackId&&(t.baseMediaDecodeTime=a.baseMediaDecodeTime),i&&i.id===r.trackId&&(i.baseMediaDecodeTime=a.baseMediaDecodeTime));const n=r.defaultSampleSize||0,l=r.defaultSampleDuration||Rb.evaluateDefaultDuration(t,i,o.samples.length||o.sampleCount);let d=o.dataOffset||0,h=0,c=-1;if(!o.samples.length&&o.sampleCount){s[r.trackId]=[];for(let e=0;e((e={offset:d,dts:h,pts:h+(e.cts||0),duration:e.duration||l,size:e.size||n,gopId:c,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(c++,e.gopId=c),h+=e.duration,d+=e.size,e)))})),s}static moovToSamples(e){const t=e.trak;if(!t||!t.length)return;const i=t.find((e=>{var t,i;return"vide"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)})),s=t.find((e=>{var t,i;return"soun"===(null===(t=e.mdia)||void 0===t||null===(i=t.hdlr)||void 0===i?void 0:i.handlerType)}));if(!i&&!s)return;let r,a;if(i){var o,n;const e=null===(o=i.mdia)||void 0===o||null===(n=o.minf)||void 0===n?void 0:n.stbl;if(!e)return;const{stts:t,stsc:s,stsz:a,stco:l,stss:d,ctts:h}=e;if(!(t&&s&&a&&l&&d))return;r=wb(t,s,a,l,h,d)}if(s){var l,d,h;const e=null===(l=s.mdia)||void 0===l||null===(d=l.minf)||void 0===d?void 0:d.stbl;if(!e)return;const t=null===(h=s.mdia.mdhd)||void 0===h?void 0:h.timescale,{stts:i,stsc:r,stsz:o,stco:n}=e;if(!(t&&i&&r&&o&&n))return;a=wb(i,r,o,n)}return{videoSamples:r,audioSamples:a}}}class Db extends Dd{constructor(e){super(e),this.player=e,this.TAG_NAME="HlsFmp4Loader",this.tempSampleListInfo={},this.isInitVideo=!1,this.isInitAudio=!1,this.videoTrack={id:1,samples:[],sps:[],pps:[],vps:[],codec:""},this.audioTrack={id:2,samples:[],sampleRate:0,channelCount:0,codec:"",codecType:""},this.workerClearTimeout=null,this.workerUrl=null,this.loopWorker=null,this._hasCalcFps=!1,this._basefps=25,this.player.isUseMSE()||this._initLoopWorker(),e.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.workerUrl&&(URL.revokeObjectURL(this.workerUrl),this.workerUrl=null),this.workerClearTimeout&&(clearTimeout(this.workerClearTimeout),this.workerClearTimeout=null),this.loopWorker&&(this.loopWorker.postMessage({cmd:"destroy"}),this.loopWorker.terminate(),this.loopWorker=null),this._hasCalcFps=!1,this.videoTrack=null,this.audioTrack=null,this.isInitVideo=!1,this.isInitAudio=!1,this._basefps=25,this.player.debug.log(this.TAG_NAME,"destroy")}demux(e,t){let i=this.audioTrack,s=this.videoTrack;if(this.checkInitAudio(),this.checkInitVideo(),i.samples=[],s.samples=[],t){if(this.player.updateStats({abps:t.byteLength}),po(this.isInitAudio)){const e=Rb.findBox(t,["moov"])[0];if(!e)return void this.player.debug.error(this.TAG_NAME,"cannot found moov box");Rb.moovToTrack(Rb.moov(e),null,i),this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"audioData audio init success"),this._sendAccADTSHeader(i))}const e=Rb.findBox(t,["moof"])[0];if(e){const s=Rb.moofToSamples(Rb.moof(e),null,i)[i.id],r=i.baseMediaDecodeTime;if(s){const a=e.start;s.map((e=>{e.offset+=a;const s=t.subarray(e.offset,e.offset+e.size),o=e.dts+r,n=new Uint8Array(s.length+2);n.set([175,1],0),n.set(s,2),i.samples.push({type:Ne,pts:o,dts:o,payload:n,duration:e.duration,size:n.byteLength})}))}}}if(e){if(this.player.updateStats({vbps:e.byteLength}),po(this.isInitVideo)&&po(this.isInitAudio)){const t=Rb.findBox(e,["moov"])[0];if(!t)throw new Error("cannot found moov box");if(Rb.moovToTrack(Rb.moov(t),s,i),po(this.isInitAudio)&&this.checkInitAudio()&&(this.player.debug.log(this.TAG_NAME,"videoData audio init success",i),this._sendAccADTSHeader(i)),this.checkInitVideo()){this.player.debug.log(this.TAG_NAME,"video init success");let e=null;s.codecType===as?s.sps.length&&s.vps.length&&s.pps.length&&(e=Nn({sps:s.sps[0],pps:s.pps[0],vps:s.vps[0]})):s.sps.length&&s.pps.length&&(e=Tn({sps:s.sps[0],pps:s.pps[0]})),e&&(this.player.debug.log(this.TAG_NAME,"seqHeader"),this._doDecodeByHls(e,je,0,!0,0))}}const t=Rb.findBox(e,["moof"])[0];if(t){const r=Rb.moofToSamples(Rb.moof(t),s,i),a=s.baseMediaDecodeTime,o=i.baseMediaDecodeTime,n=t.start;Object.keys(r).forEach((t=>{s.id==t?r[t].map((t=>{t.offset+=n;const i={type:je,pts:(t.pts||t.dts)+a,dts:t.dts+a,units:[],payload:null,isIFrame:!1};i.duration=t.duration,i.gopId=t.gopId,t.keyframe&&(i.isIFrame=!0);const r=e.subarray(t.offset,t.offset+t.size);i.payload=r,s.samples.push(i)})):i.id==t&&r[t].map((t=>{t.offset+=n;const s=e.subarray(t.offset,t.offset+t.size),r=t.dts+o,a=new Uint8Array(s.length+2);a.set([175,1],0),a.set(s,2),i.samples.push({type:Ne,pts:r,dts:r,payload:a,duration:t.duration,size:a.byteLength})}))}))}}const r=s.samples.concat(i.samples);r.sort(((e,t)=>e.dts-t.dts)),r.forEach((e=>{const t=new Uint8Array(e.payload);delete e.payload,this.player.isUseMSE()?e.type===je?this._doDecodeVideo({...e,payload:t}):e.type===Ne&&this._doDecodeAudio({...e,payload:t}):this.loopWorker.postMessage({...e,payload:t,cmd:"sample"},[t.buffer])})),po(this._hasCalcFps)&&(this._hasCalcFps=!0,this._calcDecodeFps(r))}checkInitAudio(){return this.isInitAudio=!!(this.audioTrack.sampleRate&&this.audioTrack.channelCount&&this.audioTrack.codec&&"aac"===this.audioTrack.codecType),this.isInitAudio}checkInitVideo(){return this.isInitVideo=!!(this.videoTrack.pps.length&&this.videoTrack.sps.length&&this.videoTrack.codec),this.isInitVideo}_sendAccADTSHeader(e){const t=jr({profile:e.objectType,sampleRate:e.sampleRateIndex,channel:e.channelCount});this._doDecodeByHls(t,Ne,0,!0,0)}_calcDecodeFps(e){const t=ro(e.map((e=>({ts:e.dts||e.pts,type:e.type}))),je);t&&(this.player.debug.log(this.TAG_NAME,`_calcDecodeFps() video fps is ${t}, update base fps is ${this._basefps}`),this._basefps=t),this._postMessageToLoopWorker("updateBaseFps",{baseFps:this._basefps})}_initLoopWorker(){this.player.debug.log(this.TAG_NAME,"_initLoopWorker()");const e=Ao(function(){const e=1,t=2;let i=new class{constructor(){this.baseFps=0,this.fpsInterval=null,this.preLoopTimestamp=null,this.startBpsTime=null,this.allSampleList=[]}destroy(){this._clearInterval(),this.baseFps=0,this.allSampleList=[],this.preLoopTimestamp=null,this.startBpsTime=null}updateBaseFps(e){this.baseFps=e,this._clearInterval(),this._startInterval()}pushSample(e){delete e.cmd,this.allSampleList.push(e)}_startInterval(){const e=Math.ceil(1e3/this.baseFps);this.fpsInterval=setInterval((()=>{let t=(new Date).getTime();this.preLoopTimestamp||(this.preLoopTimestamp=t),this.startBpsTime||(this.startBpsTime=t);const i=t-this.preLoopTimestamp;if(i>2*e&&console.warn(`JbPro:[HlsFmp4Loader LoopWorker] loop interval is ${i}ms, more than ${e} * 2ms`),this._loop(),this.preLoopTimestamp=(new Date).getTime(),this.startBpsTime){t-this.startBpsTime>=1e3&&(this._calcSampleList(),this.startBpsTime=t)}}),e)}_clearInterval(){this.fpsInterval&&(clearInterval(this.fpsInterval),this.fpsInterval=null)}_calcSampleList(){const i={buferredDuration:0,allListLength:this.allSampleList.length,audioListLength:0,videoListLength:0};this.allSampleList.forEach((s=>{s.type===t?(i.videoListLength++,s.duration&&(i.buferredDuration+=s.duration)):s.type===e&&i.audioListLength++})),postMessage({cmd:"sampleListInfo",...i})}_loop(){let i=null;if(this.allSampleList.length)if(i=this.allSampleList.shift(),i.type===t){postMessage({cmd:"decodeVideo",...i},[i.payload.buffer]);let t=this.allSampleList[0];for(;t&&t.type===e;)i=this.allSampleList.shift(),postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),t=this.allSampleList[0]}else i.type===e&&(postMessage({cmd:"decodeAudio",...i},[i.payload.buffer]),this.allSampleList.length&&this.allSampleList[0].type===t&&(i=this.allSampleList.shift(),postMessage({cmd:"decodeVideo",...i},[i.payload.buffer])))}};self.onmessage=e=>{const t=e.data;switch(t.cmd){case"updateBaseFps":i.updateBaseFps(t.baseFps);break;case"sample":i.pushSample(t);break;case"destroy":i.destroy(),i=null}}}.toString()),t=new Blob([e],{type:"text/javascript"}),i=URL.createObjectURL(t);let s=new Worker(i);this.workerUrl=i,this.workerClearTimeout=setTimeout((()=>{window.URL.revokeObjectURL(this.workerUrl),this.workerUrl=null,this.workerClearTimeout=null}),te),s.onmessage=e=>{const t=e.data;switch(t.cmd){case"decodeVideo":this._doDecodeVideo(t);break;case"decodeAudio":this._doDecodeAudio(t);break;case"sampleListInfo":this.tempSampleListInfo=t}},this.loopWorker=s}_postMessageToLoopWorker(e,t){this.player.isUseMSE()||(this.loopWorker?this.loopWorker.postMessage({cmd:e,...t}):this.player.debug.warn(this.TAG_NAME,"loop worker is not init, can not post message"))}_doDecodeAudio(e){const t=new Uint8Array(e.payload);this._doDecodeByHls(t,Ne,e.dts,!1,0)}_doDecodeVideo(e){const t=new Uint8Array(e.payload);let i=null;i=e.isHevc?jn(t,e.isIFrame):kn(t,e.isIFrame),this.player.updateStats({dts:e.dts});const s=e.pts-e.dts;this._doDecodeByHls(i,je,e.dts,e.isIFrame,s)}getBuferredDuration(){return this.tempSampleListInfo.buferredDuration||0}getSampleListLength(){return this.tempSampleListInfo.allListLength||0}getSampleAudioListLength(){return this.tempSampleListInfo.audioListLength||0}getSampleVideoListLength(){return this.tempSampleListInfo.videoListLength||0}}class Lb{constructor(e,t){this.hls=e,this.player=this.hls.player,this.isMP4=t,this._initSegmentId="",this.TAG_NAME="HlsTransmuxer",this._demuxer=t?new Db(this.hls.player):new pb(this.hls.player),this.player.debug.log(this.TAG_NAME,`init and isMP4 is ${t}`)}destroy(){this._demuxer&&(this._demuxer.destroy(),this._demuxer=null)}transmux(e,t,i,s,r,a){this.player.debug.log(this.TAG_NAME,`transmux videoChunk:${e&&e.byteLength}, audioChunk:${t&&t.byteLength}, discontinuity:${i}, contiguous:${s}, startTime:${r}, needInit:${a}`);const o=this._demuxer;try{this.isMP4?o.demux(e,t):o.demuxAndFix(Yd(e,t),i,s,r)}catch(e){throw new jA(NA,OA,e)}}}class Pb{constructor(e){this.hls=e,this.player=e.player,this._decryptor=new ub(this.hls,this.player),this._transmuxer=null,this._mse=null,this._softVideo=null,this._sourceCreated=!1,this._needInitSegment=!0,this._directAppend=!1,this.TAG_NAME="HlsBufferService"}async destroy(){this._softVideo=null,this._transmuxer&&(this._transmuxer.destroy(),this._transmuxer=null)}get baseDts(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t._baseDts}get nbSb(){return 0}async updateDuration(e){this.player.debug.log(this.TAG_NAME,"updateDuration()",e)}getBuferredDuration(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getBuferredDuration()}getBufferedSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleListLength()}getBufferedAudioSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleAudioListLength()}getBufferedVideoSegments(){var e,t;return null===(e=this._transmuxer)||void 0===e||null===(t=e._demuxer)||void 0===t?void 0:t.getSampleVideoListLength()}createSource(e,t,i,s){if(this._sourceCreated)return;const r=e||t;r&&(pb.probe(r)?this._transmuxer||(this._transmuxer=new Lb(this.hls,!1)):Rb.probe(r)?this._transmuxer||(this._transmuxer=new Lb(this.hls,!0)):this.player.debug.error(this.TAG_NAME,"createSource error: chunk is not ts"))}async appendBuffer(e,t,i,s,r,a,o){if(null!=i&&i.length||null!=s&&s.length)return this._needInitSegment,this._transmuxer.transmux(i,s,r,a,o,this._needInitSegment||r),!0}async clearAllBuffer(){this.player.debug.log(this.TAG_NAME,"clearAllBuffer")}decryptBuffer(e,t){return this._decryptor.decrypt(e,t)}async reset(){this._transmuxer=null,this._needInitSegment=!0,this._directAppend=!1}async endOfStream(){this._softVideo&&this._softVideo.endOfStream()}async setLiveSeekableRange(e,t){}seamlessSwitch(){this._needInitSegment=!0}}class Bb{constructor(e){this.emitter=e,this._seiSet=new Set,e.on(Zs,(e=>{e&&this._seiSet.add(e)}))}throw(e){if(null==e||!this._seiSet.size)return;const t=e-.2,i=e+.2,s=[];this._seiSet.forEach((e=>{e.time>=t&&e.time<=i&&s.push(e)})),s.forEach((e=>{this._seiSet.delete(e),this.emitter.emit(er,e)}))}reset(){this._seiSet.clear()}}class Ib{constructor(e){this._timescale=e,this.encodeType="",this.audioCodec="",this.videoCodec="",this.domain="",this.fps=0,this.bitrate=0,this.width=0,this.height=0,this.samplerate=0,this.channelCount=0,this.gop=0,this._bitsAccumulateSize=0,this._bitsAccumulateDuration=0}getStats(){return{encodeType:this.encodeType,audioCodec:this.audioCodec,videoCodec:this.videoCodec,domain:this.domain,fps:this.fps,bitrate:this.bitrate,width:this.width,height:this.height,samplerate:this.samplerate,channelCount:this.channelCount,gop:this.gop}}setEncodeType(e){this.encodeType=e}setFpsFromScriptData(e){var t;let{data:i}=e;const s=null==i||null===(t=i.onMetaData)||void 0===t?void 0:t.framerate;s&&s>0&&s<100&&(this.fps=s)}setVideoMeta(e){if(this.width=e.width,this.height=e.height,this.videoCodec=e.codec,this.encodeType=e.codecType,e.fpsNum&&e.fpsDen){const t=e.fpsNum/e.fpsDen;t>0&&t<100&&(this.fps=t)}}setAudioMeta(e){this.audioCodec=e.codec,this.samplerate=e.sampleRate,this.channelCount=e.channelCount}setDomain(e){this.domain=e.split("/").slice(2,3)[0]}updateBitrate(e){if((!this.fps||this.fps>=100)&&e.length){const t=e.reduce(((e,t)=>e+t.duration),0)/e.length;this.fps=Math.round(this._timescale/t)}e.forEach((e=>{1===e.gopId&&this.gop++,this._bitsAccumulateDuration+=e.duration/(this._timescale/1e3),this._bitsAccumulateSize+=e.units.reduce(((e,t)=>e+t.length),0),this._bitsAccumulateDuration>=1e3&&(this.bitrate=8*this._bitsAccumulateSize,this._bitsAccumulateDuration=0,this._bitsAccumulateSize=0)}))}}class Mb{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;zd(this,"_core",null),zd(this,"_samples",[]),this._core=e,this._timescale=t,this._stats=new Ib(t),this._bindEvents()}getStats(){var e,t,i,s,r,a,o;const{currentTime:n=0,decodeFps:l=0}=(null===(e=this._core)||void 0===e?void 0:e.media)||{};return{...this._stats.getStats(),downloadSpeed:(null===(t=this._core)||void 0===t||null===(i=t.speedInfo)||void 0===i?void 0:i.call(t).speed)||0,avgSpeed:(null===(s=this._core)||void 0===s||null===(r=s.speedInfo)||void 0===r?void 0:r.call(s).avgSpeed)||0,currentTime:n,bufferEnd:(null===(a=this._core)||void 0===a||null===(o=a.bufferInfo())||void 0===o?void 0:o.remaining)||0,decodeFps:l}}_bindEvents(){this._core.on(Vs,(e=>this._stats.updateBitrate(e.samples))),this._core.on($s,(e=>{this._stats.setFpsFromScriptData(e)})),this._core.on(Ws,(e=>{"video"===e.type?this._stats.setVideoMeta(e.track):this._stats.setAudioMeta(e.track)})),this._core.on(Js,(e=>{this._stats.setDomain(e.responseUrl)}))}reset(){this._samples=[],this._stats=new Ib(this._timescale)}}class Ub extends So{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),zd(this,"_loadSegment",(async()=>{if(this._segmentProcessing)return void this.player.debug.warn("_loadSegment()","_segmentProcessing is ture and return");if(!this._playlist)return void this.player.debug.warn("_loadSegment()","this._playlist is null and return");const e=this._playlist.currentSegment,t=this._playlist.nextSegment;if(this.player.debug.log(this.TAG_NAME,"_loadSegment()","curSeg",e&&e.url,"nextSeg",t&&t.url),t)return this._loadSegmentDirect();this.player.debug.log(this.TAG_NAME,"nextSeg is null and return")})),this.player=e,this.config=null,this._manifestLoader=null,this._segmentLoader=null,this._playlist=null,this._bufferService=null,this._seiService=null,this._stats=null,this._prevSegSn=null,this._prevSegCc=null,this._tickTimer=null,this._tickInterval=500,this._segmentProcessing=!1,this._reloadOnPlay=!1,this._switchUrlOpts=null,this._disconnectTimer=null,this.TAG_NAME="Hls256",this.canVideoPlay=!1,this.$videoElement=null,this.config=t=function(e){return{isLive:!0,maxPlaylistSize:50,retryCount:3,retryDelay:1e3,pollRetryCount:2,loadTimeout:1e4,preloadTime:30,softDecode:!1,bufferBehind:10,maxJumpDistance:3,startTime:0,targetLatency:10,maxLatency:20,allowedStreamTrackChange:!0,...e}}(t),this._manifestLoader=new nb(this),this._segmentLoader=new db(this),this._playlist=new cb(this),this._bufferService=new Pb(this),this._seiService=new Bb(this),this._stats=new Mb(this,9e4),this.player.debug.log(this.TAG_NAME,"init")}async destroy(){this.player.debug.log(this.TAG_NAME,"destroy()"),this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),await Promise.all([this._clear(),this._bufferService.destroy()]),this._manifestLoader&&(await this._manifestLoader.destroy(),this._manifestLoader=null),this._segmentLoader&&(this._segmentLoader.destroy(),this._segmentLoader=null),this._playlist&&(this._playlist.destroy(),this._playlist=null),this.player.debug.log(this.TAG_NAME,"destroy end")}_startTick(){this._stopTick(),this._tickTimer=setTimeout((()=>{this._tick()}),this._tickInterval)}_stopTick(){this._tickTimer&&clearTimeout(this._tickTimer),this._tickTimer=null}_tick(){this.player.isDestroyedOrClosed()?this.player.debug.log(this.TAG_NAME,"_tick() player is destroyed"):(this._startTick(),this._loadSegment())}get isLive(){return this._playlist.isLive}get streams(){return this._playlist.streams}get currentStream(){return this._playlist.currentStream}get hasSubtitle(){return this._playlist.hasSubtitle}get baseDts(){var e;return null===(e=this._bufferService)||void 0===e?void 0:e.baseDts}speedInfo(){return this._segmentLoader.speedInfo()}resetBandwidth(){this._segmentLoader.resetBandwidth()}getStats(){return this._stats.getStats()}async loadSource(e){return await this._reset(),await this._loadData(e),this._startTick(),!0}async _loadData(e){try{e&&(e=e.trim())}catch(e){}if(!e)throw this._emitError(new jA(UA,UA,null,null,"m3u8 url is missing"));const t=await this._loadM3U8(e),{currentStream:i}=this._playlist;if(this._urlSwitching){var s,r;if(0===i.bitrate&&null!==(s=this._switchUrlOpts)&&void 0!==s&&s.bitrate)i.bitrate=null===(r=this._switchUrlOpts)||void 0===r?void 0:r.bitrate;const e=this._getSeamlessSwitchPoint();this.config.startTime=e;const t=this._playlist.findSegmentIndexByTime(e),a=this._playlist.getSegmentByIndex(t+1);if(a){const e=a.start;this.player.debug.warn(this.TAG_NAME,`clear buffer from ${e}`)}}t&&(this.isLive?(this.player.debug.log(this.TAG_NAME,"is live"),this._bufferService.setLiveSeekableRange(0,4294967295),this.config.targetLatency{let[t,i,o]=e;t?(this._playlist.upsertPlaylist(t,i,o),this.isLive&&this._pollM3U8(s,r,a)):this.player.debug.warn(this.TAG_NAME,"_refreshM3U8() mediaPlaylist is empty")})).catch((e=>{throw this._emitError(jA.create(e))}))}_pollM3U8(e,t,i){var s;let r=this._playlist.isEmpty;this._manifestLoader.poll(e,t,i,((e,t,i)=>{this._playlist.upsertPlaylist(e,t,i),this._playlist.clearOldSegment(),e&&r&&!this._playlist.isEmpty&&this._loadSegment(),r&&(r=this._playlist.isEmpty)}),(e=>{this._emitError(jA.create(e))}),1e3*((null===(s=this._playlist.lastSegment)||void 0===s?void 0:s.duration)||0))}async _loadSegmentDirect(){const e=this._playlist.nextSegment;if(!e)return void this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() !seg");let t=!1,i=null;try{this._segmentProcessing=!0,t=await this._reqAndBufferSegment(e,this._playlist.getAudioSegment(e))}catch(e){i=e}finally{this._segmentProcessing=!1}return i?this._emitError(jA.create(i)):(t?(this._urlSwitching&&(this._urlSwitching=!1,this.emit(ir,{url:this.config.url})),this._playlist.moveSegmentPointer(),this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast",e.isLast),e.isLast?(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","seg.isLast"),this._end()):(this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect()","and next _loadSegment()"),this._loadSegment())):this.player.debug.log(this.TAG_NAME,"_loadSegmentDirect() not appended"),t)}async _reqAndBufferSegment(e,t){this.player.debug.log(this.TAG_NAME,"video seg",e&&e.url,"audio seg",t&&t.url);const i=e?e.cc:t.cc,s=this._prevSegCc!==i;let r=[];try{r=await this._segmentLoader.load(e,t,s)}catch(e){throw e.fatal=!1,this._segmentLoader.error=e,e}if(!r[0])return;const a=await this._bufferService.decryptBuffer(...r);if(!a)return void this.player.debug.log(this.TAG_NAME,"decryptBuffer return null");const o=e?e.sn:t.sn,n=e?e.start:t.start,l=this._playlist.currentStream;return this._bufferService.createSource(a[0],a[1],null==l?void 0:l.videoCodec,null==l?void 0:l.audioCodec),await this._bufferService.appendBuffer(e,t,a[0],a[1],s,this._prevSegSn===o-1,n),this._prevSegCc=i,this._prevSegSn=o,!0}async _clear(){this.player.debug.log(this.TAG_NAME,"_clear()"),clearTimeout(this._disconnectTimer),this._stopTick(),await Promise.all([this._segmentLoader.cancel(),this._manifestLoader.stopPoll()]),this._segmentProcessing=!1}async _reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.player.debug.log(this.TAG_NAME,"_reset()"),this._reloadOnPlay=!1,this._prevSegSn=null,this._prevSegCc=null,this._switchUrlOpts=null,this._playlist.reset(),this._segmentLoader.reset(),this._seiService.reset(),this._stats.reset(),await this._clear(),this._bufferService.reset(e)}_end(){this.player.debug.log(this.TAG_NAME,"_end()"),this._clear()}_emitError(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var s;!1===(null===(t=e.originError)||void 0===t?void 0:t.fatal)?console.warn(e):(console.table(e),console.error(e),console.error(null===(s=this.media)||void 0===s?void 0:s.error),this._stopTick(),this._urlSwitching&&(this._urlSwitching=!1,this.emit(tr,e)),i&&this._end(),this._seiService.reset(),this.emit(ar,e));return e}_getSeamlessSwitchPoint(){const{media:e}=this;let t=e.currentTime;if(!e.paused){var i;const s=this._playlist.findSegmentIndexByTime(e.currentTime),r=this._playlist.getSegmentByIndex(s),a=null===(i=this._stats)||void 0===i?void 0:i.getStats().downloadSpeed;if(a&&r){t+=r.duration*this._playlist.currentStream.bitrate/a+1}else t+=5}return t}getDemuxBuferredDuration(){return this._bufferService.getBuferredDuration()||0}getDemuxBufferedListLength(){return this._bufferService.getBufferedSegments()||0}getDemuxAudioBufferedListLength(){return this._bufferService.getBufferedAudioSegments()||0}getDemuxVideoBufferedListLength(){return this._bufferService.getBufferedVideoSegments()||0}}class Fb extends So{constructor(e){super(),zd(this,"TAG_NAME","Hls256Decoder"),this.player=e,this.$videoElement=this.player.video.$videoElement,this.hls=null,this.eventsDestroy=[],this.bandwidthEstimateInterval=null,this.hls=new Ub(e),this._bindEvents()}async destroy(){return this._stopBandwidthEstimateInterval(),this.hls&&(await this.hls.destroy(),this.hls=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.$videoElement=null,this.player.debug.log(this.TAG_NAME,"destroy"),!0}_bindEvents(){this.hls.on(ar,(e=>{this.player.emitError(ct.hlsError,e)})),this._startBandwidthEstimateInterval()}_startBandwidthEstimateInterval(){this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{const e=this.hls.speedInfo();this.player.emit(nt.kBps,(e.avgSpeed/1024/8).toFixed(2)),this.hls.resetBandwidth()}),1e3)}_stopBandwidthEstimateInterval(){this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}async loadSource(e){return this.url=e,await this.hls.loadSource(e),!0}checkHlsBufferedDelay(){let e=0;return this.hls&&(e=this.hls.getDemuxBuferredDuration()),e}getDemuxBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxBufferedListLength()),e}getDemuxAudioBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxAudioBufferedListLength()),e}getDemuxVideoBufferedListLength(){let e=0;return this.hls&&(e=this.hls.getDemuxVideoBufferedListLength()),e}}class Ob extends So{constructor(e){super(),this.player=e,this.TAG_NAME="CommonWebrtc",this.rtcPeerConnection=null,this.videoStream=null,this.isDisconnected=!1,this.isH264=this.player.isWebrtcH264(),this.eventsDestroy=[],this.supportVideoFrameCallbackHandle=null,this.isInitInfo=!1,this.$videoElement=this.player.video.$videoElement,this.bandwidthEstimateInterval=null,this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this.prevWebrtcVideoStats={},this.prevWebrtcAudioStats={},this.currentWebrtcStats={},this.player._opt.webrtcUseCanvasRender&&this.isH264&&(this.$videoElement=document.createElement("video"),Aa()&&(this.$videoElement.style.position="absolute"),this._initVideoEvents()),this.$videoElement.muted=!0,this._initRtcPeerConnection()}destroy(){this.isDisconnected=!1,this.isInitInfo=!1,this.prevWebrtcVideoStats={},this.currentWebrtcStats={},this.rtcPeerTrackVideoReceiver=null,this.rtcPeerTrackAudioReceiver=null,this._stopBandwidthEstimateInterval(),this.supportVideoFrameCallbackHandle&&this.$videoElement&&(this.$videoElement.cancelVideoFrameCallback(this.supportVideoFrameCallbackHandle),this.supportVideoFrameCallbackHandle=null),this.eventsDestroy.length&&(this.eventsDestroy.forEach((e=>e())),this.eventsDestroy=[]),this.isH264&&(this.videoStream&&(this.videoStream.getTracks().forEach((e=>e.stop())),this.videoStream=null),this.$videoElement.srcObject=null),this.rtcPeerConnection&&(this.rtcPeerConnection.onicecandidate=ta,this.rtcPeerConnection.ontrack=ta,this.rtcPeerConnection.onconnectionstatechange=ta,this.rtcPeerConnection.ondatachannel=ta,this.rtcPeerConnection.close(),this.rtcPeerConnection=null)}_initVideoEvents(){const{proxy:e}=this.player.events,t=e(this.$videoElement,es,(()=>{this.player.debug.log(this.TAG_NAME,"video canplay"),this.$videoElement.play().then((()=>{this.player.debug.log(this.TAG_NAME,"video play"),this._startCanvasRender(),this._initRenderSize()})).catch((e=>{this.player.debug.warn(this.TAG_NAME,"video play error ",e)}))})),i=e(this.$videoElement,ts,(()=>{this.player.debug.log("HlsDecoder","video waiting")})),s=e(this.$videoElement,is,(e=>{const t=parseInt(e.timeStamp,10);this.player.handleRender(),this.player.updateStats({ts:t}),this.$videoElement.paused&&(this.player.debug.warn("HlsDecoder","video is paused and next try to replay"),this.$videoElement.play().then((()=>{this.player.debug.log("HlsDecoder","video is paused and replay success")})).catch((e=>{this.player.debug.warn("HlsDecoder","video is paused and replay error ",e)})))})),r=e(this.$videoElement,ss,(()=>{this.player.debug.log("HlsDecoder","video playback Rate change",this.$videoElement&&this.$videoElement.playbackRate)}));this.eventsDestroy.push(t,i,s,r)}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(nt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(nt.webrtcFailed);break;case"disconnected":t.emit(nt.webrtcDisconnect);break;case"closed":t.emit(nt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=t=>{if(this.player.debug.log(this.TAG_NAME,"ontrack",t),"video"===t.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let i=t.streams[0];this.$videoElement.autoplay=!0,this.$videoElement.srcObject=i,this.videoStream=i}else"audio"===t.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===t.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror",e),this.player.emitError(ct.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(this.player.debug.log(this.TAG_NAME,"onconnectionstatechange",i),this.player.emit(nt.webrtcOnConnectionStateChange,e.connectionState),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(nt.webrtcFailed)}},this.rtcPeerConnection=e}_startBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_startBandwidthEstimateInterval"),this._stopBandwidthEstimateInterval(),this.bandwidthEstimateInterval=setInterval((()=>{this.rtcPeerTrackVideoReceiver&&this.rtcPeerTrackVideoReceiver.getStats().then((e=>{let t={},i=0;e.forEach((e=>{if(e)switch(e.type){case _r:("succeeded"===e.state||e.bytesReceived)&&(this.currentWebrtcStats.timestamp=e.timestamp,this.currentWebrtcStats.rtt=e.currentRoundTripTime||-1,this.currentWebrtcStats.bytesReceived=e.bytesReceived||0,this.currentWebrtcStats.bytesSent=e.bytesSent||0);break;case Er:this.currentWebrtcStats.remoteCandidate=e||{};break;case wr:this.currentWebrtcStats.localCandidate=e||{};break;case Sr:this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcVideoStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcVideoStats.bytesReceived||0),a=Math.floor(r/s);i+=a,t.vbps=a,this.prevWebrtcVideoStats=e;break;case Tr:e.frameWidth&&e.frameHeight&&(this.currentWebrtcStats.frameWidth=e.frameWidth||0,this.currentWebrtcStats.frameHeight=e.frameHeight||0)}})),this.rtcPeerTrackAudioReceiver?this.rtcPeerTrackAudioReceiver.getStats().then((e=>{e.forEach((e=>{if(e&&e.type===Sr){this.currentWebrtcStats.lastTimeStamp=e.timestamp;const s=((e.timestamp||0)-(this.prevWebrtcAudioStats.timestamp||0))/1e3,r=Number(e.bytesReceived||0)-Number(this.prevWebrtcAudioStats.bytesReceived||0),a=Math.floor(r/s);i+=a,t.abps=a,this.prevWebrtcAudioStats=e}})),this.player.updateStats(t),this.player.emit(nt.kBps,(i/1024).toFixed(2))})):(this.player.updateStats(t),this.player.emit(nt.kBps,(i/1024).toFixed(2)))}))}),1e3)}_stopBandwidthEstimateInterval(){this.player.debug.log(this.TAG_NAME,"_stopBandwidthEstimateInterval"),this.bandwidthEstimateInterval&&(clearInterval(this.bandwidthEstimateInterval),this.bandwidthEstimateInterval=null)}_startCanvasRender(){bo()?this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)):(this._stopCanvasRender(),this.canvasRenderInterval=setInterval((()=>{this.player.video.render({$video:this.$videoElement,ts:0})}),40))}_stopCanvasRender(){this.canvasRenderInterval&&(clearInterval(this.canvasRenderInterval),this.canvasRenderInterval=null)}videoFrameCallback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player.isDestroyedOrClosed()?this.player.debug.log(this.TAG_NAME,"videoFrameCallback() player is destroyed"):(this.player.video.render({$video:this.$videoElement,ts:t.mediaTime||0}),this.player.updateStats({dts:t.mediaTime||0}),this.supportVideoFrameCallbackHandle=this.$videoElement.requestVideoFrameCallback(this.videoFrameCallback.bind(this)))}_initRenderSize(){this.isInitInfo||(this.player.video.updateVideoInfo({width:this.$videoElement.videoWidth,height:this.$videoElement.videoHeight}),this.player.video.initCanvasViewSize(),this.isInitInfo=!0)}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}}class Nb extends Ob{constructor(e){super(e),this.rtcPeerConnectionDataChannel=null,this.player.isWebrtcH265()&&(this.streamRate=ha((t=>{e.emit(nt.kBps,(t/1024).toFixed(2))}))),this.TAG_NAME="WebrtcForM7SDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.stopStreamRateInterval(),this.rtcPeerConnectionDataChannel&&(this.rtcPeerConnectionDataChannel.onopen=ta,this.rtcPeerConnectionDataChannel.onclose=ta,this.rtcPeerConnectionDataChannel.onmessage=ta,this.rtcPeerConnectionDataChannel.close(),this.rtcPeerConnectionDataChannel=null),this.player.debug.log(this.TAG_NAME,"destroy")}_initRtcPeerConnection(){const e=new RTCPeerConnection,t=this.player;e.addTransceiver("video",{direction:"recvonly"}),e.addTransceiver("audio",{direction:"recvonly"}),e.onsignalingstatechange=e=>{this.player.debug.log(this.TAG_NAME,"onsignalingstatechange",e)},e.oniceconnectionstatechange=i=>{this.player.debug.log(this.TAG_NAME,"oniceconnectionstatechange",e.iceConnectionState);const s=e.iceConnectionState;switch(this.player.emit(nt.webrtcOnIceConnectionStateChange,s),this.isDisconnected="disconnected"===s,e.iceConnectionState){case"new":case"checking":case"closed":case"connected":case"completed":break;case"failed":t.emit(nt.webrtcFailed);break;case"disconnected":t.emit(nt.webrtcDisconnect);break;case"closed":t.emit(nt.webrtcClosed)}},e.onicecandidate=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidate",e),e.candidate&&this.player.debug.log(this.TAG_NAME,"Remote ICE candidate: ",e.candidate.candidate)},e.ontrack=i=>{this.player.debug.log(this.TAG_NAME,"ontrack",i);const s=t.video.$videoElement;if(t.isWebrtcH264())if("video"===i.track.kind){this.player.debug.log(this.TAG_NAME,"ontrack video"),this.rtcPeerTrackVideoReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackVideoReceiver&&this._startBandwidthEstimateInterval();let t=i.streams[0];s.autoplay=!0,s.srcObject=t,this.videoStream=t}else"audio"===i.track.kind&&(this.player.debug.log(this.TAG_NAME,"ontrack audio"),this.rtcPeerTrackAudioReceiver=e.getReceivers().find((function(e){return e.track===i.track})),this.rtcPeerTrackAudioReceiver&&this._startBandwidthEstimateInterval())},e.onicecandidateerror=e=>{this.player.debug.log(this.TAG_NAME,"onicecandidateerror",e),this.player.emitError(ct.webrtcIceCandidateError,e)},e.onconnectionstatechange=i=>{switch(t.debug.log(this.TAG_NAME,`sdp connect status ${e.connectionState}`),e.connectionState){case"new":case"connecting":case"connected":case"disconnected":break;case"failed":this.isDisconnected&&t.emit(nt.webrtcFailed)}},e.ondatachannel=e=>{const t=e.channel;this.player.debug.log(this.TAG_NAME,"ondatachannel"),t.onopen=()=>{this.player.debug.log(this.TAG_NAME,"ondatachannel and onopen")},t.onmessage=e=>{const t=e.data;if(this.player.isWebrtcH264())return this.player.debug.warn(this.TAG_NAME,"ondatachannel is H265 but decode is h264 so emit webrtcStreamH265 "),void this.player.emit(nt.webrtcStreamH265);this.player.isDestroyedOrClosed()?this.player.debug.warn(this.TAG_NAME,"ondatachannel and player is destroyed"):(this.streamRate&&this.streamRate(t.byteLength),this.player.demux&&this.player.demux.dispatch(t))},t.onclose=()=>{this.player.debug.warn(this.TAG_NAME,"ondatachannel and onclose")},this.rtcPeerConnectionDataChannel=t};e.createDataChannel("signal").onmessage=e=>{this.player.debug.log(this.TAG_NAME,"signalChannel,onmessage",e);JSON.parse(e.data).type},this.rtcPeerConnection=e}startStreamRateInterval(){this.stopStreamRateInterval(),this.streamRateInterval=setInterval((()=>{this.streamRate&&this.streamRate(0)}),1e3)}stopStreamRateInterval(){this.streamRateInterval&&(clearInterval(this.streamRateInterval),this.streamRateInterval=null)}loadSource(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{const r=this.rtcPeerConnection;r.createOffer().then((a=>{r.setLocalDescription(a),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t,i){let s={"Content-Type":"application/sdp"};return i.username&&i.password&&(s.Authorization="Basic "+btoa(i.username+":"+i.password)),fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:s,body:t})}(e,a.sdp,t).then((e=>{e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response"),e?r.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{this.player.isWebrtcH265()&&this.startStreamRateInterval(),i()})).catch((e=>{s(e)})):s("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e),s(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),s(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),s(e)}))}))}}class jb extends Ob{constructor(e){super(e),this.TAG_NAME="WebrtcForZLMDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return bl({url:e,type:"POST",data:t,contentType:"text/plain;charset=utf-8",processData:!1,dataType:"json"})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return i(r.msg);r&&r.sdp?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r.sdp})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class zb extends So{constructor(e,t){if(super(),this.player=e,this.player.$container.classList.add("jb-pro-container-playback"),this._showPrecision=null,this._startTime=null,this._playStartTime=null,this._playingTimestamp=null,this._fps=parseInt(t.fps,10)||e._opt.playbackFps,this._isUseFpsRender=!!uo(t.isUseFpsRender),this._rate=1,this._audioTimestamp=0,this._videoTimestamp=0,this.controlType=t.controlType||Q.normal,t.controlType&&-1===[Q.normal,Q.simple].indexOf(t.controlType)&&(this.player.debug.warn("Playback","constructor()","controlType is not in [normal,simple]",t.controlType),this.controlType=Q.normal),this._currentLocalTimestamp=0,this._localOneFrameTimestamp=t.localOneFrameTimestamp||40,this._localCalculateTimeInterval=null,this._isUseLocalCalculateTime=!!uo(t.isUseLocalCalculateTime),this._isPlaybackPauseClearCache=!po(t.isPlaybackPauseClearCache),this._isCacheBeforeDecodeForFpsRender=!!uo(t.isCacheBeforeDecodeForFpsRender),this._startfpsTime=null,this._startFpsTimestamp=null,this._checkStatsInterval=null,this._playbackTs=0,this._renderFps=0,this._isUseLocalCalculateTime?this._startLocalCalculateTime():this._listen(),this.playbackList=[],this._playbackListStartTimestamp=null,this._totalDuration=0,t.controlType===Q.normal)this.initPlaybackList(t.playList,t.showPrecision,t.startTime);else if(t.controlType===Q.simple){t.duration&&(this._totalDuration=1e3*t.duration);let e=t.startTime||0;e>this.totalDuration&&(e=this.totalDuration),this.setStartTime(e)}this.player.on(nt.playbackPause,(e=>{e?this.pause():this.resume()}));const i={fps:this._fps,isUseFpsRender:this._isUseFpsRender,localOneFrameTimestamp:this._localOneFrameTimestamp,isUseLocalCalculateTime:this._isUseLocalCalculateTime,uiUsePlaybackPause:t.uiUsePlaybackPause,showControl:t.showControl};e.debug.log("Playback","init",JSON.stringify(i))}destroy(){this._startTime=null,this._showPrecision=null,this._playStartTime=null,this._playingTimestamp=null,this._totalDuration=0,this._audioTimestamp=0,this._videoTimestamp=0,this._fps=null,this._isUseFpsRender=!1,this._rate=1,this.playbackList=[],this._playbackListStartTimestamp=null,this._localCalculateTimeInterval=null,this._currentLocalTimestamp=0,this._startfpsTime=null,this._startFpsTimestamp=null,this._renderFps=0,this._playbackTs=0,this._stopLocalCalculateTime(),this.clearStatsInterval(),this.player.$container&&this.player.$container.classList.remove("jb-pro-container-playback"),this.off(),this.player.debug.log("Playback","destroy")}_listen(){this.player.on(nt.stats,(e=>{const t=e.ts;this._playStartTime||(this._playStartTime=t-1e3);let i=t-this._playStartTime;this.setPlayingTimestamp(i)}))}pause(){this.clearStatsInterval()}resume(){this.startCheckStatsInterval()}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._startFpsTimestamp||(this._startFpsTimestamp=aa()),Ba(e.ts)&&(this.player.updateStats({fps:!0,ts:e.ts}),this._playbackTs=e.ts,this._startfpsTime||(this._startfpsTime=e.ts),this._renderFps+=1);const t=aa(),i=t-this._startFpsTimestamp;if(i<1e3)return;let s=null;this._startfpsTime&&(s=this._playbackTs-this._startfpsTime),this.player.emit(nt.playbackStats,{fps:this._renderFps,rate:this.rate,start:this._startfpsTime,end:this._playbackTs,timestamp:i,dataTimestamp:s,audioBufferSize:this.player.audio?this.player.audio.bufferSize:0,videoBufferSize:this.player.video?this.player.video.bufferSize:0,ts:this._playbackTs}),this._renderFps=0,this._startfpsTime=this._playbackTs,this._startFpsTimestamp=t}updateLocalOneFrameTimestamp(e){this._localOneFrameTimestamp=e}_startLocalCalculateTime(){this._stopLocalCalculateTime(),this._localCalculateTimeInterval=setInterval((()=>{const e=this._currentLocalTimestamp;this._playStartTime||(this._playStartTime=e-1e3);let t=e-this._playStartTime;this.setPlayingTimestamp(t)}),1e3)}startCheckStatsInterval(){this.clearStatsInterval(),this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}_stopLocalCalculateTime(){this._localCalculateTimeInterval&&(clearInterval(this._localCalculateTimeInterval),this._localCalculateTimeInterval=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}increaseLocalTimestamp(){this._isUseLocalCalculateTime&&(this._currentLocalTimestamp+=this._localOneFrameTimestamp)}initPlaybackList(e,t,i){this.playbackList=e||[];let s=0;if(this.playbackList.forEach(((e,t)=>{10===Ga(e.start)&&(e.startTimestamp=1e3*e.start,e.startTime=ba(e.startTimestamp)),10===Ga(e.end)&&(e.endTimestamp=1e3*e.end,e.endTime=ba(e.endTimestamp)),e.duration=e.end-e.start,s+=e.duration})),this._totalDuration=s,this.player.debug.log("Playback",this.playbackList),this.playbackList.length>0){const e=this.playbackList[0].startTimestamp;this._playbackListStartTimestamp=e;let t=e;i&&(10===Ga(i)&&(i*=1e3),this._isTimeInPlaybackList(i)&&(t=i)),this.setStartTime(t)}const r=t||Si;this.setShowPrecision(r)}get totalDuration(){return(this._totalDuration||0)/1e3}get startTime(){return this._startTime||0}setStartTime(e){this._startTime=e,this._playingTimestamp=e,this._playStartTime=null}setRate(e){this._rate=e,this.player.emit(nt.playbackRateChange,e)}get fps(){return this._fps}get rate(){return this._rate}get isUseFpsRender(){return this._isUseFpsRender}get isUseLocalCalculateTime(){return this._isUseLocalCalculateTime}get showPrecision(){return this._showPrecision}get is60Min(){return this.showPrecision===Si}get is30Min(){return this.showPrecision===wi}get is10Min(){return this.showPrecision===Ei}get is5Min(){return this.showPrecision===Ti}get is1Min(){return this.showPrecision===Ti}get isPlaybackPauseClearCache(){return this._isPlaybackPauseClearCache}get isCacheBeforeDecodeForFpsRender(){return this._isCacheBeforeDecodeForFpsRender}setShowPrecision(e){Ci.includes(e)||(this.player.debug.warn("Playback","setShowPrecision()","type is not in PLAYBACK_CONTROL_TIME_PRECISION_ARRAY",e),e=Si),this._showPrecision&&this._showPrecision===e||(this._showPrecision=e,this.player.emit(nt.playbackPrecision,this._showPrecision,this.playbackList),this.player.emit(nt.playbackShowPrecisionChange,this._showPrecision))}setPlayingTimestamp(e){let t;if(this.controlType===Q.normal){t=this.startTime+e,this._playingTimestamp=t,this.player.emit(nt.playbackTime,t);const i=new Date(t);this.player.emit(nt.playbackTimestamp,{ts:t,hour:i.getHours(),min:i.getMinutes(),second:i.getSeconds()})}else this.controlType===Q.simple&&(t=this.startTime+Math.round(e/1e3),t>this.totalDuration&&(this.player.debug.log("Playback","setPlayingTimestamp()",`timestamp ${t} > this.totalDuration ${this.totalDuration}`),t=this.totalDuration),this._playingTimestamp=t,this.player.emit(nt.playbackTime,t),this.player.emit(nt.playbackTimestamp,{ts:t}))}get playingTimestamp(){return this._playingTimestamp}narrowPrecision(){const e=Ci.indexOf(this.showPrecision)-1;if(e>=0){const t=Ci[e];this.setShowPrecision(t)}}expandPrecision(){const e=Ci.indexOf(this.showPrecision)+1;if(e<=Ci.length-1){const t=Ci[e];this.setShowPrecision(t)}}seek(e){if(this.player.debug.log("Playback","seek()",e),this.controlType===Q.normal){if("true"===e.hasRecord){let t=e.time;"min"===e.type&&(t=60*e.time);let i=function(e){let t={};e>-1&&(t={hour:Math.floor(e/60/60)%60,min:Math.floor(e/60)%60,second:e%60});return t}(t);if(this._playbackListStartTimestamp){const e=new Date(this._playbackListStartTimestamp).setHours(i.hour,i.min,i.second,0);i.timestamp=e;const t=this._findMoreInfoByTimestamp(e);i&&t.more&&(i.more=t.more)}this.player.emit(nt.playbackSeek,i)}}else if(this.controlType===Q.simple){let t=e.time;this.player.emit(nt.playbackSeek,{ts:t})}}currentTimeScroll(){this.player.emit(nt.playbackTimeScroll)}_findMoreInfoByTimestamp(e){let t=null;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=i)})),t}_isTimeInPlaybackList(e){let t=!1;return this.playbackList.forEach(((i,s)=>{i.startTimestamp<=e&&i.endTimestamp>=e&&(t=!0)})),t}getControlType(){return this.controlType}isControlTypeNormal(){return this.controlType===Q.normal}isControlTypeSimple(){return this.controlType===Q.simple}}class Gb extends So{constructor(e){super(),this.player=e,this.TAG_NAME="zoom",this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.maxScale=5,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0};const{events:{proxy:t},debug:i}=this.player;this.player.on(nt.zooming,(e=>{if(e){this.player.$container.classList.add("jb-pro-zoom-control"),this._bindEvents();const e=this.player.video.$videoElement.style.transform;let t=this.player.video.$videoElement.offsetLeft,i=this.player.video.$videoElement.offsetTop;t=parseFloat(t),i=parseFloat(i),t&&(this.videoPosition.left=t),i&&(this.videoPosition.top=i),this.prevVideoElementStyleTransform=e;let s=e.match(/scale\([0-9., ]*\)/g);if(s&&s[0]){let e=s[0].replace("scale(","").replace(")","");this.prevVideoElementStyleScale=e.split(",")}}else{this.player.$container.classList.remove("jb-pro-zoom-control"),this._unbindEvents(),this._resetVideoPosition(),this.player.$container.style.cursor="auto";let e=this.prevVideoElementStyleTransform;this.player.video.$videoElement.style.transform=e,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,ua()&&this.player._opt.useWebFullScreen&&this.player.resize()}}));const s=t(window,ua()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(s),e.debug.log("zoom","init")}destroy(){this.bindEvents=[],this.isDragging=!1,this.currentZoom=1,this.prevVideoElementStyleTransform=null,this.prevVideoElementStyleScale=null,this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.off(),this.player.debug.log("zoom","destroy")}_bindEvents(){const{events:{proxy:e},debug:t}=this.player,i=e(this.player.$container,ua()?"touchmove":"mousemove",(e=>{this.handleMouseMove(e)}));this.bindEvents.push(i);const s=e(this.player.$container,ua()?"touchstart":"mousedown",(e=>{this.handleMouseDown(e)}));this.bindEvents.push(s);const r=e(window,ua()?"touchend":"mouseup",(e=>{this.handleMouseUp(e)}));this.bindEvents.push(r)}_unbindEvents(){this.bindEvents.forEach((e=>{e&&e()}))}handleMouseMove(e){if(e.stopPropagation(),this.isDragging&&this.player.zooming){e.preventDefault();const{posX:t,posY:i}=Qa(e),s=this.tempPosition.x-t,r=this.tempPosition.y-i;this.videoPosition.left=this.videoPosition.left-s,this.videoPosition.top=this.videoPosition.top-r,this.tempPosition.x=t,this.tempPosition.y=i,this.updateVideoPosition()}}handleMouseDown(e){e.stopPropagation();const t=qa(e);if(this.player.zooming&&(t.matches("video")||t.matches("canvas"))){e.preventDefault();const{posX:t,posY:i}=Qa(e);this.player.$container.style.cursor="grabbing",this.tempPosition.x=t,this.tempPosition.y=i,this.isDragging=!0,this.player.debug.log("zoom","handleMouseDown is dragging true")}}handleMouseUp(e){e.stopPropagation(),this.isDragging&&this.player.zooming&&(e.preventDefault(),this.tempPosition={x:0,y:0},this.isDragging=!1,this.player.$container.style.cursor="grab",this.player.debug.log("zoom","handleMouseUp is dragging false"))}updateVideoPosition(){const e=this.player.video.$videoElement;e.style.left=this.videoPosition.left+"px",e.style.top=this.videoPosition.top+"px"}_resetVideoPosition(){this.player.resize(),this.tempPosition={x:0,y:0},this.videoPosition={left:0,top:0},this.currentZoom=1,this.isDragging=!1}narrowPrecision(){this.currentZoom<=1||(this.currentZoom-=1,this.updateVideoElementScale())}expandPrecision(){this.currentZoom>=this.maxScale||(this.currentZoom+=1,this.updateVideoElementScale())}updatePrevVideoElementStyleScale(e){this.prevVideoElementStyleScale=e}updateVideoElementScale(){const e=this.player.video.$videoElement;let t=e.style.transform,i=1,s=1;if(this.prevVideoElementStyleScale){const e=this.prevVideoElementStyleScale[0];void 0!==e&&(i=e,s=e);const t=this.prevVideoElementStyleScale[1];void 0!==t&&(s=t)}s=_a(s),i=_a(i);const r=.5*i*(this.currentZoom-1)+i,a=.5*s*(this.currentZoom-1)+s;let o;o=-1===t.indexOf("scale(")?t+` scale(${r},${a})`:t.replace(/scale\([0-9., ]*\)/,`scale(${r},${a})`),this.player.debug.log("zoom",`updateVideoElementScale end is ${r}, ${a} style is ${o}`),e.style.transform=o}}class Hb extends So{constructor(e){super(),this.player=e,this.faceDetector=null,this.objectDetector=null,this.imageDetector=null,this.occlusionDetector=null,this.initFaceDetector(),this.initObjectDetector(),this.initImageDetector(),this.initOcclusionDetector();let t="init";this.faceDetector&&(t+=" and use faceDetector"),this.objectDetector&&(t+=" and use objectDetector"),this.imageDetector&&(t+=" and use imageDetector"),this.occlusionDetector&&(t+=" and use occlusionDetector"),this.player.debug.log("AiLoader",t)}destroy(){this.off(),this.faceDetector&&(this.faceDetector.destroy(),this.faceDetector=null),this.objectDetector&&(this.objectDetector.destroy(),this.objectDetector=null),this.imageDetector&&(this.imageDetector.destroy(),this.imageDetector=null),this.occlusionDetector&&(this.occlusionDetector.destroy(),this.occlusionDetector=null),this.player.debug.log("AiLoader","destroy")}initFaceDetector(){if(this.player._opt.useFaceDetector&&window.JessibucaProFaceDetector){const e=new JessibucaProFaceDetector({detectWidth:this.player._opt.aiFaceDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init face detector success"),this.faceDetector=e,this.faceDetector.on("jessibuca-pro-face-detector-info",(e=>{if(this.player.emit(nt.aiFaceDetectorInfo,e),this.player._opt.aiFaceDetectShowRect){const t=this.player._opt.aiFaceDetectRectConfig||{},i=(e.list||[]).map((e=>(e.type="rect",e.color=t.borderColor||"#0000FF",e.lineWidth=t.borderWidth||2,e)));this.player.video&&this.player.video.addAiContentToCanvas(i)}}))}))}}initObjectDetector(){if(this.player._opt.useObjectDetector&&window.JessibucaProObjectDetector){const e=new JessibucaProObjectDetector({detectWidth:this.player._opt.aiObjectDetectWidth,showRect:!1,debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init object detector success"),this.objectDetector=e,this.objectDetector.on("jessibuca-pro-object-detector-info",(e=>{if(this.player.emit(nt.aiObjectDetectorInfo,e),this.player._opt.aiObjectDetectShowRect){const t=[],i=this.player._opt.aiObjectDetectRectConfig||{};(e.list||[]).forEach((e=>{const s={type:"rect",color:i.borderColor||"#0000FF",lineWidth:i.borderWidth||2,x:e.rect.x,y:e.rect.y,width:e.rect.width,height:e.rect.height},r={type:"text",color:i.color||"#000",fontSize:i.fontSize||14,text:e.zh,x:e.rect.x,y:e.rect.y-25};t.push(s,r)})),this.player.video&&this.player.video.addAiContentToCanvas(t)}}))}))}}initImageDetector(){if(this.player._opt.useImageDetector&&window.JessibucaProImageDetector){const e=new JessibucaProImageDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init image detector success"),this.imageDetector=e}))}}initOcclusionDetector(){if(this.player._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector){const e=new JessibucaProOcclusionDetector({debug:this.player._opt.debug,debugLevel:this.player._opt.debugLevel,debugUuid:this.player._opt.debugUuid});e.load().then((()=>{this.player.debug.log("AiLoader","init occlusion detector success"),this.occlusionDetector=e}))}}updateFaceDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.faceDetector&&this.faceDetector.updateConfig(e)}updateObjectDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.objectDetector&&this.objectDetector.updateConfig(e)}updateImageDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.imageDetector&&this.imageDetector.updateConfig(e)}updateOcclusionDetectorConfig(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.occlusionDetector&&this.occlusionDetector.updateConfig(e)}}class Vb extends So{constructor(e){super(),this.player=e,this.LOG_NAME="Contextmenu",this.menuList=[],this.$contextmenus=e.control.$contextmenus,ua()?this.player.debug.warn(this.LOG_NAME,"not support mobile"):this.init(),e.debug.log(this.LOG_NAME,"init")}destroy(){this.menuList=[],this.player.debug.log(this.LOG_NAME,"destroy")}get isShow(){return e=this.player.$container,t="jb-pro-contextmenus-show",e.classList.contains(t);var e,t}show(){Ch(this.player.$container,"jb-pro-contextmenus-show")}hide(){var e,t;e=this.player.$container,t="jb-pro-contextmenus-show",e.classList.remove(t)}init(){const{events:{proxy:e},debug:t}=this.player;this.player._opt.contextmenuBtns.length>0&&this.player._opt.contextmenuBtns.forEach((e=>{this.addMenuItem(e)})),e(this.player.$container,"contextmenu",(e=>{e.preventDefault(),this.show();const t=e.clientX,i=e.clientY,{height:s,width:r,left:a,top:o}=this.player.$container.getBoundingClientRect(),{height:n,width:l}=this.$contextmenus.getBoundingClientRect();let d=t-a,h=i-o;t+l>a+r&&(d=r-l),i+n>o+s&&(h=s-n),na(this.$contextmenus,{left:`${d}px`,top:`${h}px`})})),e(this.player.$container,"click",(e=>{Dh(e,this.$contextmenus)||this.hide()})),this.player.on(nt.blur,(()=>{this.hide()}))}_validateMenuItem(e){let t=!0;return e.content||(this.player.debug.warn(this.LOG_NAME,"content is required"),t=!1),t}addMenuItem(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=no(Ns);if(e=Object.assign({},t,e),!this._validateMenuItem(e))return;const{events:{proxy:i},debug:s}=this.player,r=Sa(),a=`\n
\n ${e.content}\n
\n `,o=Array.from(this.$contextmenus.children)[e.index];o?o.insertAdjacentHTML("beforebegin",a):xh(this.$contextmenus,a);const n=this.$contextmenus.querySelector(`.jb-pro-contextmenu-${r}`);e.click&&i(n,"click",(t=>{t.preventDefault(),e.click.call(this.player,this,t),this.hide()})),this.menuList.push({uuid:r,$menuItem:n})}}class $b extends Ob{constructor(e){super(e),this.TAG_NAME="WebrtcForSRSDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`);const r=e;if(r&&0!==r.code)return i(r.msg);r?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:r})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class Wb extends Ob{constructor(e){super(e),this.TAG_NAME="WebrtcForOthersDecoder",this.player.debug.log(this.TAG_NAME,"init")}destroy(){super.destroy(),this.player.debug.log(this.TAG_NAME,"destroy")}loadSource(e){return new Promise(((t,i)=>{const s=this.rtcPeerConnection;s.createOffer().then((r=>{s.setLocalDescription(r),this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp loadSource"),function(e,t){return fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"include",redirect:"follow",referrerPolicy:"no-referrer",headers:{"Content-Type":"application/sdp"},body:t})}(e,r.sdp).then((e=>{this.player.debug.log(this.TAG_NAME,`getWebRtcRemoteSdp response and code is ${e.code}`),e.text().then((e=>{this.player.debug.log(this.TAG_NAME,"getWebRtcRemoteSdp response");try{let t=JSON.parse(e);this.player.debug.log(this.TAG_NAME,"this is json sdp response"),0!=t.code&&(this.player.debug.log(this.TAG_NAME,`response json code ${t.code}`),i(new Error(`response sdp json code: ${t.code}`))),e=t.sdp}catch(e){this.player.debug.log(this.TAG_NAME,"this is raw sdp response")}e?s.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e})).then((()=>{t()})).catch((e=>{i(e)})):i("sdp is null")})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource response.text() error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource getWebRtcRemoteSdp response error",e),i(e)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource rtcPeerConnection.createOffer() error",e),i(e)}))}))}}class Jb extends So{constructor(e){if(super(),this.TAG_NAME="AliyunRtc",this.player=e,!window.AliRTS)throw new Error("AliyunRtc is not defined");this.aliyunRtc=window.AliRTS.createClient(),this.aliyunRtcRemoteStream=null,this.$videoElement=this.player.video.$videoElement,this.listenEvents(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.aliyunRtc&&(this.aliyunRtcRemoteStream&&(this.aliyunRtcRemoteStream=null),this.aliyunRtc.unsubscribe(),this.aliyunRtc=null),this.off(),this.player.debug.log(this.TAG_NAME,"destroy")}listenEvents(){this.aliyunRtc.on("onError",(e=>{this.player.debug.log(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),10400!==e.errorCode&&(this.player.debug.error(this.TAG_NAME,`onError and code is ${e.errorCode} and message: ${e.message}`),this.player.emitError(ct.aliyunRtcError,e))})),this.aliyunRtc.on("reconnect",(e=>{this.player.debug.log(this.TAG_NAME,"reconnect",e)}));const e="canplay",t="waiting",i="playing",s="media";this.aliyunRtc.on("onPlayEvent",(r=>{if(r.event===e)this.player.debug.log(this.TAG_NAME,"onPlayEvent and canplay");else if(r.event===t)this.player.debug.log(this.TAG_NAME,"onPlayEvent and playing - > waiting");else if(r.event===i)this.player.debug.log(this.TAG_NAME,"onPlayEvent and waiting -> playing");else if(r.event===s){const e=r.data;let t={},i=0;if(e.audio){const s=Math.floor(e.audio.bytesReceivedPerSecond);i+=s,t.abps=s}if(e.video){const s=Math.floor(e.video.bytesReceivedPerSecond);i+=s,t.vbps=s}this.player.updateStats(t),this.player.emit(nt.kBps,(i/1024).toFixed(2))}}))}loadSource(e){return new Promise(((t,i)=>{this.aliyunRtc.isSupport({isReceiveVideo:!0}).then((()=>{this.aliyunRtc.subscribe(e,{}).then((e=>{this.aliyunRtcRemoteStream=e,e.play(this.$videoElement),t()})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and subscribe is not success: ",e.message),i(e.message)}))})).catch((e=>{this.player.debug.error(this.TAG_NAME,"loadSource and is not support: ",e.message),i(e.message)}))}))}getVideoCurrentTime(){let e=0;return this.$videoElement&&(e=this.$videoElement.currentTime),e}}class qb{constructor(e){this.player=e,this.TAG_NAME="PressureObserverCpu",this.observer=null,this.latestCpuInfo=null,this.currentLevel=-1,this._init(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.latestCpuInfo=null,this.currentLevel=-1,this.player.debug.log(this.TAG_NAME,"destroy")}getCurrentCpuState(){return this.currentLevel}_init(){po(vo())?this.player.debug.log(this.TAG_NAME,"not support PressureObserver"):(this.observer=new PressureObserver((e=>{const t=(e||[]).find((e=>"cpu"===e.source));if(t){switch(this.latestCpuInfo=t,t.state){case"nominal":this.currentLevel=0;break;case"fair":this.currentLevel=1;break;case"serious":this.currentLevel=2;break;case"critical":this.currentLevel=3;break;default:this.currentLevel=-1}this.player.emit(nt.pressureObserverCpu,this.currentLevel)}})),this.observer&&this.observer.observe("cpu"))}}class Kb extends Po{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(e),this.TAG_NAME="DynamicWatermark",this.isPauseAnimation=!1,this.isStopAnimation=!1,this.rafID=null,this.speed=t.speed||.2,this.isDynamic=!0,this.shadowRootDynamicDom=null,this.isGhost=!0===t.isGhost,this.ghostConfig={on:t.on||5,off:t.off||5},this.waterMarkWillRemove=!1,this.waterMarkWillAdd=!1,this.player.once(nt.start,(()=>{const e=t.content;let i=this.player.getVideoInfo();i||(i={width:200,height:200}),this.update({text:{content:e,fontSize:t.fontSize||18,color:t.color||"white"},left:i.width*Math.random(),top:i.height*Math.random(),opacity:t.opacity||.15}),this.startAnimation()})),this.player.debug.log(this.TAG_NAME,"int")}destroy(){super.destroy(),this.shadowRootDynamicDom=null,this.stopAnimation(),this.rafID&&(cancelAnimationFrame(this.rafID),this.rafID=null)}startAnimation(){if(!this.rafID){let e=1,t=1,i=Math.random(),s={width:0,height:0};const r=()=>{try{if(po(this.isPauseAnimation)&&this.shadowRootDynamicDom&&this.shadowRootInnerDom){const a=this.shadowRootInnerDom,o=this.shadowRootDynamicDom,n=a.getBoundingClientRect(),l=o.getBoundingClientRect();if(l.width&&l.height&&(s.width=l.width,s.height=l.height),!this.shadowRootInnerDom.contains(this.shadowRootDynamicDom))return this.isGhost?po(this.waterMarkWillAdd)&&(this.waterMarkWillAdd=!0,setTimeout((()=>{this._addDom(n,s),this.waterMarkWillAdd=!1}),1e3*this.ghostConfig.off)):this._addDom(n,s),void(0!==this.speed&&requestAnimationFrame(r));const d=Math.min(1,0===this.speed?0:this.speed?this.speed:.2);let h=l.left-n.left,c=l.top-n.top;h+=d*t*i,c+=d*e*(1-i),h+s.width>n.width?(t=-1,i=Math.random()):h<0&&(t=1,i=Math.random()),c+s.height>n.height?(e=-1,i=Math.random()):c<0&&(e=1,i=Math.random()),h=Math.min(n.width-s.width,h),c=Math.min(n.height-s.height,c);const u=h/n.width*100,p=c/n.height*100;this.shadowRootDynamicDom.style.left=`${u}%`,this.shadowRootDynamicDom.style.top=`${p}%`,po(this.waterMarkWillRemove)&&this.isGhost&&(this.waterMarkWillRemove=!0,setTimeout((()=>{this._removeDom(),this.waterMarkWillRemove=!1}),1e3*this.ghostConfig.on))}}catch(e){}if(this.isStopAnimation)return this.isStopAnimation=!1,cancelAnimationFrame(this.rafID),void(this.rafID=null);0!==this.speed&&requestAnimationFrame(r)};this.rafID=requestAnimationFrame(r)}}_addDom(e,t){if(this.shadowRootInnerDom&&this.shadowRootDynamicDom){this.shadowRootInnerDom.appendChild(this.shadowRootDynamicDom);let i=e.width*Math.random(),s=e.height*Math.random();i=Math.min(e.width-2*t.width,i),s=Math.min(e.height-2*t.height,s),this.shadowRootDynamicDom.style.left=`${i}px`,this.shadowRootDynamicDom.style.top=`${s}px`}}resumeAnimation(){this.isPauseAnimation=!1}pauseAnimation(){this.isPauseAnimation=!0}stopAnimation(){this.isStopAnimation=!0}}class Yb extends So{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},this.TAG_NAME="Player",this.$container=e;const i=ho();if(this._opt=Object.assign({},i,t),this.debug=new Pr(this),this.debug.log(this.TAG_NAME,"init"),this._opt.forceNoOffscreen=!0,this._canPlayAppleMpegurl=!1,(Aa()||ya())&&(this._canPlayAppleMpegurl=Xa(),this.debug.log(this.TAG_NAME,"isIOS or isSafari and canPlayAppleMpegurl",this._canPlayAppleMpegurl)),ua()&&(this.debug.log(this.TAG_NAME,"isMobile and set _opt.controlAutoHide false"),this._opt.controlAutoHide=!1,uo(Mr.isEnabled)&&uo(this._opt.useWebFullScreen)&&(this.debug.log(this.TAG_NAME,"screenfull.isEnabled is true and _opt.useWebFullScreen is true , set _opt.useWebFullScreen false"),this._opt.useWebFullScreen=!1),po(Mr.isEnabled)&&po(this._opt.useWebFullScreen)&&(this.debug.log(this.TAG_NAME,"screenfull.isEnabled is false and _opt.useWebFullScreen is false , set _opt.useWebFullScreen true"),this._opt.useWebFullScreen=!0)),mo()&&(this.debug.log(this.TAG_NAME,"isIphone and set _opt.videoRenderSupportScale false"),this._opt.videoRenderSupportScale=!1,Wa()&&uo(this._opt.isHls)&&po(this._opt.supportHls265)&&(this.debug.log(this.TAG_NAME,"isIphone and is in wechat and is hls so set supportHls265 true"),this._opt.supportHls265=!0)),po(this._opt.playFailedAndReplay)&&(this.debug.log(this.TAG_NAME,"_opt.playFailedAndReplay is false and set others replay params false"),this._opt.webglAlignmentErrorReplay=!1,this._opt.webglContextLostErrorReplay=!1,this._opt.autoWasm=!1,this._opt.mseDecodeErrorReplay=!1,this._opt.mediaSourceTsIsMaxDiffReplay=!1,this._opt.wcsDecodeErrorReplay=!1,this._opt.wasmDecodeErrorReplay=!1,this._opt.simdDecodeErrorReplay=!1,this._opt.videoElementPlayingFailedReplay=!1,this._opt.networkDelayTimeoutReplay=!1,this._opt.widthOrHeightChangeReplay=!1,this._opt.simdH264DecodeVideoWidthIsTooLargeReplay=!1,this._opt.mediaSourceUseCanvasRenderPlayFailedReplay=!1,this._opt.heartTimeoutReplay=!1,this._opt.loadingTimeoutReplay=!1,this._opt.websocket1006ErrorReplay=!1,this._opt.streamErrorReplay=!1,this._opt.streamEndReplay=!1),this._opt.hiddenControl&&(this.debug.log(this.TAG_NAME,"_opt.hiddenControl is true and set others show btn to false"),Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(this._opt.operateBtns[e]=!1)})),this._opt.showBandwidth=!1,this._opt.extendOperateBtns=[],this._opt.controlHtml="",this.isPlayback()&&(this._opt.playbackConfig.showControl=!1)),this._opt.forceNoOffscreen||("undefined"==typeof OffscreenCanvas?(this._opt.forceNoOffscreen=!0,this._opt.useOffscreen=!1):this._opt.useOffscreen=!0),this._opt.isMpeg4&&(this.debug.log(this.TAG_NAME,"isMpeg4 is true, so set _opt.useWasm true and others params false"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!0),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.poster&&(this._opt.background=this._opt.poster),po(this._opt.muted)&&(this._opt.isNotMute=!0),this._opt.mseDecoderUseWorker&&(this._opt.mseDecoderUseWorker=!!(self.Worker&&self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&!0===self.MediaSource.canConstructInDedicatedWorker),po(this._opt.mseDecoderUseWorker)&&this.debug.log(this.TAG_NAME,"mseDecoderUseWorker is true but not support so set _opt.mseDecoderUseWorker = false")),(this.isOldHls()||this.isWebrtcH264()||this.isAliyunRtc())&&(this.debug.log(this.TAG_NAME,"isOldHls or isWebrtcH264 or isAliyunRtc is true, so set some params false and _opt.recordType is webm"),this._opt.useWCS=!1,this._opt.useMSE=!1,this._opt.isNakedFlow=!1,this._opt.useSIMD=!1,this._opt.isFmp4=!1,this._opt.useWasm=!1,this._opt.recordType=w),this._opt.isNakedFlow&&(this.debug.log(this.TAG_NAME,"isNakedFlow is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),ma()&&(this.debug.log(this.TAG_NAME,"isFirefox is true, so set _opt.mseDecodeAudio false"),this._opt.mseDecodeAudio=!1),!this.isOldHls()&&!this.isWebrtcH264()){if(this._opt.useWCS){const e="VideoEncoder"in window,t=Ca();this._opt.useWCS=e,this._opt.useWCS&&this._opt.isH265&&(this._opt.useWCS=t),this._opt.useWCS||this.debug.warn(this.TAG_NAME,`\n useWCS is true,\n and supportWCS is ${e}, supportHevcWCS is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useWCS false`),this._opt.useWCS&&(this._opt.useOffscreen?this._opt.wcsUseVideoRender=!1:this._opt.wcsUseVideoRender&&(this._opt.wcsUseVideoRender=xa()&&Ra(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"wcsUseVideoRender is true, but not support so set wcsUseVideoRender false")))}if(this._opt.useMSE){const e=function(){let e=!1;return"MediaSource"in self&&(e=!0),e}()||function(){let e=!1;return!("MediaSource"in self)&&"ManagedMediaSource"in self&&(e=!0),e}(),t=ka()||function(){let e=!1;return!("MediaSource"in self)&&"ManagedMediaSource"in self&&(self.ManagedMediaSource.isTypeSupported(ci)||self.ManagedMediaSource.isTypeSupported(ui)||self.ManagedMediaSource.isTypeSupported(pi)||self.ManagedMediaSource.isTypeSupported(fi)||self.ManagedMediaSource.isTypeSupported(mi))&&(e=!0),e}();this._opt.useMSE=e,this._opt.useMSE&&this._opt.isH265&&(this._opt.useMSE=t),this._opt.useMSE||this.debug.warn(this.TAG_NAME,`\n useMSE is true,\n and supportMSE is ${e}, supportHevcMSE is ${t} , _opt.isH265 is ${this._opt.isH265}\n so set useMSE false`)}}if(po(this._opt.useMSE)&&(this._opt.mseDecodeAudio=!1),this._opt.useMSE?(this._opt.useWCS&&this.debug.warn(this.TAG_NAME,"useMSE is true and useWCS is true then useWCS set true->false"),this._opt.forceNoOffscreen||this.debug.warn(this.TAG_NAME,"useMSE is true and forceNoOffscreen is false then forceNoOffscreen set false->true"),this._opt.useWCS=!1,this._opt.forceNoOffscreen=!0):this._opt.useWCS,this._opt.isWebrtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isWebrtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isHls&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isHls is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this._opt.isAliyunRtc&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"isAliyunRtc is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),this.isStreamWebTransport()&&this._opt.demuxUseWorker&&(this.debug.warn(this.TAG_NAME,"is stream use webTransport is true and demuxUseWorker is true then demuxUseWorker set true->false"),this._opt.demuxUseWorker=!1),po(this._opt.demuxUseWorker)&&(this._opt.mseDecoderUseWorker=!1),this.isPlayback()&&(this._opt.mseDecoderUseWorker=!1),this._opt.useMThreading&&(this._opt.useMThreading="undefined"!=typeof SharedArrayBuffer,this._opt.useMThreading||this.debug.warn(this.TAG_NAME,"useMThreading is true, but not support so set useMThreading false")),this._opt.useSIMD||-1!==this._opt.decoder.indexOf("-simd")){const e=WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11])),t=mo();this._opt.useSIMD=e&&po(t),this._opt.useSIMD||this.debug.warn(this.TAG_NAME,`useSIMD is true, but not support(isSupportSimd is ${e} ,isIphone is ${t}) so set useSIMD false`)}var s;if(this._opt.useSIMD?-1===this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-simd.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-simd-mt.js")):-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-mt.js"):this._opt.decoder=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro.js"):this._opt.useMThreading&&(this._opt.decoder=this._opt.decoder.replace("decoder-pro.js","decoder-pro-mt.js")),-1!==this._opt.decoder.indexOf("-simd")?this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-simd.js","decoder-pro-hard-not-wasm.js")):this._opt.useMThreading?(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro-mt.js","decoder-pro-hard-not-wasm.js")):(this._opt.decoderAudio=this._opt.decoder.replace("decoder-pro.js","decoder-pro-audio.js"),this._opt.decoderHard=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard.js"),this._opt.decoderHardNotWasm=this._opt.decoder.replace("decoder-pro.js","decoder-pro-hard-not-wasm.js")),po(this._opt.hasAudio)&&(this._opt.operateBtns.audio=!1),po(this._opt.hasVideo)&&(this._opt.operateBtns.fullscreen=!1,this._opt.operateBtns.screenshot=!1,this._opt.operateBtns.record=!1,this._opt.operateBtns.ptz=!1,this._opt.operateBtns.quality=!1,this._opt.operateBtns.zoom=!1),this._opt.qualityConfig&&0===this._opt.qualityConfig.length&&this._opt.operateBtns.quality&&(this._opt.operateBtns.quality=!1,this.debug.warn(this.TAG_NAME,"_opt.qualityConfig is empty, so set operateBtns.quality false")),uo(this._opt.useWebGPU)&&(this._opt.useWebGPU=function(){let e=!1;return"gpu"in navigator&&(e=!0),e}(),po(this._opt.useWebGPU)&&this.debug.warn(this.TAG_NAME,"useWebGPU is true, but not support so set useWebGPU false")),this._opt.hasControl=this._hasControl(),this._loading=!1,this._playing=!1,this._playbackPause=!1,this._hasLoaded=!1,this._zooming=!1,this._destroyed=!1,this._closed=!1,this._checkHeartTimeout=null,this._checkLoadingTimeout=null,this._checkStatsInterval=null,this._checkVisibleHiddenTimeout=null,this._startBpsTime=null,this._isPlayingBeforePageHidden=!1,this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={},this._faceDetectActive=!1,this._objectDetectActive=!1,this._occlusionDetectActive=!1,this._imageDetectActive=!1,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this._videoTimestamp=0,this._audioTimestamp=0,this._latestAudioTimestamp=0,this._videoIframeIntervalTs=0,this._streamQuality=this._opt.defaultStreamQuality||"",!this._streamQuality&&this._opt.qualityConfig.length>0&&(this._streamQuality=this._opt.qualityConfig[0]||""),this._visibility=!0,this._lastestVisibilityChangeTimestamp=null,this._tempWorkerStats=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._tempStreamList=[],this._tempInnerPlayBgobj=null,this._flvMetaData=null,this._flvMetaDataFps=null,this._mseWorkerData={},po(this._opt.useMSE)&&po(this._opt.useWCS)&&!this.isWebrtcH264()&&!this.isOldHls()&&(this._opt.useWasm=!0),(this.isOldHls()||this.isWebrtcH264())&&(this._opt.hasVideo=!0,this._opt.hasAudio=!0),this._opt.hasVideo||(this._opt.useMSE=!1,this._opt.useWCS=!1),this._opt.useWasm&&(this._opt.useOffscreen?this._opt.wasmUseVideoRender=!1:this._opt.wasmUseVideoRender&&(this._opt.wasmUseVideoRender=va()&&xa()&&Ra(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")),this._opt.useSIMD?this.debug.log(this.TAG_NAME,"use simd wasm"):this.debug.log(this.TAG_NAME,"use wasm")),this._opt.useWasm&&(this._opt.useFaceDetector&&window.JessibucaProFaceDetector||this._opt.useObjectDetector&&window.JessibucaProObjectDetector||this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||this._opt.useImageDetector&&window.JessibucaProImageDetector)?(this.ai=new Hb(this),this._opt.useFaceDetector&&window.JessibucaProFaceDetector||(this._opt.operateBtns.aiFace=!1),this._opt.useObjectDetector&&window.JessibucaProObjectDetector||(this._opt.operateBtns.aiObject=!1),this._opt.useOcclusionDetector&&window.JessibucaProOcclusionDetector||(this._opt.operateBtns.aiOcclusion=!1),this._opt.useImageDetector&&this._opt.aiImageDetectActive&&window.JessibucaProImageDetector&&(this.imageDetectActive=!0)):(this._opt.operateBtns.aiObject=!1,this._opt.operateBtns.aiFace=!1,this._opt.operateBtns.aiOcclusion=!1),this._opt.useFaceDetector&&(this._opt.useWasm&&window.JessibucaProFaceDetector||this.debug.warn(this.TAG_NAME,`use face detector, useWasm is ${this._opt.useWasm} and window.JbProFaceDetector is null`)),this._opt.useObjectDetector&&(this._opt.useWasm&&window.JessibucaProObjectDetector||this.debug.warn(this.TAG_NAME,`use object detector, useWasm is ${this._opt.useWasm} and window.JbProObjectDetector is null`)),this._opt.useOcclusionDetector&&(this._opt.useWasm&&window.JessibucaProOcclusionDetector||this.debug.warn(this.TAG_NAME,`use occlusion detector, useWasm is ${this._opt.useWasm} and window.JessibucaProOcclusionDetector is null`)),this._opt.useImageDetector&&(this._opt.useWasm&&window.JessibucaProImageDetector||this.debug.warn(this.TAG_NAME,`use image detector, useWasm is ${this._opt.useWasm} and window.JessibucaProImageDetector is null`)),this._opt.useVideoRender&&(this._opt.useWasm&&!this._opt.useOffscreen?(this._opt.wasmUseVideoRender=va()&&xa()&&Ra(),this._opt.wasmUseVideoRender||this.debug.warn(this.TAG_NAME,"use wasm video render, but not support so set wasmUseVideoRender false")):this._opt.useWCS&&!this._opt.useOffscreen&&(this._opt.wcsUseVideoRender=xa()&&Ra(),this._opt.wcsUseVideoRender||this.debug.warn(this.TAG_NAME,"use wcs video render, but not support so set wcsUseVideoRender false"))),this._opt.useCanvasRender&&(this._opt.useMSE&&po(this._opt.mseDecoderUseWorker)&&(this._opt.mseUseCanvasRender=!0),this._opt.useWasm&&(this._opt.wasmUseVideoRender=!1),this._opt.useWCS&&(this._opt.wcsUseVideoRender=!1),this.isOldHls()&&!Aa()&&(this._opt.hlsUseCanvasRender=!0),this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender=!0)),this._opt.useVideoRender=!1,this._opt.useCanvasRender=!1,this._opt.useWasm?this._opt.wasmUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useWCS?this._opt.wcsUseVideoRender?this._opt.useVideoRender=!0:this._opt.useCanvasRender=!0:this._opt.useMSE?this._opt.mseUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isOldHls()?this._opt.hlsUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0:this.isWebrtcH264()&&(this._opt.webrtcUseCanvasRender?this._opt.useCanvasRender=!0:this._opt.useVideoRender=!0),s=this,Object.defineProperty(s,"rect",{get:()=>{let e={};return s.$container&&(e=s.$container.getBoundingClientRect(),e.width=Math.max(e.width,s.$container.clientWidth),e.height=Math.max(e.height,s.$container.clientHeight)),e}}),["bottom","height","left","right","top","width"].forEach((e=>{Object.defineProperty(s,e,{get:()=>s.rect[e]||0})})),this.events=new _o(this),this._opt.hasVideo&&(this.video=new $o(this),this.recorder=new el(this)),this.isOldHls()?(this.hlsDecoder=new fA(this),this.loaded=!0):this.isWebrtcH264()?(this._opt.isWebrtcForZLM?this.webrtc=new jb(this):this._opt.isWebrtcForSRS?this.webrtc=new $b(this):this._opt.isWebrtcForOthers?this.webrtc=new Wb(this):this.webrtc=new Nb(this),this.loaded=!0):this.isAliyunRtc()?(this.aliyunRtcDecoder=new Jb(this),this.loaded=!0):(this.isUseHls265()&&(this.hlsDecoder=new Fb(this)),this.isWebrtcH265()&&(this.webrtc=new Nb(this)),po(Za(this._opt))?this.decoderWorker=new ol(this):this.loaded=!0),this._opt.hasAudio&&(this.audio=new cn(this)),this.stream=null,this.demux=null,this._lastVolume=null,this._isMute=null,this._isInZoom=!1,this._playingStartTimestamp=null,this.isMSEVideoDecoderInitializationFailedNotSupportHevc=!1,this.isMSEAudioDecoderError=!1,this.isMSEPlaybackRateChangePause=!1,this.isPlayFailedAndPaused=!1,this._opt.useWCS&&(this.webcodecsDecoder=new gh(this),!this._opt.hasAudio&&po(this._opt.demuxUseWorker)&&(this.loaded=!0)),this._opt.useMSE&&po(this._opt.mseDecoderUseWorker)&&(this.mseDecoder=new Hh(this),!this._opt.hasAudio&&po(this._opt.demuxUseWorker)&&(this.loaded=!0)),this.control=new Ih(this),this._opt.contextmenuBtns.length>0&&po(this._opt.disableContextmenu)&&pa()?this.contextmenu=new Vb(this):uo(this._opt.disableContextmenu)&&this._opt.contextmenuBtns.length>0&&pa()&&this.debug.warn(this.TAG_NAME,"disableContextmenu is true, but contextmenuBtns is not empty, so Contextmenu can not be created,please check"),this.isPlayback()&&(this.playback=new zb(this,this._opt.playbackConfig)),this._opt.operateBtns.zoom&&(this.zoom=new Gb(this)),/(iphone|ipad|ipod|ios|android)/i.test(window.navigator.userAgent.toLowerCase())&&po(this._opt.supportLockScreenPlayAudio&&ya())&&(this.keepScreenOn=new $h(this)),(e=>{try{const t=t=>{qa(t)===e.$container&&(e.emit(lt.fullscreen,e.fullscreen),e.fullscreen?e._opt.useMSE&&e.resize():e.resize())};Mr.on("change",t),e.events.destroys.push((()=>{Mr.off("change",t)}))}catch(e){}if(e.on(nt.decoderWorkerInit,(()=>{e.debug.log("player","listen decoderWorkerInit and set loaded true"),e.loaded=!0})),e.on(nt.play,(()=>{e.loading=!1})),e.on(nt.fullscreen,(t=>{if(t)try{Mr.request(e.$container).then((()=>{})).catch((t=>{e.debug.error("player","fullscreen request error",t),ua()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}))}catch(t){ua()&&e._opt.useWebFullScreen&&(e.webFullscreen=!0)}else try{Mr.exit().then((()=>{e.webFullscreen&&(e.webFullscreen=!1)})).catch((t=>{e.debug.error("player","fullscreen exit error",t),e.webFullscreen&&(e.webFullscreen=!1)}))}catch(t){e.webFullscreen&&(e.webFullscreen=!1)}})),ua()&&e.on(nt.webFullscreen,(t=>{t?e.$container.classList.add("jb-pro-fullscreen-web"):e.$container.classList.remove("jb-pro-fullscreen-web"),e.emit(lt.fullscreen,e.fullscreen)})),e.on(nt.resize,(()=>{e.video&&e.video.resize()})),e._opt.debug){const t=[nt.timeUpdate,nt.currentPts,nt.videoSEI],i=[nt.stats,nt.playbackStats,nt.playbackTimestamp,nt.flvMetaData,nt.playToRenderTimes,nt.audioInfo,nt.videoInfo];Object.keys(nt).forEach((s=>{e.on(nt[s],(function(r){if(!t.includes(s)){i.includes(s)&&(r=JSON.stringify(r));for(var a=arguments.length,o=new Array(a>1?a-1:0),n=1;n{e.on(ct[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.updateOption({rotate:e?270:0}),this.resize()}),10)}get webFullscreen(){return this.$container.classList.contains("jb-pro-fullscreen-web")}set loaded(e){this._hasLoaded=e}get loaded(){return this._hasLoaded||this.isOldHls()||this.isWebrtcH264()||this._opt.useMSE&&po(this._opt.hasAudio)&&po(this._opt.demuxUseWorker)||this._opt.useWCS&&!this._opt.hasAudio&&po(this._opt.demuxUseWorker)}set playing(e){this.isClosed()&&e?this.debug.log(this.TAG_NAME,"player is closed, so can not play"):(e&&uo(this.loading)&&(this.loading=!1),this.playing!==e&&(this._playing=e,this.emit(nt.playing,e),this.emit(nt.volumechange,this.volume),e?this.emit(nt.play):this.emit(nt.pause)))}get playing(){return this._playing}get volume(){return this.audio&&this.audio.volume||0}set volume(e){e!==this.volume&&(this.audio?(this.audio.setVolume(e),this._lastVolume=this.volume,this._isMute=0===this.volume):this.debug.warn(this.TAG_NAME,"set volume error, audio is null"))}get lastVolume(){return this._lastVolume}set loading(e){this.loading!==e&&(this._loading=e,this.emit(nt.loading,this._loading))}get loading(){return this._loading}set zooming(e){this.zooming!==e&&(this.zoom||(this.zoom=new Gb(this)),this._zooming=e,this.emit(nt.zooming,this.zooming))}get zooming(){return this._zooming}set recording(e){e?this.playing&&!this.recording&&(this.recorder&&this.recorder.startRecord(),this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!0})):this.recording&&(this.isDemuxInWorker()&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder&&this.recorder.stopRecordAndSave().then((()=>{})).catch((e=>{})))}get recording(){return!!this.recorder&&this.recorder.isRecording}set audioTimestamp(e){null!==e&&(this._audioTimestamp=e)}get audioTimestamp(){return this._audioTimestamp}set latestAudioTimestamp(e){null!==e&&(this._latestAudioTimestamp=e)}get latestAudioTimestamp(){return this._latestAudioTimestamp}get videoTimestamp(){return this._stats.currentPts||this._stats.ts}set streamQuality(e){this.streamQuality!==e&&(this._streamQuality=e,this.emit(nt.streamQualityChange,e))}get streamQuality(){return this._streamQuality}get isDebug(){return uo(this._opt.debug)}get scaleType(){const e=this._opt,t=e.isResize,i=e.isFullResize;let s=Qt;return po(i)&&po(t)?s=Qt:po(i)&&uo(t)?s=Xt:uo(i)&&uo(t)&&(s=Zt),s}set visibility(e){this._visibility!==e&&(this._visibility=e,this.emit(nt.visibilityChange,e),this._lastestVisibilityChangeTimestamp=aa(),e?this.clearVisibilityHiddenTimeout():this.startVisibilityHiddenTimeout())}get visibility(){return this._visibility}set playbackPause(e){this._playbackPause!==e&&(this._playbackPause=e,this.emit(nt.playbackPause,e),this.emit(nt.playbackPauseOrResume,e))}get playbackPause(){return this.isPlayback()&&this._playbackPause}set videoIframeIntervalTs(e){this._videoIframeIntervalTs=e}get videoIframeIntervalTs(){return this._videoIframeIntervalTs}set faceDetectActive(e){this._faceDetectActive!==e&&(this._faceDetectActive=e,this.emit(nt.faceDetectActive,e))}get faceDetectActive(){return this._faceDetectActive}set objectDetectActive(e){this._objectDetectActive!==e&&(this._objectDetectActive=e,this.emit(nt.objectDetectActive,e))}get objectDetectActive(){return this._objectDetectActive}set occlusionDetectActive(e){this._occlusionDetectActive!==e&&(this._occlusionDetectActive=e,this.emit(nt.occlusionDetectActive,e))}get occlusionDetectActive(){return this._occlusionDetectActive}set imageDetectActive(e){this._imageDetectActive!==e&&(this._imageDetectActive=e)}get imageDetectActive(){return this._imageDetectActive}get isUseWorkerDemuxAndDecode(){return this.stream&&this.stream.getStreamType()===y}isDestroyed(){return this._destroyed}isClosed(){return this._closed}isDestroyedOrClosed(){return this.isDestroyed()||this.isClosed()}isPlaying(){let e=!1;return this._opt.playType===b?e=this.playing:this._opt.playType===_&&(e=po(this.playbackPause)&&this.playing),e}updateOption(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this._opt=Object.assign({},this._opt,e),uo(t)&&this.decoderWorker&&Object.keys(e).forEach((t=>{this.decoderWorker.updateWorkConfig({key:t,value:e[t]})}))}init(){return new Promise(((e,t)=>{this.video||this._opt.hasVideo&&(this.video=new $o(this)),this.audio||this._opt.hasAudio&&(this.audio=new cn(this)),this.stream||(this.stream=new vn(this)),this.isOldHls()?(this.hlsDecoder||(this.hlsDecoder=new fA(this),this.loaded=!0),e()):this.isWebrtcH264()?(this.webrtc||(this._opt.isWebrtcForZLM?this.webrtc=new jb(this):this._opt.isWebrtcForSRS?this.webrtc=new $b(this):this._opt.isWebrtcForOthers?this.webrtc=new Wb(this):this.webrtc=new Nb(this),this.loaded=!0),e()):this.isAliyunRtc()?(this.aliyunRtcDecoder||(this.aliyunRtcDecoder=new Jb(this),this.loaded=!0),e()):(this.demux||this._opt.hasVideo&&!this.isUseWorkerDemuxAndDecode&&(this.demux=new mh(this)),this._opt.useWCS&&(this.webcodecsDecoder||(this.webcodecsDecoder=new gh(this))),this._opt.useMSE&&po(this._opt.mseDecoderUseWorker)&&(this.mseDecoder||(this.mseDecoder=new Hh(this))),this.isUseHls265()&&(this.hlsDecoder||(this.hlsDecoder=new Fb(this))),this.isWebrtcH265()&&(this.webrtc||(this.webrtc=new Nb(this))),this.decoderWorker?this.loaded?e():this.once(nt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())})):Za(this._opt)?e():(this.decoderWorker=new ol(this),this.once(nt.decoderWorkerInit,(()=>{this.isDestroyedOrClosed()?(this.debug.error(this.TAG_NAME,"init() failed and player is destroyed"),t("init() failed and player is destroyed")):(this.loaded=!0,e())}))))}))}play(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(!e&&!this._opt.url)return s("url is empty");this._closed=!1,this.loading=!0,this.playing=!1,this._times.playInitStart=aa(),e||(e=this._opt.url),this._opt.url=e,this.control&&this._opt.loadingBackground&&this.control.initLoadingBackground(),this.init().then((()=>{this.debug.log(this.TAG_NAME,"play() init and next fetch stream"),this._times.playStart=aa(),this._opt.isNotMute&&this.mute(!1),this.enableWakeLock(),this.checkLoadingTimeout(),this.stream?(this.stream.once(ct.fetchError,(e=>{this.emitError(ct.fetchError,e)})),this.stream.once(ct.websocketError,(e=>{this.emitError(ct.websocketError,e)})),this.stream.once(nt.streamEnd,(e=>{this.emit(nt.streamEnd,e)})),this.stream.once(ct.hlsError,(e=>{this.emitError(ct.hlsError,e)})),this.stream.once(ct.webrtcError,(e=>{this.emitError(ct.webrtcError,e)})),this.stream.once(nt.streamSuccess,(()=>{i(),this._times.streamResponse=aa(),this.video&&this.video.play(),this.checkStatsInterval(),this.isPlayback()&&this.playback&&this.playback.startCheckStatsInterval()})),this.stream.fetchStream(e,t)):(this.debug.warn(this.TAG_NAME,`play() this.stream is null and is isDestroyedOrClosed is ${this.isDestroyedOrClosed()}`),s("this.stream is null"))})).catch((e=>{s(e)}))}))}playForControl(){return new Promise(((e,t)=>{this.debug.log(this.TAG_NAME,`playForControl() and pauseAndNextPlayUseLastFrameShow is ${this._opt.pauseAndNextPlayUseLastFrameShow}`),this._opt.pauseAndNextPlayUseLastFrameShow&&this._tempInnerPlayBgobj&&this._tempInnerPlayBgobj.loadingBackground&&this.updateOption({loadingBackground:this._tempInnerPlayBgobj.loadingBackground,loadingBackgroundWidth:this._tempInnerPlayBgobj.loadingBackgroundWidth,loadingBackgroundHeight:this._tempInnerPlayBgobj.loadingBackgroundHeight}),this.play().then((t=>{e(t)})).catch((e=>{t(e)}))}))}close(){return new Promise(((e,t)=>{this._close().then((()=>{this.video&&this.video.clearView(),e()})).catch((e=>{t(e)}))}))}resumeAudioAfterPause(){this.lastVolume&&po(this._isMute)&&(this.volume=this.lastVolume)}async _close(){this._closed=!0,this.video&&(this.video.resetInit(),this.video.pause(!0)),this.loading=!1,this.recording=!1,this.zooming=!1,this.playing=!1,this.clearCheckLoadingTimeout(),this.clearStatsInterval(),this.isPlayback()&&this.playback&&this.playback.clearStatsInterval(),this.releaseWakeLock(),this.resetStats(),this._audioTimestamp=0,this._videoTimestamp=0,this._times={playInitStart:"",playStart:"",streamStart:"",streamResponse:"",demuxStart:"",decodeStart:"",videoStart:"",playTimestamp:"",streamTimestamp:"",streamResponseTimestamp:"",demuxTimestamp:"",decodeTimestamp:"",videoTimestamp:"",allTimestamp:""},this.decoderWorker&&(await this.decoderWorker.destroy(),this.decoderWorker=null),this.stream&&(await this.stream.destroy(),this.stream=null),this.demux&&(this.demux.destroy(),this.demux=null),this.webcodecsDecoder&&(this.webcodecsDecoder.destroy(),this.webcodecsDecoder=null),this.mseDecoder&&(this.mseDecoder.destroy(),this.mseDecoder=null),this.hlsDecoder&&(await this.hlsDecoder.destroy(),this.hlsDecoder=null),this.webrtc&&(this.webrtc.destroy(),this.webrtc=null),this.aliyunRtcDecoder&&(this.aliyunRtcDecoder.destroy(),this.aliyunRtcDecoder=null),this.audio&&(await this.audio.destroy(),this.audio=null)}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{e?this.close().then((()=>{t()})).catch((e=>{i(e)})):this._close().then((()=>{t()})).catch((e=>{i(e)}))}))}pauseForControl(){return new Promise(((e,t)=>{if(this.debug.log(this.TAG_NAME,"_pauseInner()"),this._opt.pauseAndNextPlayUseLastFrameShow&&this.video){const e=this.video.screenshot("","png",.92,"base64");if(e){const t=this.getVideoInfo();t?(this.debug.log(this.TAG_NAME,`pauseForControl() and loadingBackground width is ${t.width} and height is ${t.height}`),this._tempInnerPlayBgobj={loadingBackground:e,loadingBackgroundWidth:t.width,loadingBackgroundHeight:t.height}):this.debug.warn(this.TAG_NAME,"pauseForControl() and videoInfo is null")}else this.debug.warn(this.TAG_NAME,"pauseForControl() and loadingBackground is null")}this.pause().then((t=>{e(t)})).catch((e=>{t(e)}))}))}isAudioMute(){let e=!0;return this.audio&&(e=this.audio.isMute),e}isAudioNotMute(){return!this.isAudioMute()}mute(e){this.audio&&this.audio.mute(e)}resize(){this.video&&this.video.resize()}startRecord(e,t){this.recording||(this.recorder.setFileName(e,t),this.recording=!0)}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.recorder||s("recorder is null"),this.recording?(this._opt.useWasm&&this.decoderWorker&&this.decoderWorker.updateWorkConfig({key:"isRecording",value:!1}),this.recorder.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)}))):s("recorder is not recording")}))}_hasControl(){let e=!1,t=!1;return Object.keys(this._opt.operateBtns).forEach((e=>{this._opt.operateBtns[e]&&-1===(""+e).indexOf("Fn")&&(t=!0)})),(this._opt.showBandwidth||t)&&(e=!0),this._opt.extendOperateBtns&&this._opt.extendOperateBtns.length>0&&(e=!0),this.isPlayback()&&this._opt.playbackConfig.showControl&&(e=!0),this._opt.controlHtml&&(e=!0),e}useWasmDecode(){return po(this._opt.useMSE)&&po(this._opt.useWCS)}canVideoTrackWritter(){const e=this._opt;return!this.isOldHls()&&!this.isWebrtcH264()&&po(e.useMSE)&&!this.isAliyunRtc()&&(e.useWCS&&po(e.useOffscreen)&&e.wcsUseVideoRender||this.useWasmDecode())}checkHeartTimeout$2(){if(po(this.playbackPause)&&this.playing){if(this.isDestroyedOrClosed())return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but player is destroyed"));if(po(this.isHistoryFpsListAllZero()))return void(this.debug&&this.debug.warn(this.TAG_NAME,"checkHeartTimeout$2 but fps is not all zero"));if(0!==this._stats.fps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but fps is ${this._stats.fps}`));if(po(this.visibility)&&0!==this._stats.vbps)return void(this.debug&&this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 but page is not visibility and vbps is ${this._stats.vbps}`));const e=this._historyFpsList.join(",");this.debug.warn(this.TAG_NAME,`checkHeartTimeout$2 and\n pause and emit delayTimeout event and\n current vbps is ${this._stats.vbps} and\n current fps is ${this._stats.fps} and\n history FpsList is ${e} and\n current visibility is ${this.visibility} and`),this.emit(nt.timeout,nt.delayTimeout),this.emit(nt.delayTimeout)}else this.debug.log(this.TAG_NAME,`checkHeartTimeout$2 playbackPause is ${this.playbackPause}, playing is ${this.playing}`)}checkStatsInterval(){this._checkStatsInterval=setInterval((()=>{this.updateStats()}),1e3)}checkLoadingTimeout(){this._checkLoadingTimeout=setTimeout((()=>{this.playing?this.debug.warn(this.TAG_NAME,`checkLoadingTimeout but loading is ${this.loading} and playing is ${this.playing}`):this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"checkLoadingTimeout but player is destroyed"):(this.debug.warn(this.TAG_NAME,"checkLoadingTimeout and pause and emit loadingTimeout event"),this.emit(nt.timeout,nt.loadingTimeout),this.emit(nt.loadingTimeout))}),1e3*this._opt.loadingTimeout)}clearCheckLoadingTimeout(){this._checkLoadingTimeout&&(this.debug.log(this.TAG_NAME,"clearCheckLoadingTimeout"),clearTimeout(this._checkLoadingTimeout),this._checkLoadingTimeout=null)}clearStatsInterval(){this._checkStatsInterval&&(clearInterval(this._checkStatsInterval),this._checkStatsInterval=null)}handleRender(){this.isDestroyedOrClosed()?this.debug&&this.debug.warn(this.TAG_NAME,"handleRender but player is destroyed"):(this.loading&&(this.clearCheckLoadingTimeout(),this.loading=!1,this.emit(nt.start)),this.playing||(this.playing=!0))}updateStats(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this._startBpsTime||(this._startBpsTime=aa()),Ba(e.ts)){const t=parseInt(e.ts,10);this._stats.ts=t,null===this._playingStartTimestamp&&t>0&&(this._playingStartTimestamp=t)}Ba(e.dts)&&(this._stats.dts=parseInt(e.dts,10)),Ba(e.mseTs)&&(this._stats.mseTs=e.mseTs),Ba(e.buf)&&(this._stats.buf=e.buf),Ba(e.netBuf)&&(this._stats.netBuf=e.netBuf),Ba(e.currentPts)&&(this._stats.currentPts=e.currentPts),e.fps&&(this._stats.fps+=1),e.dfps&&(this._stats.dfps+=1),e.abps&&(this._stats.abps+=e.abps),e.vbps&&(this._stats.vbps+=e.vbps),e.workerStats&&(this._tempWorkerStats=e.workerStats),e.isDropping&&(this._stats.isDropping=e.isDropping),e.mseVideoBufferDelayTime&&(this._stats.mseVideoBufferDelayTime=parseInt(1e3*e.mseVideoBufferDelayTime,10));const t=aa();if(t-this._startBpsTime<1e3)return;null!==this._playingStartTimestamp&&this._stats.fps>0&&(this._stats.pTs+=1);let i=0,s=0,r=0,a=0,o=0;this._opt.useMSE&&(this.mseDecoder?(i=this.mseDecoder.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.mseDecoder.checkSourceBufferStore(),s=s.toFixed(2),r=this.mseDecoder.getDecodeDiffTimes(),a=this.mseDecoder.getDecodePlaybackRate(),o=this.mseDecoder.getPendingSegmentsLength()):this.isMseDecoderUseWorker()&&(i=this.video.checkSourceBufferDelay(),i=parseInt(1e3*i,10),s=this.video.checkSourceBufferStore(),s=s.toFixed(2),a=this.video.getDecodePlaybackRate())),this._opt.useWCS&&this.webcodecsDecoder&&(r=this.webcodecsDecoder.getDecodeDiffTimes()),this.isOldHls()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=parseInt(1e3*i,10));let n=0,l=0,d=0;this.isUseHls265()&&this.hlsDecoder&&(i=this.hlsDecoder.checkHlsBufferedDelay(),i=i.toFixed(2),n=this.hlsDecoder.getDemuxBufferedListLength(),d=this.hlsDecoder.getDemuxVideoBufferedListLength(),l=this.hlsDecoder.getDemuxAudioBufferedListLength());let h=0,c=0,u=0,p=!1,f=0;this._opt.useWasm||this._opt.demuxUseWorker?this._tempWorkerStats&&(c=this._tempWorkerStats.demuxBufferDelay,u=this._tempWorkerStats.audioDemuxBufferDelay,h=this._tempWorkerStats.streamBufferByteLength,this._stats.netBuf=this._tempWorkerStats.netBuf,f=this._tempWorkerStats.pushLatestDelay,p=this._tempWorkerStats.isStreamTsMoreThanLocal,this._stats.buf=this._tempWorkerStats.latestDelay):this.demux&&(h=this.demux.getInputByteLength(),f=this.demux.getPushLatestDelay(),p=this.demux.getIsStreamTsMoreThanLocal(),this.demux.bufferList&&(c=this.demux.bufferList.length));let m=0,g=0;this.audio&&this.audio.bufferList&&(m=this.audio.bufferList.length,g=parseInt(m*this.audio.oneBufferDuration,10));let y=0,A=0;if(this.isPlayback()&&this.video){this._opt.playbackConfig.isUseFpsRender&&(y=this.video.bufferList&&this.video.bufferList.length||0);let e=this.video.getStreamFps();const t=e>0?1e3/e:0;A=parseInt(t*y+t*c,10)}let b=0;this.videoTimestamp>0&&(b=this._stats.dts-this.videoTimestamp);const v=b+this._stats.netBuf;this.isOldHls()&&(this._stats.fps=this.hlsDecoder.getFps()),this._stats.fps>this._stats.maxFps&&(this._stats.maxFps=this._stats.fps);let _=this.getVideoCurrentTime();const S=this._stats.videoCurrentTime;let w=-1;S&&_&&(w=(_-S).toFixed(2),_=_.toFixed(2));let E=0;this.audioTimestamp>0&&(E=this.audioTimestamp-this.getRenderCurrentPts()),this._allStatsData=Object.assign(this._stats,{audioBuffer:m,audioBufferDelayTs:g,audioTs:this.audioTimestamp,latestAudioTs:this.latestAudioTimestamp,playbackVideoBuffer:y,playbackVideoWaitingBuffer:0,playbackAudioWaitingBuffer:0,playbackCacheDataDuration:A,demuxBuffer:c,pushLatestDelay:f,audioDemuxBuffer:u,streamBuffer:h,mseDelay:i,mseStore:s,mseDecodeDiffTimes:r,mseDecodePlaybackRate:a,msePendingBuffer:o,wcsDecodeDiffTimes:r,hlsDelay:i,hlsDemuxLength:n,hlsDemuxAudioLength:l,hlsDemuxVideoLength:d,delayTs:b,totalDelayTs:v,isStreamTsMoreThanLocal:p,videoCurrentTime:_,videoCurrentTimeDiff:w,audioSyncVideo:E});let k=null,C=null,x="";if(this.isPlayer()&&this._opt.hasVideo&&this.playing){k=function(e,t){let i=3;const s=t||25;return e<.33*s?i=0:e<.5*s?i=1:e<.83*s&&(i=2),i}(this._stats.fps,this._flvMetaDataFps),this._allStatsData.performance=k;const e=this.checkVideoSmooth(this._allStatsData);x=e.reason,C=e.result,this._allStatsData.videoSmooth=C}this.emit(nt.stats,this._allStatsData),this._allStatsData.streamBuffer>this._opt.flvDemuxBufferSizeMaxLarge&&this.getDemuxType()===T&&this.emit(ct.flvDemuxBufferSizeTooLarge,this._allStatsData.streamBuffer),this._opt.hasVideo?(this.updateHistoryFpsList(this._stats.fps,this._stats.videoCurrentTimeDiff),Ba(k)&&this.emit(nt.performance,k),Ba(C)&&this.emit(nt.videoSmooth,C,x)):this._opt.hasAudio&&this.updateHistoryFpsList(this._stats.abps,0),this._stats.fps=0,this._stats.dfps=0,this._stats.abps=0,this._stats.vbps=0,this._stats.isDropping=!1,this._startBpsTime=t}resetStats(){this._startBpsTime=null,this._playingStartTimestamp=null,this._historyFpsList=[],this._historyVideoDiffList=[],this._stats={buf:0,netBuf:0,fps:0,maxFps:0,dfps:0,abps:0,vbps:0,ts:0,mseTs:0,currentPts:0,pTs:0,dts:0,mseVideoBufferDelayTime:0,isDropping:!1},this._allStatsData={}}checkVideoSmooth(e){let t=!0,i="";if(this._opt.videoBuffer,this._opt.videoBufferDelay,this.isWebrtcH264()||this.isOldHls())return{result:t,reason:i};if(0===e.vbps&&po(this._opt.isHls)&&(i="vbpsIsZero",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&e.isDropping&&(i="isDroppingIsTrue",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because ${i}`),t=!1),t&&this.visibility&&this._historyFpsList.length>=this._opt.heartTimeout){const s=function(e){const t=Math.max(...e),i=Math.min(...e);return e.filter((e=>e!==t&&e!==i))}(this._historyFpsList),r=s.reduce(((e,t)=>e+t),0)/s.length,a=.83*r;e.fps=1.5||e.videoCurrentTimeDiff<=.5)&&-1!==e.videoCurrentTimeDiff&&(i="videoCurrentTimeDiffIsNotNormal",this.debug.log(this.TAG_NAME,`checkVideoSmooth false because videoCurrentTimeDiff is ${e.videoCurrentTimeDiff}`),t=!1),{result:t,reason:i}}enableWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.enable()}releaseWakeLock(){this._opt.keepScreenOn&&this.keepScreenOn&&this.keepScreenOn.disable()}clearBufferDelay(){this._opt.useWasm?this.decoderWorker&&this.decoderWorker.clearWorkBuffer(!0):this.demux&&this.demux.clearBuffer(!0)}doDestroy(){this.emit(nt.beforeDestroy)}handlePlayToRenderTimes(){if(this.isDestroyedOrClosed())return void this.debug.log(this.TAG_NAME,"handlePlayToRenderTimes but player is closed or destroyed");const e=this.getPlayToRenderTimes();this.emit(nt.playToRenderTimes,e)}getPlayToRenderTimes(){const e=this._times;return e.playTimestamp=e.playStart-e.playInitStart,e.streamTimestamp=e.streamStart-e.playStart,e.streamResponseTimestamp=e.streamResponse-e.streamStart>0?e.streamResponse-e.streamStart:0,e.demuxTimestamp=e.demuxStart-e.streamResponse>0?e.demuxStart-e.streamResponse:0,e.decodeTimestamp=e.decodeStart-e.demuxStart>0?e.decodeStart-e.demuxStart:0,e.videoTimestamp=e.videoStart-e.decodeStart,e.allTimestamp=e.videoStart-e.playInitStart,e}getOption(){return this._opt}getPlayType(){return this._opt.playType}isPlayer(){return this._opt.playType===b}isPlayback(){return this._opt.playType===_}isDemuxSetCodecInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.hasInit:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.hasInit),e}isDemuxDecodeFirstIIframeInit(){let e=!0,t=this._opt;return t.useWCS&&!t.useOffscreen?e=!!this.webcodecsDecoder&&this.webcodecsDecoder.isDecodeFirstIIframe:t.useMSE&&(e=!!this.mseDecoder&&this.mseDecoder.isDecodeFirstIIframe),e}isAudioPlaybackRateSpeed(){let e=!1;return this.audio&&(e=this.audio.isPlaybackRateSpeed()),e}getPlayingTimestamp(){return this._stats.pTs}getRecordingType(){let e=null;return this.recorder&&(e=this.recorder.getType()),e}getRecordingByteLength(){let e=0;return this.recording&&(e=this.recorder.getToTalByteLength()),e}getRecordingDuration(){let e=0;return this.recording&&(e=this.recorder.getTotalDuration()),e}getDecodeType(){let e="";const t=this.getOption();return this.isWebrtcH264()?G:this.isAliyunRtc()?V:this.isOldHls()?H:(t.useMSE&&(e+=U+" ",t.mseDecoderUseWorker&&(e+="worker")),t.useWCS&&(e+=F+" "),t.useWasm&&(e+=N+" ",t.useSIMD&&(e+=j+" "),t.useMThreading&&(e+=z+" ")),t.useOffscreen&&(e+=O+" "),e)}getDemuxType(){return this._opt.demuxType}getRenderType(){let e="";return this.video&&(e=this.video.getType()),e}getCanvasRenderType(){let e="";return this.video&&(e=this.video.getCanvasType()),e}getAudioEngineType(){let e="";return this.audio&&(e=this.audio.getEngineType()),e}getStreamType(){let e="";return this.stream&&(e=this.stream.getStreamType()),e}getAllStatsData(){return this._allStatsData}isFlvDemux(){return this._opt.demuxType===T}isM7SDemux(){return this._opt.demuxType===k}isNakedFlowDemux(){return this._opt.demuxType===D}isMpeg4Demux(){return this._opt.demuxType===P}isTsDemux(){return this._opt.demuxType===I}isFmp4Demux(){return this._opt.demuxType===L}togglePerformancePanel(e){this.updateOption({showPerformance:e}),this.emit(nt.togglePerformancePanel,e)}setScaleMode(e){let t={isFullResize:!1,isResize:!1,aspectRatio:"default"};switch(e=Number(e)){case Qt:t.isFullResize=!1,t.isResize=!1;break;case Xt:t.isFullResize=!1,t.isResize=!0;break;case Zt:t.isFullResize=!0,t.isResize=!0}this.updateOption(t),this.resize(),this.emit(nt.viewResizeChange,e)}startVisibilityHiddenTimeout(){this.clearVisibilityHiddenTimeout(),this._opt.pageVisibilityHiddenTimeout>0&&(this.visibilityHiddenTimeout=setTimeout((()=>{this.emit(nt.visibilityHiddenTimeout)}),1e3*this._opt.pageVisibilityHiddenTimeout))}clearVisibilityHiddenTimeout(){this._checkVisibleHiddenTimeout&&(clearTimeout(this._checkVisibleHiddenTimeout),this._checkVisibleHiddenTimeout=null)}faceDetect(e){this.faceDetectActive=e,po(e)&&this.video&&this.video.addAiContentToCanvas([])}objectDetect(e){this.objectDetectActive=e,po(e)&&this.video&&this.video.addAiContentToCanvas([])}occlusionDetect(e){this.occlusionDetectActive=e}downloadNakedFlowFile(){this.demux&&this.demux.downloadNakedFlowFile&&this.demux.downloadNakedFlowFile()}downloadFmp4File(){this.demux&&this.demux.downloadFmp4File&&this.demux.downloadFmp4File()}downloadMpeg4File(){const e=new Blob([this._tempStreamList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".mpeg4",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadMpeg4File",e)}}hasCacheOnGopBuffer(){const e=this.videoIframeIntervalTs,t=this._allStatsData.demuxBuffer,i=this._allStatsData.maxFps;let s=!1;if(e&&t&&i){s=1e3/i*t>e}return s}addContentToCanvas(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.video&&this.video.addContentToCanvas(e)}addContentToContainer(){}sendWebsocketMessage(e){const t=this.getStreamType();t===f||t===y+" "+f?this.stream.sendMessage(e):this.debug.warn(this.TAG_NAME,`sendWebsocketMessage: stream type is not websocket, current stream type is ${this.getStreamType()}`)}checkIsInRender(){const e=this._stats;return e.vbps>0&&e.fps>0}setControlHtml(e){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML=e)}clearControlHtml(){this.control&&this.control.$controlHtml&&(this.control.$controlHtml.innerHTML="")}updateWatermark(e){this.singleWatermark&&this.singleWatermark.update(e)}removeWatermark(){this.singleWatermark&&this.singleWatermark.remove()}getVideoInfo(){let e=null;return this.video&&(e=this.video.getVideoInfo()),e}getAudioInfo(){let e=null;return this.audio&&(e=this.audio.getAudioInfo()),e}getVideoPlaybackQuality(){let e=null;return this.video&&(e=this.video.getPlaybackQuality()),e}emitError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";this.emit(nt.error,e,t),this.emit(e,t)}updateHistoryFpsList(e,t){this.playbackPause||(this._historyFpsList.length>this._opt.heartTimeout&&(this._historyFpsList.shift(),this._historyVideoDiffList.shift()),this._historyFpsList.push(e),this._historyVideoDiffList.push(t),this.isHistoryFpsListAllZero()&&this.checkHeartTimeout$2())}isHistoryFpsListAllZero(){let e=!0;if(this._historyFpsList.length0){e=!1;break}if(e)for(let t=0;t0){e=!1;break}return e}isUseHls265(){return uo(this._opt.isHls)&&uo(this._opt.supportHls265)}isHls(){return uo(this._opt.isHls)}isOldHls(){return uo(this._opt.isHls)&&po(this._opt.supportHls265)}isWebrtcNotH265(){return uo(this._opt.isWebrtc)&&po(this._opt.isWebrtcH265)}isWebrtcH264(){return uo(this._opt.isWebrtc)&&po(this._opt.isWebrtcH265)}isWebrtcH265(){return uo(this._opt.isWebrtc)&&uo(this._opt.isWebrtcH265)}isAliyunRtc(){return uo(this._opt.isAliyunRtc)}isUseHls265UseMse(){return this.isUseHls265()&&this.isUseMSE()}isStreamWebTransport(){return this.getStreamType()===g}isPlaybackCacheBeforeDecodeForFpsRender(){return this.isPlayback()&&uo(this._opt.playbackConfig.isCacheBeforeDecodeForFpsRender)&&uo(this._opt.useWCS)}isPlaybackUseWCS(){return this.isPlayback()&&uo(this._opt.useWCS)}isPlaybackUseMSE(){return this.isPlayback()&&uo(this._opt.useMSE)}isPlayUseMSE(){return this.isPlayer()&&uo(this._opt.useMSE)}isInWebFullscreen(){return this._opt.useWebFullScreen&&ua()&&this.fullscreen}getPlaybackRate(){let e=1;return uo(this.isPlayback())&&this.playback&&(e=this.playback.rate),e}isPlaybackOnlyDecodeIFrame(){return uo(this.isPlayback())&&this.getPlaybackRate()>=this._opt.playbackForwardMaxRateDecodeIFrame}pushTempStream(e){const t=new Uint8Array(e);this._tempStreamList.push(t)}updateLoadingText(e){this.loading&&this.control&&this.control.updateLoadingText(e)}getVideoCurrentTime(){let e=0;return this.video&&(this._opt.useMSE?this.mseDecoder?e=this.mseDecoder.getVideoCurrentTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoCurrentTime()):this.isWebrtcH264()&&this.webrtc?e=this.webrtc.getVideoCurrentTime():this.isAliyunRtc()&&this.aliyunRtcDecoder&&(e=this.aliyunRtcDecoder.getVideoCurrentTime())),e}addMemoryLog(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),s=1;s0){const e=t/1e3;this._flvMetaDataFps=e}}Pa(e.hasAudio)&&po(e.hasAudio)&&(this.debug.log("updateMetaData","hasAudio",e.hasAudio,"and update _opt.hasAudio"),this._opt.hasAudio=e.hasAudio),Pa(e.hasVideo)&&po(e.hasVideo)&&(this.debug.log("updateMetaData","hasVideo",e.hasVideo,"and update _opt.hasVideo"),this._opt.hasVideo=e.hasVideo)}this.emit(nt.flvMetaData,e)}getMetaData(){return this._flvMetaData}getExtendBtnList(){return this.control.getExtendBtnList().map((e=>({name:e.name,$container:e.$iconContainer,$btn:e.$iconWrap,$activeBtn:e.$activeIconWrap})))}getCpuLevel(){let e=null;return this.pressureObserverCpu&&(e=this.pressureObserverCpu.getCurrentCpuState()),e}isRecordTypeFlv(){return this.recorder&&this._opt.recordType===E}isRecordTypeMp4(){return this.recorder&&this._opt.recordType===S}isRecordTypeWebm(){return this.recorder&&this._opt.recordType===w}isDemuxInWorker(){return this._opt.useWasm||this._opt.demuxUseWorker}isUseMSE(){return uo(this._opt.useMSE)}isUseWCS(){return uo(this._opt.useWCS)}isUseWASM(){return uo(this._opt.useWasm)}isMseDecoderUseWorker(){return this.isUseMSE()&&uo(this._opt.mseDecoderUseWorker)}getAudioSyncVideoDiff(){return this.audioTimestamp-this.getRenderCurrentPts()}getMseVideoBufferDelayTime(){let e=0;return this._opt.useMSE&&this.mseDecoder&&(this.mseDecoder?e=this.mseDecoder.getVideoBufferDelayTime():this.isMseDecoderUseWorker()&&(e=this.video.getVideoBufferDelayTime()),e=parseInt(1e3*e,10)),e}updateCurrentPts(e){this.updateStats({currentPts:e}),this.emit(nt.currentPts,e)}getRenderCurrentPts(){let e=0;return e=this._stats.currentPts?this._stats.currentPts:this.videoTimestamp-this.getMseVideoBufferDelayTime(),e}openSyncAudioAndVideo(){return this._opt.syncAudioAndVideo&&this._opt.hasVideo}showTipsMessageByCode(e){if(this.control){const t=this._opt.showMessageConfig[e]||"未知异常";this.control.showTipsMessage(t,e)}}showTipsMessageByContent(e){this.control&&e&&this.control.showTipsMessage(e)}hideTipsMessage(){this.control&&this.control.hideTipsMessage()}decoderCheckFirstIFrame(){uo(this._opt.checkFirstIFrame)&&(this.mseDecoder?this.mseDecoder.isDecodeFirstIIframe=!1:this.webcodecsDecoder&&(this.webcodecsDecoder.isDecodeFirstIIframe=!1))}isHlsCanVideoPlay(){return this._canPlayAppleMpegurl&&this.isOldHls()}setPtzPosition(e){this.control&&this.control.updatePtzPosition(e)}setPlayFailedAndPaused(){this.isPlayFailedAndPaused=!0}getMseMineType(){let e={};return this.mseDecoder&&(e=this.mseDecoder.getMimeType()),e}getMaxDelayTs(){return this._opt.videoBuffer+this._opt.videoBufferDelay}isMseVideoStateInited(){return!this.video||this.video.getReadyStateInited()}}class Qb{constructor(e){const{fromSampleRate:t,toSampleRate:i,channels:s,inputBufferSize:r}=e;if(!t||!i||!s)throw new Error("Invalid settings specified for the resampler.");this.resampler=null,this.fromSampleRate=t,this.toSampleRate=i,this.channels=s||0,this.inputBufferSize=r,this.initialize()}initialize(){this.fromSampleRate==this.toSampleRate?(this.resampler=e=>e,this.ratioWeight=1):(this.fromSampleRate{let t,i,s,r,a,o,n,l,d,h=e.length,c=this.channels;if(h%c!=0)throw new Error("Buffer was of incorrect sample length.");if(h<=0)return[];for(t=this.outputBufferSize,i=this.ratioWeight,s=this.lastWeight,r=0,a=0,o=0,n=0,l=this.outputBuffer;s<1;s+=i)for(a=s%1,r=1-a,this.lastWeight=s%1,d=0;d0?d:0)]*r+e[o+(c+d)]*a;s+=i,o=Math.floor(s)*c}for(d=0;d{let t,i,s,r,a,o,n,l,d,h,c,u=e.length,p=this.channels;if(u%p!=0)throw new Error("Buffer was of incorrect sample length.");if(u<=0)return[];for(t=this.outputBufferSize,i=[],s=this.ratioWeight,r=0,o=0,n=0,l=!this.tailExists,this.tailExists=!1,d=this.outputBuffer,h=0,c=0,a=0;a0&&o=n)){for(a=0;a0?a:0)]*r;c+=r,r=0;break}for(a=0;a{t[i]=function(e){let t,i,s;return e>=0?t=213:(t=85,(e=-e-1)<0&&(e=32767)),i=Zb(e,Xb,8),i>=8?127^t:(s=i<<4,s|=i<2?e>>4&15:e>>i+3&15,s^t)}(e)})),t}function tv(e){const t=[];return Array.prototype.slice.call(e).forEach(((e,i)=>{t[i]=function(e){let t=0;e<0?(e=132-e,t=127):(e+=132,t=255);let i=Zb(e,Xb,8);return i>=8?127^t:(i<<4|e>>i+3&15)^t}(e)})),t}class iv extends So{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),this._opt={},e&&(this.player=e),this.TAG_NAME="talk";const i=no(Is);this._opt=Object.assign({},i,t),this._opt.sampleRate=parseInt(this._opt.sampleRate,10),this._opt.sampleBitsWidth=parseInt(this._opt.sampleBitsWidth,10),this.audioContext=null,this.gainNode=null,this.recorder=null,this.workletRecorder=null,this.biquadFilter=null,this.userMediaStream=null,this.clearWorkletUrlTimeout=null,this.bufferSize=512,this._opt.audioBufferLength=this.calcAudioBufferLength(),this.audioBufferList=[],this.socket=null,this.socketStatus=ut,this.mediaStreamSource=null,this.heartInterval=null,this.checkGetUserMediaTimeout=null,this.wsUrl=null,this.startTimestamp=0,this.sequenceId=0,this.tempTimestamp=null,this.tempG711BufferList=[],this.tempRtpBufferList=[],this.tempPcmBufferList=[],this.events=new _o(this),this._initTalk(),this.player||(this.debug=new Pr(this)),this._opt.encType!==Hi&&this._opt.encType!==Vi||8e3===this._opt.sampleRate&&16===this._opt.sampleBitsWidth||this.warn(this.TAG_NAME,`\n encType is ${this._opt.encType} and sampleBitsWidth is ${this._opt.sampleBitsWidth}, set sampleBitsWidth to ${this._opt.sampleBitsWidth}。\n ${this._opt.encType} only support sampleRate 8000 and sampleBitsWidth 16`),this.log(this.TAG_NAME,"init",JSON.stringify(this._opt))}destroy(){this.clearWorkletUrlTimeout&&(clearTimeout(this.clearWorkletUrlTimeout),this.clearWorkletUrlTimeout=null),this.userMediaStream&&(this.userMediaStream.getTracks&&this.userMediaStream.getTracks().forEach((e=>{e.stop()})),this.userMediaStream=null),this.mediaStreamSource&&(this.mediaStreamSource.disconnect(),this.mediaStreamSource=null),this.recorder&&(this.recorder.disconnect(),this.recorder.onaudioprocess=null,this.recorder=null),this.biquadFilter&&(this.biquadFilter.disconnect(),this.biquadFilter=null),this.gainNode&&(this.gainNode.disconnect(),this.gainNode=null),this.workletRecorder&&(this.workletRecorder.disconnect(),this.workletRecorder=null),this.socket&&(this.socketStatus===pt&&this._sendClose(),this.socket.close(),this.socket=null),this._stopHeartInterval(),this._stopCheckGetUserMediaTimeout(),this.audioContext=null,this.gainNode=null,this.recorder=null,this.audioBufferList=[],this.sequenceId=0,this.wsUrl=null,this.tempTimestamp=null,this.tempRtpBufferList=[],this.tempG711BufferList=[],this.tempPcmBufferList=[],this.startTimestamp=0,this.log(this.TAG_NAME,"destroy")}addRtpToBuffer(e){const t=e.length+this.tempRtpBufferList.length,i=new Uint8Array(t);i.set(this.tempRtpBufferList,0),i.set(e,this.tempRtpBufferList.length),this.tempRtpBufferList=i}addG711ToBuffer(e){const t=e.length+this.tempG711BufferList.length,i=new Uint8Array(t);i.set(this.tempG711BufferList,0),i.set(e,this.tempG711BufferList.length),this.tempG711BufferList=i}addPcmToBuffer(e){const t=e.length+this.tempPcmBufferList.length,i=new Uint8Array(t);i.set(this.tempPcmBufferList,0),i.set(e,this.tempPcmBufferList.length),this.tempG711ButempPcmBufferListfferList=i}downloadRtpFile(){this.debug.log(this.TAG_NAME,"downloadRtpFile");const e=new Blob([this.tempRtpBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+".rtp",t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}downloadG711File(){this.debug.log(this.TAG_NAME,"downloadG711File");const e=new Blob([this.tempG711BufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+"."+this._opt.encType,t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadG711File",e)}}downloadPcmFile(){this.debug.log(this.TAG_NAME,"downloadPcmFile");const e=new Blob([this.tempPcmBufferList]);try{const t=document.createElement("a");t.href=window.URL.createObjectURL(e),t.download=Date.now()+"."+this._opt.encType,t.click(),window.URL.revokeObjectURL(t.href)}catch(e){console.error("downloadRtpFile",e)}}downloadFile(){this._opt.packetType===ks?this.downloadRtpFile():this._opt.encType===Hi||this._opt.encType===Vi?this.downloadG711File():this.downloadPcmFile()}calcAudioBufferLength(){const{sampleRate:e,sampleBitsWidth:t}=this._opt;return 8*e*.02/8}get socketStatusOpen(){return this.socketStatus===pt}log(){for(var e=arguments.length,t=new Array(e),i=0;i1?t-1:0),s=1;s{const i=this.events.proxy;this.socket=new WebSocket(this.wsUrl),this.socket.binaryType="arraybuffer",this.emit(nt.talkStreamStart),i(this.socket,xs,(()=>{this.socketStatus=pt,this.log(this.TAG_NAME,"websocket open -> do talk"),this.emit(nt.talkStreamOpen),e(),this._doTalk()})),i(this.socket,Ls,(e=>{this.log(this.TAG_NAME,"websocket message",e.data)})),i(this.socket,Rs,(e=>{this.socketStatus=ft,this.warn(this.TAG_NAME,"websocket close -> reject",e),this.emit(nt.talkStreamClose),t(e)})),i(this.socket,Ds,(e=>{this.socketStatus=mt,this.error(this.TAG_NAME,"websocket error -> reject",e),this.emit(nt.talkStreamError,e),t(e)}))}))}_sendClose(){}_initTalk(){this._initMethods(),this._opt.engine===Ps?this._initWorklet():this._opt.engine===Bs&&this._initScriptProcessor(),this.log(this.TAG_NAME,"audioContext samplerate",this.audioContext.sampleRate)}_initMethods(){this.audioContext=new(window.AudioContext||window.webkitAudioContext)({sampleRate:48e3}),this.gainNode=this.audioContext.createGain(),this.gainNode.gain.value=1,this.biquadFilter=this.audioContext.createBiquadFilter(),this.biquadFilter.type="lowpass",this.biquadFilter.frequency.value=3e3,this.resampler=new Qb({fromSampleRate:this.audioContext.sampleRate,toSampleRate:this._opt.sampleRate,channels:this._opt.numberChannels,inputBufferSize:this.bufferSize})}_initScriptProcessor(){const e=this.audioContext.createScriptProcessor||this.audioContext.createJavaScriptNode;this.recorder=e.apply(this.audioContext,[this.bufferSize,this._opt.numberChannels,this._opt.numberChannels]),this.recorder.onaudioprocess=e=>this._onaudioprocess(e)}_initWorklet(){const e=eo((function(){class e extends AudioWorkletProcessor{constructor(e){super(),this._cursor=0,this._bufferSize=e.processorOptions.bufferSize,this._buffer=new Float32Array(this._bufferSize)}process(e,t,i){if(!e.length||!e[0].length)return!0;for(let t=0;t{const e=new AudioWorkletNode(this.audioContext,"talk-processor",{processorOptions:{bufferSize:this.bufferSize}});e.connect(this.gainNode),e.port.onmessage=e=>{"data"===e.data.eventType&&this._encodeAudioData(e.data.buffer)},this.workletRecorder=e})),this.clearWorkletUrlTimeout=setTimeout((()=>{URL.revokeObjectURL(e),this.clearWorkletUrlTimeout=null}),te)}_onaudioprocess(e){const t=e.inputBuffer.getChannelData(0);this._encodeAudioData(new Float32Array(t))}_encodeAudioData(e){if(0===e[0]&&0===e[1])return void this.log(this.TAG_NAME,"empty audio data");const t=this.resampler.resample(e);let i=t;if(16===this._opt.sampleBitsWidth?i=function(e){let t=e.length,i=new Int16Array(t);for(;t--;){let s=Math.max(-1,Math.min(1,e[t]));i[t]=s<0?32768*s:32767*s}return i}(t):8===this._opt.sampleBitsWidth&&(i=function(e){let t=e.length,i=new Int8Array(t);for(;t--;){let s=Math.max(-1,Math.min(1,e[t]));const r=s<0?32768*s:32767*s;i[t]=parseInt(255/(65535/(32768+r)),10)}return i}(t)),null!==i.buffer){let e=null;this._opt.encType===Hi?e=ev(i):this._opt.encType===Vi?e=tv(i):this._opt.encType===$i&&(e=i);const t=new Uint8Array(e);for(let e=0;e>8,t[n++]=255&e>>0}t[n++]=128,t[n++]=128+i,t[n++]=s/256,t[n++]=s%256,t[n++]=r/65536/256,t[n++]=r/65536%256,t[n++]=r%65536/256,t[n++]=r%65536%256,t[n++]=a/65536/256,t[n++]=a/65536%256,t[n++]=a%65536/256,t[n++]=a%65536%256;let l=t.concat([...e]),d=new Uint8Array(l.length);for(let e=0;e{this.log(this.TAG_NAME,"getUserMedia success"),this.userMediaStream=e,this.mediaStreamSource=this.audioContext.createMediaStreamSource(e),this.mediaStreamSource.connect(this.biquadFilter),this.recorder?(this.biquadFilter.connect(this.recorder),this.recorder.connect(this.gainNode)):this.workletRecorder&&(this.biquadFilter.connect(this.workletRecorder),this.workletRecorder.connect(this.gainNode)),this.gainNode.connect(this.audioContext.destination),this.emit(nt.talkGetUserMediaSuccess),null===e.oninactive&&(e.oninactive=e=>{this._handleStreamInactive(e)})})).catch((e=>{this.error(this.TAG_NAME,"getUserMedia error",e.toString()),this.emit(nt.talkGetUserMediaFail,e.toString())})).finally((()=>{this.log(this.TAG_NAME,"getUserMedia finally"),this._stopCheckGetUserMediaTimeout()}))}_getUserMedia2(){this.log(this.TAG_NAME,"getUserMedia"),navigator.mediaDevices?navigator.mediaDevices.getUserMedia({audio:!0}).then((e=>{this.log(this.TAG_NAME,"getUserMedia2 success")})):navigator.getUserMedia({audio:!0},this.log(this.TAG_NAME,"getUserMedia2 success"),this.log(this.TAG_NAME,"getUserMedia2 fail"))}async _getUserMedia3(){this.log(this.TAG_NAME,"getUserMedia3");try{const e=await navigator.mediaDevices.getUserMedia({audio:{latency:!0,noiseSuppression:!0,autoGainControl:!0,echoCancellation:!0,sampleRate:48e3,channelCount:1},video:!1});console.log("getUserMedia() got stream:",e),this.log(this.TAG_NAME,"getUserMedia3 success")}catch(e){this.log(this.TAG_NAME,"getUserMedia3 fail")}}_handleStreamInactive(e){this.userMediaStream&&(this.warn(this.TAG_NAME,"stream oninactive",e),this.emit(nt.talkStreamInactive))}_startCheckGetUserMediaTimeout(){this._stopCheckGetUserMediaTimeout(),this.checkGetUserMediaTimeout=setTimeout((()=>{this.log(this.TAG_NAME,"check getUserMedia timeout"),this.emit(nt.talkGetUserMediaTimeout)}),this._opt.getUserMediaTimeout)}_stopCheckGetUserMediaTimeout(){this.checkGetUserMediaTimeout&&(this.log(this.TAG_NAME,"stop checkGetUserMediaTimeout"),clearTimeout(this.checkGetUserMediaTimeout),this.checkGetUserMediaTimeout=null)}_startHeartInterval(){this.heartInterval=setInterval((()=>{this.log(this.TAG_NAME,"heart interval");let e=[35,36,0,0,0,0,0,0];e=new Uint8Array(e),this.socket.send(e.buffer)}),15e3)}_stopHeartInterval(){this.heartInterval&&(this.log(this.TAG_NAME,"stop heart interval"),clearInterval(this.heartInterval),this.heartInterval=null)}startTalk(e){return new Promise(((t,i)=>{if(!function(){let e=!1;const t=window.navigator;return t&&(e=!(!t.mediaDevices||!t.mediaDevices.getUserMedia),e||(e=!!(t.getUserMedia||t.webkitGetUserMedia||t.mozGetUserMedia||t.msGetUserMedia))),e}())return i("not support getUserMedia");if(this.wsUrl=e,this._opt.testMicrophone)this._doTalk();else{if(!this.wsUrl)return i("wsUrl is null");this._createWebSocket().catch((e=>{i(e)}))}this.once(nt.talkGetUserMediaFail,(()=>{i("getUserMedia fail")})),this.once(nt.talkGetUserMediaSuccess,(()=>{t()}))}))}setVolume(e){e=parseFloat(e).toFixed(2),isNaN(e)||(e=oa(e,0,1),this.gainNode.gain.value=e)}getOption(){return this._opt}get volume(){return this.gainNode?parseFloat(100*this.gainNode.gain.value).toFixed(0):null}}class sv{constructor(e){this.player=e,this.globalSetting=null;const t=Sa();this.defaultSettings={watermark_id:`JbPro_${t}`,watermark_prefix:`JbPro_mask_${t}`,watermark_txt:"JbPro 测试水印",watermark_x:0,watermark_y:0,watermark_rows:0,watermark_cols:0,watermark_x_space:0,watermark_y_space:0,watermark_font:"微软雅黑",watermark_color:"black",watermark_fontsize:"18px",watermark_alpha:.15,watermark_width:150,watermark_height:100,watermark_angle:15,watermark_parent_width:0,watermark_parent_height:0,watermark_parent_node:null},this.player.debug.log("Watermark","int")}destroy(){this._removeMark(),this.globalSetting=null,this.defaultSettings=null,this.player.debug.log("Watermark","destroy")}remove(){this._removeMark()}load(e){this.globalSetting=e,this._loadMark(e)}resize(){this.player.debug.log("Watermark","resize()"),this.globalSetting&&this._loadMark(this.globalSetting)}_loadMark(){let e=this.defaultSettings;if(1===arguments.length&&"object"==typeof arguments[0]){var t=arguments[0]||{};for(let i in t)t[i]&&e[i]&&t[i]===e[i]||(t[i]||0===t[i])&&(e[i]=t[i])}var i=document.getElementById(e.watermark_id);i&&i.parentNode&&i.parentNode.removeChild(i);var s="string"==typeof e.watermark_parent_node?document.getElementById(e.watermark_parent_node):e.watermark_parent_node,r=s||document.body;const a=r.getBoundingClientRect();var o=Math.max(r.scrollWidth,r.clientWidth,a.width),n=Math.max(r.scrollHeight,r.clientHeight,a.height),l=arguments[0]||{},d=r;(l.watermark_parent_width||l.watermark_parent_height)&&d&&(e.watermark_x=e.watermark_x+0,e.watermark_y=e.watermark_y+0);var h=document.getElementById(e.watermark_id),c=null;if(h)h.shadowRoot&&(c=h.shadowRoot);else{(h=document.createElement("div")).id=e.watermark_id,h.setAttribute("style","pointer-events: none !important; display: block !important"),c="function"==typeof h.attachShadow?h.attachShadow({mode:"open"}):h;var u=r.children,p=Math.floor(Math.random()*(u.length-1))+1;u[p]?r.insertBefore(h,u[p]):r.appendChild(h)}e.watermark_cols=parseInt((o-e.watermark_x)/(e.watermark_width+e.watermark_x_space));var f,m=parseInt((o-e.watermark_x-e.watermark_width*e.watermark_cols)/e.watermark_cols);e.watermark_x_space=m?e.watermark_x_space:m,e.watermark_rows=parseInt((n-e.watermark_y)/(e.watermark_height+e.watermark_y_space));var g,y,A,b=parseInt((n-e.watermark_y-e.watermark_height*e.watermark_rows)/e.watermark_rows);e.watermark_y_space=b?e.watermark_y_space:b,s?(f=e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1)):(f=0+e.watermark_x+e.watermark_width*e.watermark_cols+e.watermark_x_space*(e.watermark_cols-1),g=0+e.watermark_y+e.watermark_height*e.watermark_rows+e.watermark_y_space*(e.watermark_rows-1));for(var v=0;v\n \n \n ${m.watermark_txt}\n \n \n ${m.watermark_txt}\n \n \n \n \n `,_=window.btoa(unescape(encodeURIComponent(v)));var S=document.createElement("div");S.style.position="absolute",S.style.left="0px",S.style.top="0px",S.style.overflow="hidden",S.style.zIndex="9999999",S.style.width=o+"px",S.style.height=n+"px",S.style.display="block",S.style["-ms-user-select"]="none",S.style.backgroundImage=`url(data:image/svg+xml;base64,${_})`,c.appendChild(S)}_removeMark(){const e=this.defaultSettings;var t=document.getElementById(e.watermark_id);if(t){var i=t.parentNode;i&&i.removeChild(t)}}_calcTextSize(){const{watermark_txt:e,watermark_font:t,watermark_fontsize:i}=this.globalSetting,s=document.createElement("span");s.innerHTML=e,s.setAttribute("style",`font-family: ${t}; font-size: ${i}px; visibility: hidden; display: inline-block`),document.querySelector("body").appendChild(s);const r={width:s.offsetWidth,height:s.offsetHeight};return s.remove(),r}}const av="right",ov="left",nv="up",lv="down",dv="leftUp",hv="leftDown",cv="rightUp",uv="rightDown",pv="zoomExpand",fv="zoomNarrow",mv="apertureFar",gv="apertureNear",yv="focusFar",Av="focusNear",bv="setPos",vv="calPos",_v="delPos",Sv="wiperOpen",wv="wiperClose",Ev="cruiseStart",Tv={stop:0,fiStop:0,right:1,left:2,up:8,down:4,leftUp:10,leftDown:6,rightUp:9,rightDown:5,zoomExpand:16,zoomNarrow:32,apertureFar:72,apertureNear:68,focusFar:66,focusNear:65,setPos:129,calPos:130,delPos:131,wiperOpen:140,wiperClose:141,setCruise:132,decCruise:133,cruiseStart:136,cruiseStop:0},kv=[25,50,75,100,125,150,175,200,225,250],Cv=[1,2,3,4,5,6,7,8,9,16],xv=[16,48,80,112,144,160,176,192,208,224];function Rv(e){const{type:t,speed:i=5,index:s=0}=e,r=function(e){return kv[(e=e||5)-1]||kv[4]}(i);let a,o,n,l;if(a=Tv[t],!a)return"";switch(t){case nv:case lv:case mv:case gv:n=r;break;case av:case ov:case yv:case Av:o=r;break;case dv:case hv:case cv:case uv:o=r,n=r;break;case pv:case fv:l=function(e){return xv[(e=e||5)-1]||xv[4]}(i);break;case vv:case _v:case bv:n=Dv(s);break;case wv:case Sv:o=1;break;case Ev:o=Dv(s)}return function(e,t,i,s){let r=[];r[0]=165,r[1]=15,r[2]=1,r[3]=0,r[4]=0,r[5]=0,r[6]=0,e&&(r[3]=e);t&&(r[4]=t);i&&(r[5]=i);s&&(r[6]=s);return r[7]=(r[0]+r[1]+r[2]+r[3]+r[4]+r[5]+r[6])%256,function(e){let t="";for(let i=0;it)){for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i===t?s[r]=Pv(e[r]):"object"==typeof e[r]?s[r]=Bv(e[r],t,i+1):s[r]=e[r]);return s}}function Iv(){return(new Date).toLocaleString()}class Mv{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.player=e,this.TAG_NAME="MemoryLogger",this.logMaxSize=(null==t?void 0:t.logMaxSize)||204800,this.logSize=0,this.logTextArray=[],this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.clear(),this.player.debug.log(this.TAG_NAME,"destroy")}clear(){this.logSize=0,this.logTextArray=[]}logCache(){let e="";try{for(var t=arguments.length,i=new Array(t),s=0;sBv(e)));e="[JbPro] "+Iv()+JSON.stringify(r)}catch(e){return}if(this.logSize+=e.length,this.logTextArray.push(e),this.logSize>this.logMaxSize){const e=this.logTextArray.shift();this.logSize-=e.length}}getLog(){return this.logTextArray.join("\n")}getLogBlob(){const e=this.getLog();return new Blob([e],{type:"text/plain"})}download(){const e=this.getLog();this.clear();const t=new Blob([e],{type:"text/plain"});No(t,"JbPro-"+Iv()+".log")}}class Uv extends So{constructor(e){super(),this.player=e,this.TAG_NAME="Network",this.online=this.isOnline(),this.prevOnline=this.online,this.interval=null,this._initListener(),this.player.debug.log(this.TAG_NAME,"init")}destroy(){this.off(),this._stopCheck(),window.removeEventListener("online",this._updateOnlineStatus),window.removeEventListener("offline",this._updateOfflineStatus),this.player.debug.log(this.TAG_NAME,"destroy")}_initListener(){window.addEventListener("online",this._updateOnlineStatus.bind(this)),window.addEventListener("offline",this._updateOfflineStatus.bind(this))}_stopCheck(){this.interval&&(clearInterval(this.interval),this.interval=null)}_startCheck(){this.interval=setInterval((()=>{this.isOnline()!==this.prevOnline&&(this.isOnline()?this._updateOnlineStatus():this._updateOfflineStatus())}),1e3)}_updateOnlineStatus(){this.prevOnline=this.online,this.online=!0,this.logStatus(),this.emit("online")}_updateOfflineStatus(){this.prevOnline=this.online,this.online=!1,this.logStatus(),this.emit("offline")}logStatus(){const e=this.prevOnline?"online":"offline",t=this.online?"online":"offline";this.player.debug.log(this.TAG_NAME,`prevOnline: ${this.prevOnline}, online: ${this.online}, status: ${e} -> ${t}`)}isOnline(){return void 0===navigator.onLine||navigator.onLine}isOffline(){return!this.isOnline()}}class Fv extends So{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this._opt={},this.TAG_NAME="JbPro",this.$container=null,Object.keys(e).forEach((t=>{if(void 0===e[t])throw new Error(`JbPro option "${t}" can not be undefined`)})),this.originalOptions=e;const t=lo();let i=Object.assign({},t,e);i.url="",i.isMulti&&(i.debugUuid="xxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))),this.debug=new Pr(this),this.debug.log("JbPro","init");let s=e.container;if("string"==typeof e.container&&(s=document.querySelector(e.container)),!s)throw this.debug.error("JbPro","JbPro need container option and now container is",e.container),new Error("JbPro need container option");if(i.decoder&&po(-1!==i.decoder.indexOf("decoder-pro.js")||-1!==i.decoder.indexOf("decoder-pro-simd.js")))throw this.debug.error("JbPro",`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`),new Error(`JbPro decoder ${i.decoder} must be decoder-pro.js or decoder-pro-simd.js`);if("CANVAS"===s.nodeName||"VIDEO"===s.nodeName)throw this.debug.error("JbPro",`JbPro container type can not be ${s.nodeName} type`),new Error(`JbPro container type can not be ${s.nodeName} type`);if(i.videoBuffer>=i.heartTimeout)throw this.debug.error("JbPro",`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`),new Error(`JbPro videoBuffer ${i.videoBuffer}s must be less than heartTimeout ${i.heartTimeout}s`);if(this._checkHasCreated(s))throw this.debug.error("JbPro","JbPro container has been created and can not be created again",s),new Error("JbPro container has been created and can not be created again",s);if(!s.classList)throw this.debug.error(this.TAG_NAME,"JbPro container is invalid, must be a DOM Element",s),new Error("JbPro container is invalid, must be a DOM Element",s);var r,a,o;if(i.videoBuffer>10&&console.warn("JbPro",`videoBuffer ${i.videoBuffer}s is too long, will black screen for ${i.videoBuffer}s , it is recommended to set it to less than 10s`),s.classList.add("jb-pro-container"),r=s,a=ee,o=Sa(),r&&(r.dataset?r.dataset[a]=o:r.setAttribute("data-"+a,o)),po(i.isLive)){const e=document.createElement("video");return e.muted=!0,e.setAttribute("controlsList","nodownload"),e.disablePictureInPicture="disablePictureInPicture",e.style.position="absolute",e.style.top=0,e.style.left=0,e.style.height="100%",e.style.width="100%",s.appendChild(e),this.$videoElement=e,this.$container=s,void(this._opt=i)}if(delete i.container,Ba(i.videoBuffer)&&(i.videoBuffer=1e3*Number(i.videoBuffer)),Ba(i.videoBufferDelay)&&(i.videoBufferDelay=1e3*Number(i.videoBufferDelay)),Ba(i.networkDelay)&&(i.networkDelay=1e3*Number(i.networkDelay)),Ba(i.aiFaceDetectInterval)&&(i.aiFaceDetectInterval=1e3*Number(i.aiFaceDetectInterval)),Ba(i.aiObjectDetectInterval)&&(i.aiObjectDetectInterval=1e3*Number(i.aiObjectDetectInterval)),Ba(i.timeout)&&(La(i.loadingTimeout)&&(i.loadingTimeout=i.timeout),La(i.heartTimeout)&&(i.heartTimeout=i.timeout)),Ba(i.autoWasm)&&(La(i.decoderErrorAutoWasm)&&(i.decoderErrorAutoWasm=i.autoWasm),La(i.hardDecodingNotSupportAutoWasm)&&(i.hardDecodingNotSupportAutoWasm=i.autoWasm)),Ba(i.aiFaceDetectLevel)&&La(i.aiFaceDetectWidth)){const e=or[i.aiFaceDetectLevel];e&&(i.aiFaceDetectWidth=e)}if(Ba(i.aiObjectDetectLevel)&&La(i.aiObjectDetectWidth)){const e=nr[i.aiObjectDetectLevel];e&&(i.aiObjectDetectWidth=e)}uo(i.isCrypto)&&(i.isM7sCrypto=!0),this._opt=i,this._destroyed=!1,this.$container=s,this._tempPlayBgObj={},this._tempVideoLastIframeInfo={},this._tempPlayerIsMute=!0,this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this.events=new _o(this),this._opt.isUseNewFullscreenWatermark?this.watermark=new rv(this):this.watermark=new sv(this),this.memoryLogger=new Mv(this),this.network=new Uv(this),this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[],this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.widthOrHeightChangeReplayDelayTimeout=null,this.streamErrorReplayDelayTimeout=null,this.streamEndReplayDelayTimeout=null,this.$loadingBgImage=null,this.$loadingBg=null,this._initPlayer(s,i),this._initWatermark(),this._initNetwork(),this.debug.log("JbPro",'init success and version is "4-1-2024"'),console.log('JbPro Version is "4-1-2024"')}destroy(){return new Promise(((e,t)=>{this.debug.log("JbPro","destroy()"),this._destroyed=!0,this.off(),this._removeTimeout(),this.$videoElement&&(this.$videoElement.pause(),this.$videoElement.currentTime=0,this.$videoElement.srcObject&&(this.$videoElement.srcObject=null,this.$videoElement.removeAttribute("srcObject")),this.$videoElement.src&&(this.$videoElement.src="",this.$videoElement.removeAttribute("src")),this.$container&&this.$container.removeChild(this.$videoElement),this.$videoElement=null),this._removeLoadingBackgroundForIOS(),this.player?this.player.destroy().then((()=>{this.player=null,this._destroy(),e()})).catch((()=>{t()})):(this._destroy(),e())}))}_removeTimeout(){this.widthOrHeightChangeReplayDelayTimeout&&(clearTimeout(this.widthOrHeightChangeReplayDelayTimeout),this.widthOrHeightChangeReplayDelayTimeout=null),this.streamErrorReplayDelayTimeout&&(clearTimeout(this.streamErrorReplayDelayTimeout),this.streamErrorReplayDelayTimeout=null),this.streamEndReplayDelayTimeout&&(clearTimeout(this.streamEndReplayDelayTimeout),this.streamEndReplayDelayTimeout=null)}_destroy(){var e,t;this.events&&(this.events.destroy(),this.events=null),this.talk&&(this.talk.destroy(),this.talk=null),this.watermark&&(this.watermark.destroy(),this.watermark=null),this.network&&(this.network.destroy(),this.network=null),this.memoryLogger&&(this.memoryLogger.destroy(),this.memoryLogger=null),this.$container&&(this.$container.classList.remove("jb-pro-container"),this.$container.classList.remove("jb-pro-fullscreen-web"),e=this.$container,t=ee,e&&(e.dataset?delete e.dataset[t]:e.removeAttribute("data-"+t)),this.$container=null),this._tempPlayBgObj=null,this._tempVideoLastIframeInfo=null,this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this._tempPlayerIsMute=!0,this._resetReplayTimes(),this.debug&&this.debug.log("JbPro","destroy end"),this._opt=null,this.debug=null}_resetReplayTimes(){this._loadingTimeoutReplayTimes=0,this._heartTimeoutReplayTimes=0,this._streamErrorReplayTimes=0,this._streamEndReplayTimes=0,this._websocket1006ErrorReplayTimes=0,this._websocket1006ErrorRetryLog=[],this._mseDecodeErrorRetryLog=[],this._wcsDecodeErrorRetryLog=[]}_getOriginalOpt(){const e=lo();return Object.assign({},e,this.originalOptions)}_initPlayer(e,t){this.player=new Yb(e,t),this._bindEvents()}_initTalk(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.talk&&(this.talk.destroy(),this.talk=null),this.player&&(e.debug=this.player._opt.debug),this.talk=new iv(this.player,e),this.debug.log("JbPro","_initTalk",this.talk.getOption()),this._bindTalkEvents()}_resetPlayer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Promise(((t,i)=>{this.debug.log(this.TAG_NAME,"_resetPlayer()",JSON.stringify(e));const s=()=>{this._opt.url="",this._opt.playOptions={},this._opt=Object.assign(this._opt,e),this._initPlayer(this.$container,this._opt)};this.player?this.player.destroy().then((()=>{this.player=null,s(),this.debug.log(this.TAG_NAME,"_resetPlayer() end"),t()})).catch((()=>{i()})):(s(),this.debug.log(this.TAG_NAME,"_resetPlayer() end"),t())}))}_bindEvents(){var e=this;Object.keys(lt).forEach((t=>{this.player.on(lt[t],(function(){for(var i=arguments.length,s=new Array(i),r=0;r{this.player&&this.player.showTipsMessageByCode(e)})),this.player.once(nt.beforeDestroy,(()=>{this.emit(nt.close),this.destroy().then((()=>{})).catch((e=>{}))})),this.player.on(nt.resize,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(nt.fullscreen,(()=>{this.watermark&&this.watermark.resize()})),this.player.on(nt.videoInfo,(()=>{this.player&&(this.player.singleWatermark&&this.player.singleWatermark.resize(),this.player.ghostWatermark&&this.player.ghostWatermark.resize(),this.player.dynamicWatermark&&this.player.dynamicWatermark.resize())})),this.player.on(nt.memoryLog,(function(){e.memoryLogger.logCache(...arguments)})),this.player.on(nt.downloadMemoryLog,(()=>{this.downloadMemoryLog()}))}_bindTalkEvents(){Object.keys(dt).forEach((e=>{this.player.on(dt[e],(t=>{this.emit(e,t)}))}))}_initWatermark(){if(Va(this._opt.fullscreenWatermarkConfig)){const e=Ma(this.$container,this._opt.fullscreenWatermarkConfig);if(!e.watermark_txt)return void this.debug.warn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(e)}}_initNetwork(){this.network.on(nt.online,(()=>{if(this.emit(nt.networkState,nt.online),this.isDestroyed())this.debug.log(this.TAG_NAME,"network online and JbPro is destroyed");else if(this._isNetworkOfflinePaused&&this._isNetworkOfflinePausedAndNextPlayConfig&&this._isNetworkOfflinePausedAndNextPlayConfig.url){const e=this._isNetworkOfflinePausedAndNextPlayConfig.url,t=this._isNetworkOfflinePausedAndNextPlayConfig.playOptions;this._streamErrorReplayTimes++;const i=this._isNetworkOfflinePausedAndNextPlayConfig.type||"unknown";this._isNetworkOfflinePaused=!1,this._isNetworkOfflinePausedAndNextPlayConfig={},this.debug.log(this.TAG_NAME,`${i} and network online and reset player and play`),this.play(e,t).then((()=>{this.debug.log(this.TAG_NAME,`${i} and network online and play success`)})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.fetchError,{},error),this.debug.error(this.TAG_NAME,`${i} and network online and play error`,e)}))}})),this.network.on(nt.offline,(()=>{this.emit(nt.networkState,nt.offline)}))}_checkHasCreated(e){if(!e)return!1;const t=function(e,t){return e?e.dataset?e.dataset[t]:e.getAttribute("data-"+t):""}(e,ee);return!!t}isDestroyed(){return this._destroyed}getOption(){return this.player?this.player.getOption():{}}setDebug(e){this.debug.log("JbPro",`setDebug() ${e}`),this._opt.debug=!!e,this.player?this.player.updateOption({debug:!!e},!0):this.debug.warn("JbPro","player is not init")}getIsDebug(){let e=!1;return this.player&&(e=this.player._opt.debug),e}mute(){this.debug.log("JbPro","mute()"),this.player&&this.player.mute(!0)}cancelMute(){this.debug.log("JbPro","cancelMute()"),this.player&&this.player.mute(!1)}setVolume(e){this.debug.log("JbPro",`setVolume() ${e}`),this.player&&(this.player.volume=e)}getVolume(){let e=null;return this.player&&(e=this.player.volume,e=parseFloat(e).toFixed(2)),e}audioResume(){this.debug.log("JbPro","audioResume()"),this.player&&this.player.audio?this.player.audio.audioEnabled(!0):this.debug.warn("JbPro","audioResume error")}setTimeout(e){this.debug.log("JbPro",`setTimeout() ${e}`),e=Number(e),isNaN(e)?this.debug.warn("JbPro",`setTimeout error: ${e} is not a number`):(this._opt.timeout=e,this._opt.loadingTimeout=e,this._opt.heartTimeout=e,this.player&&this.player.updateOption({timeout:e,loadingTimeout:e,heartTimeout:e}))}setScaleMode(e){this.debug.log("JbPro",`setScaleMode() ${e}`),this.player?this.player.setScaleMode(e):this.debug.warn("JbPro","setScaleMode() player is null")}pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{this.debug.log("JbPro",`pause() ${e}`),(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&(this._tempPlayBgObj=this._getVideoLastIframeInfo()),this._tempPlayerIsMute=this.isMute(),this._pause(e).then((e=>{t(e)})).catch((e=>{i(e)}))}))}_pause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return new Promise(((t,i)=>{if(this.debug.log("JbPro",`_pause() ${e}`),this.isDestroyed())return i("JbPro is destroyed");this._resetReplayTimes(),this.player?this.player.pause(e).then((e=>{t(e)})).catch((e=>{i(e)})):i("player is null")}))}close(){return new Promise(((e,t)=>{this.debug.log("JbPro","close()"),this._opt.url="",this._resetReplayTimes(),this.player?this.player.close().then((()=>{e()})).catch((e=>{t(e)})):t("player is null")}))}clearView(){this.debug.log("JbPro","clearView()"),this.player&&this.player.video?this.getRenderType()===$?this.player.video.clearView():this.debug.warn("JbPro","clearView","render type is video, not support clearView, please use canvas render type"):this.debug.warn("JbPro","clearView","player is null")}play(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.debug.log("JbPro",`play() ${e}`,JSON.stringify(t)),!e&&!this._opt.url)return this.emit(nt.error,ct.playError),void s("url is null and this._opt.url is null");if(e&&(e=(""+e).trim(),-1===e.indexOf("http:")&&-1===e.indexOf("https:")&&-1===e.indexOf("webrtc:")&&-1===e.indexOf("ws:")&&-1===e.indexOf("wss:")&&-1===e.indexOf("wt:")&&-1===e.indexOf("artc:")))return s(`url ${e} must be "http:" or "https:" or "webrtc:" or "ws:" or "wss:" or "wt:" or "artc:" protocol`);if(po(this._opt.isLive))return this.$videoElement.controls="controls",this.$videoElement.muted=!1,this.$videoElement.src=e,this.$videoElement.play(),void i(this.$videoElement);if(this._opt.isM7sCrypto){let r=t.cryptoKey||this._opt.playOptions.cryptoKey,a=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.m7sCryptoKey&&(!r||!a)){const e=this._opt.m7sCryptoKey.split(".");r=ao(e[0]),a=ao(e[1])}if(!r||!a){const r=e||this._opt.url;return void this._cryptoPlay(r).then((r=>{let{cryptoIV:a,cryptoKey:o}=r;this._opt.playOptions.cryptoKey=o,this._opt.playOptions.cryptoIV=a,t.cryptoIV=a,t.cryptoKey=o,this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}this._opt.playOptions.cryptoKey=r,this._opt.playOptions.cryptoIV=a,t.cryptoIV=a,t.cryptoKey=r}else if(this._opt.isXorCrypto){let e=t.cryptoKey||this._opt.playOptions.cryptoKey,i=t.cryptoIV||this._opt.playOptions.cryptoIV;if(this._opt.xorCryptoKey&&(!e||!i)){const t=this._opt.xorCryptoKey.split(".");e=ao(t[0]),i=ao(t[1])}e&&i&&(this._opt.playOptions.cryptoKey=e,this._opt.playOptions.cryptoIV=i,t.cryptoIV=i,t.cryptoKey=e)}this._playBefore(e,t).then((()=>{i()})).catch((e=>{s(e)}))}))}_playBefore(e,t){return new Promise(((i,s)=>{if(this.player)if(e)if(this._opt.url)if(e===this._opt.url)if(this.player.playing)this.debug.log("JbPro","_playBefore","playing and resolve()"),i();else{this.debug.log("JbPro","_playBefore","this._opt.url === url and pause -> play and destroy play");let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),po(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore this.player.play error",e),this.emit(nt.crashLog,this.getCrashLog("this.player.play 1",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e)}))}else{this.debug.log("JbPro","_playBefore",`\n this._url.url is ${this._opt.url}\n and new url is ${e}\n and destroy and play new url`);const r=this._getOriginalOpt();this._resetPlayer(r).then((()=>{this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(nt.crashLog,this.getCrashLog("this.player.play 2",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e)}))}else this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(nt.crashLog,this.getCrashLog("this.player.play 3",e)),s(e)}));else{let e=this._getOriginalOpt();(this._opt.pauseAndNextPlayUseLastFrameShow||this._opt.replayUseLastFrameShow)&&this._tempPlayBgObj&&this._tempPlayBgObj.loadingBackground&&(e=Object.assign(e,this._tempPlayBgObj)),po(this._tempPlayerIsMute)&&(e.isNotMute=!0,this._tempPlayerIsMute=!0);const t=this._opt.url,r=this._opt.playOptions;this._resetPlayer(e).then((()=>{this._play(t,r).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(nt.crashLog,this.getCrashLog("this.player.play 4",e)),s(e)}))})).catch((e=>{this.debug.error("JbPro","_resetPlayer error",e)}))}else e?this._play(e,t).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(nt.crashLog,this.getCrashLog("this.player.play 5",e)),s(e)})):this._play(this._opt.url,this._opt.playOptions).then((()=>{i()})).catch((e=>{this.debug.error("JbPro","_playBefore _play error",e),this.emit(nt.crashLog,this.getCrashLog("this.player.play 6",e)),s(e)}))}))}_cryptoPlay(e){return new Promise(((t,i)=>{const s=function(e){const t=(e||document.location.toString()).split("//"),i=t[1].indexOf("/");let s=t[1].substring(i);return-1!=s.indexOf("?")&&(s=s.split("?")[0]),s}(e);let r=this._opt.cryptoKeyUrl,a="";const o=oo(e);if(r){if(a=r,this._opt.isM7sCrypto&&-1===a.indexOf("/crypto/?stream=")){const e=oo(r);a=e.origin+Z+`?stream=${s}`}}else r=o.origin+Z,a=r+`?stream=${s}`;var n;this.player.debug.log("JbPro",`_cryptoPlay() cryptoKeyUrl: ${a} and opt.cryptoKeyUrl: ${this._opt.cryptoKeyUrl}`),(n=a,new Promise(((e,t)=>{bl.get(n).then((t=>{e(t)})).catch((e=>{t(e)}))}))).then((e=>{if(e){const s=e.split("."),r=ao(s[0]),a=ao(s[1]);a&&r?t({cryptoIV:a,cryptoKey:r}):i("get cryptoIV or cryptoKey error")}else i(`cryptoKeyUrl: getM7SCryptoStreamKey ${a} res is null`)})).catch((e=>{i(e)}))}))}playback(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{if(this.debug.log("JbPro",`playback() ${e}, options: ${JSON.stringify(t)}`),po(this._opt.isLive))return s("this._opt.isLive is false, can not playback");const r=ho(),a=Object.assign({},r.playbackConfig,this._opt.playbackConfig,t);a.isUseFpsRender||a.isCacheBeforeDecodeForFpsRender&&(a.isCacheBeforeDecodeForFpsRender=!1,this.debug.warn("JbPro","playbackConfig.isUseFpsRender is false, isCacheBeforeDecodeForFpsRender can not be ture, isCacheBeforeDecodeForFpsRender is set to false")),0===a.rateConfig.length&&a.showRateBtn&&(a.showRateBtn=!1,this.debug.warn("JbPro","playbackConfig.rateConfig.length is 0, showRateBtn can not be ture, showRateBtn is set to false")),a.controlType,Q.simple,this._resetPlayer({videoBuffer:0,playbackConfig:a,playType:_,openWebglAlignment:!0,useMSE:a.useMSE,useWCS:a.useWCS,useSIMD:!0}).then((()=>{this.play(e,t).then((()=>{i()})).catch((e=>{s(e)}))})).catch((e=>{s(e)}))}))}playbackPause(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.debug.log("JbPro",`playbackPause() ${e}`),this._opt.playType===b?Promise.reject("playType is player, can not call playbackPause method"):new Promise(((t,i)=>{if(!this.player)return i("player is null");uo(e)?this._pause().then((()=>{t()})).catch((e=>{i(e)})):(this.player.playbackPause=!0,t())}))}playbackResume(){return this.debug.log("JbPro","playbackResume()"),this._opt.playType===b?Promise.reject("playType is player, can not call playbackResume method"):new Promise(((e,t)=>{if(!this.player)return t("player is null");this.player.playbackPause=!1,e()}))}forward(e){return this.debug.log("JbPro",`forward() ${e}`),po(this._opt.isLive)||this._opt.playType===b?Promise.reject("forward() method only just for playback type"):Ta(Number(e))?new Promise(((t,i)=>{this.player?(e=oa(Number(e),.1,32),this.player.decoderWorker&&this.player.decoderWorker.updateWorkConfig({key:"playbackRate",value:e}),this.player.playback.setRate(e),this.player.video&&this.player.video.setRate(e),this.player.audio&&this.player.audio.setRate(e),(this.player.isPlaybackUseWCS()||this.player.isPlaybackUseMSE())&&(this.player.demux.dropBuffer$2(),this.player.isPlaybackCacheBeforeDecodeForFpsRender()&&this.player.demux.initPlaybackCacheLoop()),t()):i("player is not playing")})):Promise.reject(`forward() params "rate": ${e} must be number type`)}playbackForward(e){return this.forward(e)}normal(){return this.forward(1)}playbackNormal(){return this.normal()}updatePlaybackForwardMaxRateDecodeIFrame(e){this.debug.log("JbPro",`updatePlaybackForwardMaxRateDecodeIFrame() ${e}`),e=Number(e),e=oa(e=parseInt(e,10),1,8),this._opt.playbackForwardMaxRateDecodeIFrame=e,this.player?this.player.updateOption({playbackForwardMaxRateDecodeIFrame:e},!0):this.debug.warn("JbPro","updatePlaybackForwardMaxRateDecodeIFrame() player is null")}setPlaybackStartTime(e){this.debug.log("JbPro",`setPlaybackStartTime() ${e}`);const t=Ga(e);this.player?this.player.isPlayback()?t<10&&0!==e&&this.player.playback.isControlTypeNormal()?this.debug.warn("JbPro",`setPlaybackStartTime() control type is normal and timestamp: ${e} is not valid`):this.player.playback.isControlTypeSimple()&&e>this.player.playback.totalDuration?this.debug.warn("JbPro",`setPlaybackStartTime() control type is simple and timestamp: ${e} is more than ${this.player.playback.totalDuration}`):this.player.playing&&(this.player.playback.isControlTypeNormal()&&10===t&&(e*=1e3),this.player.playback.setStartTime(e),this.playbackClearCacheBuffer()):this.debug.warn("JbPro","setPlaybackStartTime() playType is not playback"):this.debug.warn("JbPro","setPlaybackStartTime() player is null")}setPlaybackShowPrecision(e){this.debug.log("JbPro",`setPlaybackShowPrecision() ${e}`),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.setShowPrecision(e):this.debug.warn("JbPro","control type is not normal , not support!"):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null")}playbackCurrentTimeScroll(){this.debug.log("JbPro","playbackCurrentTimeScroll()"),this.player?this.player.isPlayback()?this.player.playback.isControlTypeNormal()?this.player.playback.currentTimeScroll():this.debug.warn("JbPro","control type is not normal , not support!"):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null")}playbackClearCacheBuffer(){this.debug.log("JbPro","playbackClearCacheBuffer()"),this.player?this.player.isPlayback()?(this.player.video&&this.player.video.clear(),this.player.audio&&this.player.audio.clear(),this.clearBufferDelay()):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null")}getPlaybackCurrentRate(){if(this.player){if(this.player.isPlayback())return this.player.getPlaybackRate();this.debug.warn("JbPro","playType is not playback")}else this.debug.warn("JbPro","player is null")}updatePlaybackLocalOneFrameTimestamp(e){this.debug.log("JbPro",`updatePlaybackLocalOneFrameTimestamp() ${e}`),this.player?this.player.isPlayback()?this.player.playback.updateLocalOneFrameTimestamp(e):this.debug.warn("JbPro","playType is not playback"):this.debug.warn("JbPro","player is null")}setStreamQuality(e){if(this.debug.log("JbPro",`setStreamQuality() ${e}`),!this.player)return void this.debug.warn("JbPro","player is null");if(!this.player._opt.operateBtns.quality)return void this.debug.warn("JbPro","player._opt.operateBtns.quality is false");(this.player._opt.qualityConfig||[]).includes(e)?this.player.streamQuality=e:this.debug.warn("JbPro",`quality: ${e} is not in qualityList`)}_play(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((s,r)=>{if(!this.player)return r("player is null");let u=!1;this._opt.url&&this._opt.url!==t&&(u=!0),this._opt.url=t,this._opt.playOptions=i;const p=t.split("?")[0],f=p.startsWith("http://")||p.startsWith("https://"),m=p.startsWith("webrtc://"),g=p.startsWith("artc://"),y=p.startsWith("wt://"),A=p.startsWith("ws://")||p.startsWith("wss://"),b=f||A,v=f&&p.endsWith(".m3u8"),_=b&&p.endsWith(".flv"),S=b&&(p.endsWith(".fmp4")||p.endsWith(".mp4")),w=b&&p.endsWith(".mpeg4"),E=b&&(p.endsWith(".h264")||p.endsWith(".h265")),M=b&&p.endsWith(".ts");let U=this._opt.isWebrtcForZLM||!1,F=this._opt.isWebrtcForSRS||!1,O=this._opt.isWebrtcForOthers||!1;m&&(-1!==t.indexOf("/index/api/webrtc")?(U=!0,F=!1,O=!1):-1!==t.indexOf("/rtc/v1/play/")&&(F=!0,U=!1,O=!1));let j=null,z=null;if(_&&po(this._opt.isFlv)&&this._resetDemuxType("isFlv"),S&&po(this._opt.isFmp4)&&this._resetDemuxType("isFmp4"),w&&po(this._opt.isMpeg4)&&this._resetDemuxType("isMpeg4"),E&&po(this._opt.isNakedFlow)&&this._resetDemuxType("isNakedFlow"),M&&po(this._opt.isTs)&&this._resetDemuxType("isTs"),f?j=v?n:o:y?j=d:m?j=l:g?j=h:A&&(j=a),this._opt.isNakedFlow?z=D:this._opt.isFmp4?z=L:this._opt.isMpeg4?z=P:this._opt.isFlv?z=T:this._opt.isTs?z=I:v?z=C:m?z=x:g?z=B:y?z=R:A&&(z=k),!j||!z)return this._opt.playFailedAndPausedShowMessage&&this.showErrorMessageTips("url is not support"),r(`play url ${t} is invalid, protocol is ${c[j]}, demuxType is ${z}`);this.debug.log("JbPro",`play url ${t} protocol is ${c[j]}, demuxType is ${z}`);const G=()=>{this.player.once(ct.webglAlignmentError,(e=>{if(this.isDestroyed())this.debug.log("JbPro","webglAlignmentError but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.webglAlignmentError,e)),this.player&&this.player._opt.webglAlignmentErrorReplay){this.debug.log("JbPro","webglAlignmentError");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({openWebglAlignment:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webglAlignmentError and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webglAlignmentError,{},e),this.debug.error("JbPro","webglAlignmentError and play error",t)}))})).catch((e=>{this.debug.error("JbPro","webglAlignmentError and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.webglAlignmentError,{},e),this.debug.log("JbPro","webglAlignmentError and webglAlignmentErrorReplay is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webglAlignmentError,{},e),this.debug.error("JbPro","webglAlignmentError and pause error",t)}))}})),this.player.once(ct.webglContextLostError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","webglContextLostError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.webglContextLostError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.webglContextLostErrorReplay){this.debug.log("JbPro","webglContextLostError");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","webglContextLostError and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.webglContextLostError,t,e),this.debug.error("JbPro","webglContextLostError and play error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.webglContextLostError,t,e),this.debug.error("JbPro","webglContextLostError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.webglContextLostError,t,e),this.debug.log("JbPro","webglContextLostError and webglContextLostErrorReplay is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.webglContextLostError,t,e),this.debug.error("JbPro","webglAlignmentError and pause error",i)}))}})),this.player.once(ct.mediaSourceH265NotSupport,(e=>{if(this.isDestroyed())this.debug.log("JbPro","mediaSourceH265NotSupport but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.mediaSourceH265NotSupport,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceH265NotSupport,e),this.debug.error("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport auto wasm [mse-> wasm] _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceH265NotSupport,{},e),this.debug.log("JbPro","mediaSourceH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceH265NotSupport,{},e),this.debug.error("JbPro","mediaSourceH265NotSupport and pause error",t)}))}})),this.player.once(ct.mediaSourceFull,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","mediaSourceFull but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.mediaSourceFull,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},a=this.player._opt.decoderErrorAutoWasm,o=!0;a?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(aa()):(a=!0,o=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mediaSourceFull and auto wasm ${po(o)?" and is not meaningful Retry":""} [mse-> ${a?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceFull and reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and reset player and play error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceFull,t,e),this.debug.log("JbPro","mediaSourceFull and autoWasm is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceFull,t,e),this.debug.error("JbPro","mediaSourceFull and pause error",i)}))}})),this.player.once(ct.mediaSourceAppendBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","mediaSourceAppendBufferError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.mediaSourceAppendBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},a=this.player._opt.decoderErrorAutoWasm,o=!0;a?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(aa()):(a=!0,o=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEAudioDecoderError&&(this.player.debug.log("JbPro","mediaSourceAppendBufferError and isMSEAudioDecoderError is true so set mseDecodeAudio = false"),r.mseDecodeAudio=!1),this.debug.log("JbPro",`mediaSourceAppendBufferError and auto wasm ${po(o)?" and is not meaningful Retry":""} [mse-> ${a?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceAppendBufferError and reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and reset player and play error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAppendBufferError,t,e),this.debug.log("JbPro","mediaSourceAppendBufferError and autoWasm is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAppendBufferError,t,e),this.debug.error("JbPro","mediaSourceAppendBufferError and pause error",i)}))}})),this.player.once(ct.mseSourceBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","mseSourceBufferError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.mseSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={};if(this.player._opt.mseDecoderUseWorker)r={mseDecoderUseWorker:!1},this.debug.log("JbPro","mseSourceBufferError auto wasm [mse worker -> mse] reset player and play");else{let e=this.player._opt.decoderErrorAutoWasm,t=!0;e?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(aa()):(e=!0,t=!1,r={useMSE:!1,useWCS:!1}),this.player.isMSEVideoDecoderInitializationFailedNotSupportHevc&&(this.debug.log("JbPro","mseSourceBufferError and isMSEVideoDecoderInitializationFailedNotSupportHevc is true so auto wasm"),r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mseSourceBufferError auto wasm ${po(t)?" and is not meaningful Retry":""} [mse-> ${e?"wasm":"mse"}] reset player and play`)}this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mseSourceBufferError reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError reset player and play error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.mseSourceBufferError,t,e),this.debug.log("JbPro","mseSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mseSourceBufferError,t,e),this.debug.error("JbPro","mseSourceBufferError and pause error:",i)}))}})),this.player.once(ct.mediaSourceBufferedIsZeroError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","mediaSourceBufferedIsZeroError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.mediaSourceBufferedIsZeroError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mseDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},a=this.player._opt.decoderErrorAutoWasm,o=!0;a?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Dr)?this._mseDecodeErrorRetryLog.push(aa()):(a=!0,o=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`mediaSourceBufferedIsZeroError auto wasm ${po(o)?" and is not meaningful Retry":""} [mse-> ${a?"wasm":"mse"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceBufferedIsZeroError reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError reset player and play error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceBufferedIsZeroError,t,e),this.debug.log("JbPro","mediaSourceBufferedIsZeroError and autoWasm is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceBufferedIsZeroError,t,e),this.debug.error("JbPro","mediaSourceBufferedIsZeroError and pause error:",i)}))}})),this.player.once(ct.mseAddSourceBufferError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","mseAddSourceBufferError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.mseAddSourceBufferError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={useMSE:!1,useWCS:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] reset player and play error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError auto wasm [mse-> wasm] _resetPlayer and play error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.mseAddSourceBufferError,t,e),this.debug.log("JbPro","mseAddSourceBufferError and autoWasm is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mseAddSourceBufferError,t,e),this.debug.error("JbPro","mseAddSourceBufferError and pause error",i)}))}})),this.player.once(ct.mediaSourceDecoderConfigurationError,(e=>{if(this.isDestroyed())this.debug.log("JbPro","mediaSourceDecoderConfigurationError but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.mediaSourceDecoderConfigurationError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;let s={useMSE:!1,useWCS:!1};this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError auto wasm [mse-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceDecoderConfigurationError,e),this.debug.log("JbPro","mediaSourceDecoderConfigurationError and autoWasm is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceDecoderConfigurationError,e),this.debug.error("JbPro","mediaSourceDecoderConfigurationError and pause error",t)}))}})),this.player.once(ct.mediaSourceTsIsMaxDiff,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","mediaSourceTsIsMaxDiff but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.mediaSourceTsIsMaxDiff,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceTsIsMaxDiffReplay){this.debug.log("JbPro","mediaSourceTsIsMaxDiff reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","mediaSourceTsIsMaxDiff replay success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff replay error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceTsIsMaxDiff,t,e),this.debug.log("JbPro","mediaSourceTsIsMaxDiff and replay is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceTsIsMaxDiff,t,e),this.debug.error("JbPro","mediaSourceTsIsMaxDiff and pause error",i)}))}})),this.player.once(ct.mseWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("JbPro","mseWidthOrHeightChange but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.mseWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.player._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.isDestroyed()?this.debug.log("JbPro","mseWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and reset player and play error",e)}))}),1e3*this.player._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","mseWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(nt.playFailedAndPaused,ct.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mseWidthOrHeightChange,i,t),this.debug.error("JbPro","mseWidthOrHeightChange error and pause error",e)}))}})),this.player.once(ct.mediaSourceAudioG711NotSupport,(t=>{if(this.isDestroyed())return void this.debug.log("JbPro","mediaSourceAudioG711NotSupport but player is destroyed");const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceAudioG711NotSupportReplay){this.debug.log("JbPro","mediaSourceAudioG711NotSupport and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioG711NotSupport and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and reset player and play error",e)}))})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport and _resetPlayer error",e)})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioG711NotSupport,i,t),this.debug.error("JbPro","mediaSourceAudioG711NotSupport error and pause error",e)}))}})),this.player.once(ct.mediaSourceAudioInitTimeout,(t=>{if(this.isDestroyed())return void this.debug.log("JbPro","mediaSourceAudioInitTimeout but player is destroyed");const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debug.log("JbPro","mediaSourceAudioInitTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioInitTimeout and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioInitTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioInitTimeout and reset player and play error",e)}))})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioInitTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioInitTimeout,i),this.debug.error("JbPro","mediaSourceAudioInitTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioInitTimeout,i),this.debug.error("JbPro","mediaSourceAudioInitTimeout error and pause error",e)}))}})),this.player.once(ct.mediaSourceAudioNoDataTimeout,(t=>{if(this.isDestroyed())return void this.debug.log("JbPro","mediaSourceAudioNoDataTimeout but player is destroyed");const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.mediaSourceAudioInitTimeoutReplay){this.debug.log("JbPro","mediaSourceAudioNoDataTimeout and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={mseDecodeAudio:!1};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(e,s).then((()=>{this.debug.log("JbPro","mediaSourceAudioNoDataTimeout and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioNoDataTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and reset player and play error",e)}))})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioNoDataTimeout,i,t),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioNoDataTimeout,i),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout and _resetPlayer error",e)})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceAudioNoDataTimeout,i),this.debug.error("JbPro","mediaSourceAudioNoDataTimeout error and pause error",e)}))}})),this.player.once(ct.mediaSourceUseCanvasRenderPlayFailed,(e=>{if(this.isDestroyed())this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.mediaSourceUseCanvasRenderPlayFailed,e)),this.player&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplay&&this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType){this.debug.log("JbPro",`mediaSourceUseCanvasRenderPlayFailed relayType is ${this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;let s={};const r=this.player._opt.mediaSourceUseCanvasRenderPlayFailedReplayType;r===$?s={useMSE:!1,useWCS:!1}:r===W&&(s={useVideoRender:!0,useCanvasRender:!1}),this._resetPlayer(s).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed and reset player and play error",t)}))})).catch((e=>{this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed auto and _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.debug.log("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause player success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.mediaSourceUseCanvasRenderPlayFailed,e),this.debug.error("JbPro","mediaSourceUseCanvasRenderPlayFailed and pause",t)}))}})),this.player.once(ct.webcodecsH265NotSupport,(e=>{if(this.isDestroyed())this.debug.log("JbPro","webcodecsH265NotSupport but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.webcodecsH265NotSupport,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsH265NotSupport,e),this.debug.error("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((e=>{this.debug.error("JbPro","webcodecsH265NotSupport auto wasm [wcs-> wasm] _resetPlayer and play error",e)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.webcodecsH265NotSupport,e),this.debug.log("JbPro","webcodecsH265NotSupport and autoWasm is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsH265NotSupport,e),this.debug.error("JbPro","webcodecsH265NotSupport and pause error",t)}))}})),this.player.once(ct.webcodecsUnsupportedConfigurationError,(e=>{if(this.isDestroyed())this.debug.log("JbPro","webcodecsUnsupportedConfigurationError but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.webcodecsUnsupportedConfigurationError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.webcodecsUnsupportedConfigurationError,e),this.debug.log("JbPro","webcodecsUnsupportedConfigurationError and autoWasm is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsUnsupportedConfigurationError,e),this.debug.error("JbPro","webcodecsUnsupportedConfigurationError and pause error",t)}))}})),this.player.once(ct.webcodecsDecodeConfigureError,(e=>{if(this.isDestroyed())this.debug.log("JbPro","webcodecsDecodeConfigureError but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.webcodecsDecodeConfigureError,e)),this.player&&this.player._opt.hardDecodingNotSupportAutoWasm){this.debug.log("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useWCS:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] reset player and play error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError auto wasm [wcs-> wasm] _resetPlayer and play error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeConfigureError,e),this.debug.log("JbPro","webcodecsDecodeConfigureError and autoWasm is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeConfigureError,e),this.debug.error("JbPro","webcodecsDecodeConfigureError and pause error",t)}))}})),this.player.once(ct.webcodecsDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","webcodecsDecodeError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.webcodecsDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.wcsDecodeErrorReplay){const i=this._opt.url,s=this._opt.playOptions;let r={},a=this.player._opt.decoderErrorAutoWasm,o=!0;a?r={useMSE:!1,useWCS:!1}:this._checkIsMeaningfulRetry(Lr)?this._wcsDecodeErrorRetryLog.push(aa()):(a=!0,o=!1,r={useMSE:!1,useWCS:!1}),this.debug.log("JbPro",`webcodecs decode error autoWasm ${po(o)?" and is not meaningful Retry":""} [wcs-> ${a?"wasm":"wcs"}] reset player and play`),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","webcodecs decode error reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error reset player and play error",i)}))})).catch((()=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeError,t,e),this.debug.log("JbPro","webcodecs decode error and autoWasm is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.webcodecsDecodeError,t,e),this.debug.error("JbPro","webcodecs decode error and pause error",i)}))}})),this.player.once(ct.wcsWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("JbPro","wcsWidthOrHeightChange but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.wcsWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.isDestroyed()?this.debug.log("JbPro","wcsWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and reset player and play error",e)}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","wcsWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(nt.playFailedAndPaused,ct.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wcsWidthOrHeightChange,i,t),this.debug.error("JbPro","wcsWidthOrHeightChange error and pause error",e)}))}})),this.player.once(ct.wasmDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","wasmDecodeError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.wasmDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.wasmDecodeErrorReplay){this.debug.log("JbPro","wasm decode error and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.wasmDecodeError,t,e),this.debug.error("JbPro","wasm decode error and reset player and play error",i)}))})).catch((()=>{this.emit(nt.playFailedAndPaused,ct.wasmDecodeError,t,e),this.debug.error("JbPro","wasm decode error and _resetPlayer error")}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.wasmDecodeError,t,e),this.debug.log("JbPro","wasm decode error and wasmDecodeErrorReplay is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.wasmDecodeError,t,e),this.debug.error("JbPro","wasm decode error and pause error",i)}))}})),this.player.once(ct.simdDecodeError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","simdDecodeError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.simdDecodeError,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.simdDecodeErrorReplay){this.debug.log("JbPro",`simdDecodeError error simdDecodeErrorReplayType is ${this.player._opt.simdDecodeErrorReplayType} and reset player and play`);const i=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.simdDecodeErrorReplayType===N&&(r={useSIMD:!1}),this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","simdDecodeError and reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and reset player and play error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError and simdDecodeErrorReplay is false")})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.simdDecodeError,t,e),this.debug.error("JbPro","simdDecodeError error and pause error",i)}))}})),this.player.once(ct.wasmWidthOrHeightChange,(t=>{if(this.isDestroyed())return void this.debug.log("JbPro","wasmWidthOrHeightChange but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.wasmWidthOrHeightChange,t));const i=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.widthOrHeightChangeReplay){this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play");const e=this._opt.url,s=this._opt.playOptions;let r={};this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,i,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this._opt.widthOrHeightChangeReplayDelayTime>0?this.widthOrHeightChangeReplayDelayTimeout=setTimeout((()=>{this.isDestroyed()?this.debug.log("JbPro","wasmWidthOrHeightChange and widthOrHeightChangeReplayDelayTime but player is destroyed"):this.play(e,s).then((()=>{this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and reset player and play error",e)}))}),1e3*this._opt.widthOrHeightChangeReplayDelayTime):this.play(e,s).then((()=>{this.debug.log("JbPro","wasmWidthOrHeightChange and reset player and play success")})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and reset player and play error",e)}))})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)}))}else{const s=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(s).then((()=>{this.emit(nt.playFailedAndPaused,ct.wasmWidthOrHeightChange,i,t),this.debug.error("JbPro","wasmWidthOrHeightChange and _resetPlayer error",e)})).catch((e=>{this.emit(nt.playFailedAndPaused,ct.wasmWidthOrHeightChange,i),this.debug.error("JbPro","wasmWidthOrHeightChange error and pause error",e)}))}})),this.player.once(ct.wasmUseVideoRenderError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","wasmUseVideoRenderError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.wasmUseVideoRenderError,e)),this.debug.log("JbPro","wasmUseVideoRenderError and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","wasmUseVideoRenderError and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.wasmUseVideoRenderError,{},e),this.debug.error("JbPro","wasmUseVideoRenderError and reset player and play error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.wasmUseVideoRenderError,{},e),this.debug.error("JbPro","wasmUseVideoRenderError and _resetPlayer error",t)}))})),this.player.once(ct.videoElementPlayingFailed,(e=>{if(this.isDestroyed())this.debug.log("JbPro","videoElementPlayingFailed but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.videoElementPlayingFailed,e)),this.player&&this.player._opt.videoElementPlayingFailedReplay){this.debug.log("JbPro",`videoElementPlayingFailed and useMSE is ${this._opt.useMSE} and reset player and play`);const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useMSE:!1,useVideoRender:!1,useCanvasRender:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","videoElementPlayingFailed and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and reset player and play error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and videoElementPlayingFailedReplay is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.videoElementPlayingFailed,{},e),this.debug.error("JbPro","videoElementPlayingFailed and _pause error",t)}))}})),this.player.once(ct.simdH264DecodeVideoWidthIsTooLarge,(e=>{if(this.isDestroyed())this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge but player is destroyed");else if(this.emit(nt.crashLog,this.getCrashLog(ct.simdH264DecodeVideoWidthIsTooLarge,e)),this.player&&this.player._opt.simdH264DecodeVideoWidthIsTooLargeReplay){this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({useSIMD:!1}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and reset player and play error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and simdDecodeErrorReplay is false")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.simdH264DecodeVideoWidthIsTooLarge,{},e),this.debug.error("JbPro","simdH264DecodeVideoWidthIsTooLarge and pause error",t)}))}})),this.player.once(nt.networkDelayTimeout,(e=>{if(this.player._opt.networkDelayTimeoutReplay){if(this.isDestroyed())return void this.debug.log("JbPro","networkDelayTimeout but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(nt.networkDelayTimeout,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","network delay time out and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log("JbPro","wasm decode error and reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,nt.networkDelayTimeout,t,e),this.debug.error("JbPro","wasm decode error and reset player and play error",i)}))})).catch((()=>{this.emit(nt.playFailedAndPaused,nt.networkDelayTimeout,t,e),this.debug.error("JbPro","wasm decode error and _resetPlayer error")}))}})),this.player.once(nt.flvDemuxBufferSizeTooLarge,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","flvDemuxBufferSizeTooLarge but player is destroyed");const t=this._getVideoLastIframeInfo();if(this.player._opt.flvDemuxBufferSizeTooLargeReplay){this.emit(nt.crashLog,this.getCrashLog(nt.flvDemuxBufferSizeTooLarge,e)),this.debug.log("JbPro","flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeReplay = true and reset player and play");const i=this._opt.url,s=this._opt.playOptions;let r={};this.player&&this.player._opt.replayUseLastFrameShow&&(r=Object.assign({},r,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(r.isNotMute=!0),this._resetPlayer(r).then((()=>{this.play(i,s).then((()=>{this.debug.log(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play success")})).catch((i=>{this.emit(nt.playFailedAndPaused,nt.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large and reset player and play error",i)}))})).catch((()=>{this.emit(nt.playFailedAndPaused,nt.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large and _resetPlayer error")}))}else if(this._opt.flvDemuxBufferSizeTooLargeEmitFailed){this.debug.log(this.TAG_NAME,"flv Demux Buffer Size Too Large and flvDemuxBufferSizeTooLargeEmitFailed = true and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.flvDemuxBufferSizeTooLarge,t,e)})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.flvDemuxBufferSizeTooLarge,t,e),this.debug.error(this.TAG_NAME,"flv Demux Buffer Size Too Large",i)}))}})),this.player.once(ct.fetchError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","fetchError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.fetchError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.player._opt.streamErrorReplay||i){i?this.debug.log("JbPro","fetch error and network is disconnect and reset player and play"):this.debug.log("JbPro",`fetch error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes}, streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,a=this._opt.url,o=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.isDestroyed())this.debug.log("JbPro","fetch error and _resetPlayer but player is destroyed and return");else{if(this.network.isOffline())return this.debug.log("JbPro","fetch error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:a,options:r,type:ct.fetchError});this._streamErrorReplayTimes++,this.play(a,r).then((()=>{this.debug.log("JbPro","fetch error and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.fetchError,{},e),this.debug.error("JbPro","fetch error and reset player and play error",t)}))}}),1e3*o)})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.fetchError,{},e),this.debug.error("JbPro","fetch error and _resetPlayer error",t)}))}else{this.debug.log("JbPro","fetch error and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.fetchError,t,e)})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.fetchError,t,e),this.debug.error("JbPro","fetch error and pause",i)}))}})),this.player.once(nt.streamEnd,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","streamEnd but player is destroyed and return");this.emit(nt.crashLog,this.getCrashLog(nt.streamEnd,e));const t=this._getVideoLastIframeInfo(),i=this._checkIsMeaningfulRetry(Rr),s=""+e=="1006"&&this.player._opt.websocket1006ErrorReplay,r=s&&i,a=this.player._opt.streamEndReplay,o=this._isNeedNetworkDisconnectReplay();if(r||a||o){o?this.debug.log("JbPro","streamEnd and network is disconnect and reset player and play"):r?this.debug.log("JbPro",`streamEnd and websocket1006ErrorReplay is true and error is 1006 and _websocket1006ErrorReplayTimes is ${this._websocket1006ErrorReplayTimes} , delay ${this._opt.websocket1006ErrorReplayDelayTime}s reset player and play`):this.debug.log("JbPro",`streamEnd and isStreamEndReplay is true and and _streamEndReplayTimes is ${this._streamEndReplayTimes} , delay ${this._opt.streamEndReplayDelayTime}s reset player and play`);const i=this._opt.playOptions,s=this._opt.url;this._websocket1006ErrorRetryLog.push(aa());let a={};this.player._opt.replayUseLastFrameShow&&(a=Object.assign({},a,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(a.isNotMute=!0);let n=r?this._opt.websocket1006ErrorReplayDelayTime:this._opt.streamEndReplayDelayTime;o&&(n=1),this._initLoadingBackgroundForIOS(t),this._resetPlayer(a).then((()=>{this.streamEndReplayDelayTimeout=setTimeout((()=>{if(this._removeLoadingBackgroundForIOS(),this.isDestroyed())o?this.debug.log("JbPro","streamEnd and network is disconnect and _resetPlayer() but player is destroyed and return"):r?this.debug.log("JbPro","streamEnd and 1006 error and _resetPlayer() but player is destroyed and return"):this.debug.log("JbPro","streamEnd and _resetPlayer() but player is destroyed and return");else{if(this.network.isOffline())return r?this.debug.log("JbPro","streamEnd and 1006 error network is offline and wait network online to play , so return"):this.debug.log("JbPro","streamEnd and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:s,options:i,type:r?ct.websocket1006Error:ct.streamEnd});r?this._websocket1006ErrorReplayTimes++:this._streamEndReplayTimes++,this.play(s,i).then((()=>{r?this.debug.log("JbPro","streamEnd and 1006 error and reset player and play success"):this.debug.log("JbPro","streamEnd and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.streamEnd,{},e),r?this.debug.error("JbPro","streamEnd and 1006 error and reset player and play error",t):this.debug.error("JbPro","streamEnd and reset player and play error",t)}))}}),1e3*n)})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.streamEnd,{},e),r?this.debug.error("JbPro","streamEnd and 1006 and _resetPlayer error",t):this.debug.error("JbPro","streamEnd and _resetPlayer error",t)}))}else{s?this.debug.log("JbPro","streamEnd pause player "+(po(i)?"and is not meaningful retry":"")):this.debug.log("JbPro","streamEnd pause player");const r=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(r).then((()=>{this.emit(nt.playFailedAndPaused,nt.streamEnd,t,e)})).catch((i=>{this.emit(nt.playFailedAndPaused,nt.streamEnd,t,e),this.debug.error("JbPro","streamEnd pause",i)}))}})),this.player.once(ct.websocketError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","websocketError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.websocketError,e));const t=this._getVideoLastIframeInfo(),i=this._isNeedNetworkDisconnectReplay();if(this.player._opt.streamErrorReplay||i){i?this.debug.log("JbPro","websocketError error and network is disconnect and reset player and play"):this.debug.log("JbPro",`websocketError error and streamErrorReplay is true and _streamErrorReplayTimes is ${this._streamErrorReplayTimes} and streamErrorReplayDelayTime is ${this._opt.streamErrorReplayDelayTime}, next replay`);let s={};this.player._opt.replayUseLastFrameShow&&(s=Object.assign({},s,t,{loadingIcon:this.player._opt.replayShowLoadingIcon})),po(this.isMute())&&(s.isNotMute=!0);const r=this._opt.playOptions,a=this._opt.url,o=i?1:this._opt.streamErrorReplayDelayTime;this._resetPlayer(s).then((()=>{this.streamErrorReplayDelayTimeout=setTimeout((()=>{if(this.isDestroyed())i?this.debug.log("JbPro","websocketError error and network is disconnect and _resetPlayer() but player is destroyed and return"):this.debug.log("JbPro","websocketError error and _resetPlayer() but player is destroyed and return");else{if(this.network.isOffline())return this.debug.log("JbPro","websocketError error and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:a,options:r,type:ct.websocketError});this._streamErrorReplayTimes++,this.play(a,r).then((()=>{this.debug.log("JbPro","websocketError error and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.fetchError,{},e),this.debug.error("JbPro","websocketError error and reset player and play error",t)}))}}),1e3*o)})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.fetchError,{},e),this.debug.error("JbPro","websocketError error and _resetPlayer error",t)}))}else{this.debug.log("JbPro","websocketError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.websocketError,t,e)})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.websocketError,t,e),this.debug.error("JbPro","websocketError and pause",i)}))}})),this.player.once(ct.webrtcError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","webrtcError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.webrtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","webrtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.webrtcError,t,e)})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.webrtcError,t,e),this.debug.error("JbPro","webrtcError and pause",i)}))})),this.player.once(ct.hlsError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","hlsError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.hlsError,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","hlsError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.hlsError,t,e)})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.hlsError,t,e),this.debug.error("JbPro","hlsError and pause",i)}))})),this.player.once(ct.aliyunRtcError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","aliyunRtcError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.aliyunRtcError,e));const t=this._getVideoLastIframeInfo();this.debug.log("JbPro","aliyunRtcError and pause player");const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,ct.aliyunRtcError,t,e)})).catch((i=>{this.emit(nt.playFailedAndPaused,ct.aliyunRtcError,t,e),this.debug.error("JbPro","aliyunRtcError and pause",i)}))})),this.player.once(ct.decoderWorkerInitError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","decoderWorkerInitError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.decoderWorkerInitError,e)),this.debug.log("JbPro","decoderWorkerInitError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.decoderWorkerInitError,{},e)})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.decoderWorkerInitError,{},e),this.debug.error("JbPro","decoderWorkerInitError and pause",t)}))})),this.player.once(ct.videoElementPlayingFailedForWebrtc,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","videoElementPlayingFailedForWebrtc but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.videoElementPlayingFailedForWebrtc,e)),this.debug.log("JbPro","videoElementPlayingFailedForWebrtc and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.videoElementPlayingFailedForWebrtc,{},e)})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.videoElementPlayingFailedForWebrtc,{},e),this.debug.error("JbPro","videoElementPlayingFailedForWebrtc and pause",t)}))})),this.player.once(ct.videoInfoError,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","videoInfoError but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(ct.videoInfoError,e)),this.debug.log("JbPro","videoInfoError and pause player");const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,ct.videoInfoError,{},e)})).catch((t=>{this.emit(nt.playFailedAndPaused,ct.videoInfoError,{},e),this.debug.error("JbPro","videoInfoError and pause",t)}))})),this.player.once(nt.webrtcStreamH265,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","webrtcStreamH265 but player is destroyed");this.debug.log("JbPro","webrtcStreamH265 and reset player and play");const t=this._opt.url,i=this._opt.playOptions;this._resetPlayer({isWebrtcH265:!0}).then((()=>{this.play(t,i).then((()=>{this.debug.log("JbPro","webrtcStreamH265 and reset player and play success")})).catch((t=>{this.emit(nt.playFailedAndPaused,nt.webrtcStreamH265,{},e),this.debug.error("JbPro","webrtcStreamH265 and reset player and play error",t)}))})).catch((()=>{this.emit(nt.playFailedAndPaused,nt.webrtcStreamH265,{},e),this.debug.error("JbPro","webrtcStreamH265 and _resetPlayer error")}))})),this.player.on(nt.delayTimeout,(e=>{if(this.isDestroyed())return void this.debug.log("JbPro","delay timeout but player is destroyed");this.emit(nt.crashLog,this.getCrashLog(nt.delayTimeout,e));const t=this._getVideoLastIframeInfo();if(this.player&&this.player._opt.heartTimeoutReplay&&(this._heartTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","delayTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:i,options:s,type:nt.delayTimeout});this.play(i,s).then((()=>{})).catch((i=>{this.emit(nt.playFailedAndPaused,nt.delayTimeout,t,e),this.debug.error("JbPro","delay timeout replay error",i)}))})).catch((i=>{this.emit(nt.playFailedAndPaused,nt.delayTimeout,t,e),this.debug.error("JbPro","delay timeout _resetPlayer error",i)}))}else{const i=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(i).then((()=>{this.emit(nt.playFailedAndPaused,nt.delayTimeout,t,e),this.player&&(this.emit(nt.delayTimeoutRetryEnd),this.emit(nt.playFailedAndPaused,nt.delayTimeoutRetryEnd)),this.debug.warn("JbPro",`delayTimeoutRetryEnd and\n opt.heartTimeout is ${this.player&&this.player._opt.heartTimeout} and\n opt.heartTimeoutReplay is ${this.player&&this.player._opt.heartTimeoutReplay} and\n opt.heartTimeoutReplayTimes is ${this.player&&this.player._opt.heartTimeoutReplayTimes},and\n local._heartTimeoutReplayTimes is ${this._heartTimeoutReplayTimes}`)})).catch((i=>{this.emit(nt.playFailedAndPaused,nt.delayTimeout,t,e),this.debug.error("JbPro","delay timeout and pause error",i)}))}})),this.player.on(nt.loadingTimeout,(e=>{if(this.emit(nt.crashLog,this.getCrashLog(nt.loadingTimeout,e)),this.isDestroyed())this.debug.log("JbPro","loading timeout but player is destroyed");else if(this.player&&this.player._opt.loadingTimeoutReplay&&(this._loadingTimeoutReplayTimes{if(this._isNeedNetworkDisconnectReplay())return this.debug.log("JbPro","loadingTimeout and network is offline and wait network online to play , so return"),this._isNetworkOfflinePaused=!0,void(this._isNetworkOfflinePausedAndNextPlayConfig={url:t,options:i,type:nt.loadingTimeout});this.play(t,i).then((()=>{})).catch((t=>{this.emit(nt.playFailedAndPaused,nt.loadingTimeout,{},e),this.debug.error("JbPro","loading timeout replay error",t)}))})).catch((t=>{this.emit(nt.playFailedAndPaused,nt.loadingTimeout,{},e),this.debug.error("JbPro","loading timeout _resetPlayer error",t)}))}else{const t=!1===this._opt.playFailedUseLastFrameShow;this.player.setPlayFailedAndPaused(),this._pause(t).then((()=>{this.emit(nt.playFailedAndPaused,nt.loadingTimeout,{},e),this.player&&(this.emit(nt.loadingTimeoutRetryEnd),this.emit(nt.playFailedAndPaused,nt.loadingTimeoutRetryEnd,{},e)),this.debug.log("JbPro",`loadingTimeoutRetryEnd and\n opt.loadingTimeout is ${this.player&&this.player._opt.loadingTimeout} and\n opt.loadingTimeoutReplay is ${this.player&&this.player._opt.loadingTimeoutReplay} and\n local._loadingTimeoutReplayTimes time is ${this._loadingTimeoutReplayTimes} and\n opt.loadingTimeoutReplayTimes is ${this.player&&this.player._opt.loadingTimeoutReplayTimes}`)})).catch((t=>{this.emit(nt.playFailedAndPaused,nt.loadingTimeout,{},e),this.debug.error("JbPro","loading timeout and pause error",t)}))}})),this._hasLoaded()?this.player.play(t,i).then((()=>{s()})).catch((e=>{this.debug.error("JbPro","_hasLoaded() and play error",e),this.emit(nt.crashLog,this.getCrashLog("_hasLoaded() and play error",e)),this.player&&this.player.pause().then((()=>{r(e)})).catch((e=>{r(e),this.debug.error("JbPro","_hasLoaded() and play error and next pause error",e)}))})):this.player.once(nt.decoderWorkerInit,(()=>{this.player.play(t,i).then((()=>{s()})).catch((e=>{this.debug.error("JbPro","decoderWorkerInit and play error",e),this.emit(nt.crashLog,this.getCrashLog("decoderWorkerInit and play error",e)),this.player&&this.player.pause().then((()=>{r(e)})).catch((e=>{r(e),this.debug.error("JbPro","decoderWorkerInit and play error and next pause error",e)}))}))}))},H=this.player.getOption(),V=v&&po(this._opt.supportHls265),J=m&&po(this._opt.isWebrtcH265),q=v&&!!Xa(),K=v&&H.demuxUseWorker;if(V||J||g||u||w||q||K)this.debug.log("JbPro",`need reset player and\n isOldHls is ${V} and isOldWebrtc is ${J} and\n isAliyunRtc is ${g} and\n needResetPlayer(url change) is ${u} and\n isMpeg4 is ${w} and\n isHlsCanVideoPlay is ${q} and\n isHlsButDemuxUseWorker is ${K}`),this._resetPlayer({protocol:j,demuxType:z,isHls:v,isWebrtc:m,isWebrtcForZLM:U,isWebrtcForSRS:F,isWebrtcForOthers:O,isAliyunRtc:g,cryptoKey:i.cryptoKey||"",cryptoIV:i.cryptoIV||"",url:t,playOptions:i}).then((()=>{G()})).catch((e=>{r("reset player error")}));else{const e={protocol:j,demuxType:z,isHls:v,isWebrtc:m,isAliyunRtc:g,isFlv:this._opt.isFlv,isFmp4:this._opt.isFmp4,isMpeg4:this._opt.isMpeg4,isNakedFlow:this._opt.isNakedFlow,isTs:this._opt.isTs,cryptoKey:i.cryptoKey||"",cryptoIV:i.cryptoIV||""};this._opt.isNakedFlow&&(e.mseDecodeAudio=!1),this.player.updateOption(e),i.cryptoKey&&i.cryptoIV&&this.player.decoderWorker&&(this.player.decoderWorker.updateWorkConfig({key:"cryptoKey",value:i.cryptoKey}),this.player.decoderWorker.updateWorkConfig({key:"cryptoIV",value:i.cryptoIV})),G()}}))}_resetDemuxType(e){this._opt.isFlv=!1,this._opt.isFmp4=!1,this._opt.isMpeg4=!1,this._opt.isNakedFlow=!1,this._opt.isHls=!1,this._opt.isWebrtc=!1,this._opt.isWebrtcForZLM=!1,this._opt.isWebrtcForSRS=!1,this._opt.isWebrtcForOthers=!1,this._opt.isAliyunRtc=!1,this._opt.isTs=!1,e&&(this._opt[e]=!0),"isFmp4"!==e&&(this._opt.isFmp4Private=!1)}resize(){this.debug.log("JbPro","resize()"),this.player&&this.player.resize()}setBufferTime(e){this.debug.log("JbPro",`setBufferTime() ${e}`),(e=Number(e))>10&&this.debug.warn("JbPro",`setBufferTime() buffer time is ${e} second, is too large, video will show blank screen until cache ${e} second buffer data`);const t=1e3*e;this._opt.videoBuffer=t,this.player?this.player.updateOption({videoBuffer:t},!0):this.debug.warn("JbPro","setBufferTime() player is null")}setBufferDelayTime(e){this.debug.log("JbPro",`setBufferDelayTime() ${e}`),(e=Number(e))<.2&&this.debug.warn("JbPro",`setBufferDelayTime() buffer time delay is ${e} second, is too small`);const t=1e3*(e=oa(e,.2,100));this._opt.videoBufferDelay=t,this.player?this.player.updateOption({videoBufferDelay:t},!0):this.debug.warn("JbPro","setBufferDelayTime() player is null")}setRotate(e){this.debug.log("JbPro",`setRotate() ${e}`),e=parseInt(e,10);this._opt.rotate!==e&&-1!==[0,90,180,270].indexOf(e)?(this._opt.rotate=e,this.player?(this.player.updateOption({rotate:e}),this.resize()):this.debug.warn("JbPro","setRotate() player is null")):this.debug.warn("JbPro",`setRotate() rotate is ${e} and this._opt.rotate is ${this._opt.rotate}`)}setMirrorRotate(e){this.debug.log("JbPro",`setMirrorRotate() ${e}`);e||(e="none"),this._opt.mirrorRotate!==e&&-1!==["none","level","vertical"].indexOf(e)?(this._opt.mirrorRotate=e,this.player?(this.player.updateOption({mirrorRotate:e}),this.resize()):this.debug.warn("JbPro","setMirrorRotate() player is null")):this.debug.warn("JbPro",`setMirrorRotate() mirrorRotate is ${e} and this._opt.mirrorRotate is ${this._opt.mirrorRotate}`)}setAspectRatio(e){this.debug.log("JbPro",`setAspectRatio() ${e}`);e||(e="default"),this._opt.aspectRatio!==e&&-1!==["default","4:3","16:9"].indexOf(e)?(this._opt.aspectRatio=e,this.player?(this.player.updateOption({aspectRatio:e}),this.resize()):this.debug.warn("JbPro","setAspectRatio() player is null")):this.debug.warn("JbPro",`setAspectRatio() aspectRatio is ${e} and this._opt.aspectRatio is ${this._opt.mirrorRotate}`)}hasLoaded(){return!0}_hasLoaded(){return this.player&&this.player.loaded||!1}setKeepScreenOn(){this.debug.log("JbPro","setKeepScreenOn()"),this._opt.keepScreenOn=!0,this.player?this.player.updateOption({keepScreenOn:!0}):this.debug.warn("JbPro","setKeepScreenOn() player is not ready")}setFullscreen(e){this.debug.log("JbPro",`setFullscreen() ${e}`);const t=!!e;this.player?this.player.fullscreen!==t?this.player.fullscreen=t:this.debug.warn("JbPro",`setFullscreen() fullscreen is ${t} and this.player.fullscreen is ${this.player.fullscreen}`):this.debug.warn("JbPro","setFullscreen() player is not ready")}setWebFullscreen(e){this.debug.log("JbPro",`setWebFullscreen() ${e}`);const t=!!e;this.player?this.player.webFullscreen=t:this.debug.warn("JbPro","setWebFullscreen() player is not ready")}screenshot(e,t,i,s){return this.debug.log("JbPro",`screenshot() ${e} ${t} ${i} ${s}`),this.player&&this.player.video?this.player.video.screenshot(e,t,i,s):(this.debug.warn("JbPro","screenshot() player is not ready"),null)}screenshotWatermark(e){return new Promise(((t,i)=>{this.debug.log("JbPro","screenshotWatermark()",e),this.player&&this.player.video?this.player.video.screenshotWatermark(e).then((e=>{t(e)})).catch((e=>{i(e)})):(this.debug.warn("JbPro","screenshotWatermark() player is not ready"),i("player is not ready"))}))}startRecord(e,t){return new Promise(((i,s)=>{if(this.debug.log("JbPro",`startRecord() ${e} ${t}`),!this.player)return this.debug.warn("JbPro","startRecord() player is not ready"),s("player is not ready");this.player.playing?(this.player.startRecord(e,t),i()):(this.debug.warn("JbPro","startRecord() player is not playing"),s("not playing"))}))}stopRecordAndSave(e,t){return new Promise(((i,s)=>{this.debug.log("JbPro",`stopRecordAndSave() ${e} ${t}`),this.player&&this.player.recording?this.player.stopRecordAndSave(e,t).then((e=>{i(e)})).catch((e=>{s(e)})):s("not recording")}))}isPlaying(){let e=!1;return this.player&&(e=this.player.isPlaying()),e}isLoading(){return!!this.player&&this.player.loading}isPause(){let e=!1;return this._opt.playType===b?e=!this.isPlaying()&&!this.isLoading():this._opt.playType===_&&this.player&&(e=this.player.playbackPause),e}isPaused(){return this.isPause()}isPlaybackPause(){let e=!1;return this._opt.playType===_&&this.player&&(e=this.player.playbackPause),e}isMute(){let e=!0;return this.player&&(e=this.player.isAudioMute()),e}isRecording(){return this.player&&this.player.recorder&&this.player.recorder.recording||!1}isFullscreen(){let e=!1;return this.player&&(e=this.player.fullscreen),e}isWebFullscreen(){let e=!1;return this.player&&(e=this.player.webFullscreen),e}clearBufferDelay(){this.debug.log("JbPro","clearBufferDelay()"),this.player?this.player.clearBufferDelay():this.debug.warn("JbPro","clearBufferDelay() player is not init")}setNetworkDelayTime(e){this.debug.log("JbPro",`setNetworkDelayTime() ${e}`),(e=Number(e))<1&&this.debug.warn("JbPro",`setNetworkDelayTime() network delay is ${e} second, is too small`);const t=1e3*(e=oa(e,1,100));this._opt.networkDelay=t,this.player?this.player.updateOption({networkDelay:t},!0):this.debug.warn("JbPro","setNetworkDelayTime() player is null")}getDecodeType(){let e="";return this.player&&(e=this.player.getDecodeType()),e}getRenderType(){let e="";return this.player&&(e=this.player.getRenderType()),e}getAudioEngineType(){let e="";return this.player&&(e=this.player.getAudioEngineType()),e}getPlayingTimestamp(){let e=0;return this.player&&(e=this.player.getPlayingTimestamp()),e}getStatus(){let e=bs;return this.player&&(e=this.player.loading?gs:this.player.playing?ys:As),e}getPlayType(){return this.player?this.player._opt.playType:b}togglePerformancePanel(e){this.debug.log("JbPro",`togglePerformancePanel() ${e}`);const t=this.player._opt.showPerformance;let i=!t;Pa(e)&&(i=e),i!==t?this.player?this.player.togglePerformancePanel(i):this.debug.warn("JbPro","togglePerformancePanel() failed, this.player is not init"):this.debug.warn("JbPro",`togglePerformancePanel() failed, showPerformance is prev: ${t} === now: ${i}`)}openZoom(){this.debug.log("JbPro","openZoom()"),this.player?this.player.zooming=!0:this.debug.warn("JbPro","openZoom() failed, this.player is not init")}closeZoom(){this.debug.log("JbPro","closeZoom()"),this.player?this.player.zooming=!1:this.debug.warn("JbPro","closeZoom() failed, this.player is not init")}isZoomOpen(){let e=!1;return this.player&&(e=this.player.zooming),e}toggleZoom(e){this.debug.log("JbPro",`toggleZoom() ${e}`),Pa(e)||(e=!this.isZoomOpen()),uo(e)?this.openZoom():po(!1)&&this.closeZoom()}expandZoom(){this.debug.log("JbPro","expandZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.expandPrecision():this.debug.warn("JbPro","expandZoom() failed, zoom is not open or not init")}narrowZoom(){this.debug.log("JbPro","narrowZoom()"),this.player&&this.player.zoom&&this.player.zooming?this.player.zoom.narrowPrecision():this.debug.warn("JbPro","narrowZoom failed, zoom is not open or not init")}getCurrentZoomIndex(){let e=1;return this.player&&this.player.zoom&&(e=this.player.zoom.currentZoom),e}startTalk(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,s)=>{this.debug.log("JbPro","startTalk()",e,t),this._initTalk(t),this.talk.startTalk(e).then((()=>{i(),this.talk.once(nt.talkStreamClose,(()=>{this.debug.warn("JbPro","talk stream close"),this.stopTalk().catch((e=>{}))})),this.talk.once(nt.talkStreamError,(e=>{this.debug.warn("JbPro","talk stream error",e),this.stopTalk().catch((e=>{}))})),this.talk.once(nt.talkStreamInactive,(()=>{this.debug.warn("JbPro","talk stream inactive"),this.stopTalk().catch((e=>{}))}))})).catch((e=>{s(e)}))}))}stopTalk(){return new Promise(((e,t)=>{if(this.debug.log("JbPro","stopTalk()"),!this.talk)return t("stopTalk() talk is not init");this.talk.destroy(),e()}))}getTalkVolume(){return new Promise(((e,t)=>{if(!this.talk)return t("getTalkVolume() talk is not init");e(this.talk.volume)}))}setTalkVolume(e){return new Promise(((t,i)=>{if(this.debug.log("JbPro","setTalkVolume()",e),!this.talk)return i("setTalkVolume() talk is not init");this.talk.setVolume(e/100),t()}))}setNakedFlowFps(e){return new Promise(((t,i)=>{if(this.debug.log("JbPro","setNakedFlowFps()",e),La(e))return i("setNakedFlowFps() fps is empty");let s=Number(e);s=oa(s,1,100),this._opt.nakedFlowFps=s,this.player?this.player.updateOption({nakedFlowFps:s}):this.debug.warn("JbPro","setNakedFlowFps() player is null"),t()}))}getCrashLog(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!this.player)return;const i=this.player.getAllStatsData(),s=this.player;let r={url:this._opt.url,playType:s.isPlayback()?"playback":"live",demuxType:s.getDemuxType(),decoderType:s.getDecodeType(),renderType:s.getRenderType(),videoInfo:{encType:"",width:"",height:""},audioInfo:{encType:"",sampleRate:"",channels:""},audioEngine:s.getAudioEngineType(),allTimes:i.pTs,timestamp:aa(),type:e,error:so(t)||e};if(s.video){const e=s.video.videoInfo||{};r.videoInfo={encType:e.encType||"",width:e.width||"",height:e.height||""}}if(s.audio){const e=s.audio.audioInfo||{};r.audioInfo={encType:e.encType||"",sampleRate:e.sampleRate||"",channels:e.channels||""}}return r}updateDebugLevel(e){this.debug.log("JbPro","updateDebugLevel()",e),e===J||e===q?e!==this.player._opt.debugLevel?(this._opt.debugLevel=e,this.player?this.player.updateOption({debugLevel:e},!0):this.debug.warn("JbPro","updateDebugLevel() player is null")):this.debug.warn("JbPro",`updateDebugLevel() level is same, level: ${e}`):this.debug.warn("JbPro",`updateDebugLevel() level is not valid, level: ${e}`)}updateWatermark(e){this.debug.log("JbPro","updateWatermark()",e),this.player?this.player.updateWatermark(e):this.debug.warn("JbPro","updateWatermark() player is not init")}removeWatermark(){this.debug.log("JbPro","removeWatermark()"),this.player?this.player.removeWatermark():this.debug.warn("JbPro","removeWatermark() player is not init")}updateFullscreenWatermark(e){if(this.debug.log("JbPro","updateFullscreenWatermark()",e),Va(e)){this._opt.fullscreenWatermarkConfig=e;const t=Ma(this.$container,e);if(!t.watermark_txt)return void this.debug.warn("JbPro","fullscreenWatermarkConfig text is empty");this.watermark.load(t)}else this.debug.warn("JbPro",`updateFullscreenWatermark() config is not valid, config: ${e}`)}removeFullscreenWatermark(){this.debug.log("JbPro","removeFullscreenWatermark()"),this.watermark?this.watermark.remove():this.debug.warn("JbPro","removeFullscreenWatermark() watermark is not init")}faceDetectOpen(){this.debug.log("JbPro","faceDetectOpen()"),this.player?this.player.faceDetect(!0):this.debug.warn("JbPro","faceDetectOpen() player is not init")}faceDetectClose(){this.debug.log("JbPro","faceDetectClose()"),this.player?this.player.faceDetect(!1):this.debug.warn("JbPro","faceDetectClose() player is not init")}objectDetectOpen(){this.debug.log("JbPro","objectDetectOpen()"),this.player?this.player.objectDetect(!0):this.debug.warn("JbPro","objectDetectOpen() player is not init")}objectDetectClose(){this.debug.log("JbPro","objectDetectClose()"),this.player?this.player.objectDetect(!1):this.debug.warn("JbPro","objectDetectClose() player is not init")}sendWebsocketMessage(e){this.debug.log("JbPro","sendWebsocketMessage()",e),this.player?this.player.sendWebsocketMessage(e):this.debug.warn("JbPro","sendWebsocketMessage() player is not init")}addContentToCanvas(e){this.debug.log("JbPro","addContentToCanvas()"),this.player?this.player.addContentToCanvas(e):this.debug.warn("JbPro","addContentToCanvas() player is not init")}clearContentToCanvas(){this.debug.log("JbPro","clearContentToCanvas()"),this.player?this.player.addContentToCanvas([]):this.debug.warn("JbPro","clearContentToCanvas() player is not init")}addContentToContainer(e){this.debug.log("JbPro","addContentToContainer()"),this.player?this.player.addContentToContainer(e):this.debug.warn("JbPro","addContentToContainer() player is not init")}clearContentToContainer(){this.debug.log("JbPro","clearContentToContainer()"),this.player?this.player.addContentToContainer([]):this.debug.warn("JbPro","clearContentToContainer() player is not init")}setControlHtml(e){this.debug.log("JbPro","setControlHtml()",e),this.player?this.player.setControlHtml(e):this.debug.warn("JbPro","setControlHtml() player is not init")}clearControlHtml(){this.debug.log("JbPro","clearControlHtml()"),this.player?this.player.clearControlHtml():this.debug.warn("JbPro","clearControlHtml() player is not init")}getVideoInfo(){let e=null;return this.player&&(e=this.player.getVideoInfo()),e}getAudioInfo(){let e=null;return this.player&&(e=this.player.getAudioInfo()),e}setSm4CryptoKey(e){this.debug.log("JbPro","setSm4CryptoKey()",e),32===(e=""+e).length?(this._opt.sm4CryptoKey=e,this.player?this.player.updateOption({sm4CryptoKey:e},!0):this.debug.warn("JbPro","setSm4CryptoKey() player is null")):this.debug.warn("JbPro",`setSm4CryptoKey() key is invalid and length is ${e.length} !== 32`)}setM7sCryptoKey(e){this.debug.log("JbPro","setM7sCryptoKey()",e),e=""+e,this._opt.m7sCryptoKey=e,this.player?this.player.updateOption({m7sCryptoKey:e},!0):this.debug.warn("JbPro","setM7sCryptoKey() player is null")}setXorCryptoKey(e){this.debug.log("JbPro","setXorCryptoKey()",e),e=""+e,this._opt.xorCryptoKey=e,this.player?this.player.updateOption({xorCryptoKey:e},!0):this.debug.warn("JbPro","setXorCryptoKey() player is null")}updateLoadingText(e){this.debug.log("JbPro","updateLoadingText()",e),this.player?this.player.updateLoadingText(e):this.debug.warn("JbPro","updateLoadingText() player is null")}updateIsEmitSEI(e){this.debug.log("JbPro","updateIsEmitSEI()",e),this._opt.isEmitSEI=e,this.player?this.player.updateOption({isEmitSEI:e},!0):this.debug.warn("JbPro","updateIsEmitSEI() player is null")}getPTZCmd(e,t){if(this.debug.log("JbPro","getPTZCmd()",e),e)return this.player?Rv({type:e,index:0,speed:t}):void this.debug.warn("JbPro","getPTZCmd() player is null");this.debug.warn("JbPro","getPTZCmd() ptz is null")}downloadTempNakedFlowFile(){return new Promise(((e,t)=>{this.player?(this.player.downloadNakedFlowFile(),e()):t("player is not init")}))}downloadTempFmp4File(){return new Promise(((e,t)=>{this.player?(this.player.downloadFmp4File(),e()):t("player is not init")}))}downloadTempMpeg4File(){return new Promise(((e,t)=>{this.player?(this.player.downloadMpeg4File(),e()):t("player is not init")}))}downloadTempRtpFile(){return new Promise(((e,t)=>{this.talk?(this.talk.downloadRtpFile(),e()):t("talk is not init")}))}downloadMemoryLog(){this.memoryLogger&&this.memoryLogger.download()}_getVideoLastIframeInfo(){const e=this.getVideoInfo()||{},t={loadingBackground:this.screenshot("","png",.92,"base64"),loadingBackgroundWidth:e.width||0,loadingBackgroundHeight:e.height||0};return t.loadingBackground&&t.loadingBackgroundWidth&&t.loadingBackgroundHeight&&(this._tempVideoLastIframeInfo=t),this._tempVideoLastIframeInfo||{}}getExtendBtnList(){this.debug.log("JbPro","getExtendBtnList()");let e=[];return this.player?e=this.player.getExtendBtnList():this.debug.warn("JbPro","getExtendBtnList() player is null"),e}getFlvMetaData(){this.debug.log("JbPro","getFlvMetaData()");let e=null;return this.player?e=this.player.getMetaData():this.debug.warn("JbPro","getFlvMetaData() player is null"),e}updateAiFaceDetectInterval(e){this.debug.log("JbPro","updateAiFaceDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiFaceDetectInterval=t,this.player?this.player.updateOption({aiFaceDetectInterval:t}):this.debug.warn("JbPro","updateAiFaceDetectInterval() player is null")}updateAiFaceDetectLevel(e){if(this.debug.log("JbPro","updateAiFaceDetectLevel()",e),!or[e])return void this.debug.warn("JbPro",`'updateAiFaceDetectLevel() level ${e} is invalid'`);const t=or[e];this._opt.aiFaceDetectWidth=t,this.player?(this.player.updateOption({aiFaceDetectWidth:t}),this.player.ai&&this.player.ai.updateFaceDetectorConfig({detectWidth:t})):this.debug.warn("JbPro","updateAiFaceDetectLevel() player is null")}updateAiObjectDetectInterval(e){this.debug.log("JbPro","updateAiObjectDetectInterval()",e);const t=1e3*(e=Number(e));this._opt.aiObjectDetectInterval=t,this.player?this.player.updateOption({aiObjectDetectInterval:t}):this.debug.warn("JbPro","updateAiObjectDetectInterval() player is null")}updateAiObjectDetectLevel(e){if(this.debug.log("JbPro","updateAiObjectDetectLevel()",e),!nr[e])return void this.debug.warn("JbPro",`'updateAiObjectDetectLevel() level ${e} is invalid'`);const t=nr[e];this._opt.aiObjectDetectWidth=t,this.player?(this.player.updateOption({aiObjectDetectWidth:t}),this.player.ai&&this.player.ai.updateObjectDetectorConfig({detectWidth:t})):this.debug.warn("JbPro","updateAiObjectDetectLevel() player is null")}setCryptoKeyUrl(e){this.debug.log("JbPro","setCryptoKeyUrl()",e),e&&(this._opt.cryptoKeyUrl=e)}showErrorMessageTips(e){this.debug.log("JbPro","showErrorMessageTips()",e),e&&(this.player?this.player.showTipsMessageByContent(e):this.debug.warn("JbPro","showErrorMessageTips() player is null"))}setPtzPosition(e){this.debug.log("JbPro","setPtzPosition()",e),e&&!Ha(e)&&(this.player?this.player.setPtzPosition(e):this.debug.warn("JbPro","setPtzPosition() player is null"))}hideErrorMessageTips(){this.debug.log("JbPro","hideErrorMessageTips()"),this.player?this.player.hideTipsMessage():this.debug.warn("JbPro","hideErrorMessageTips() player is null")}getContainerRect(){return this._getContainerRect()}proxy(e,t,i,s){return this.events.proxy(e,t,i,s)}_checkIsMeaningfulRetry(e){let t=!0,i=[];if(e===Rr?i=this._websocket1006ErrorRetryLog:e===Dr?i=this._mseDecodeErrorRetryLog:e===Lr&&(i=this._wcsDecodeErrorRetryLog),this.debug.log(this.TAG_NAME,`_checkIsMeaningfulRetry() type is ${e}, and retryLog is ${i.join(",")}`),i.length>=5){const s=i[0],r=i[i.length-1],a=r-s;a<=1e4&&(this.debug.warn(this.TAG_NAME,`retry type is ${e}, and retry length is ${i.length}, and start is ${s} and end is ${r} and diff is ${a}`),t=!1)}return t}_initLoadingBackgroundForIOS(e){(ya()||Aa())&&e.loadingBackground&&e.loadingBackgroundWidth&&e.loadingBackgroundHeight&&(this.debug.log(this.TAG_NAME,"_initLoadingBackgroundForIOS"),this._initLoadingBg(),"default"===this.player._opt.aspectRatio||ua()?this._doInitLoadingBackground(e):this._doInitLoadingBackgroundForRatio(e))}_doInitLoadingBackground(e){const t=this._getContainerRect();let i=t.height;const s=this.player._opt;if(s.hasControl&&!s.controlAutoHide){i-=s.playType===_?Yt:Kt}let r=t.width,a=i;const o=s.rotate;270!==o&&90!==o||(r=i,a=t.width),this.$loadingBgImage.width=r,this.$loadingBgImage.height=a,this.$loadingBgImage.src=e.loadingBackground;let n=(t.width-r)/2,l=(i-a)/2,d="contain";s.isResize||(d="fill"),s.isFullResize&&(d="none");let h="";"none"===s.mirrorRotate&&o&&(h+=" rotate("+o+"deg)"),"level"===s.mirrorRotate?h+=" rotateY(180deg)":"vertical"===s.mirrorRotate&&(h+=" rotateX(180deg)"),this._opt.videoRenderSupportScale&&(this.$loadingBgImage.style.objectFit=d),this.$loadingBgImage.style.transform=h,this.$loadingBgImage.style.padding="0",this.$loadingBgImage.style.left=n+"px",this.$loadingBgImage.style.top=l+"px",this.$loadingBgImage.complete?Ch(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{Ch(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_doInitLoadingBackgroundForRatio(e){const t=this.player._opt.aspectRatio.split(":").map(Number),i=this._getContainerRect();let s=i.width,r=i.height;const a=this.player._opt;let o=0;a.hasControl&&!a.controlAutoHide&&(o=a.playType===_?Yt:Kt,r-=o);const n=e.loadingBackgroundWidth,l=e.loadingBackgroundHeight,d=n/l,h=t[0]/t[1];if(this.$loadingBgImage.src=e.loadingBackground,d>h){const e=h*l/n;this.$loadingBgImage.style.width=100*e+"%",this.$loadingBgImage.style.height=`calc(100% - ${o}px)`,this.$loadingBgImage.style.padding=`0 ${(s-s*e)/2}px`}else{const e=n/h/l;this.$loadingBgImage.style.width="100%",this.$loadingBgImage.style.height=`calc(${100*e}% - ${o}px)`,this.$loadingBgImage.style.padding=(r-r*e)/2+"px 0"}this.$loadingBgImage.complete?Ch(this.$loadingBg,"show"):this.$loadingBgImage.onload=()=>{Ch(this.$loadingBg,"show"),this.$loadingBgImage.onload=null}}_initLoadingBg(){if(!this.$loadingBg){const e=document.createElement("div"),t=document.createElement("img");e.className="jb-pro-loading-bg-for-ios",this.$loadingBg=e,this.$loadingBgImage=t,e.appendChild(t),this.$container.appendChild(e)}}_removeLoadingBackgroundForIOS(){if(this.$loadingBg){this.debug.log(this.TAG_NAME,"_removeLoadingBackgroundForIOS()");if(!Lh(this.$loadingBg)){const e=this.$container.querySelector(".jb-pro-loading-bg-for-ios");e&&this.$container&&this.$container.removeChild(e)}this.$loadingBg=null,this.$loadingBgImage=null}}_getContainerRect(){let e={};return this.$container&&(e=this.$container.getBoundingClientRect(),e.width=Math.max(e.width,this.$container.clientWidth),e.height=Math.max(e.height,this.$container.clientHeight)),e}_isNeedNetworkDisconnectReplay(){return this._opt.networkDisconnectReplay&&this.network.isOffline()}}return Fv.ERROR=ct,Fv.EVENTS=lt,window.JessibucaPro=Fv,window.JbPro=Fv,window.WebPlayerPro=Fv,Fv})); diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..77470cb --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: / \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..ad8aca7 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,31 @@ + + + + diff --git a/src/api/iot/alert.js b/src/api/iot/alert.js new file mode 100644 index 0000000..a776e1f --- /dev/null +++ b/src/api/iot/alert.js @@ -0,0 +1,60 @@ +import request from '@/utils/request'; + +// 查询设备告警列表 +export function listAlert(query) { + return request({ + url: '/iot/alert/list', + method: 'get', + params: query, + }); +} + +// 查询设备告警关联的场景列表 +export function getScenesByAlertId(alertId) { + return request({ + url: '/iot/alert/getScenesByAlertId/' + alertId, + method: 'get', + }); +} + +// 查询设备告警关联的通知模板 +export function listNotifyTemplate(alertId) { + return request({ + url: '/iot/alert/listNotifyTemplate/' + alertId, + method: 'get', + }); +} + +// 查询设备告警详细 +export function getAlert(alertId) { + return request({ + url: '/iot/alert/' + alertId, + method: 'get', + }); +} + +// 新增设备告警 +export function addAlert(data) { + return request({ + url: '/iot/alert', + method: 'post', + data: data, + }); +} + +// 修改设备告警 +export function updateAlert(data) { + return request({ + url: '/iot/alert', + method: 'put', + data: data, + }); +} + +// 删除设备告警 +export function delAlert(alertId) { + return request({ + url: '/iot/alert/' + alertId, + method: 'delete', + }); +} diff --git a/src/api/iot/alertLog.js b/src/api/iot/alertLog.js new file mode 100644 index 0000000..6005c81 --- /dev/null +++ b/src/api/iot/alertLog.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询设备告警列表 +export function listAlertLog(query) { + return request({ + url: '/iot/alertLog/list', + method: 'get', + params: query + }) +} + +// 查询设备告警详细 +export function getAlertLog(alertLogId) { + return request({ + url: '/iot/alertLog/' + alertLogId, + method: 'get' + }) +} + +// 新增设备告警 +export function addAlertLog(data) { + return request({ + url: '/iot/alertLog', + method: 'post', + data: data + }) +} + +// 修改设备告警 +export function updateAlertLog(data) { + return request({ + url: '/iot/alertLog', + method: 'put', + data: data + }) +} + +// 删除设备告警 +export function delAlertLog(alertLogId) { + return request({ + url: '/iot/alertLog/' + alertLogId, + method: 'delete' + }) +} diff --git a/src/api/iot/alertUser.js b/src/api/iot/alertUser.js new file mode 100644 index 0000000..4f4b9a4 --- /dev/null +++ b/src/api/iot/alertUser.js @@ -0,0 +1,36 @@ +import request from '@/utils/request'; + +// 查询用户列表 +export function alertUserList(query) { + return request({ + url: '/iot/deviceAlertUser/query', + method: 'get', + params: query, + }); +} + +// 查询告警用户列表 +export function listUser(data) { + return request({ + url: '/iot/deviceAlertUser/list', + method: 'get', + params: data, + }); +} + +// 新增告警用户 +export function addAlertUser(data) { + return request({ + url: '/iot/deviceAlertUser', + method: 'post', + data: data, + }); +} + +// 删除告警用户 +export function delAlertUser(deviceId, userId) { + return request({ + url: '/iot/deviceAlertUser?deviceId=' + deviceId + '&userId=' + userId, + method: 'delete', + }); +} diff --git a/src/api/iot/authorize.js b/src/api/iot/authorize.js new file mode 100644 index 0000000..e7f2806 --- /dev/null +++ b/src/api/iot/authorize.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询产品授权码列表 +export function listAuthorize(query) { + return request({ + url: '/iot/authorize/list', + method: 'get', + params: query + }) +} + +// 查询产品授权码详细 +export function getAuthorize(authorizeId) { + return request({ + url: '/iot/authorize/' + authorizeId, + method: 'get' + }) +} + +// 新增产品授权码 +export function addAuthorize(data) { + return request({ + url: '/iot/authorize', + method: 'post', + data: data + }) +} + +//根据数量批量新增产品授权码 +export function addProductAuthorizeByNum(data) { + return request({ + url: '/iot/authorize/addProductAuthorizeByNum', + method: 'post', + data: data + }) +} +// 修改产品授权码 +export function updateAuthorize(data) { + return request({ + url: '/iot/authorize', + method: 'put', + data: data + }) +} + +// 删除产品授权码 +export function delAuthorize(authorizeId) { + return request({ + url: '/iot/authorize/' + authorizeId, + method: 'delete' + }) +} diff --git a/src/api/iot/category.js b/src/api/iot/category.js new file mode 100644 index 0000000..09dc572 --- /dev/null +++ b/src/api/iot/category.js @@ -0,0 +1,53 @@ +import request from '@/utils/request'; + +// 查询产品分类列表 +export function listCategory(query) { + return request({ + url: '/iot/category/list', + method: 'get', + params: query, + }); +} + +// 查询产品简短分类列表 +export function listShortCategory(query) { + return request({ + url: '/iot/category/shortlist', + method: 'get', + params: query, + }); +} + +// 查询产品分类详细 +export function getCategory(categoryId) { + return request({ + url: '/iot/category/' + categoryId, + method: 'get', + }); +} + +// 新增产品分类 +export function addCategory(data) { + return request({ + url: '/iot/category', + method: 'post', + data: data, + }); +} + +// 修改产品分类 +export function updateCategory(data) { + return request({ + url: '/iot/category', + method: 'put', + data: data, + }); +} + +// 删除产品分类 +export function delCategory(categoryId) { + return request({ + url: '/iot/category/' + categoryId, + method: 'delete', + }); +} diff --git a/src/api/iot/channel.js b/src/api/iot/channel.js new file mode 100644 index 0000000..8444142 --- /dev/null +++ b/src/api/iot/channel.js @@ -0,0 +1,105 @@ +import request from '@/utils/request' + +// 查询监控设备通道信息列表 +export function listChannel(query) { + return request({ + url: '/sip/channel/list', + method: 'get', + params: query + }) +} + +// 查询监控设备通道信息详细 +export function getChannel(channelId) { + return request({ + url: '/sip/channel/' + channelId, + method: 'get' + }) +} + +// 新增监控设备通道信息 +export function addChannel(createNum, data) { + return request({ + url: '/sip/channel/' + createNum, + method: 'post', + data: data + }) +} + +// 修改监控设备通道信息 +export function updateChannel(data) { + return request({ + url: '/sip/channel', + method: 'put', + data: data + }) +} + +// 删除监控设备通道信息 +export function delChannel(channelId) { + return request({ + url: '/sip/channel/' + channelId, + method: 'delete' + }) +} + +// 开始播放 +export function startPlay(deviceId, channelId) { + return request({ + url: '/sip/player/play/' + deviceId + "/" + channelId, + method: 'get' + }) +} + +// 获取流信息 +export function getStreaminfo(deviceId, channelId) { + return request({ + url: '/sip/player/playstream/' + deviceId + "/" + channelId, + method: 'get' + }) +} + +export function playback(deviceId, channelId, query) { + return request({ + url: '/sip/player/playback/' + deviceId + "/" + channelId, + method: 'get', + params: query + }) +} + +export function closeStream(deviceId, channelId, streamId){ + return request({ + url: '/sip/player/closeStream/' + deviceId + "/" + channelId + "/" + streamId, + method: 'get' + }) +} + +export function playbackPause(deviceId, channelId, streamId) { + return request({ + url: '/sip/player/playbackPause/' + deviceId + "/" + channelId + "/" + streamId, + method: 'get' + }) +} + +export function playbackReplay(deviceId, channelId, streamId) { + return request({ + url: '/sip/player/playbackReplay/' + deviceId + "/" + channelId + "/" + streamId, + method: 'get' + }) +} + +export function playbackSeek(deviceId, channelId, streamId, query) { + return request({ + url: '/sip/player/playbackSeek/' + deviceId + "/" + channelId + "/" + streamId, + method: 'get', + params: query + }) +} + +export function playbackSpeed(deviceId, channelId, streamId, query) { + return request({ + url: '/sip/player/playbackSpeed/' + deviceId + "/" + channelId + "/" + streamId, + method: 'get', + params: query + }) +} diff --git a/src/api/iot/clientDetails.js b/src/api/iot/clientDetails.js new file mode 100644 index 0000000..33d84ec --- /dev/null +++ b/src/api/iot/clientDetails.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询云云对接列表 +export function listClientDetails(query) { + return request({ + url: '/iot/clientDetails/list', + method: 'get', + params: query + }) +} + +// 查询云云对接详细 +export function getClientDetails(clientId) { + return request({ + url: '/iot/clientDetails/' + clientId, + method: 'get' + }) +} + +// 新增云云对接 +export function addClientDetails(data) { + return request({ + url: '/iot/clientDetails', + method: 'post', + data: data + }) +} + +// 修改云云对接 +export function updateClientDetails(data) { + return request({ + url: '/iot/clientDetails', + method: 'put', + data: data + }) +} + +// 删除云云对接 +export function delClientDetails(clientId) { + return request({ + url: '/iot/clientDetails/' + clientId, + method: 'delete' + }) +} diff --git a/src/api/iot/device.js b/src/api/iot/device.js new file mode 100644 index 0000000..99c66e0 --- /dev/null +++ b/src/api/iot/device.js @@ -0,0 +1,182 @@ +import request from '@/utils/request'; + +// 查询设备列表 +export function listDevice(query) { + return request({ + url: '/iot/device/list', + method: 'get', + params: query, + }); +} + +// 查询未授权设备列表 +export function listUnAuthDevice(query) { + return request({ + url: '/iot/device/unAuthlist', + method: 'get', + params: query, + }); +} + +// 查询分组可添加设备分页列表 +export function listDeviceByGroup(query) { + return request({ + url: '/iot/device/listByGroup', + method: 'get', + params: query, + }); +} + +// 查询设备简短列表 +export function listDeviceShort(query) { + return request({ + url: '/iot/device/shortList', + method: 'get', + params: query, + }); +} + +// 查询所有设备简短列表 +export function listAllDeviceShort() { + return request({ + url: '/iot/device/all', + method: 'get', + }); +} + +// 查询设备详细 +export function getDevice(deviceId) { + return request({ + url: '/iot/device/' + deviceId, + method: 'get', + }); +} + +// 设备数据同步 +export function deviceSynchronization(serialNumber) { + return request({ + url: '/iot/device/synchronization/' + serialNumber, + method: 'get', + }); +} + +// 根据设备编号查询设备详细 +export function getDeviceBySerialNumber(serialNumber) { + return request({ + url: '/iot/device/getDeviceBySerialNumber/' + serialNumber, + method: 'get', + }); +} + +// 查询设备统计信息 +export function getDeviceStatistic() { + return request({ + url: '/iot/device/statistic', + method: 'get', + }); +} + +// 选择分配设备 +export function distributionDevice(deptId, deviceIds) { + return request({ + url: '/iot/device/assignment?deptId=' + deptId + '&deviceIds=' + deviceIds, + method: 'post', + }); +} +//回收设备 +export function recycleDevice(deviceIds) { + return request({ + url: '/iot/device/recovery?deviceIds=' + deviceIds, + method: 'post', + }); +} +//查询设备导入记录 +export function listImportRecord() { + return request({ + url: '', + method: 'get', + }); +} +//查询设备回收记录 +export function listRecycleRecord() { + return request({ + url: '', + method: 'get', + }); +} +//查询设备分配记录 +export function listAllotRecord() { + return request({ + url: '', + method: 'get', + }); +} + +// 查询设备运行状态详细 +export function getDeviceRunningStatus(params) { + return request({ + url: '/iot/device/runningStatus', + method: 'get', + params: params, + }); +} + +// 查询设备物模型的值 +export function getDeviceThingsModelValue(deviceId) { + return request({ + url: '/iot/device/thingsModelValue/' + deviceId, + method: 'get', + }); +} + +// 新增设备 +export function addDevice(data) { + return request({ + url: '/iot/device', + method: 'post', + data: data, + }); +} + +// 修改设备 +export function updateDevice(data) { + return request({ + url: '/iot/device', + method: 'put', + data: data, + }); +} + +// 删除设备 +export function delDevice(deviceId) { + return request({ + url: '/iot/device/' + deviceId, + method: 'delete', + }); +} + +// 生成设备编号 +export function generatorDeviceNum(params) { + return request({ + url: '/iot/device/generator', + method: 'get', + params: params, + }); +} + +export function getGwDevCode(params) { + return request({ + url: '/iot/device/gwDevCount', + method: 'get', + params: params, + }); +} + +//mqtt连接参数查看 +export function getMqttConnect(params) { + return request({ + url: '/iot/device/getMqttConnectData', + method: 'get', + params: params, + }); +} diff --git a/src/api/iot/deviceJob.js b/src/api/iot/deviceJob.js new file mode 100644 index 0000000..26167fa --- /dev/null +++ b/src/api/iot/deviceJob.js @@ -0,0 +1,71 @@ +import request from '@/utils/request' + +// 查询定时任务调度列表 +export function listJob(query) { + return request({ + url: '/iot/job/list', + method: 'get', + params: query + }) +} + +// 查询定时任务调度详细 +export function getJob(jobId) { + return request({ + url: '/iot/job/' + jobId, + method: 'get' + }) +} + +// 新增定时任务调度 +export function addJob(data) { + return request({ + url: '/iot/job', + method: 'post', + data: data + }) +} + +// 修改定时任务调度 +export function updateJob(data) { + return request({ + url: '/iot/job', + method: 'put', + data: data + }) +} + +// 删除定时任务调度 +export function delJob(jobId) { + return request({ + url: '/iot/job/' + jobId, + method: 'delete' + }) +} + +// 任务状态修改 +export function changeJobStatus(jobId, status) { + const data = { + jobId, + status + } + return request({ + url: '/iot/job/changeStatus', + method: 'put', + data: data + }) +} + + +// 定时任务立即执行一次 +export function runJob(jobId, jobGroup) { + const data = { + jobId, + jobGroup + } + return request({ + url: '/iot/job/run', + method: 'put', + data: data + }) +} \ No newline at end of file diff --git a/src/api/iot/deviceLog.js b/src/api/iot/deviceLog.js new file mode 100644 index 0000000..c78e90b --- /dev/null +++ b/src/api/iot/deviceLog.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 查询设备日志列表 +export function listDeviceLog(query) { + return request({ + url: '/iot/deviceLog/list', + method: 'get', + params: query + }) +} + +// 查询设备监测数据 +export function listMonitor(query) { + return request({ + url: '/iot/deviceLog/monitor', + method: 'get', + params: query + }) +} + +// 查询设备监测数据 +export function listHistory(query) { + return request({ + url: '/iot/deviceLog/history', + method: 'get', + params: query + }) +} + +// 查询设备日志详细 +export function getDeviceLog(logId) { + return request({ + url: '/iot/deviceLog/' + logId, + method: 'get' + }) +} + +// 新增设备日志 +export function addDeviceLog(data) { + return request({ + url: '/iot/deviceLog', + method: 'post', + data: data + }) +} + +// 修改设备日志 +export function updateDeviceLog(data) { + return request({ + url: '/iot/deviceLog', + method: 'put', + data: data + }) +} + +// 删除设备日志 +export function delDeviceLog(logId) { + return request({ + url: '/iot/deviceLog/' + logId, + method: 'delete' + }) +} diff --git a/src/api/iot/deviceuser.js b/src/api/iot/deviceuser.js new file mode 100644 index 0000000..5ea2b9b --- /dev/null +++ b/src/api/iot/deviceuser.js @@ -0,0 +1,63 @@ +import request from '@/utils/request'; + +// 查询设备用户列表 +export function listDeviceUser(query) { + return request({ + url: '/iot/deviceUser/list', + method: 'get', + params: query, + }); +} + +// 查询设备用户详细 +export function getDeviceUser(deviceId, userId) { + return request({ + url: '/iot/share/detail?deviceId=' + deviceId + '&userId=' + userId, + method: 'get', + }); +} + +// 查询用户 +export function shareUser(query) { + return request({ + url: '/iot/deviceUser/shareUser', + method: 'get', + params: query, + }); +} + +// 新增设备用户 +export function addDeviceUser(data) { + return request({ + url: '/iot/deviceUser', + method: 'post', + data: data, + }); +} + +// 新增多个设备用户 +export function addDeviceUsers(data) { + return request({ + url: '/iot/deviceUser/addDeviceUsers', + method: 'post', + data: data, + }); +} + +// 修改设备用户 +export function updateDeviceUser(data) { + return request({ + url: '/iot/deviceUser', + method: 'put', + data: data, + }); +} + +// 删除设备用户 +export function delDeviceUser(device) { + return request({ + url: '/iot/deviceUser', + method: 'delete', + data: device, + }); +} diff --git a/src/api/iot/eventLog.js b/src/api/iot/eventLog.js new file mode 100644 index 0000000..8485d33 --- /dev/null +++ b/src/api/iot/eventLog.js @@ -0,0 +1,45 @@ +import request from '@/utils/request' + + +// 查询事件日志列表 +export function listEventLog(query) { + return request({ + url: '/iot/event/list', + method: 'get', + params: query + }) +} + +// 查询事件日志详细 +export function getEventLog(logId) { + return request({ + url: '/iot/event/' + logId, + method: 'get' + }) +} + +// 新增事件日志 +export function addEventLog(data) { + return request({ + url: '/iot/event', + method: 'post', + data: data + }) +} + +// 修改事件日志 +export function updateEventLog(data) { + return request({ + url: '/iot/event', + method: 'put', + data: data + }) +} + +// 删除事件日志 +export function delLog(logId) { + return request({ + url: '/iot/event/' + logId, + method: 'delete' + }) +} diff --git a/src/api/iot/firmware.js b/src/api/iot/firmware.js new file mode 100644 index 0000000..2b8f077 --- /dev/null +++ b/src/api/iot/firmware.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 查询产品固件列表 +export function listFirmware(query) { + return request({ + url: '/iot/firmware/list', + method: 'get', + params: query + }) +} + +// 查询待升级固件版本列表 +export function upGradeVersionList(query) { + return request({ + url: '/iot/firmware/upGradeVersionList', + method: 'get', + params: query + }) +} + +// 查询设备最新固件 +export function getLatestFirmware(deviceId) { + return request({ + url: '/iot/firmware/getLatest/' + deviceId, + method: 'get' + }) +} + +// 查询产品固件详细 +export function getFirmware(firmwareId) { + return request({ + url: '/iot/firmware/' + firmwareId, + method: 'get' + }) +} + +// 新增产品固件 +export function addFirmware(data) { + return request({ + url: '/iot/firmware', + method: 'post', + data: data + }) +} + +// 修改产品固件 +export function updateFirmware(data) { + return request({ + url: '/iot/firmware', + method: 'put', + data: data + }) +} + +// 删除产品固件 +export function delFirmware(firmwareId) { + return request({ + url: '/iot/firmware/' + firmwareId, + method: 'delete' + }) +} diff --git a/src/api/iot/firmwareTask.js b/src/api/iot/firmwareTask.js new file mode 100644 index 0000000..e822aa1 --- /dev/null +++ b/src/api/iot/firmwareTask.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +// 查询固件升级任务列表 +export function listTask(query) { + return request({ + url: '/iot/firmware/task/list', + method: 'get', + params: query + }) +} + +// 查询固件升级任务详细 +export function getTask(id) { + return request({ + url: '/iot/firmware/task/' + id, + method: 'get' + }) +} + +// 新增固件升级任务 +export function addTask(data) { + return request({ + url: '/iot/firmware/task', + method: 'post', + data: data + }) +} + +// 修改固件升级任务 +export function updateTask(data) { + return request({ + url: '/iot/firmware/task', + method: 'put', + data: data + }) +} + +// 删除固件升级任务 +export function delTask(id) { + return request({ + url: '/iot/firmware/task/' + id, + method: 'delete' + }) +} + +// 根据固件id查询下属设备列表 +export function deviceList(query) { + return request({ + url: '/iot/firmware/task/deviceList', + method: 'get', + params: query + }) +} + +// 固件升级设备统计 +// 0:等待升级 1:已发送设备 2:设备收到 ===> 正在升级 +// 3:升级成功 ===> 升级成功 +// 4:升级失败 5:停止 ===> 升级失败 +export function deviceStatistic(query) { + return request({ + url: '/iot/firmware/task/deviceStatistic', + method: 'get', + params: query + }) +} diff --git a/src/api/iot/functionLog.js b/src/api/iot/functionLog.js new file mode 100644 index 0000000..e283abd --- /dev/null +++ b/src/api/iot/functionLog.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询设备服务下发日志列表 +export function listLog(query) { + return request({ + url: '/iot/log/list', + method: 'get', + params: query + }) +} + +// 查询设备服务下发日志详细 +export function getLog(id) { + return request({ + url: '/iot/log/' + id, + method: 'get' + }) +} + +// 新增设备服务下发日志 +export function addLog(data) { + return request({ + url: '/iot/log', + method: 'post', + data: data + }) +} + +// 修改设备服务下发日志 +export function updateLog(data) { + return request({ + url: '/iot/log', + method: 'put', + data: data + }) +} + +// 删除设备服务下发日志 +export function delLog(id) { + return request({ + url: '/iot/log/' + id, + method: 'delete' + }) +} diff --git a/src/api/iot/group.js b/src/api/iot/group.js new file mode 100644 index 0000000..4ca9b35 --- /dev/null +++ b/src/api/iot/group.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' + +// 查询设备分组列表 +export function listGroup(query) { + return request({ + url: '/iot/group/list', + method: 'get', + params: query + }) +} + +// 查询设备分组详细 +export function getGroup(groupId) { + return request({ + url: '/iot/group/' + groupId, + method: 'get' + }) +} + +// 查询分组下的关联设备ID数组 +export function getDeviceIds(groupId) { + return request({ + url: '/iot/group/getDeviceIds/' + groupId, + method: 'get' + }) +} + +// 新增设备分组 +export function addGroup(data) { + return request({ + url: '/iot/group', + method: 'post', + data: data + }) +} + +// 修改设备分组 +export function updateGroup(data) { + return request({ + url: '/iot/group', + method: 'put', + data: data + }) +} + +// 更新分组下的设备 +export function updateDeviceGroups(data) { + return request({ + url: '/iot/group/updateDeviceGroups', + method: 'put', + data: data + }) +} + +// 删除设备分组 +export function delGroup(groupId) { + return request({ + url: '/iot/group/' + groupId, + method: 'delete' + }) +} diff --git a/src/api/iot/log.js b/src/api/iot/log.js new file mode 100644 index 0000000..07559da --- /dev/null +++ b/src/api/iot/log.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询设备日志列表 +export function listLog(query) { + return request({ + url: '/iot/log/list', + method: 'get', + params: query + }) +} + +// 查询设备日志详细 +export function getLog(deviceLogId) { + return request({ + url: '/iot/log/' + deviceLogId, + method: 'get' + }) +} + +// 新增设备日志 +export function addLog(data) { + return request({ + url: '/iot/log', + method: 'post', + data: data + }) +} + +// 修改设备日志 +export function updateLog(data) { + return request({ + url: '/iot/log', + method: 'put', + data: data + }) +} + +// 删除设备日志 +export function delLog(deviceLogId) { + return request({ + url: '/iot/log/' + deviceLogId, + method: 'delete' + }) +} diff --git a/src/api/iot/mediaServer.js b/src/api/iot/mediaServer.js new file mode 100644 index 0000000..0632edd --- /dev/null +++ b/src/api/iot/mediaServer.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询流媒体服务器配置列表 +export function listmediaServer(query) { + return request({ + url: '/sip/mediaserver/list', + method: 'get', + params: query + }) +} + +// 查询流媒体服务器配置详细 +export function getmediaServer() { + return request({ + url: '/sip/mediaserver/', + method: 'get' + }) +} + +// 新增流媒体服务器配置 +export function addmediaServer(data) { + return request({ + url: '/sip/mediaserver', + method: 'post', + data: data + }) +} + +// 修改流媒体服务器配置 +export function updatemediaServer(data) { + return request({ + url: '/sip/mediaserver', + method: 'put', + data: data + }) +} + +// 删除流媒体服务器配置 +export function delmediaServer(id) { + return request({ + url: '/sip/mediaserver/' + id, + method: 'delete' + }) +} + +export function checkmediaServer(query) { + return request({ + url: '/sip/mediaserver/check' , + method: 'get', + params: query + }) +} diff --git a/src/api/iot/model.js b/src/api/iot/model.js new file mode 100644 index 0000000..ebc7902 --- /dev/null +++ b/src/api/iot/model.js @@ -0,0 +1,78 @@ +import request from '@/utils/request'; + +// 查询物模型列表 +export function listModel(query) { + return request({ + url: '/iot/model/list', + method: 'get', + params: query, + }); +} + +// 查询物模型详细 +export function getModel(modelId) { + return request({ + url: '/iot/model/' + modelId, + method: 'get', + }); +} + +// 查询物模型对应分享设备用户权限列表 +export function permListModel(productId) { + return request({ + url: '/iot/model/permList/' + productId, + method: 'get', + }); +} + +// 新增物模型 +export function addModel(data) { + return request({ + url: '/iot/model', + method: 'post', + data: data, + }); +} + +// 导入通用物模型 +export function importModel(data) { + return request({ + url: '/iot/model/import', + method: 'post', + data: data, + }); +} + +// 修改物模型 +export function updateModel(data) { + return request({ + url: '/iot/model', + method: 'put', + data: data, + }); +} + +// 删除物模型 +export function delModel(modelId) { + return request({ + url: '/iot/model/' + modelId, + method: 'delete', + }); +} + +// 根据产品ID获取缓存的物模型 +export function cacheJsonThingsModel(productId) { + return request({ + url: '/iot/model/cache/' + productId, + method: 'get', + }); +} + +// 同步采集点模板到产品物模型 +export function synchron(data) { + return request({ + url: '/iot/model/synchron', + method: 'post', + data: data, + }); +} diff --git a/src/api/iot/netty.js b/src/api/iot/netty.js new file mode 100644 index 0000000..5c1eb93 --- /dev/null +++ b/src/api/iot/netty.js @@ -0,0 +1,36 @@ +import request from '@/utils/request' + +// 集群下所有客户端列表 +export function listNettyMqttClient(query) { + return request({ + url: '/iot/mqtt/clients', + method: 'get', + params: query + }) +} + +export function clientOut(query) { + return request({ + url: '/iot/mqtt/client/out', + method: 'get', + params: query + }) +} + + +export function getNettyMqttStats() { + return request({ + url: '/bashBoard/stats', + method: 'get', + }) +} + + +export function statisticNettyMqtt(query) { + return request({ + url: '/bashBoard/metrics', + method: 'get', + params: query + }) +} + diff --git a/src/api/iot/news.js b/src/api/iot/news.js new file mode 100644 index 0000000..a89013c --- /dev/null +++ b/src/api/iot/news.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询新闻资讯列表 +export function listNews(query) { + return request({ + url: '/iot/news/list', + method: 'get', + params: query + }) +} + +// 查询新闻资讯详细 +export function getNews(newsId) { + return request({ + url: '/iot/news/' + newsId, + method: 'get' + }) +} + +// 新增新闻资讯 +export function addNews(data) { + return request({ + url: '/iot/news', + method: 'post', + data: data + }) +} + +// 修改新闻资讯 +export function updateNews(data) { + return request({ + url: '/iot/news', + method: 'put', + data: data + }) +} + +// 删除新闻资讯 +export function delNews(newsId) { + return request({ + url: '/iot/news/' + newsId, + method: 'delete' + }) +} diff --git a/src/api/iot/newsCategory.js b/src/api/iot/newsCategory.js new file mode 100644 index 0000000..988b044 --- /dev/null +++ b/src/api/iot/newsCategory.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询新闻分类列表 +export function listNewsCategory(query) { + return request({ + url: '/iot/newsCategory/list', + method: 'get', + params: query + }) +} + +// 查询产品简短分类列表 +export function listShortNewsCategory() { + return request({ + url: '/iot/newsCategory/newsCategoryShortList', + method: 'get', + }) +} + +// 查询新闻分类详细 +export function getNewsCategory(categoryId) { + return request({ + url: '/iot/newsCategory/' + categoryId, + method: 'get' + }) +} + +// 新增新闻分类 +export function addNewsCategory(data) { + return request({ + url: '/iot/newsCategory', + method: 'post', + data: data + }) +} + +// 修改新闻分类 +export function updateNewsCategory(data) { + return request({ + url: '/iot/newsCategory', + method: 'put', + data: data + }) +} + +// 删除新闻分类 +export function delNewsCategory(categoryId) { + return request({ + url: '/iot/newsCategory/' + categoryId, + method: 'delete' + }) +} diff --git a/src/api/iot/platform.js b/src/api/iot/platform.js new file mode 100644 index 0000000..834c3da --- /dev/null +++ b/src/api/iot/platform.js @@ -0,0 +1,68 @@ +import request from '@/utils/request' + +// 查询第三方登录平台控制列表 +export function listPlatform(query) { + return request({ + url: '/iot/platform/list', + method: 'get', + params: query + }) +} + +// 查询第三方登录平台控制详细 +export function getPlatform(socialPlatformId) { + return request({ + url: '/iot/platform/' + socialPlatformId, + method: 'get' + }) +} + +// 新增第三方登录平台控制 +export function addPlatform(data) { + return request({ + url: '/iot/platform', + method: 'post', + data: data + }) +} + +// 修改第三方登录平台控制 +export function updatePlatform(data) { + return request({ + url: '/iot/platform', + method: 'put', + data: data + }) +} + +// 删除第三方登录平台控制 +export function delPlatform(socialPlatformId) { + return request({ + url: '/iot/platform/' + socialPlatformId, + method: 'delete' + }) +} + +//解除绑定 +export function unbind(socialUserId){ + return request({ + url: '/iot/social/unbind/' + socialUserId, + method: 'get' + }) +} + +//绑定跳转 +export function bind(platform){ + return request({ + url: '/iot/social/bind/' + platform, + method: 'get' + }) +} + +//绑定 +export function bindUser(bindId){ + return request({ + url: '/iot/social/bindId/' + bindId, + method: 'get' + }) +} diff --git a/src/api/iot/point.js b/src/api/iot/point.js new file mode 100644 index 0000000..6a453f1 --- /dev/null +++ b/src/api/iot/point.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 查询变量模板从机采集点列表 +export function listPoint(query) { + return request({ + url: '/iot/point/list', + method: 'get', + params: query + }) +} + +// 查询变量模板从机采集点详细 +export function getPoint(id) { + return request({ + url: '/iot/point/' + id, + method: 'get' + }) +} + +// 新增变量模板从机采集点 +export function addPoint(data) { + return request({ + url: '/iot/point', + method: 'post', + data: data + }) +} + +// 修改变量模板从机采集点 +export function updatePoint(data) { + return request({ + url: '/iot/point', + method: 'put', + data: data + }) +} + +// 删除变量模板从机采集点 +export function delPoint(id) { + return request({ + url: '/iot/point/' + id, + method: 'delete' + }) +} + +//根据从机id删除采集点数据 +export function delBySlaveId(data){ + return request({ + url: '/iot/point/delBySlaveId', + method: 'delete', + data: data, + + }) +} +//.. +export function selectByTemp(query){ + return request({ + url: '/iot/point/getPoints', + method: 'get', + params: query + }) +} diff --git a/src/api/iot/product.js b/src/api/iot/product.js new file mode 100644 index 0000000..c0e2cd4 --- /dev/null +++ b/src/api/iot/product.js @@ -0,0 +1,87 @@ +import request from '@/utils/request'; + +// 查询产品列表 +export function listProduct(query) { + return request({ + url: '/iot/product/list', + method: 'get', + params: query, + }); +} + +// 查询产品列表 +export function listShortProduct() { + return request({ + url: '/iot/product/shortList', + method: 'get', + }); +} + +// 查询产品详细 +export function getProduct(productId) { + return request({ + url: '/iot/product/' + productId, + method: 'get', + }); +} + +// 新增产品 +export function addProduct(data) { + return request({ + url: '/iot/product', + method: 'post', + data: data, + }); +} + +// 修改产品 +export function updateProduct(data) { + return request({ + url: '/iot/product', + method: 'put', + data: data, + }); +} + +// 获取产品下设备的数量 +export function deviceCount(productId) { + return request({ + url: '/iot/product/deviceCount/' + productId, + method: 'get', + }); +} + +// 更新产品状态 +export function changeProductStatus(data) { + return request({ + url: '/iot/product/status/', + method: 'put', + data: data, + }); +} + +// 删除产品 +export function delProduct(productId) { + return request({ + url: '/iot/product/' + productId, + method: 'delete', + }); +} + +// 根据采集点模板id查询所有产品 +export function selectByTempleId(params) { + return request({ + url: '/iot/product/queryByTemplateId', + method: 'get', + params: params, + }); +} + +// 一键复制产品 +export function copyProduct(productId) { + return request({ + url: `/iot/product/copy/${productId}`, + method: 'post', + data: { productId }, + }); +} diff --git a/src/api/iot/protocol.js b/src/api/iot/protocol.js new file mode 100644 index 0000000..551ec45 --- /dev/null +++ b/src/api/iot/protocol.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询协议列表 +export function listProtocol(query) { + return request({ + url: '/iot/protocol/list', + method: 'get', + params: query + }) +} + +// 查询协议详细 +export function getProtocol(id) { + return request({ + url: '/iot/protocol/' + id, + method: 'get' + }) +} + +// 新增协议 +export function addProtocol(data) { + return request({ + url: '/iot/protocol', + method: 'post', + data: data + }) +} + +// 修改协议 +export function updateProtocol(data) { + return request({ + url: '/iot/protocol', + method: 'put', + data: data + }) +} + +// 删除协议 +export function delProtocol(id) { + return request({ + url: '/iot/protocol/' + id, + method: 'delete' + }) +} diff --git a/src/api/iot/record.js b/src/api/iot/record.js new file mode 100644 index 0000000..2391ab6 --- /dev/null +++ b/src/api/iot/record.js @@ -0,0 +1,88 @@ +import request from '@/utils/request' + +export function getDevRecord(deviceId,channelId,query) { + return request({ + url: '/sip/record/devquery/' + deviceId + "/" + channelId, + method: 'get', + params: query + }) +} + +export function getRecord(channelId,sn) { + return request({ + url: '/sip/record/query/' + channelId + "/" + sn, + method: 'get', + }) +} + +export function getServerRecord(query) { + return request({ + url: '/sip/record/serverRecord/list', + method: 'get', + params: query + }) +} + +export function getServerRecordByDate(query) { + return request({ + url: '/sip/record/serverRecord/date/list', + method: 'get', + params: query + }) +} + +export function getServerRecordByStream(query) { + return request({ + url: '/sip/record/serverRecord/stream/list', + method: 'get', + params: query + }) +} + +export function getServerRecordByApp(query) { + return request({ + url: '/sip/record/serverRecord/app/list', + method: 'get', + params: query + }) +} + +export function getServerRecordByFile(query) { + return request({ + url: '/sip/record/serverRecord/file/list', + method: 'get', + params: query + }) +} + +export function getServerRecordByDevice(query) { + return request({ + url: '/sip/record/serverRecord/device/list', + method: 'get', + params: query + }) +} + +export function startPlayRecord(deviceId, channelId) { + return request({ + url: '/sip/record/play/' + deviceId + "/" + channelId, + method: 'get' + }) +} + +export function startDownloadRecord(deviceId, channelId, query) { + return request({ + url: '/sip/record/download/' + deviceId + "/" + channelId, + method: 'get', + params: query + }) +} + + +export function uploadRecord(query) { + return request({ + url: '/sip/record/upload', + method: 'get', + params: query + }) +} diff --git a/src/api/iot/runstatus.js b/src/api/iot/runstatus.js new file mode 100644 index 0000000..069f28e --- /dev/null +++ b/src/api/iot/runstatus.js @@ -0,0 +1,57 @@ +import request from '@/utils/request' + +//查询设备实时数据 +export function runStatus(params) { + return request({ + url: '/iot/runtime/runState', + method: 'get', + params: params, + }) +} + + +//查询设备实时数据 +export function serviceInvoke(data) { + return request({ + url: '/iot/runtime/service/invoke', + method: 'post', + data: data, + }) +} + +//查询设备服务下发日志 +export function funcLog(params) { + return request({ + url: '/iot/runtime/funcLog', + method: 'get', + params: params, + }) +} + +// ---------- 2024.07.03 新增接口 ---------- +// 获取事件模型列表数据 +export function eventModel(productId) { + return request({ + url: `/iot/model/event/model/${productId}`, + method: 'get', + }) +} + +// 获取事件列式数据 +export function eventColumnList(params) { + return request({ + url: '/iot/event/column/list', + method: 'get', + params: params, + }) +} + +// 查询设备单个模型历史数据 +export function eventHistoryModel(params) { + // beginTime: 开始时间, endTime: 结束时间, modelCode: 模型code, serialNumber:设备编号 + return request({ + url: `/iot/deviceLog/history/model`, + method: 'get', + params: params, + }) +} \ No newline at end of file diff --git a/src/api/iot/salve.js b/src/api/iot/salve.js new file mode 100644 index 0000000..ccb6260 --- /dev/null +++ b/src/api/iot/salve.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询变量模板设备从机列表 +export function listSalve(query) { + return request({ + url: '/iot/salve/list', + method: 'get', + params: query + }) +} + +// 查询变量模板设备从机详细 +export function getSalve(id) { + return request({ + url: '/iot/salve/' + id, + method: 'get' + }) +} + +// 新增变量模板设备从机 +export function addSalve(data) { + return request({ + url: '/iot/salve', + method: 'post', + data: data + }) +} + +// 修改变量模板设备从机 +export function updateSalve(data) { + return request({ + url: '/iot/salve', + method: 'put', + data: data + }) +} + +// 删除变量模板设备从机 +export function delSalve(id) { + return request({ + url: '/iot/salve/' + id, + method: 'delete' + }) +} + +//根据产品id查询从机列表 +export function listByPid(params){ + return request({ + url: "/iot/salve/listByPId", + method: 'get', + params: params, + }) +} diff --git a/src/api/iot/scene.js b/src/api/iot/scene.js new file mode 100644 index 0000000..fdcdb9c --- /dev/null +++ b/src/api/iot/scene.js @@ -0,0 +1,53 @@ +import request from '@/utils/request'; + +// 查询场景联动列表 +export function listScene(query) { + return request({ + url: '/iot/scene/list', + method: 'get', + params: query, + }); +} + +// 查询场景联动详细 +export function getScene(sceneId) { + return request({ + url: '/iot/scene/' + sceneId, + method: 'get', + }); +} + +// 新增场景联动 +export function addScene(data) { + return request({ + url: '/iot/scene', + method: 'post', + data: data, + }); +} + +// 修改场景联动 +export function updateScene(data) { + return request({ + url: '/iot/scene', + method: 'put', + data: data, + }); +} + +// 删除场景联动 +export function delScene(sceneId) { + return request({ + url: '/iot/scene/' + sceneId, + method: 'delete', + }); +} + +// 执行场景 +export function runScene(query) { + return request({ + url: '/iot/runtime/runScene', + method: 'post', + params: query, + }); +} diff --git a/src/api/iot/script.js b/src/api/iot/script.js new file mode 100644 index 0000000..a39bf45 --- /dev/null +++ b/src/api/iot/script.js @@ -0,0 +1,53 @@ +import request from '@/utils/request'; + +// 查询规则引擎脚本列表 +export function listScript(query) { + return request({ + url: '/iot/script/list', + method: 'get', + params: query, + }); +} + +// 查询规则引擎脚本详细 +export function getScript(scriptId) { + return request({ + url: '/iot/script/' + scriptId, + method: 'get', + }); +} + +// 新增规则引擎脚本 +export function addScript(data) { + return request({ + url: '/iot/script', + method: 'post', + data: data, + }); +} + +// 修改规则引擎脚本 +export function updateScript(data) { + return request({ + url: '/iot/script', + method: 'put', + data: data, + }); +} + +// 删除规则引擎脚本 +export function delScript(scriptId) { + return request({ + url: '/iot/script/' + scriptId, + method: 'delete', + }); +} + +// 验证规则脚本 +export function validateScript(scriptData) { + return request({ + url: '/iot/script/validate', + method: 'post', + data: scriptData, + }); +} diff --git a/src/api/iot/share.js b/src/api/iot/share.js new file mode 100644 index 0000000..801ea8d --- /dev/null +++ b/src/api/iot/share.js @@ -0,0 +1,54 @@ +import request from '@/utils/request'; + +// 查询设备分享列表 +export function listShare(query) { + return request({ + url: '/iot/share/list', + method: 'get', + params: query, + }); +} + +// 查询用户 +export function shareUser(query) { + return request({ + url: '/iot/share/shareUser', + method: 'get', + params: query, + }); +} + +// 查询设备分享详细 +export function getShare(deviceId, userId) { + return request({ + url: '/iot/share/detail?deviceId=' + deviceId + '&userId=' + userId, + method: 'get', + }); +} + +// 新增设备分享 +export function addShare(data) { + return request({ + url: '/iot/share', + method: 'post', + data: data, + }); +} + +// 修改设备分享 +export function updateShare(data) { + return request({ + url: '/iot/share', + method: 'put', + data: data, + }); +} + +// 删除设备分享 +export function delShare(data) { + return request({ + url: '/iot/share', + method: 'delete', + data: data, + }); +} diff --git a/src/api/iot/simulate.js b/src/api/iot/simulate.js new file mode 100644 index 0000000..331525d --- /dev/null +++ b/src/api/iot/simulate.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +// 查询模拟设备日志列表 +export function listSimulateLog(query) { + return request({ + url: '/iot/simulate/list', + method: 'get', + params: query + }) +} diff --git a/src/api/iot/sipConfig.js b/src/api/iot/sipConfig.js new file mode 100644 index 0000000..418d7dd --- /dev/null +++ b/src/api/iot/sipConfig.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +// 查询sip系统配置详细 +export function getSipconfig(productId,isDefault) { + return request({ + url: '/sip/sipconfig/' + productId+'/'+isDefault, + method: 'get' + }) +} + +// 新增sip系统配置 +export function addSipconfig(data) { + return request({ + url: '/sip/sipconfig', + method: 'post', + data: data + }) +} + +// 修改sip系统配置 +export function updateSipconfig(data) { + return request({ + url: '/sip/sipconfig', + method: 'put', + data: data + }) +} + +export function delSipconfigByProductId(productId) { + return request({ + url: '/sip/sipconfig/product/' + productId, + method: 'delete' + }) +} diff --git a/src/api/iot/sipdevice.js b/src/api/iot/sipdevice.js new file mode 100644 index 0000000..fd95ef6 --- /dev/null +++ b/src/api/iot/sipdevice.js @@ -0,0 +1,74 @@ +import request from '@/utils/request' + +// 查询监控设备列表 +export function listSipDevice(query) { + return request({ + url: '/sip/device/list', + method: 'get', + params: query + }) +} + +export function listSipDeviceChannel(deviceId) { + return request({ + url: '/sip/device/listchannel/'+ deviceId, + method: 'get' + }) +} + +// 查询监控设备详细 +export function getSipDevice(deviceId) { + return request({ + url: '/sip/device/' + deviceId, + method: 'get' + }) +} + +// 新增监控设备 +export function addSipDevice(data) { + return request({ + url: '/sip/device', + method: 'post', + data: data + }) +} + +// 修改监控设备 +export function updateSipDevice(data) { + return request({ + url: '/sip/device', + method: 'put', + data: data + }) +} + +// 删除监控设备 +export function delSipDevice(deviceId) { + return request({ + url: '/sip/device/' + deviceId, + method: 'delete' + }) +} + +export function delSipDeviceBySipId(sipId) { + return request({ + url: '/sip/device/sipid/' + sipId, + method: 'delete' + }) +} + +export function ptzdirection(deviceId,channelId,data) { + return request({ + url: '/sip/ptz/direction/'+ deviceId + "/" + channelId, + method: 'post', + data: data + }) +} + +export function ptzscale(deviceId,channelId,data) { + return request({ + url: '/sip/ptz/scale/'+ deviceId + "/" + channelId, + method: 'post', + data: data + }) +} diff --git a/src/api/iot/task.js b/src/api/iot/task.js new file mode 100644 index 0000000..5478437 --- /dev/null +++ b/src/api/iot/task.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询数据补传任务列表 +export function listTask(query) { + return request({ + url: '/iot/task/list', + method: 'get', + params: query + }) +} + +// 查询数据补传任务详细 +export function getTask(id) { + return request({ + url: '/iot/task/' + id, + method: 'get' + }) +} + +// 新增数据补传任务 +export function addTask(data) { + return request({ + url: '/iot/task', + method: 'post', + data: data + }) +} + +// 修改数据补传任务 +export function updateTask(data) { + return request({ + url: '/iot/task', + method: 'put', + data: data + }) +} + +// 删除数据补传任务 +export function delTask(id) { + return request({ + url: '/iot/task/' + id, + method: 'delete' + }) +} diff --git a/src/api/iot/temp.js b/src/api/iot/temp.js new file mode 100644 index 0000000..98dcf02 --- /dev/null +++ b/src/api/iot/temp.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 查询设备采集变量模板列表 +export function listTemp(query) { + return request({ + url: '/iot/temp/list', + method: 'get', + params: query + }) +} + +// 查询设备采集变量模板详细 +export function getTemp(templateId) { + return request({ + url: '/iot/temp/' + templateId, + method: 'get' + }) +} + +// 新增设备采集变量模板 +export function addTemp(data) { + return request({ + url: '/iot/temp', + method: 'post', + data: data + }) +} + +// 修改设备采集变量模板 +export function updateTemp(data) { + return request({ + url: '/iot/temp', + method: 'put', + data: data + }) +} + +// 删除设备采集变量模板 +export function delTemp(templateId) { + return request({ + url: '/iot/temp/' + templateId, + method: 'delete' + }) +} + + +//根据产品查询采集点关联 +export function getDeviceTemp(params){ + return request({ + url: '/iot/temp/getTemp' , + method: 'get', + params: params, + }) +} + +export function getTempByPId(params){ + return request({ + url: '/iot/temp/getTempByPid', + method: 'get', + params: params, + }) +} diff --git a/src/api/iot/template.js b/src/api/iot/template.js new file mode 100644 index 0000000..fe13a97 --- /dev/null +++ b/src/api/iot/template.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询通用物模型列表 +export function listTemplate(query) { + return request({ + url: '/iot/template/list', + method: 'get', + params: query + }) +} + +// 查询通用物模型详细 +export function getTemplate(templateId) { + return request({ + url: '/iot/template/' + templateId, + method: 'get' + }) +} + +// 新增通用物模型 +export function addTemplate(data) { + return request({ + url: '/iot/template', + method: 'post', + data: data + }) +} + +// 修改通用物模型 +export function updateTemplate(data) { + return request({ + url: '/iot/template', + method: 'put', + data: data + }) +} + +// 删除通用物模型 +export function delTemplate(templateId) { + return request({ + url: '/iot/template/' + templateId, + method: 'delete' + }) +} + +// 查询通用物模型详细 +export function getAllPoints(params) { + return request({ + url: '/iot/template/getPoints', + method: 'get', + params: params, + }) +} diff --git a/src/api/iot/tool.js b/src/api/iot/tool.js new file mode 100644 index 0000000..75b094a --- /dev/null +++ b/src/api/iot/tool.js @@ -0,0 +1,58 @@ +import request from '@/utils/request' +import axios from 'axios' +import { Message } from 'element-ui' +import { saveAs } from 'file-saver' +import { getToken } from '@/utils/auth' +import { blobValidate } from "@/utils/ruoyi"; + +const baseURL = process.env.VUE_APP_BASE_API; + +// 注册方法 +export function register(data) { + return request({ + url: '/iot/tool/register', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 查询用户列表 +export function listUser(query) { + return request({ + url: '/iot/tool/userList', + method: 'get', + params: query + }) +} + +// 获取所有下发的topic +export function getTopics(params){ + return request({ + url: '/iot/tool/getTopics', + method: 'get', + params: params, + }) +} + +// 获取所有下发的topic +export function decode(params){ + return request({ + url: '/iot/tool/decode', + method: 'get', + params: params, + }) +} + +// 获取所有下发的topic +export function simulateDown(params){ + return request({ + url: '/iot/tool/simulate', + method: 'get', + params: params, + }) +} + + diff --git a/src/api/iot/video.js b/src/api/iot/video.js new file mode 100644 index 0000000..41ec7d1 --- /dev/null +++ b/src/api/iot/video.js @@ -0,0 +1,21 @@ +import request from '@/utils/request'; + +// 高空瞭望 +export function getHighObs(query) { + return request({ + url: '/video/high-obs/page', + method: 'get', + params: { + pageNo: query?.page || 1, + pageSize: query?.pageSize || 100, + }, + }); +} + +// 视频监控-获取视频直播源 +export function getHighObsMonitor(channelNo) { + return request({ + url: `/video/high-obs/play/${channelNo}`, + method: 'get', + }); +} diff --git a/src/api/iot/viewConfig.js b/src/api/iot/viewConfig.js new file mode 100644 index 0000000..3280914 --- /dev/null +++ b/src/api/iot/viewConfig.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询界面可视化配置列表 +export function listViewConfig(query) { + return request({ + url: '/iot/viewConfig/list', + method: 'get', + params: query + }) +} + +// 查询界面可视化配置详细 +export function getViewConfig(viewId) { + return request({ + url: '/iot/viewConfig/' + viewId, + method: 'get' + }) +} + +// 新增界面可视化配置 +export function addViewConfig(data) { + return request({ + url: '/iot/viewConfig', + method: 'post', + data: data + }) +} + +// 修改界面可视化配置 +export function updateViewConfig(data) { + return request({ + url: '/iot/viewConfig', + method: 'put', + data: data + }) +} + +// 删除界面可视化配置 +export function delViewConfig(viewId) { + return request({ + url: '/iot/viewConfig/' + viewId, + method: 'delete' + }) +} diff --git a/src/api/login.js b/src/api/login.js new file mode 100644 index 0000000..d63c8fc --- /dev/null +++ b/src/api/login.js @@ -0,0 +1,175 @@ +import request from '@/utils/request'; + +// 登录方法 +export function login(username, password, code, uuid, sourceType) { + const data = { + username, + password, + code, + uuid, + sourceType, + }; + return request({ + url: '/login', + headers: { + isToken: false, + }, + method: 'post', + data: data, + }); +} + +// 注册方法 +export function register(data) { + return request({ + url: '/register', + headers: { + isToken: false, + }, + method: 'post', + data: data, + }); +} + +// 获取用户详细信息 +export function getInfo() { + return request({ + url: '/getInfo', + method: 'get', + }); +} + +// 检查BindID +export function checkBindId(bindId) { + return request({ + url: '/auth/checkBindId/' + bindId, + method: 'get', + }); +} + +// 微信绑定获取结果信息 +export function getWxBindMsg(wxBindMsgId) { + return request({ + url: '/wechat/getWxBindMsg?wxBindMsgId=' + wxBindMsgId, + method: 'get', + }); +} + +// 退出方法 +export function logout() { + return request({ + url: '/logout', + method: 'post', + }); +} + +// 获取验证码 +export function getCodeImg() { + return request({ + url: '/captchaImage', + headers: { + isToken: false, + }, + method: 'get', + timeout: 20000, + }); +} +// 微信登录直接跳转登录 +export function socialLogin(loginId) { + return request({ + url: '/auth/login/' + loginId, + method: 'get', + }); +} + +// 微信登录绑定登录 +export function bindLogin(data) { + return request({ + url: '/auth/bind/login', + headers: { + isToken: false, + }, + method: 'post', + data: data, + }); +} + +// 三方登录注册绑定 +export function bindRegister(data) { + return request({ + url: '/auth/bind/register', + headers: { + isToken: false, + }, + method: 'post', + timeout: 20000, + data: data, + }); +} +//短信登录获取验证码 +export function getSmsLoginCaptcha(phoneNumber) { + return request({ + url: '/notify/smsLoginCaptcha?phoneNumber=' + phoneNumber, + method: 'get', + }); +} + +//短信登录 +export function smsLogin(data) { + return request({ + url: '/auth/sms/login', + method: 'post', + data: data, + }); +} + +export function getErrorMsg(errorId) { + return request({ + url: '/auth/getErrorMsg/' + errorId, + method: 'get', + }); +} + +// ========== OAUTH 2.0 相关 ========== + +export function getAuthorize(clientId) { + return request({ + url: '/oauth2/authorize?clientId=' + clientId, + method: 'get', + }); +} + +export function authorize(responseType, clientId, redirectUri, state, autoApprove, checkedScopes, uncheckedScopes) { + // 构建 scopes + const scopes = {}; + for (const scope of checkedScopes) { + scopes[scope] = true; + } + for (const scope of uncheckedScopes) { + scopes[scope] = false; + } + // 发起请求 + return request({ + url: '/oauth2/authorize', + headers: { + 'Content-type': 'application/x-www-form-urlencoded', + }, + params: { + response_type: responseType, + client_id: clientId, + redirect_uri: redirectUri, + state: state, + auto_approve: autoApprove, + scope: JSON.stringify(scopes), + }, + method: 'post', + }); +} +//登录 +export function oauthLogin(data) { + return request({ + url: '/auth/ssoLogin', + method: 'post', + data: data, + }); +} diff --git a/src/api/menu.js b/src/api/menu.js new file mode 100644 index 0000000..faef101 --- /dev/null +++ b/src/api/menu.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 获取路由 +export const getRouters = () => { + return request({ + url: '/getRouters', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/monitor/cache.js b/src/api/monitor/cache.js new file mode 100644 index 0000000..72c5f6a --- /dev/null +++ b/src/api/monitor/cache.js @@ -0,0 +1,57 @@ +import request from '@/utils/request' + +// 查询缓存详细 +export function getCache() { + return request({ + url: '/monitor/cache', + method: 'get' + }) +} + +// 查询缓存名称列表 +export function listCacheName() { + return request({ + url: '/monitor/cache/getNames', + method: 'get' + }) +} + +// 查询缓存键名列表 +export function listCacheKey(cacheName) { + return request({ + url: '/monitor/cache/getKeys/' + cacheName, + method: 'get' + }) +} + +// 查询缓存内容 +export function getCacheValue(cacheName, cacheKey) { + return request({ + url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey, + method: 'get' + }) +} + +// 清理指定名称缓存 +export function clearCacheName(cacheName) { + return request({ + url: '/monitor/cache/clearCacheName/' + cacheName, + method: 'delete' + }) +} + +// 清理指定键名缓存 +export function clearCacheKey(cacheKey) { + return request({ + url: '/monitor/cache/clearCacheKey/' + cacheKey, + method: 'delete' + }) +} + +// 清理全部缓存 +export function clearCacheAll() { + return request({ + url: '/monitor/cache/clearCacheAll', + method: 'delete' + }) +} diff --git a/src/api/monitor/job.js b/src/api/monitor/job.js new file mode 100644 index 0000000..3815569 --- /dev/null +++ b/src/api/monitor/job.js @@ -0,0 +1,71 @@ +import request from '@/utils/request' + +// 查询定时任务调度列表 +export function listJob(query) { + return request({ + url: '/monitor/job/list', + method: 'get', + params: query + }) +} + +// 查询定时任务调度详细 +export function getJob(jobId) { + return request({ + url: '/monitor/job/' + jobId, + method: 'get' + }) +} + +// 新增定时任务调度 +export function addJob(data) { + return request({ + url: '/monitor/job', + method: 'post', + data: data + }) +} + +// 修改定时任务调度 +export function updateJob(data) { + return request({ + url: '/monitor/job', + method: 'put', + data: data + }) +} + +// 删除定时任务调度 +export function delJob(jobId) { + return request({ + url: '/monitor/job/' + jobId, + method: 'delete' + }) +} + +// 任务状态修改 +export function changeJobStatus(jobId, status) { + const data = { + jobId, + status + } + return request({ + url: '/monitor/job/changeStatus', + method: 'put', + data: data + }) +} + + +// 定时任务立即执行一次 +export function runJob(jobId, jobGroup) { + const data = { + jobId, + jobGroup + } + return request({ + url: '/monitor/job/run', + method: 'put', + data: data + }) +} \ No newline at end of file diff --git a/src/api/monitor/jobLog.js b/src/api/monitor/jobLog.js new file mode 100644 index 0000000..6e0be61 --- /dev/null +++ b/src/api/monitor/jobLog.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 查询调度日志列表 +export function listJobLog(query) { + return request({ + url: '/monitor/jobLog/list', + method: 'get', + params: query + }) +} + +// 删除调度日志 +export function delJobLog(jobLogId) { + return request({ + url: '/monitor/jobLog/' + jobLogId, + method: 'delete' + }) +} + +// 清空调度日志 +export function cleanJobLog() { + return request({ + url: '/monitor/jobLog/clean', + method: 'delete' + }) +} diff --git a/src/api/monitor/logininfor.js b/src/api/monitor/logininfor.js new file mode 100644 index 0000000..4d112b7 --- /dev/null +++ b/src/api/monitor/logininfor.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +// 查询登录日志列表 +export function list(query) { + return request({ + url: '/monitor/logininfor/list', + method: 'get', + params: query + }) +} + +// 删除登录日志 +export function delLogininfor(infoId) { + return request({ + url: '/monitor/logininfor/' + infoId, + method: 'delete' + }) +} + +// 解锁用户登录状态 +export function unlockLogininfor(userName) { + return request({ + url: '/monitor/logininfor/unlock/' + userName, + method: 'get' + }) +} + +// 清空登录日志 +export function cleanLogininfor() { + return request({ + url: '/monitor/logininfor/clean', + method: 'delete' + }) +} diff --git a/src/api/monitor/online.js b/src/api/monitor/online.js new file mode 100644 index 0000000..bd22137 --- /dev/null +++ b/src/api/monitor/online.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 查询在线用户列表 +export function list(query) { + return request({ + url: '/monitor/online/list', + method: 'get', + params: query + }) +} + +// 强退用户 +export function forceLogout(tokenId) { + return request({ + url: '/monitor/online/' + tokenId, + method: 'delete' + }) +} diff --git a/src/api/monitor/operlog.js b/src/api/monitor/operlog.js new file mode 100644 index 0000000..a04bca8 --- /dev/null +++ b/src/api/monitor/operlog.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 查询操作日志列表 +export function list(query) { + return request({ + url: '/monitor/operlog/list', + method: 'get', + params: query + }) +} + +// 删除操作日志 +export function delOperlog(operId) { + return request({ + url: '/monitor/operlog/' + operId, + method: 'delete' + }) +} + +// 清空操作日志 +export function cleanOperlog() { + return request({ + url: '/monitor/operlog/clean', + method: 'delete' + }) +} diff --git a/src/api/monitor/server.js b/src/api/monitor/server.js new file mode 100644 index 0000000..e1f9ca2 --- /dev/null +++ b/src/api/monitor/server.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 获取服务信息 +export function getServer() { + return request({ + url: '/monitor/server', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/notify/channel.js b/src/api/notify/channel.js new file mode 100644 index 0000000..e3d9ae3 --- /dev/null +++ b/src/api/notify/channel.js @@ -0,0 +1,59 @@ +import request from '@/utils/request'; + +// 查询通知渠道列表 +export function listChannel(query) { + return request({ + url: '/notify/channel/list', + method: 'get', + params: query, + }); +} + +// 查询通知渠道详细 +export function getChannel(id) { + return request({ + url: '/notify/channel/' + id, + method: 'get', + }); +} + +// 查询通知渠道和服务商 +export function getChannelMessage(query) { + return request({ + url: '/notify/channel/listChannel', + method: 'get', + params: query, + }); +} +//查询配置信息 +export function getConfigContent(provider, channelType) { + return request({ + url: '/notify/channel/getConfigContent?channelType=' + channelType + '&provider=' + provider, + method: 'get', + }); +} +// 新增通知渠道 +export function addChannel(data) { + return request({ + url: '/notify/channel', + method: 'post', + data: data, + }); +} + +// 修改通知渠道 +export function updateChannel(data) { + return request({ + url: '/notify/channel', + method: 'put', + data: data, + }); +} + +// 删除通知渠道 +export function delChannel(id) { + return request({ + url: '/notify/channel/' + id, + method: 'delete', + }); +} diff --git a/src/api/notify/log.js b/src/api/notify/log.js new file mode 100644 index 0000000..d72959a --- /dev/null +++ b/src/api/notify/log.js @@ -0,0 +1,44 @@ +import request from '@/utils/request'; + +// 查询通知日志列表 +export function listLog(query) { + return request({ + url: '/notify/log/list', + method: 'get', + params: query, + }); +} + +// 查询通知日志详细 +export function getLog(id) { + return request({ + url: '/notify/log/' + id, + method: 'get', + }); +} + +// 新增通知日志 +export function addLog(data) { + return request({ + url: '/notify/log', + method: 'post', + data: data, + }); +} + +// 修改通知日志 +export function updateLog(data) { + return request({ + url: '/notify/log', + method: 'put', + data: data, + }); +} + +// 删除通知日志 +export function delLog(id) { + return request({ + url: '/notify/log/' + id, + method: 'delete', + }); +} diff --git a/src/api/notify/template.js b/src/api/notify/template.js new file mode 100644 index 0000000..f1b0bb7 --- /dev/null +++ b/src/api/notify/template.js @@ -0,0 +1,97 @@ +import request from '@/utils/request'; + +// 查询通知模版列表 +export function listTemplate(query) { + return request({ + url: '/notify/template/list', + method: 'get', + params: query, + }); +} + +// 查询通知模版详细 +export function getTemplate(id) { + return request({ + url: '/notify/template/' + id, + method: 'get', + }); +} + +// 新增通知模版 +export function addTemplate(data) { + return request({ + url: '/notify/template', + method: 'post', + data: data, + }); +} + +// 修改通知模版 +export function updateTemplate(data) { + return request({ + url: '/notify/template', + method: 'put', + data: data, + }); +} + +// 删除通知模版 +export function delTemplate(id) { + return request({ + url: '/notify/template/' + id, + method: 'delete', + }); +} + +// 查询通知模版示例 +export function getTemplateExample(params) { + return request({ + url: '/notify/template/example', + method: 'get', + params: params, + }); +} + +// 获取通知模版详细信息 +export function getUsableTempate(params) { + return request({ + url: '/notify/template/getUsable', + method: 'get', + params: params, + }); +} + +// 修改通知模版-更新状态 +export function updateState(data) { + return request({ + url: '/notify/template/updateState', + method: 'post', + data: data, + }); +} + +// 测试发送 +export function notifyTestTemplate(data) { + return request({ + url: '/notify/send', + method: 'post', + data: data, + }); +} + +//获取模板参数 +export function templateParams(data) { + return request({ + url: '/notify/template/msgParams', + method: 'get', + params: data, + }); +} + +//获取消息通知模版参数变量 +export function getVariablesList(id, channelType, provider) { + return request({ + url: '/notify/template/listVariables?id=' + id + '&channelType=' + channelType + '&provider=' + provider, + method: 'get', + }); +} diff --git a/src/api/system/config.js b/src/api/system/config.js new file mode 100644 index 0000000..a404d82 --- /dev/null +++ b/src/api/system/config.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询参数列表 +export function listConfig(query) { + return request({ + url: '/system/config/list', + method: 'get', + params: query + }) +} + +// 查询参数详细 +export function getConfig(configId) { + return request({ + url: '/system/config/' + configId, + method: 'get' + }) +} + +// 根据参数键名查询参数值 +export function getConfigKey(configKey) { + return request({ + url: '/system/config/configKey/' + configKey, + method: 'get' + }) +} + +// 新增参数配置 +export function addConfig(data) { + return request({ + url: '/system/config', + method: 'post', + data: data + }) +} + +// 修改参数配置 +export function updateConfig(data) { + return request({ + url: '/system/config', + method: 'put', + data: data + }) +} + +// 删除参数配置 +export function delConfig(configId) { + return request({ + url: '/system/config/' + configId, + method: 'delete' + }) +} + +// 刷新参数缓存 +export function refreshCache() { + return request({ + url: '/system/config/refreshCache', + method: 'delete' + }) +} diff --git a/src/api/system/dept.js b/src/api/system/dept.js new file mode 100644 index 0000000..a58fa4b --- /dev/null +++ b/src/api/system/dept.js @@ -0,0 +1,59 @@ +import request from '@/utils/request'; + +// 查询机构列表 +export function listDept(query) { + return request({ + url: '/system/dept/list', + method: 'get', + params: query, + }); +} +// 查询机构列表(排除节点) +export function listDeptExcludeChild(deptId) { + return request({ + url: '/system/dept/list/exclude/' + deptId, + method: 'get', + }); +} + +// 查询机构类型 +export function getDeptType(deptType, showOwner) { + return request({ + url: '/system/dept/getDeptType?deptType=' + deptType + '&showOwner=' + showOwner, + method: 'get', + }); +} + +// 查询机构详细 +export function getDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'get', + }); +} + +// 新增机构 +export function addDept(data) { + return request({ + url: '/system/dept', + method: 'post', + data: data, + }); +} + +// 修改机构 +export function updateDept(data) { + return request({ + url: '/system/dept', + method: 'put', + data: data, + }); +} + +// 删除机构 +export function delDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'delete', + }); +} diff --git a/src/api/system/dict/data.js b/src/api/system/dict/data.js new file mode 100644 index 0000000..6c9eb79 --- /dev/null +++ b/src/api/system/dict/data.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询字典数据列表 +export function listData(query) { + return request({ + url: '/system/dict/data/list', + method: 'get', + params: query + }) +} + +// 查询字典数据详细 +export function getData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'get' + }) +} + +// 根据字典类型查询字典数据信息 +export function getDicts(dictType) { + return request({ + url: '/system/dict/data/type/' + dictType, + method: 'get' + }) +} + +// 新增字典数据 +export function addData(data) { + return request({ + url: '/system/dict/data', + method: 'post', + data: data + }) +} + +// 修改字典数据 +export function updateData(data) { + return request({ + url: '/system/dict/data', + method: 'put', + data: data + }) +} + +// 删除字典数据 +export function delData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'delete' + }) +} diff --git a/src/api/system/dict/type.js b/src/api/system/dict/type.js new file mode 100644 index 0000000..a7a6e01 --- /dev/null +++ b/src/api/system/dict/type.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询字典类型列表 +export function listType(query) { + return request({ + url: '/system/dict/type/list', + method: 'get', + params: query + }) +} + +// 查询字典类型详细 +export function getType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'get' + }) +} + +// 新增字典类型 +export function addType(data) { + return request({ + url: '/system/dict/type', + method: 'post', + data: data + }) +} + +// 修改字典类型 +export function updateType(data) { + return request({ + url: '/system/dict/type', + method: 'put', + data: data + }) +} + +// 删除字典类型 +export function delType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'delete' + }) +} + +// 刷新字典缓存 +export function refreshCache() { + return request({ + url: '/system/dict/type/refreshCache', + method: 'delete' + }) +} + +// 获取字典选择框列表 +export function optionselect() { + return request({ + url: '/system/dict/type/optionselect', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/system/menu.js b/src/api/system/menu.js new file mode 100644 index 0000000..61afee7 --- /dev/null +++ b/src/api/system/menu.js @@ -0,0 +1,67 @@ +import request from '@/utils/request'; + +// 查询菜单列表 +export function listMenu(query) { + return request({ + url: '/system/menu/list', + method: 'get', + params: query, + }); +} + +// 查询菜单详细 +export function getMenu(menuId) { + return request({ + url: '/system/menu/' + menuId, + method: 'get', + }); +} + +// 查询菜单下拉树结构 +export function treeselect() { + return request({ + url: '/system/menu/treeselect', + method: 'get', + }); +} +// 根据部门查询菜单下拉树结构 +export function partMenuTreeselect(deptId) { + return request({ + url: '/system/menu/deptMenuTreeselect/' + deptId, + method: 'get', + }); +} + +// 根据角色ID查询菜单下拉树结构 +export function roleMenuTreeselect(roleId, deptId) { + return request({ + url: '/system/menu/roleMenuTreeselect?roleId=' + roleId + '&deptId=' + deptId, + method: 'get', + }); +} + +// 新增菜单 +export function addMenu(data) { + return request({ + url: '/system/menu', + method: 'post', + data: data, + }); +} + +// 修改菜单 +export function updateMenu(data) { + return request({ + url: '/system/menu', + method: 'put', + data: data, + }); +} + +// 删除菜单 +export function delMenu(menuId) { + return request({ + url: '/system/menu/' + menuId, + method: 'delete', + }); +} diff --git a/src/api/system/notice.js b/src/api/system/notice.js new file mode 100644 index 0000000..c274ea5 --- /dev/null +++ b/src/api/system/notice.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询公告列表 +export function listNotice(query) { + return request({ + url: '/system/notice/list', + method: 'get', + params: query + }) +} + +// 查询公告详细 +export function getNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'get' + }) +} + +// 新增公告 +export function addNotice(data) { + return request({ + url: '/system/notice', + method: 'post', + data: data + }) +} + +// 修改公告 +export function updateNotice(data) { + return request({ + url: '/system/notice', + method: 'put', + data: data + }) +} + +// 删除公告 +export function delNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/src/api/system/ossConfig.js b/src/api/system/ossConfig.js new file mode 100644 index 0000000..e603c2b --- /dev/null +++ b/src/api/system/ossConfig.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询文件存储配置列表 +export function listConfig(query) { + return request({ + url: '/oss/config/list', + method: 'get', + params: query + }) +} + +// 查询文件存储配置详细 +export function getConfig(id) { + return request({ + url: '/oss/config/' + id, + method: 'get' + }) +} + +// 新增文件存储配置 +export function addConfig(data) { + return request({ + url: '/oss/config', + method: 'post', + data: data + }) +} + +// 修改文件存储配置 +export function updateConfig(data) { + return request({ + url: '/oss/config', + method: 'put', + data: data + }) +} + +// 删除文件存储配置 +export function delConfig(id) { + return request({ + url: '/oss/config/' + id, + method: 'delete' + }) +} + +export function changeOssConfigStatus(data) { + return request({ + url: '/oss/config/changeStatus', + method: 'put', + data: data + }) +} diff --git a/src/api/system/ossDetail.js b/src/api/system/ossDetail.js new file mode 100644 index 0000000..b1f2892 --- /dev/null +++ b/src/api/system/ossDetail.js @@ -0,0 +1,51 @@ +import request from '@/utils/request' + +// 查询文件记录列表 +export function listDetail(query) { + return request({ + url: '/oss/detail/list', + method: 'get', + params: query + }) +} + +// 查询文件记录详细 +export function getDetail(id) { + return request({ + url: '/oss/detail/' + id, + method: 'get' + }) +} + +// 新增文件记录 +export function addDetail(data) { + return request({ + url: '/oss/detail', + method: 'post', + data: data + }) +} + +// 修改文件记录 +export function updateDetail(data) { + return request({ + url: '/oss/detail', + method: 'put', + data: data + }) +} + +// 删除文件记录 +export function delDetail(id) { + return request({ + url: '/oss/detail/' + id, + method: 'delete' + }) +} + +export function download(ossId) { + return request({ + url: '/oss/detail/download/' + ossId, + method: 'get', + }) +} diff --git a/src/api/system/post.js b/src/api/system/post.js new file mode 100644 index 0000000..1a8e9ca --- /dev/null +++ b/src/api/system/post.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询岗位列表 +export function listPost(query) { + return request({ + url: '/system/post/list', + method: 'get', + params: query + }) +} + +// 查询岗位详细 +export function getPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'get' + }) +} + +// 新增岗位 +export function addPost(data) { + return request({ + url: '/system/post', + method: 'post', + data: data + }) +} + +// 修改岗位 +export function updatePost(data) { + return request({ + url: '/system/post', + method: 'put', + data: data + }) +} + +// 删除岗位 +export function delPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'delete' + }) +} diff --git a/src/api/system/role.js b/src/api/system/role.js new file mode 100644 index 0000000..f13e6f4 --- /dev/null +++ b/src/api/system/role.js @@ -0,0 +1,119 @@ +import request from '@/utils/request' + +// 查询角色列表 +export function listRole(query) { + return request({ + url: '/system/role/list', + method: 'get', + params: query + }) +} + +// 查询角色详细 +export function getRole(roleId) { + return request({ + url: '/system/role/' + roleId, + method: 'get' + }) +} + +// 新增角色 +export function addRole(data) { + return request({ + url: '/system/role', + method: 'post', + data: data + }) +} + +// 修改角色 +export function updateRole(data) { + return request({ + url: '/system/role', + method: 'put', + data: data + }) +} + +// 角色数据权限 +export function dataScope(data) { + return request({ + url: '/system/role/dataScope', + method: 'put', + data: data + }) +} + +// 角色状态修改 +export function changeRoleStatus(roleId, status) { + const data = { + roleId, + status + } + return request({ + url: '/system/role/changeStatus', + method: 'put', + data: data + }) +} + +// 删除角色 +export function delRole(roleId) { + return request({ + url: '/system/role/' + roleId, + method: 'delete' + }) +} + +// 查询角色已授权用户列表 +export function allocatedUserList(query) { + return request({ + url: '/system/role/authUser/allocatedList', + method: 'get', + params: query + }) +} + +// 查询角色未授权用户列表 +export function unallocatedUserList(query) { + return request({ + url: '/system/role/authUser/unallocatedList', + method: 'get', + params: query + }) +} + +// 取消用户授权角色 +export function authUserCancel(data) { + return request({ + url: '/system/role/authUser/cancel', + method: 'put', + data: data + }) +} + +// 批量取消用户授权角色 +export function authUserCancelAll(data) { + return request({ + url: '/system/role/authUser/cancelAll', + method: 'put', + params: data + }) +} + +// 授权用户选择 +export function authUserSelectAll(data) { + return request({ + url: '/system/role/authUser/selectAll', + method: 'put', + params: data + }) +} + +// 根据角色ID查询部门树结构 +export function deptTreeSelect(roleId) { + return request({ + url: '/system/role/deptTree/' + roleId, + method: 'get' + }) +} diff --git a/src/api/system/user.js b/src/api/system/user.js new file mode 100644 index 0000000..6be92ec --- /dev/null +++ b/src/api/system/user.js @@ -0,0 +1,173 @@ +import request from '@/utils/request'; +import { parseStrEmpty } from '@/utils/ruoyi'; + +// 查询用户列表 +export function listUser(query) { + return request({ + url: '/system/user/list', + method: 'get', + params: query, + }); +} + +// 查询终端用户列表 +export function terminalUserList(query) { + return request({ + url: '/system/user/listTerminal', + method: 'get', + params: query, + }); +} +// 查询用户详细 +export function getUser(userId) { + return request({ + url: '/system/user/' + parseStrEmpty(userId), + method: 'get', + }); +} + +// 查询角色列表 +export function getRole(deptId) { + return request({ + url: '/system/dept/getRole?deptId=' + deptId, + method: 'get', + }); +} + +// 新增用户 +export function addUser(data) { + return request({ + url: '/system/user', + method: 'post', + data: data, + }); +} + +// 修改用户 +export function updateUser(data) { + return request({ + url: '/system/user', + method: 'put', + data: data, + }); +} + +// 删除用户 +export function delUser(userId) { + return request({ + url: '/system/user/' + userId, + method: 'delete', + }); +} + +// 用户密码重置 +export function resetUserPwd(userId, password) { + const data = { + userId, + password, + }; + return request({ + url: '/system/user/resetPwd', + method: 'put', + data: data, + }); +} + +// 用户状态修改 +export function changeUserStatus(userId, status) { + const data = { + userId, + status, + }; + return request({ + url: '/system/user/changeStatus', + method: 'put', + data: data, + }); +} +// 获取微信二维码 +export function getLoginParam() { + return request({ + url: '/wechat/getWxBindQr', + method: 'get', + }); +} +// 解除绑定 +export function secureBind(data) { + return request({ + url: '/wechat/cancelBind', + method: 'post', + data: data, + }); +} +// 查询用户个人信息 +export function getUserProfile() { + return request({ + url: '/system/user/profile', + method: 'get', + }); +} + +// 修改用户个人信息 +export function updateUserProfile(data) { + return request({ + url: '/system/user/profile', + method: 'put', + data: data, + }); +} + +// 用户密码重置 +export function updateUserPwd(oldPassword, newPassword) { + const data = { + oldPassword, + newPassword, + }; + return request({ + url: '/system/user/profile/updatePwd', + method: 'put', + params: data, + }); +} + +// 用户头像上传 +export function uploadAvatar(data) { + return request({ + url: '/system/user/profile/avatar', + method: 'post', + data: data, + }); +} + +// 查询授权角色 +export function getAuthRole(userId) { + return request({ + url: '/system/user/authRole/' + userId, + method: 'get', + }); +} + +// 保存授权角色 +export function updateAuthRole(data) { + return request({ + url: '/system/user/authRole', + method: 'put', + params: data, + }); +} + +// 查询机构下拉树结构 +export function deptsTreeSelect() { + return request({ + url: '/system/user/deptTree', + method: 'get', + }); +} + +// 查询子机构下拉树结构 +export function deptsTreeSelectSub(showOwner) { + return request({ + url: '/system/user/deptTree?showOwner=' + showOwner, + method: 'get', + }); +} diff --git a/src/api/tool/gen.js b/src/api/tool/gen.js new file mode 100644 index 0000000..4506927 --- /dev/null +++ b/src/api/tool/gen.js @@ -0,0 +1,76 @@ +import request from '@/utils/request' + +// 查询生成表数据 +export function listTable(query) { + return request({ + url: '/tool/gen/list', + method: 'get', + params: query + }) +} +// 查询db数据库列表 +export function listDbTable(query) { + return request({ + url: '/tool/gen/db/list', + method: 'get', + params: query + }) +} + +// 查询表详细信息 +export function getGenTable(tableId) { + return request({ + url: '/tool/gen/' + tableId, + method: 'get' + }) +} + +// 修改代码生成信息 +export function updateGenTable(data) { + return request({ + url: '/tool/gen', + method: 'put', + data: data + }) +} + +// 导入表 +export function importTable(data) { + return request({ + url: '/tool/gen/importTable', + method: 'post', + params: data + }) +} + +// 预览生成代码 +export function previewTable(tableId) { + return request({ + url: '/tool/gen/preview/' + tableId, + method: 'get' + }) +} + +// 删除表数据 +export function delTable(tableId) { + return request({ + url: '/tool/gen/' + tableId, + method: 'delete' + }) +} + +// 生成代码(自定义路径) +export function genCode(tableName) { + return request({ + url: '/tool/gen/genCode/' + tableName, + method: 'get' + }) +} + +// 同步数据库 +export function synchDb(tableName) { + return request({ + url: '/tool/gen/synchDb/' + tableName, + method: 'get' + }) +} diff --git a/src/api/tool/ossConfig.js b/src/api/tool/ossConfig.js new file mode 100644 index 0000000..1b9eaa7 --- /dev/null +++ b/src/api/tool/ossConfig.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询文件存储配置列表 +export function listOssConfig(query) { + return request({ + url: '/oss/ossConfig/list', + method: 'get', + params: query + }) +} + +// 查询文件存储配置详细 +export function getOssConfig(id) { + return request({ + url: '/oss/ossConfig/' + id, + method: 'get' + }) +} + +// 新增文件存储配置 +export function addOssConfig(data) { + return request({ + url: '/oss/ossConfig', + method: 'post', + data: data + }) +} + +// 修改文件存储配置 +export function updateOssConfig(data) { + return request({ + url: '/oss/ossConfig', + method: 'put', + data: data + }) +} + +// 删除文件存储配置 +export function delOssConfig(id) { + return request({ + url: '/oss/ossConfig/' + id, + method: 'delete' + }) +} diff --git a/src/api/tool/ossDetail.js b/src/api/tool/ossDetail.js new file mode 100644 index 0000000..55c3111 --- /dev/null +++ b/src/api/tool/ossDetail.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询文件记录列表 +export function listOssDetail(query) { + return request({ + url: '/oss/OssDetail/list', + method: 'get', + params: query + }) +} + +// 查询文件记录详细 +export function getOssDetail(id) { + return request({ + url: '/oss/OssDetail/' + id, + method: 'get' + }) +} + +// 新增文件记录 +export function addOssDetail(data) { + return request({ + url: '/oss/OssDetail', + method: 'post', + data: data + }) +} + +// 修改文件记录 +export function updateOssDetail(data) { + return request({ + url: '/oss/OssDetail', + method: 'put', + data: data + }) +} + +// 删除文件记录 +export function delOssDetail(id) { + return request({ + url: '/oss/OssDetail/' + id, + method: 'delete' + }) +} diff --git a/src/assets/401_images/401.gif b/src/assets/401_images/401.gif new file mode 100644 index 0000000..cd6e0d9 Binary files /dev/null and b/src/assets/401_images/401.gif differ diff --git a/src/assets/404_images/404.png b/src/assets/404_images/404.png new file mode 100644 index 0000000..3d8e230 Binary files /dev/null and b/src/assets/404_images/404.png differ diff --git a/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png new file mode 100644 index 0000000..c6281d0 Binary files /dev/null and b/src/assets/404_images/404_cloud.png differ diff --git a/src/assets/bigScreen/css/index.scss b/src/assets/bigScreen/css/index.scss new file mode 100644 index 0000000..0bc1560 --- /dev/null +++ b/src/assets/bigScreen/css/index.scss @@ -0,0 +1,361 @@ +@import "./modules/reset.scss"; +@import "./modules/variables.scss"; +// @import './theme/index.css'; +// @import '../iconfont//iconfont.css'; + +[class*=" blq-icon-"], +[class^=blq-icon-] { + font-family: iconfont !important; + speak: none; + font-style: normal; + font-weight: 400; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: middle; + display: inline-block; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +*, +:after, +:before { + box-sizing: content-box; +} + +.clearfix { + &::after { + content: ""; + display: table; + height: 0; + line-height: 0; + visibility: hidden; + clear: both; + } +} + +.contents { + width: 100%; + display: flex; + min-height: calc(100% - 60px); + justify-content: space-between; +} + +.beautify-scroll-def { + overflow-y: auto; + + &::-webkit-scrollbar-thumb { + //滚动条的设置 + background-color: rgba(14, 59, 150, 0); + background-clip: padding-box; + border-radius: 4px; + } + + &:hover { + &::-webkit-scrollbar-thumb { + //滚动条的设置 + background-color: rgba(14, 59, 150, 0.5); + background-clip: padding-box; + border-radius: 4px; + } + } + + &::-webkit-scrollbar-track-piece { + //滚动条凹槽的颜色,还可以设置边框属性 + background-color: transparent; + } + + &::-webkit-scrollbar { + //滚动条的宽度 + width: 8px; + height: 8px; + } + + + + &::-webkit-scrollbar-thumb:hover { + background-color: rgba(14, 59, 150, .8); + } +} + + +.orderNum { + // min-width: 22px; + // height: 22px; + // background: #00b8ff; + // border-radius: 50%; + // text-align: center; + // line-height: 22px; + // font-size: 13px; + // font-weight: 900; + // color: #0f2854; + color: #00b8ff; +} + +.yh-big-input { + width: 253px; + height: 14px; + background: transparent; + border: 1px solid rgba(255, 255, 255, .53); + border-radius: 4px; + color: #fff; + padding: 6px 10px; + font-size: 14px; + transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + + &:focus { + outline: none; + border-color: #31abe3; + } +} + +.yh-big-el-input { + width: 253px; + font-size: 14px; + + .el-input__inner { + padding: 6px 10px; + border: 1px solid rgba(255, 255, 255, .53); + background-color: transparent; + font-size: 14px; + line-height: 1; + color: #fff; + &:hover{ + border-color: rgba(255, 255, 255, .8); + } + &:focus { + outline: none; + border-color: #31abe3; + } + + } + +} + +.yh-big-button { + width: 53px; + height: 26px; + background: #00b1d6; + border-radius: 4px; + // border-color: #00b1d6; + border-width: 1px; + border: none; + cursor: pointer; + color: #fff; + font-size: 15px; + + &:hover, + &:focus { + // border-color: #0597b4; + background: #0597b4; + } +} + + +//浮动 +.float-r { + float: right; +} + +//浮动 +.float-l { + float: left; +} + +// 字体加粗 +.fw-b { + font-weight: bold; +} + +//文章一行显示,多余省略号显示 +.title-item { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +//表格样式重置 +.ve-table { + $border-color: #525371; + // $border-color: rgba(255, 255, 255, .43); + box-sizing: border-box; + + .ve-table-container { + &::-webkit-scrollbar-track-piece { + //滚动条凹槽的颜色,还可以设置边框属性 + background-color: transparent; + } + + &::-webkit-scrollbar { + //滚动条的宽度 + width: 8px; + height: 8px; + } + + &::-webkit-scrollbar-thumb { + //滚动条的设置 + background-color: rgba(14, 59, 150, 0.5); + background-clip: padding-box; + border-radius: 4px; + } + + &::-webkit-scrollbar-thumb:hover { + background-color: rgba(14, 59, 150, .8); + } + + .ve-table-content { + &::after { + content: ""; + position: absolute; + top: 0; + right: 0px; + width: 1px; + height: 100%; + background-color: $border-color; + z-index: 20; + + } + } + + } + + &.ve-table-border-around { + border-color: $border-color; + } + + .ve-table-container table.ve-table-content thead.ve-table-header tr.ve-table-header-tr { + height: 34px; + box-sizing: border-box; + + th.ve-table-header-th { + background: #04004E; + color: #FFF; + border-color: $border-color; + box-sizing: border-box; + line-height: 1; + } + } + + .ve-table-container table.ve-table-content tbody.ve-table-body { + + tr.ve-table-body-tr td.ve-table-body-td, + tr.ve-table-expand-tr td.ve-table-body-td, + tr.ve-table-body-tr td.ve-table-expand-td, + tr.ve-table-expand-tr td.ve-table-expand-td { + background: transparent; + color: #FFF; + border-color: $border-color; + box-sizing: border-box; + } + + tr.ve-table-body-tr, + tr.ve-table-expand-tr { + height: 34px; + box-sizing: border-box; + } + + &.ve-table-row-hover tr.ve-table-body-tr:hover td { + background-color: rgba(0, 0, 0, .22); + box-sizing: border-box; + } + } + + + + .ve-table-container .ve-table-border-x th, + .ve-table-container .ve-table-border-x td { + border-color: $border-color; + box-sizing: border-box; + } + +} + + + +//颜色 +@each $colorkey, +$color in $colors { + .text-#{$colorkey} { + color: $color; + } + + .bg-#{$colorkey} { + background-color: $color; + } +} + +//对齐 +@each $var in (left, center, right) { + .text-#{$var} { + text-align: $var !important; + } +} + +//flex +@each $key, +$value in $flex-jc { + .jc-#{$key} { + justify-content: $value; + } +} + +@each $key, +$value in $flex-ai { + .ai-#{$key} { + align-items: $value; + } +} + +//字体 +@each $fontkey, +$fontvalue in $font-sizes { + .fs-#{$fontkey} { + font-size: $fontvalue * $base-font-size; + } +} + +//.mt-1 => margin top +//spacing + +@each $typekey, +$type in $spacing-types { + + //.m-1 + @each $sizekey, + $size in $spacing-sizes { + .#{$typekey}-#{$sizekey} { + #{$type}: $size * $spacing-base-size; + } + } + + //.mx-1 + @each $sizekey, + $size in $spacing-sizes { + .#{$typekey}x-#{$sizekey} { + #{$type}-left: $size * $spacing-base-size; + #{$type}-right: $size * $spacing-base-size; + } + + .#{$typekey}y-#{$sizekey} { + #{$type}-top: $size * $spacing-base-size; + #{$type}-bottom: $size * $spacing-base-size; + } + } + + //.mt-1 + @each $directionkey, + $direction in $spacing-directions { + + @each $sizekey, + $size in $spacing-sizes { + .#{$typekey}#{$directionkey}-#{$sizekey} { + #{$type}-#{$direction}: $size * $spacing-base-size; + } + } + } + + .#{$typekey} { + #{$type}: 0; + } +} \ No newline at end of file diff --git a/src/assets/bigScreen/css/modules/reset.scss b/src/assets/bigScreen/css/modules/reset.scss new file mode 100644 index 0000000..3c38101 --- /dev/null +++ b/src/assets/bigScreen/css/modules/reset.scss @@ -0,0 +1,200 @@ +/** + * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) + * http://cssreset.com + */ +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video, +input { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font-weight: normal; + vertical-align: baseline; +} + +/* HTML5 display-role reset for older browsers */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +menu, +nav, +section { + display: block; +} + +body { + line-height: 1; +} + +blockquote, +q { + quotes: none; +} + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +/* custom */ + +a { + color: #7e8c8d; + -webkit-backface-visibility: hidden; + text-decoration: none; +} + +li { + list-style: none; +} + +body { + -webkit-text-size-adjust: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.olControlScaleLineBottom { + display: none; +} + +.olControlScaleLineTop { + color: #000 !important; + border-bottom: solid 3px #000 !important; + border-left: solid 2px #000 !important; + border-right: solid 2px #000 !important; + background-color: rgba(255, 255, 255, .4); + font-size: 10px; + text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff; +} + +.olControlScaleLine { + z-index: 900 !important; +} +/*清除浮动*/ +.clearfix:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.clearfix {display: inline-block;} +/* 点击搜索框获取焦点 placeholder消失-开始 */ +/* WebKit browsers */ + +// input:focus::-webkit-input-placeholder { +// color: transparent; +// } + + +// /* Mozilla Firefox 4 to 18 */ + +// input:focus:-moz-placeholder { +// color: transparent; +// } + + +// /* Mozilla Firefox 19+ */ + +// input:focus::-moz-placeholder { +// color: transparent; +// } + + +// /* Internet Explorer 10+ */ + +// input:focus:-ms-input-placeholder { +// color: transparent; +// } + +/* 点击搜索框获取焦点 placeholder消失-结束 */ diff --git a/src/assets/bigScreen/css/modules/variables.scss b/src/assets/bigScreen/css/modules/variables.scss new file mode 100644 index 0000000..e36162c --- /dev/null +++ b/src/assets/bigScreen/css/modules/variables.scss @@ -0,0 +1,98 @@ +// 颜色 +$colors: ( + "primary": #1A5CD7, + "info-1": #4394e4, + "info": #4b67af, + "white": #ffffff, + "light": #f9f9f9, + "grey-1": #999999, + "grey": #666666, + "dark-1": #5f5f5f, + "dark": #222222, + "black-1": #171823, + "black": #000000, + "icon": #5cd9e8 +); + +// 字体大小 +$base-font-size: 0.2rem; +$font-sizes: ( + xxs: 0.1, + //8px + xs: 0.125, + //10px + sm: 0.2875, + //12px + md: 0.1625, + //13px + lg: 0.175, + //14px + xl: 0.2, + //16px + xxl: 0.225, + //18px + xxxl: 0.25 //20px,,,, +); + +// 宽高 +.w-100 { + width: 100%; +} +.h-100 { + height: 100%; +} + +//flex +.flex { + display: flex; +} +.flex-column { + flex-direction: column; +} +.flex-wrap { + flex-wrap: wrap; +} +.flex-nowrap { + flex-wrap: nowrap; +} +$flex-jc: ( + start: flex-start, + end: flex-end, + center: center, + between: space-between, + around: space-around, + evenly: space-evenly, +); + +$flex-ai: ( + start: flex-start, + end: flex-end, + center: center, + stretch: stretch, +); + +.flex-1 { + flex: 1; +} + +//.mt-1 => margin top +//spacing +$spacing-types: ( + m: margin, + p: padding, +); +$spacing-directions: ( + t: top, + r: right, + b: bottom, + l: left, +); +$spacing-base-size: 0.5rem; +$spacing-sizes: ( + 0: 0, + 1: 0.5, + 2: 1, + 3: 1.5, + 4: 2, + 5: 2.5, +); diff --git a/src/assets/bigScreen/css/public.scss b/src/assets/bigScreen/css/public.scss new file mode 100644 index 0000000..719c7b6 --- /dev/null +++ b/src/assets/bigScreen/css/public.scss @@ -0,0 +1,156 @@ +.flex { + display: flex; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} +@for $i from 0 through 12 { + .rdx-flex-#{$i} { + flex: $i; + } +} + +@for $i from 9 to 50 { + .rdx-font-#{$i} { + font-size: $i + px; + } +} + +@for $i from 2 to 50 { + .rdx-radius-#{$i} { + border-radius: $i + px; + } +} +@for $i from 10 to 50 { + .rdx-line-height-#{$i} { + line-height: $i + px; + } +} + +// 定义内外边距,历遍1-80 +@for $i from 0 through 80 { + // 只要双数和能被5除尽的数 + @if $i % 2 == 0 or $i % 5 == 0 { + // 得出:u-margin-30或者u-m-30 + .rdx-m-#{$i} { + margin: $i + px !important; + } + // 得出:u-padding-30或者u-p-30 + .rdx-p-#{$i} { + padding: $i + px !important; + } + + @each $short, $long in l left, t top, r right, b bottom { + // 缩写版,结果如: u-m-l-30 + // 定义外边距 + .rdx-m-#{$short}-#{$i} { + margin-#{$long}: $i + px !important; + } + + // 定义内边距 + .rdx-p-#{$short}-#{$i} { + padding-#{$long}: $i + px !important; + } + + //自定义左右内边距 + .rdx-p-lr-#{$i} { + padding-left:$i + px !important; + padding-right:$i + px !important; + } + //自定义上下内边距 + .rdx-p-tb-#{$i} { + padding-top:$i + px !important; + padding-bottom:$i + px !important; + } + } + } +} +i{font-style: normal;} +.position-re{position: relative;} +.position-ab{position: absolute; z-index: 9;} +.position-fixed{position: fixed; background: rgba(92, 116, 143, 0.45); width: 100%; height: 100%; left: 0px; top: 0px; z-index: 10;} +.round{border-radius: 50%;} +.font-strong{font-weight: bold;} +// .color-del{color:$del-color} +// .color-primary{color: $primary-color;} +.color-remark{color: #666666;} +.color-9{color: #999999;} +.color-green{color: #38a800;} +.bg-white{background-color: white;} +.line-bottom{border-bottom: 1px solid #eeeeee;} +.button-pointer{cursor: pointer;} +.box-shadow-item{box-shadow: 0px 0px 4px 0px rgba(45, 45, 46, 0.1);} +.search-form .search-form-item label {text-align: right; padding-right: 6px;} + + +.break-all{ + word-break: break-all; +} +.blocks{ + width: 100%; + height: 100%; +} +.cursor-pointer{ + cursor: pointer; +} diff --git a/src/assets/bigScreen/css/theme/fonts/element-icons.ttf b/src/assets/bigScreen/css/theme/fonts/element-icons.ttf new file mode 100644 index 0000000..91b74de Binary files /dev/null and b/src/assets/bigScreen/css/theme/fonts/element-icons.ttf differ diff --git a/src/assets/bigScreen/css/theme/fonts/element-icons.woff b/src/assets/bigScreen/css/theme/fonts/element-icons.woff new file mode 100644 index 0000000..02b9a25 Binary files /dev/null and b/src/assets/bigScreen/css/theme/fonts/element-icons.woff differ diff --git a/src/assets/bigScreen/css/theme/index.css b/src/assets/bigScreen/css/theme/index.css new file mode 100644 index 0000000..ec735b2 --- /dev/null +++ b/src/assets/bigScreen/css/theme/index.css @@ -0,0 +1 @@ +@charset "UTF-8";.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}@font-face{font-family:element-icons;src:url("fonts/element-icons.woff") format("woff"),url("fonts/element-icons.ttf") format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-select-dropdown{position:absolute;z-index:1001;border:solid 1px #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#1890ff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-tag{background-color:#e8f4ff;border-color:#d1e9ff;color:#1890ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#1890ff;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#1890ff}.el-tag .el-tag__close{color:#1890ff}.el-tag .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#1890ff;border-color:#1890ff;color:#fff}.el-tag--dark.is-hit{border-color:#1890ff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#46a6ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#a3d3ff;color:#1890ff}.el-tag--plain.is-hit{border-color:#1890ff}.el-tag--plain .el-tag__close{color:#1890ff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#1890ff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#1890ff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#1890ff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;-ms-flex-negative:0;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#1890ff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat;background-size:16px;background-color:#fff;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor{height:22px}.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#1890ff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev:disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#1890ff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#1890ff;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;display:inline-block;vertical-align:top;font-size:0;padding:0;margin:0}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;vertical-align:top;display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;margin:0}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pager li.btn-quicknext:hover{cursor:pointer}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#1890ff}.el-pager li.active{color:#1890ff;cursor:default}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px;padding-bottom:10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#1890ff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:20px;padding-top:10px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.highlighted{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#1890ff;border-color:#badeff;background-color:#e8f4ff}.el-button:active{color:#1682e6;border-color:#1682e6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#1890ff;color:#1890ff}.el-button.is-plain:active{background:#fff;border-color:#1682e6;color:#1682e6;outline:0}.el-button.is-active{color:#1682e6;border-color:#1682e6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#1890ff;border-color:#1890ff}.el-button--primary:focus,.el-button--primary:hover{background:#46a6ff;border-color:#46a6ff;color:#fff}.el-button--primary:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-active{background:#1682e6;border-color:#1682e6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#8cc8ff;border-color:#8cc8ff}.el-button--primary.is-plain{color:#1890ff;background:#e8f4ff;border-color:#a3d3ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#1890ff;border-color:#1890ff;color:#fff}.el-button--primary.is-plain:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#74bcff;background-color:#e8f4ff;border-color:#d1e9ff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#1890ff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#46a6ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#1682e6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled)::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#e8f4ff;color:#46a6ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #1890ff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #1890ff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{height:56px;line-height:56px;font-size:14px;color:#303133;padding:0 20px;list-style:none;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#e8f4ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#1890ff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:#303133;padding:0 20px;list-style:none;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#e8f4ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#e8f4ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#1890ff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#1890ff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#1890ff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px 0}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-radio{color:#606266;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;margin-right:30px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#1890ff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__label{font-size:12px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#1890ff;background:#1890ff}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#1890ff}.el-radio__input.is-focus .el-radio__inner{border-color:#1890ff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#1890ff}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #1890ff;box-shadow:0 0 2px 2px #1890ff}.el-radio__label{font-size:14px;padding-left:10px}.el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#1890ff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #1890ff;box-shadow:-1px 0 0 0 #1890ff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #1890ff;box-shadow:0 0 2px 2px #1890ff}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#1890ff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#1890ff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#1890ff}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in 50ms;transition:-webkit-transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms,-webkit-transform .15s ease-in 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#1890ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #74bcff;box-shadow:-1px 0 0 0 #74bcff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#1890ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#1890ff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#1890ff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#1890ff;background-color:#1890ff}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-select-dropdown{position:absolute;z-index:1001;border:solid 1px #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#1890ff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-tag{background-color:#e8f4ff;border-color:#d1e9ff;color:#1890ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#1890ff;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#1890ff}.el-tag .el-tag__close{color:#1890ff}.el-tag .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#1890ff;border-color:#1890ff;color:#fff}.el-tag--dark.is-hit{border-color:#1890ff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#46a6ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#a3d3ff;color:#1890ff}.el-tag--plain.is-hit{border-color:#1890ff}.el-tag--plain .el-tag__close{color:#1890ff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#1890ff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#1890ff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#1890ff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;-ms-flex-negative:0;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#1890ff;border-color:#badeff;background-color:#e8f4ff}.el-button:active{color:#1682e6;border-color:#1682e6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#1890ff;color:#1890ff}.el-button.is-plain:active{background:#fff;border-color:#1682e6;color:#1682e6;outline:0}.el-button.is-active{color:#1682e6;border-color:#1682e6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#1890ff;border-color:#1890ff}.el-button--primary:focus,.el-button--primary:hover{background:#46a6ff;border-color:#46a6ff;color:#fff}.el-button--primary:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-active{background:#1682e6;border-color:#1682e6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#8cc8ff;border-color:#8cc8ff}.el-button--primary.is-plain{color:#1890ff;background:#e8f4ff;border-color:#a3d3ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#1890ff;border-color:#1890ff;color:#fff}.el-button--primary.is-plain:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#74bcff;background-color:#e8f4ff;border-color:#d1e9ff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#1890ff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#46a6ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#1682e6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#1890ff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#1890ff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#1890ff}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in 50ms;transition:-webkit-transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms,-webkit-transform .15s ease-in 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#1890ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #74bcff;box-shadow:-1px 0 0 0 #74bcff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#1890ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#1890ff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-tag{background-color:#e8f4ff;border-color:#d1e9ff;color:#1890ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#1890ff;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#1890ff}.el-tag .el-tag__close{color:#1890ff}.el-tag .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#1890ff;border-color:#1890ff;color:#fff}.el-tag--dark.is-hit{border-color:#1890ff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#46a6ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#a3d3ff;color:#1890ff}.el-tag--plain.is-hit{border-color:#1890ff}.el-tag--plain .el-tag__close{color:#1890ff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;background-color:#fff;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell{background-color:#fff}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#f5f7fa}.el-table .el-table__cell{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#fff}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.el-table th.el-table__cell>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#1890ff}.el-table th.el-table__cell.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border::after,.el-table--group::after,.el-table::before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell{border-right:1px solid #ebeef5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:1px solid #ebeef5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff;border-bottom:1px solid #ebeef5}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#1890ff}.el-table .descending .sort-caret.descending{border-top-color:#1890ff}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:#e8f4ff}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#f5f7fa}.el-table__body tr.current-row>td.el-table__cell{background-color:#e8f4ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#1890ff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#1890ff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#1890ff}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in 50ms;transition:-webkit-transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms,-webkit-transform .15s ease-in 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#1890ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #74bcff;box-shadow:-1px 0 0 0 #74bcff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#1890ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#1890ff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-tag{background-color:#e8f4ff;border-color:#d1e9ff;color:#1890ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#1890ff;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#1890ff}.el-tag .el-tag__close{color:#1890ff}.el-tag .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#1890ff;border-color:#1890ff;color:#fff}.el-tag--dark.is-hit{border-color:#1890ff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#46a6ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#a3d3ff;color:#1890ff}.el-tag--plain.is-hit{border-color:#1890ff}.el-tag--plain .el-tag__close{color:#1890ff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px #ebeef5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#e8f4ff;color:#46a6ff}.el-table-filter__list-item.is-active{background-color:#1890ff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-table-filter__bottom button:hover{color:#1890ff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#f2f6fc}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table.is-week-mode .el-date-table__row.current div{background-color:#f2f6fc}.el-date-table td{width:32px;height:30px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#1890ff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#1890ff}.el-date-table td.in-range div{background-color:#f2f6fc}.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#1890ff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#1890ff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#1890ff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #ebeef5}.el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#1890ff;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#1890ff}.el-month-table td.in-range div{background-color:#f2f6fc}.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#1890ff}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#1890ff}.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#1890ff;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover{color:#1890ff}.el-year-table td.current:not(.disabled) .cell{color:#1890ff}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#1890ff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list::after,.el-time-spinner__list::before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active{border-color:#1890ff}.el-range-editor.is-active:hover{border-color:#1890ff}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#1890ff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#1890ff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#1890ff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label:hover{color:#1890ff}.el-date-picker__header-label.active{color:#1890ff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-time-panel{margin:5px 0;border:solid 1px #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:66.6666666667%}.el-time-panel__content.has-seconds::before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#1890ff}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active{border-color:#1890ff}.el-range-editor.is-active:hover{border-color:#1890ff}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#1890ff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#1890ff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#1890ff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label:hover{color:#1890ff}.el-date-picker__header-label.active{color:#1890ff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#1890ff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active{border-color:#1890ff}.el-range-editor.is-active:hover{border-color:#1890ff}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#1890ff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#1890ff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#1890ff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#1890ff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list::after,.el-time-spinner__list::before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:solid 1px #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:66.6666666667%}.el-time-panel__content.has-seconds::before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#1890ff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover:focus,.el-popover:focus:active{outline-width:0}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#1890ff;border-color:#badeff;background-color:#e8f4ff}.el-button:active{color:#1682e6;border-color:#1682e6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#1890ff;color:#1890ff}.el-button.is-plain:active{background:#fff;border-color:#1682e6;color:#1682e6;outline:0}.el-button.is-active{color:#1682e6;border-color:#1682e6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#1890ff;border-color:#1890ff}.el-button--primary:focus,.el-button--primary:hover{background:#46a6ff;border-color:#46a6ff;color:#fff}.el-button--primary:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-active{background:#1682e6;border-color:#1682e6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#8cc8ff;border-color:#8cc8ff}.el-button--primary.is-plain{color:#1890ff;background:#e8f4ff;border-color:#a3d3ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#1890ff;border-color:#1890ff;color:#fff}.el-button--primary.is-plain:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#74bcff;background-color:#e8f4ff;border-color:#d1e9ff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#1890ff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#46a6ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#1682e6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px;padding-bottom:10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#1890ff}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input input.invalid{border-color:#f56c6c}.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#1890ff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px 0}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--medium .el-form-item__content{line-height:36px}.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__content{line-height:32px}.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__content{line-height:28px}.el-form-item--mini.el-form-item{margin-bottom:18px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{border-color:#f56c6c}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#1890ff;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645, .045, .355, 1);transition:-webkit-transform .3s cubic-bezier(.645, .045, .355, 1);transition:transform .3s cubic-bezier(.645, .045, .355, 1);transition:transform .3s cubic-bezier(.645, .045, .355, 1),-webkit-transform .3s cubic-bezier(.645, .045, .355, 1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#1890ff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #1890ff inset;box-shadow:0 0 2px 2px #1890ff inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#1890ff}.el-tabs__item:hover{color:#1890ff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645, .045, .355, 1),padding .3s cubic-bezier(.645, .045, .355, 1);transition:color .3s cubic-bezier(.645, .045, .355, 1),padding .3s cubic-bezier(.645, .045, .355, 1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#1890ff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#1890ff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left::after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{right:0;left:auto}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tag{background-color:#e8f4ff;border-color:#d1e9ff;color:#1890ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#1890ff;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#1890ff}.el-tag .el-tag__close{color:#1890ff}.el-tag .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#1890ff;border-color:#1890ff;color:#fff}.el-tag--dark.is-hit{border-color:#1890ff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#46a6ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#a3d3ff;color:#1890ff}.el-tag--plain.is-hit{border-color:#1890ff}.el-tag--plain .el-tag__close{color:#1890ff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#1890ff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#1890ff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#1890ff}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in 50ms;transition:-webkit-transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms,-webkit-transform .15s ease-in 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#1890ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #74bcff;box-shadow:-1px 0 0 0 #74bcff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#1890ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#1890ff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#1890ff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#1890ff;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#edf6ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn{color:#fff}.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-notification-fade-leave-active{opacity:0}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#1890ff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#1890ff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px 0}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-slider::after,.el-slider::before{display:table;content:""}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1)}.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging{cursor:not-allowed}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#1890ff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-slider__button-wrapper .el-tooltip{vertical-align:middle;display:inline-block}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:solid 2px #1890ff;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#1890ff}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#1890ff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#1890FF;stroke-linecap:round}.el-loading-spinner i{color:#1890ff}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table;content:""}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-col-0{display:none}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{position:relative;left:0}.el-col-1{width:4.1666666667%}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{position:relative;left:4.1666666667%}.el-col-2{width:8.3333333333%}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{position:relative;left:8.3333333333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{width:16.6666666667%}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{position:relative;left:16.6666666667%}.el-col-5{width:20.8333333333%}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{position:relative;left:20.8333333333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{width:29.1666666667%}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{position:relative;left:29.1666666667%}.el-col-8{width:33.3333333333%}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{position:relative;left:33.3333333333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{width:41.6666666667%}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{position:relative;left:41.6666666667%}.el-col-11{width:45.8333333333%}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{position:relative;left:45.8333333333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{width:54.1666666667%}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{position:relative;left:54.1666666667%}.el-col-14{width:58.3333333333%}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{position:relative;left:58.3333333333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{width:66.6666666667%}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{position:relative;left:66.6666666667%}.el-col-17{width:70.8333333333%}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{position:relative;left:70.8333333333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{width:79.1666666667%}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{position:relative;left:79.1666666667%}.el-col-20{width:83.3333333333%}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{position:relative;left:83.3333333333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{width:91.6666666667%}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{position:relative;left:91.6666666667%}.el-col-23{width:95.8333333333%}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{position:relative;left:95.8333333333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none}.el-col-xs-0{width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.1666666667%}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{position:relative;left:4.1666666667%}.el-col-xs-2{width:8.3333333333%}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{position:relative;left:8.3333333333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.6666666667%}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{position:relative;left:16.6666666667%}.el-col-xs-5{width:20.8333333333%}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{position:relative;left:20.8333333333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.1666666667%}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{position:relative;left:29.1666666667%}.el-col-xs-8{width:33.3333333333%}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{position:relative;left:33.3333333333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.6666666667%}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{position:relative;left:41.6666666667%}.el-col-xs-11{width:45.8333333333%}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{position:relative;left:45.8333333333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.1666666667%}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{position:relative;left:54.1666666667%}.el-col-xs-14{width:58.3333333333%}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{position:relative;left:58.3333333333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.6666666667%}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{position:relative;left:66.6666666667%}.el-col-xs-17{width:70.8333333333%}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{position:relative;left:70.8333333333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.1666666667%}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{position:relative;left:79.1666666667%}.el-col-xs-20{width:83.3333333333%}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{position:relative;left:83.3333333333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.6666666667%}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{position:relative;left:91.6666666667%}.el-col-xs-23{width:95.8333333333%}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{position:relative;left:95.8333333333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none}.el-col-sm-0{width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.1666666667%}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{position:relative;left:4.1666666667%}.el-col-sm-2{width:8.3333333333%}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{position:relative;left:8.3333333333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.6666666667%}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{position:relative;left:16.6666666667%}.el-col-sm-5{width:20.8333333333%}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{position:relative;left:20.8333333333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.1666666667%}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{position:relative;left:29.1666666667%}.el-col-sm-8{width:33.3333333333%}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{position:relative;left:33.3333333333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.6666666667%}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{position:relative;left:41.6666666667%}.el-col-sm-11{width:45.8333333333%}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{position:relative;left:45.8333333333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.1666666667%}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{position:relative;left:54.1666666667%}.el-col-sm-14{width:58.3333333333%}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{position:relative;left:58.3333333333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.6666666667%}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{position:relative;left:66.6666666667%}.el-col-sm-17{width:70.8333333333%}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{position:relative;left:70.8333333333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.1666666667%}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{position:relative;left:79.1666666667%}.el-col-sm-20{width:83.3333333333%}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{position:relative;left:83.3333333333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.6666666667%}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{position:relative;left:91.6666666667%}.el-col-sm-23{width:95.8333333333%}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{position:relative;left:95.8333333333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none}.el-col-md-0{width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.1666666667%}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{position:relative;left:4.1666666667%}.el-col-md-2{width:8.3333333333%}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{position:relative;left:8.3333333333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.6666666667%}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{position:relative;left:16.6666666667%}.el-col-md-5{width:20.8333333333%}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{position:relative;left:20.8333333333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.1666666667%}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{position:relative;left:29.1666666667%}.el-col-md-8{width:33.3333333333%}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{position:relative;left:33.3333333333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.6666666667%}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{position:relative;left:41.6666666667%}.el-col-md-11{width:45.8333333333%}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{position:relative;left:45.8333333333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.1666666667%}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{position:relative;left:54.1666666667%}.el-col-md-14{width:58.3333333333%}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{position:relative;left:58.3333333333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.6666666667%}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{position:relative;left:66.6666666667%}.el-col-md-17{width:70.8333333333%}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{position:relative;left:70.8333333333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.1666666667%}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{position:relative;left:79.1666666667%}.el-col-md-20{width:83.3333333333%}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{position:relative;left:83.3333333333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.6666666667%}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{position:relative;left:91.6666666667%}.el-col-md-23{width:95.8333333333%}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{position:relative;left:95.8333333333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none}.el-col-lg-0{width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.1666666667%}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{position:relative;left:4.1666666667%}.el-col-lg-2{width:8.3333333333%}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{position:relative;left:8.3333333333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.6666666667%}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{position:relative;left:16.6666666667%}.el-col-lg-5{width:20.8333333333%}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{position:relative;left:20.8333333333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.1666666667%}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{position:relative;left:29.1666666667%}.el-col-lg-8{width:33.3333333333%}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{position:relative;left:33.3333333333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.6666666667%}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{position:relative;left:41.6666666667%}.el-col-lg-11{width:45.8333333333%}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{position:relative;left:45.8333333333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.1666666667%}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{position:relative;left:54.1666666667%}.el-col-lg-14{width:58.3333333333%}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{position:relative;left:58.3333333333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.6666666667%}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{position:relative;left:66.6666666667%}.el-col-lg-17{width:70.8333333333%}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{position:relative;left:70.8333333333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.1666666667%}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{position:relative;left:79.1666666667%}.el-col-lg-20{width:83.3333333333%}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{position:relative;left:83.3333333333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.6666666667%}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{position:relative;left:91.6666666667%}.el-col-lg-23{width:95.8333333333%}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{position:relative;left:95.8333333333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none}.el-col-xl-0{width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.1666666667%}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{position:relative;left:4.1666666667%}.el-col-xl-2{width:8.3333333333%}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{position:relative;left:8.3333333333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.6666666667%}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{position:relative;left:16.6666666667%}.el-col-xl-5{width:20.8333333333%}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{position:relative;left:20.8333333333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.1666666667%}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{position:relative;left:29.1666666667%}.el-col-xl-8{width:33.3333333333%}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{position:relative;left:33.3333333333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.6666666667%}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{position:relative;left:41.6666666667%}.el-col-xl-11{width:45.8333333333%}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{position:relative;left:45.8333333333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.1666666667%}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{position:relative;left:54.1666666667%}.el-col-xl-14{width:58.3333333333%}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{position:relative;left:58.3333333333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.6666666667%}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{position:relative;left:66.6666666667%}.el-col-xl-17{width:70.8333333333%}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{position:relative;left:70.8333333333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.1666666667%}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{position:relative;left:79.1666666667%}.el-col-xl-20{width:83.3333333333%}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{position:relative;left:83.3333333333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.6666666667%}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{position:relative;left:91.6666666667%}.el-col-xl-23{width:95.8333333333%}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{position:relative;left:95.8333333333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#1890ff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover{border-color:#1890ff;color:#1890ff}.el-upload:focus{border-color:#1890ff;color:#1890ff}.el-upload:focus .el-upload-dragger{border-color:#1890ff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#1890ff;font-style:normal}.el-upload-dragger:hover{border-color:#1890ff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #1890ff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55, 0, .1, 1);transition:all .5s cubic-bezier(.55, 0, .1, 1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#1890ff}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#1890ff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#1890ff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);margin-top:60px}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#1890ff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#1890ff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{display:inline-block;position:relative;font-size:0;vertical-align:middle}.el-rate__icon{position:relative;display:inline-block;font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#1890ff;border-color:#1890ff}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#1890ff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#1890ff}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head{text-align:center}.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#1890ff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.7692307692}.el-collapse-item:last-child{margin-bottom:-1px}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#e8f4ff;border-color:#d1e9ff;color:#1890ff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#1890ff;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#1890ff}.el-tag .el-tag__close{color:#1890ff}.el-tag .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#1890ff;border-color:#1890ff;color:#fff}.el-tag--dark.is-hit{border-color:#1890ff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#46a6ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#a3d3ff;color:#1890ff}.el-tag--plain.is-hit{border-color:#1890ff}.el-tag--plain .el-tag__close{color:#1890ff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#1890ff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#1890ff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#1890ff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#1890ff}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in 50ms;transition:-webkit-transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms,-webkit-transform .15s ease-in 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#1890ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #74bcff;box-shadow:-1px 0 0 0 #74bcff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#1890ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#1890ff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio{color:#606266;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;margin-right:30px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#1890ff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__label{font-size:12px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#1890ff;background:#1890ff}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#1890ff}.el-radio__input.is-focus .el-radio__inner{border-color:#1890ff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#1890ff}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #1890ff;box-shadow:0 0 2px 2px #1890ff}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:solid 1px #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#1890ff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:focus{border-color:#1890ff}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader .el-input.is-focus .el-input__inner{border-color:#1890ff}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:solid 1px #e4e7ed;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#1890ff;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-moz-placeholder{color:#c0c4cc}.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #1890ff;box-shadow:0 0 3px 2px #1890ff}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#1890ff;border-color:#1890ff}.el-color-dropdown__link-btn{cursor:pointer;color:#1890ff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#1890ff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;color:#999;position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;position:absolute;width:100%;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#fff;text-align:center;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#1890ff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#1890ff}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#1890ff}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#1890ff;border-color:#badeff;background-color:#e8f4ff}.el-button:active{color:#1682e6;border-color:#1682e6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#1890ff;color:#1890ff}.el-button.is-plain:active{background:#fff;border-color:#1682e6;color:#1682e6;outline:0}.el-button.is-active{color:#1682e6;border-color:#1682e6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#1890ff;border-color:#1890ff}.el-button--primary:focus,.el-button--primary:hover{background:#46a6ff;border-color:#46a6ff;color:#fff}.el-button--primary:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-active{background:#1682e6;border-color:#1682e6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#8cc8ff;border-color:#8cc8ff}.el-button--primary.is-plain{color:#1890ff;background:#e8f4ff;border-color:#a3d3ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#1890ff;border-color:#1890ff;color:#fff}.el-button--primary.is-plain:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#74bcff;background-color:#e8f4ff;border-color:#d1e9ff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#1890ff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#46a6ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#1682e6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#1890ff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#1890ff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#1890ff}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in 50ms;transition:-webkit-transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms,-webkit-transform .15s ease-in 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#1890ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #74bcff;box-shadow:-1px 0 0 0 #74bcff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#1890ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#1890ff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#1890ff;font-size:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#1890ff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#1890ff}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;cursor:pointer;padding:0;font-size:14px;font-weight:500}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #1890ff}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#1890ff}.el-link.el-link--default:after{border-color:#1890ff}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#1890ff}.el-link.el-link--primary:hover{color:#46a6ff}.el-link.el-link--primary:after{border-color:#1890ff}.el-link.el-link--primary.is-disabled{color:#8cc8ff}.el-link.el-link--primary.is-underline:hover:after{border-color:#1890ff}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--danger.is-underline:hover:after{border-color:#f56c6c}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--success.is-underline:hover:after{border-color:#67c23a}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--warning.is-underline:hover:after{border-color:#e6a23c}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-link.el-link--info.is-underline:hover:after{border-color:#909399}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;font-weight:500;color:#303133;font-size:14px}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__placeholder{background:#f5f7fa}.el-image__error{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;background:#f5f7fa;color:#c0c4cc;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__prev{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;left:40px}.el-image-viewer__next{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#1890ff;border-color:#badeff;background-color:#e8f4ff}.el-button:active{color:#1682e6;border-color:#1682e6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#1890ff;color:#1890ff}.el-button.is-plain:active{background:#fff;border-color:#1682e6;color:#1682e6;outline:0}.el-button.is-active{color:#1682e6;border-color:#1682e6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#1890ff;border-color:#1890ff}.el-button--primary:focus,.el-button--primary:hover{background:#46a6ff;border-color:#46a6ff;color:#fff}.el-button--primary:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-active{background:#1682e6;border-color:#1682e6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#8cc8ff;border-color:#8cc8ff}.el-button--primary.is-plain{color:#1890ff;background:#e8f4ff;border-color:#a3d3ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#1890ff;border-color:#1890ff;color:#fff}.el-button--primary.is-plain:active{background:#1682e6;border-color:#1682e6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#74bcff;background-color:#e8f4ff;border-color:#d1e9ff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#1890ff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#46a6ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#1682e6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table td.is-today{color:#1890ff}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;color:#1890ff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#dcdfe6}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#1890ff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#1890ff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1890ff;border-color:#1890ff}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:"";position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#1890ff}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in 50ms;transition:-webkit-transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms;transition:transform .15s ease-in 50ms,-webkit-transform .15s ease-in 50ms;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#1890ff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#1890ff;border-color:#1890ff;-webkit-box-shadow:-1px 0 0 0 #74bcff;box-shadow:-1px 0 0 0 #74bcff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#1890ff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#1890ff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio{color:#606266;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;margin-right:30px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#1890ff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__label{font-size:12px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#1890ff;background:#1890ff}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#1890ff}.el-radio__input.is-focus .el-radio__inner{border-color:#1890ff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#1890ff}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #1890ff;box-shadow:0 0 2px 2px #1890ff}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:solid 1px #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#1890ff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px;padding-bottom:0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer__container{position:relative;left:0;right:0;top:0;bottom:0;height:100%;width:100%}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#DCDDE0;width:22%;height:22%}@-webkit-keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;-webkit-animation:el-skeleton-loading 1.4s ease infinite;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#DCDDE0;width:22%;height:22%}.el-empty{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#DCDDE0;width:100%;height:100%;vertical-align:top}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom{margin-top:20px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:-webkit-box;display:-ms-flexbox;display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-descriptions-item__label.has-colon::after{content:":";position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-descriptions{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions__body{color:#606266;background-color:#fff}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #ebeef5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small{font-size:12px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini{font-size:12px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:-webkit-box;display:-ms-flexbox;display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-descriptions-item__label.has-colon::after{content:":";position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title{margin-top:20px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#67C23A}.el-result .icon-error{fill:#F56C6C}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#E6A23C} \ No newline at end of file diff --git a/src/assets/bigScreen/css/variable.scss b/src/assets/bigScreen/css/variable.scss new file mode 100644 index 0000000..6541052 --- /dev/null +++ b/src/assets/bigScreen/css/variable.scss @@ -0,0 +1,50 @@ +// 颜色 +$primary-color: #1890ff; +$primary-color-hl: rgb(41, 52, 67); +$default-color: #006569; +$link: #1890ff; +$active-color: rgb(0, 101, 105); +$del-color: #ff1839; +$content-background: #f3f5fa; +$table-header-background: #d8eaff; + +$primary-color-rgba: rgba($color: $primary-color, + $alpha: 0.1, +); +//表格上面button按钮颜色 +$table-header-button: #18d1ff; +// 阴影 +$primary-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), +0 0 6px rgba(0, 0, 0, 0.04); +$primary-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1); +$baidu-shadow: 1px 2px 1px rgba(0, 0, 0, 0.15); +$gaode-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.2), +0 2px 6px 0 rgba(0, 0, 0, 0.19); + +// box-shadow: 0 2px 6px 0 rgb(114 124 245 / 50%); + +$primary-border: $primary-color solid 1px; + +$tool-top: 20px; + +//header 的高度 +$index-height: 60px; +$index-content-height: calc(100% - 60px); +$index-tags-height: 36px; +// 宽度侧边栏 +$aside-width: 200px; +$content-padding: 16px; + +$default-zindex: 99; + +/*文本格式化,超出范围,显示省略号*/ +@mixin text-overflow($num: 1) { + word-break: break-all; + text-overflow: ellipsis; + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: $num; + -webkit-box-orient: vertical; +} + + diff --git a/src/assets/bigScreen/css/webfont/index.css b/src/assets/bigScreen/css/webfont/index.css new file mode 100644 index 0000000..e1f0487 --- /dev/null +++ b/src/assets/bigScreen/css/webfont/index.css @@ -0,0 +1,18 @@ +/* @font-face { + font-family: 'webfont'; + font-display: swap; + src: url('//at.alicdn.com/t/webfont_c14qx7m7htb.eot'); + src: + url('//at.alicdn.com/t/webfont_c14qx7m7htb.woff2') format('woff2'), + url('//at.alicdn.com/t/webfont_c14qx7m7htb.woff') format('woff'), + + + } + +.number-font{ + font-family:"webfont" !important; + font-size:16px;font-style:normal; + -webkit-font-smoothing: antialiased; + -webkit-text-stroke-width: 0.2px; + -moz-osx-font-smoothing: grayscale; +} */ \ No newline at end of file diff --git a/src/assets/bigScreen/iconfont/iconfont.css b/src/assets/bigScreen/iconfont/iconfont.css new file mode 100644 index 0000000..f043473 --- /dev/null +++ b/src/assets/bigScreen/iconfont/iconfont.css @@ -0,0 +1,23 @@ +@font-face { + font-family: "iconfont"; /* Project id 2995337 */ + src: url('iconfont.woff2?t=1638871675242') format('woff2'), + url('iconfont.woff?t=1638871675242') format('woff'), + url('iconfont.ttf?t=1638871675242') format('truetype'); +} + +/* .iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} */ + +.blq-icon-shezhi01:before { + content: "\e610"; +} + +.blq-icon-shezhi02:before { + content: "\e611"; +} + diff --git a/src/assets/bigScreen/iconfont/iconfont.ttf b/src/assets/bigScreen/iconfont/iconfont.ttf new file mode 100644 index 0000000..4846ee3 Binary files /dev/null and b/src/assets/bigScreen/iconfont/iconfont.ttf differ diff --git a/src/assets/bigScreen/iconfont/iconfont.woff b/src/assets/bigScreen/iconfont/iconfont.woff new file mode 100644 index 0000000..a4600dc Binary files /dev/null and b/src/assets/bigScreen/iconfont/iconfont.woff differ diff --git a/src/assets/bigScreen/iconfont/iconfont.woff2 b/src/assets/bigScreen/iconfont/iconfont.woff2 new file mode 100644 index 0000000..8154396 Binary files /dev/null and b/src/assets/bigScreen/iconfont/iconfont.woff2 differ diff --git a/src/assets/bigScreen/img/guang.png b/src/assets/bigScreen/img/guang.png new file mode 100644 index 0000000..3c49e9d Binary files /dev/null and b/src/assets/bigScreen/img/guang.png differ diff --git a/src/assets/bigScreen/img/headers/juxing1.png b/src/assets/bigScreen/img/headers/juxing1.png new file mode 100644 index 0000000..36d901a Binary files /dev/null and b/src/assets/bigScreen/img/headers/juxing1.png differ diff --git a/src/assets/bigScreen/img/headers/juxing2.png b/src/assets/bigScreen/img/headers/juxing2.png new file mode 100644 index 0000000..5c99bd7 Binary files /dev/null and b/src/assets/bigScreen/img/headers/juxing2.png differ diff --git a/src/assets/bigScreen/img/titles/you.png b/src/assets/bigScreen/img/titles/you.png new file mode 100644 index 0000000..3877b31 Binary files /dev/null and b/src/assets/bigScreen/img/titles/you.png differ diff --git a/src/assets/bigScreen/img/titles/zuo.png b/src/assets/bigScreen/img/titles/zuo.png new file mode 100644 index 0000000..b3b355d Binary files /dev/null and b/src/assets/bigScreen/img/titles/zuo.png differ diff --git a/src/assets/bigScreen/img/top.png b/src/assets/bigScreen/img/top.png new file mode 100644 index 0000000..8c0be6b Binary files /dev/null and b/src/assets/bigScreen/img/top.png differ diff --git a/src/assets/bigScreen/img/xieyou.png b/src/assets/bigScreen/img/xieyou.png new file mode 100644 index 0000000..1744fae Binary files /dev/null and b/src/assets/bigScreen/img/xieyou.png differ diff --git a/src/assets/bigScreen/img/xiezuo.png b/src/assets/bigScreen/img/xiezuo.png new file mode 100644 index 0000000..272249d Binary files /dev/null and b/src/assets/bigScreen/img/xiezuo.png differ diff --git a/src/assets/bigScreen/img/zuo_xuxian.png b/src/assets/bigScreen/img/zuo_xuxian.png new file mode 100644 index 0000000..e54d037 Binary files /dev/null and b/src/assets/bigScreen/img/zuo_xuxian.png differ diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js new file mode 100644 index 0000000..2c6b309 --- /dev/null +++ b/src/assets/icons/index.js @@ -0,0 +1,9 @@ +import Vue from 'vue' +import SvgIcon from '@/components/SvgIcon'// svg component + +// register globally +Vue.component('svg-icon', SvgIcon) + +const req = require.context('./svg', false, /\.svg$/) +const requireAll = requireContext => requireContext.keys().map(requireContext) +requireAll(req) diff --git a/src/assets/icons/svg/404.svg b/src/assets/icons/svg/404.svg new file mode 100644 index 0000000..6df5019 --- /dev/null +++ b/src/assets/icons/svg/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/alert.svg b/src/assets/icons/svg/alert.svg new file mode 100644 index 0000000..c4c365e --- /dev/null +++ b/src/assets/icons/svg/alert.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/arrow-left.svg b/src/assets/icons/svg/arrow-left.svg new file mode 100644 index 0000000..d093665 --- /dev/null +++ b/src/assets/icons/svg/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/authenticate.svg b/src/assets/icons/svg/authenticate.svg new file mode 100644 index 0000000..87125e0 --- /dev/null +++ b/src/assets/icons/svg/authenticate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/big.svg b/src/assets/icons/svg/big.svg new file mode 100644 index 0000000..f3dd9ca --- /dev/null +++ b/src/assets/icons/svg/big.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/bug.svg b/src/assets/icons/svg/bug.svg new file mode 100644 index 0000000..05a150d --- /dev/null +++ b/src/assets/icons/svg/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/build.svg b/src/assets/icons/svg/build.svg new file mode 100644 index 0000000..97c4688 --- /dev/null +++ b/src/assets/icons/svg/build.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/button.svg b/src/assets/icons/svg/button.svg new file mode 100644 index 0000000..904fddc --- /dev/null +++ b/src/assets/icons/svg/button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/cascader.svg b/src/assets/icons/svg/cascader.svg new file mode 100644 index 0000000..e256024 --- /dev/null +++ b/src/assets/icons/svg/cascader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/category.svg b/src/assets/icons/svg/category.svg new file mode 100644 index 0000000..42986df --- /dev/null +++ b/src/assets/icons/svg/category.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/channel.svg b/src/assets/icons/svg/channel.svg new file mode 100644 index 0000000..2ef1877 --- /dev/null +++ b/src/assets/icons/svg/channel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/chart.svg b/src/assets/icons/svg/chart.svg new file mode 100644 index 0000000..27728fb --- /dev/null +++ b/src/assets/icons/svg/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/checkbox.svg b/src/assets/icons/svg/checkbox.svg new file mode 100644 index 0000000..013fd3a --- /dev/null +++ b/src/assets/icons/svg/checkbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/client.svg b/src/assets/icons/svg/client.svg new file mode 100644 index 0000000..a8a9f9c --- /dev/null +++ b/src/assets/icons/svg/client.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/clipboard.svg b/src/assets/icons/svg/clipboard.svg new file mode 100644 index 0000000..90923ff --- /dev/null +++ b/src/assets/icons/svg/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/cloud.svg b/src/assets/icons/svg/cloud.svg new file mode 100644 index 0000000..9fa24c8 --- /dev/null +++ b/src/assets/icons/svg/cloud.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/code.svg b/src/assets/icons/svg/code.svg new file mode 100644 index 0000000..ed4d23c --- /dev/null +++ b/src/assets/icons/svg/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/color.svg b/src/assets/icons/svg/color.svg new file mode 100644 index 0000000..44a81aa --- /dev/null +++ b/src/assets/icons/svg/color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/component.svg b/src/assets/icons/svg/component.svg new file mode 100644 index 0000000..29c3458 --- /dev/null +++ b/src/assets/icons/svg/component.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/connect.svg b/src/assets/icons/svg/connect.svg new file mode 100644 index 0000000..edd1f2f --- /dev/null +++ b/src/assets/icons/svg/connect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/dashboard.svg b/src/assets/icons/svg/dashboard.svg new file mode 100644 index 0000000..5317d37 --- /dev/null +++ b/src/assets/icons/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/date-range.svg b/src/assets/icons/svg/date-range.svg new file mode 100644 index 0000000..fda571e --- /dev/null +++ b/src/assets/icons/svg/date-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/date.svg b/src/assets/icons/svg/date.svg new file mode 100644 index 0000000..52dc73e --- /dev/null +++ b/src/assets/icons/svg/date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/device.svg b/src/assets/icons/svg/device.svg new file mode 100644 index 0000000..032ac5a --- /dev/null +++ b/src/assets/icons/svg/device.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/dict.svg b/src/assets/icons/svg/dict.svg new file mode 100644 index 0000000..4849377 --- /dev/null +++ b/src/assets/icons/svg/dict.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/disconnect.svg b/src/assets/icons/svg/disconnect.svg new file mode 100644 index 0000000..19a01b2 --- /dev/null +++ b/src/assets/icons/svg/disconnect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/documentation.svg b/src/assets/icons/svg/documentation.svg new file mode 100644 index 0000000..7043122 --- /dev/null +++ b/src/assets/icons/svg/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/download.svg b/src/assets/icons/svg/download.svg new file mode 100644 index 0000000..c896951 --- /dev/null +++ b/src/assets/icons/svg/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/drag.svg b/src/assets/icons/svg/drag.svg new file mode 100644 index 0000000..4185d3c --- /dev/null +++ b/src/assets/icons/svg/drag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/druid.svg b/src/assets/icons/svg/druid.svg new file mode 100644 index 0000000..a2b4b4e --- /dev/null +++ b/src/assets/icons/svg/druid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/dueros.svg b/src/assets/icons/svg/dueros.svg new file mode 100644 index 0000000..2cecd7c --- /dev/null +++ b/src/assets/icons/svg/dueros.svg @@ -0,0 +1,28 @@ + + + + + + + + + + diff --git a/src/assets/icons/svg/edit.svg b/src/assets/icons/svg/edit.svg new file mode 100644 index 0000000..d26101f --- /dev/null +++ b/src/assets/icons/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/education.svg b/src/assets/icons/svg/education.svg new file mode 100644 index 0000000..7bfb01d --- /dev/null +++ b/src/assets/icons/svg/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/email.svg b/src/assets/icons/svg/email.svg new file mode 100644 index 0000000..74d25e2 --- /dev/null +++ b/src/assets/icons/svg/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/event-a.svg b/src/assets/icons/svg/event-a.svg new file mode 100644 index 0000000..7faf66a --- /dev/null +++ b/src/assets/icons/svg/event-a.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/example.svg b/src/assets/icons/svg/example.svg new file mode 100644 index 0000000..46f42b5 --- /dev/null +++ b/src/assets/icons/svg/example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/excel.svg b/src/assets/icons/svg/excel.svg new file mode 100644 index 0000000..74d97b8 --- /dev/null +++ b/src/assets/icons/svg/excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/exit-fullscreen.svg b/src/assets/icons/svg/exit-fullscreen.svg new file mode 100644 index 0000000..485c128 --- /dev/null +++ b/src/assets/icons/svg/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/eye-open.svg b/src/assets/icons/svg/eye-open.svg new file mode 100644 index 0000000..88dcc98 --- /dev/null +++ b/src/assets/icons/svg/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/eye.svg b/src/assets/icons/svg/eye.svg new file mode 100644 index 0000000..16ed2d8 --- /dev/null +++ b/src/assets/icons/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/firmware.svg b/src/assets/icons/svg/firmware.svg new file mode 100644 index 0000000..2803430 --- /dev/null +++ b/src/assets/icons/svg/firmware.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/form.svg b/src/assets/icons/svg/form.svg new file mode 100644 index 0000000..dcbaa18 --- /dev/null +++ b/src/assets/icons/svg/form.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/fullscreen.svg b/src/assets/icons/svg/fullscreen.svg new file mode 100644 index 0000000..0e86b6f --- /dev/null +++ b/src/assets/icons/svg/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/github.svg b/src/assets/icons/svg/github.svg new file mode 100644 index 0000000..db0a0d4 --- /dev/null +++ b/src/assets/icons/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/group.svg b/src/assets/icons/svg/group.svg new file mode 100644 index 0000000..240f968 --- /dev/null +++ b/src/assets/icons/svg/group.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/guide.svg b/src/assets/icons/svg/guide.svg new file mode 100644 index 0000000..b271001 --- /dev/null +++ b/src/assets/icons/svg/guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/icon.svg b/src/assets/icons/svg/icon.svg new file mode 100644 index 0000000..82be8ee --- /dev/null +++ b/src/assets/icons/svg/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/input.svg b/src/assets/icons/svg/input.svg new file mode 100644 index 0000000..ab91381 --- /dev/null +++ b/src/assets/icons/svg/input.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/international.svg b/src/assets/icons/svg/international.svg new file mode 100644 index 0000000..e9b56ee --- /dev/null +++ b/src/assets/icons/svg/international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/iot.svg b/src/assets/icons/svg/iot.svg new file mode 100644 index 0000000..e3ab00d --- /dev/null +++ b/src/assets/icons/svg/iot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/job.svg b/src/assets/icons/svg/job.svg new file mode 100644 index 0000000..2a93a25 --- /dev/null +++ b/src/assets/icons/svg/job.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/language.svg b/src/assets/icons/svg/language.svg new file mode 100644 index 0000000..0082b57 --- /dev/null +++ b/src/assets/icons/svg/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/link.svg b/src/assets/icons/svg/link.svg new file mode 100644 index 0000000..48197ba --- /dev/null +++ b/src/assets/icons/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/linkage.svg b/src/assets/icons/svg/linkage.svg new file mode 100644 index 0000000..e505a5a --- /dev/null +++ b/src/assets/icons/svg/linkage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/list.svg b/src/assets/icons/svg/list.svg new file mode 100644 index 0000000..20259ed --- /dev/null +++ b/src/assets/icons/svg/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/listener.svg b/src/assets/icons/svg/listener.svg new file mode 100644 index 0000000..afad0b8 --- /dev/null +++ b/src/assets/icons/svg/listener.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/live.svg b/src/assets/icons/svg/live.svg new file mode 100644 index 0000000..aeed8b3 --- /dev/null +++ b/src/assets/icons/svg/live.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/live1.svg b/src/assets/icons/svg/live1.svg new file mode 100644 index 0000000..e4f3624 --- /dev/null +++ b/src/assets/icons/svg/live1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/lock.svg b/src/assets/icons/svg/lock.svg new file mode 100644 index 0000000..74fee54 --- /dev/null +++ b/src/assets/icons/svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/log-a.svg b/src/assets/icons/svg/log-a.svg new file mode 100644 index 0000000..6cdd85d --- /dev/null +++ b/src/assets/icons/svg/log-a.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/log.svg b/src/assets/icons/svg/log.svg new file mode 100644 index 0000000..d879d33 --- /dev/null +++ b/src/assets/icons/svg/log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/logininfor.svg b/src/assets/icons/svg/logininfor.svg new file mode 100644 index 0000000..267f844 --- /dev/null +++ b/src/assets/icons/svg/logininfor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/message.svg b/src/assets/icons/svg/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/src/assets/icons/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/model.svg b/src/assets/icons/svg/model.svg new file mode 100644 index 0000000..2acc40d --- /dev/null +++ b/src/assets/icons/svg/model.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/money.svg b/src/assets/icons/svg/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/src/assets/icons/svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/monitor-a.svg b/src/assets/icons/svg/monitor-a.svg new file mode 100644 index 0000000..07a4cf1 --- /dev/null +++ b/src/assets/icons/svg/monitor-a.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/monitor.svg b/src/assets/icons/svg/monitor.svg new file mode 100644 index 0000000..bc308cb --- /dev/null +++ b/src/assets/icons/svg/monitor.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/mq.svg b/src/assets/icons/svg/mq.svg new file mode 100644 index 0000000..ba9dd10 --- /dev/null +++ b/src/assets/icons/svg/mq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/nested.svg b/src/assets/icons/svg/nested.svg new file mode 100644 index 0000000..06713a8 --- /dev/null +++ b/src/assets/icons/svg/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/notify_channel.svg b/src/assets/icons/svg/notify_channel.svg new file mode 100644 index 0000000..e0410d7 --- /dev/null +++ b/src/assets/icons/svg/notify_channel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/notify_log.svg b/src/assets/icons/svg/notify_log.svg new file mode 100644 index 0000000..4620b17 --- /dev/null +++ b/src/assets/icons/svg/notify_log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/number.svg b/src/assets/icons/svg/number.svg new file mode 100644 index 0000000..ad5ce9a --- /dev/null +++ b/src/assets/icons/svg/number.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/online.svg b/src/assets/icons/svg/online.svg new file mode 100644 index 0000000..330a202 --- /dev/null +++ b/src/assets/icons/svg/online.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/ota.svg b/src/assets/icons/svg/ota.svg new file mode 100644 index 0000000..5a85d34 --- /dev/null +++ b/src/assets/icons/svg/ota.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/password.svg b/src/assets/icons/svg/password.svg new file mode 100644 index 0000000..6c64def --- /dev/null +++ b/src/assets/icons/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/pdf.svg b/src/assets/icons/svg/pdf.svg new file mode 100644 index 0000000..957aa0c --- /dev/null +++ b/src/assets/icons/svg/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/people.svg b/src/assets/icons/svg/people.svg new file mode 100644 index 0000000..2bd54ae --- /dev/null +++ b/src/assets/icons/svg/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/peoples.svg b/src/assets/icons/svg/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/src/assets/icons/svg/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/phone.svg b/src/assets/icons/svg/phone.svg new file mode 100644 index 0000000..ab8e8c4 --- /dev/null +++ b/src/assets/icons/svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/plugin.svg b/src/assets/icons/svg/plugin.svg new file mode 100644 index 0000000..4e977d7 --- /dev/null +++ b/src/assets/icons/svg/plugin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/post.svg b/src/assets/icons/svg/post.svg new file mode 100644 index 0000000..2922c61 --- /dev/null +++ b/src/assets/icons/svg/post.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/product.svg b/src/assets/icons/svg/product.svg new file mode 100644 index 0000000..d21c806 --- /dev/null +++ b/src/assets/icons/svg/product.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/qq.svg b/src/assets/icons/svg/qq.svg new file mode 100644 index 0000000..ee13d4e --- /dev/null +++ b/src/assets/icons/svg/qq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/qrcode.svg b/src/assets/icons/svg/qrcode.svg new file mode 100644 index 0000000..ae4e80d --- /dev/null +++ b/src/assets/icons/svg/qrcode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/question.svg b/src/assets/icons/svg/question.svg new file mode 100644 index 0000000..cf75bd4 --- /dev/null +++ b/src/assets/icons/svg/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/questionMark.svg b/src/assets/icons/svg/questionMark.svg new file mode 100644 index 0000000..02989ed --- /dev/null +++ b/src/assets/icons/svg/questionMark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/radio.svg b/src/assets/icons/svg/radio.svg new file mode 100644 index 0000000..0cde345 --- /dev/null +++ b/src/assets/icons/svg/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/rate.svg b/src/assets/icons/svg/rate.svg new file mode 100644 index 0000000..aa3b14d --- /dev/null +++ b/src/assets/icons/svg/rate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/receiver.svg b/src/assets/icons/svg/receiver.svg new file mode 100644 index 0000000..065135e --- /dev/null +++ b/src/assets/icons/svg/receiver.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/redis-list.svg b/src/assets/icons/svg/redis-list.svg new file mode 100644 index 0000000..98a15b2 --- /dev/null +++ b/src/assets/icons/svg/redis-list.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/redis.svg b/src/assets/icons/svg/redis.svg new file mode 100644 index 0000000..2f1d62d --- /dev/null +++ b/src/assets/icons/svg/redis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/row.svg b/src/assets/icons/svg/row.svg new file mode 100644 index 0000000..0780992 --- /dev/null +++ b/src/assets/icons/svg/row.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/scene.svg b/src/assets/icons/svg/scene.svg new file mode 100644 index 0000000..af2d628 --- /dev/null +++ b/src/assets/icons/svg/scene.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/search.svg b/src/assets/icons/svg/search.svg new file mode 100644 index 0000000..84233dd --- /dev/null +++ b/src/assets/icons/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/select.svg b/src/assets/icons/svg/select.svg new file mode 100644 index 0000000..d628382 --- /dev/null +++ b/src/assets/icons/svg/select.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/server.svg b/src/assets/icons/svg/server.svg new file mode 100644 index 0000000..ca37b00 --- /dev/null +++ b/src/assets/icons/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/share.svg b/src/assets/icons/svg/share.svg new file mode 100644 index 0000000..6e6ea34 --- /dev/null +++ b/src/assets/icons/svg/share.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/shopping.svg b/src/assets/icons/svg/shopping.svg new file mode 100644 index 0000000..87513e7 --- /dev/null +++ b/src/assets/icons/svg/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/size.svg b/src/assets/icons/svg/size.svg new file mode 100644 index 0000000..ddb25b8 --- /dev/null +++ b/src/assets/icons/svg/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/skill.svg b/src/assets/icons/svg/skill.svg new file mode 100644 index 0000000..a3b7312 --- /dev/null +++ b/src/assets/icons/svg/skill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/slider.svg b/src/assets/icons/svg/slider.svg new file mode 100644 index 0000000..fbe4f39 --- /dev/null +++ b/src/assets/icons/svg/slider.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/small.svg b/src/assets/icons/svg/small.svg new file mode 100644 index 0000000..a27b800 --- /dev/null +++ b/src/assets/icons/svg/small.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/smscode.svg b/src/assets/icons/svg/smscode.svg new file mode 100644 index 0000000..39b828e --- /dev/null +++ b/src/assets/icons/svg/smscode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/speaker.svg b/src/assets/icons/svg/speaker.svg new file mode 100644 index 0000000..f4c2b7c --- /dev/null +++ b/src/assets/icons/svg/speaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/star.svg b/src/assets/icons/svg/star.svg new file mode 100644 index 0000000..6cf86e6 --- /dev/null +++ b/src/assets/icons/svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/start.svg b/src/assets/icons/svg/start.svg new file mode 100644 index 0000000..f7e58a5 --- /dev/null +++ b/src/assets/icons/svg/start.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/stop.svg b/src/assets/icons/svg/stop.svg new file mode 100644 index 0000000..7f99ac3 --- /dev/null +++ b/src/assets/icons/svg/stop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/subscribe.svg b/src/assets/icons/svg/subscribe.svg new file mode 100644 index 0000000..9c48bdc --- /dev/null +++ b/src/assets/icons/svg/subscribe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/subscribe1.svg b/src/assets/icons/svg/subscribe1.svg new file mode 100644 index 0000000..a77b7c7 --- /dev/null +++ b/src/assets/icons/svg/subscribe1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/swagger.svg b/src/assets/icons/svg/swagger.svg new file mode 100644 index 0000000..05d4e7b --- /dev/null +++ b/src/assets/icons/svg/swagger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/switch.svg b/src/assets/icons/svg/switch.svg new file mode 100644 index 0000000..0ba61e3 --- /dev/null +++ b/src/assets/icons/svg/switch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/system.svg b/src/assets/icons/svg/system.svg new file mode 100644 index 0000000..dba28cf --- /dev/null +++ b/src/assets/icons/svg/system.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tab.svg b/src/assets/icons/svg/tab.svg new file mode 100644 index 0000000..b4b48e4 --- /dev/null +++ b/src/assets/icons/svg/tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/table.svg b/src/assets/icons/svg/table.svg new file mode 100644 index 0000000..0e3dc9d --- /dev/null +++ b/src/assets/icons/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/template.svg b/src/assets/icons/svg/template.svg new file mode 100644 index 0000000..362409e --- /dev/null +++ b/src/assets/icons/svg/template.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/terminal-user.svg b/src/assets/icons/svg/terminal-user.svg new file mode 100644 index 0000000..aa11913 --- /dev/null +++ b/src/assets/icons/svg/terminal-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/textarea.svg b/src/assets/icons/svg/textarea.svg new file mode 100644 index 0000000..2709f29 --- /dev/null +++ b/src/assets/icons/svg/textarea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/theme.svg b/src/assets/icons/svg/theme.svg new file mode 100644 index 0000000..5982a2f --- /dev/null +++ b/src/assets/icons/svg/theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/time-range.svg b/src/assets/icons/svg/time-range.svg new file mode 100644 index 0000000..13c1202 --- /dev/null +++ b/src/assets/icons/svg/time-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/time.svg b/src/assets/icons/svg/time.svg new file mode 100644 index 0000000..b376e32 --- /dev/null +++ b/src/assets/icons/svg/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tool.svg b/src/assets/icons/svg/tool.svg new file mode 100644 index 0000000..c813067 --- /dev/null +++ b/src/assets/icons/svg/tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/topic.svg b/src/assets/icons/svg/topic.svg new file mode 100644 index 0000000..f757e1c --- /dev/null +++ b/src/assets/icons/svg/topic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tree-table.svg b/src/assets/icons/svg/tree-table.svg new file mode 100644 index 0000000..8aafdb8 --- /dev/null +++ b/src/assets/icons/svg/tree-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tree.svg b/src/assets/icons/svg/tree.svg new file mode 100644 index 0000000..dd4b7dd --- /dev/null +++ b/src/assets/icons/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/upload.svg b/src/assets/icons/svg/upload.svg new file mode 100644 index 0000000..bae49c0 --- /dev/null +++ b/src/assets/icons/svg/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/user.svg b/src/assets/icons/svg/user.svg new file mode 100644 index 0000000..0ba0716 --- /dev/null +++ b/src/assets/icons/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/validCode.svg b/src/assets/icons/svg/validCode.svg new file mode 100644 index 0000000..9c98305 --- /dev/null +++ b/src/assets/icons/svg/validCode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/video.svg b/src/assets/icons/svg/video.svg new file mode 100644 index 0000000..740b1d6 --- /dev/null +++ b/src/assets/icons/svg/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/videotape.svg b/src/assets/icons/svg/videotape.svg new file mode 100644 index 0000000..7fad5a0 --- /dev/null +++ b/src/assets/icons/svg/videotape.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/wechat.svg b/src/assets/icons/svg/wechat.svg new file mode 100644 index 0000000..c586e55 --- /dev/null +++ b/src/assets/icons/svg/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/wifi_0.svg b/src/assets/icons/svg/wifi_0.svg new file mode 100644 index 0000000..92af048 --- /dev/null +++ b/src/assets/icons/svg/wifi_0.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/wifi_1.svg b/src/assets/icons/svg/wifi_1.svg new file mode 100644 index 0000000..e78ac9a --- /dev/null +++ b/src/assets/icons/svg/wifi_1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/wifi_2.svg b/src/assets/icons/svg/wifi_2.svg new file mode 100644 index 0000000..4cf889b --- /dev/null +++ b/src/assets/icons/svg/wifi_2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/wifi_3.svg b/src/assets/icons/svg/wifi_3.svg new file mode 100644 index 0000000..bfa8d27 --- /dev/null +++ b/src/assets/icons/svg/wifi_3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/wifi_4.svg b/src/assets/icons/svg/wifi_4.svg new file mode 100644 index 0000000..f5b090a --- /dev/null +++ b/src/assets/icons/svg/wifi_4.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/zhifubao.svg b/src/assets/icons/svg/zhifubao.svg new file mode 100644 index 0000000..d9096b7 --- /dev/null +++ b/src/assets/icons/svg/zhifubao.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/zip.svg b/src/assets/icons/svg/zip.svg new file mode 100644 index 0000000..f806fc4 --- /dev/null +++ b/src/assets/icons/svg/zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svgo.yml b/src/assets/icons/svgo.yml new file mode 100644 index 0000000..d11906a --- /dev/null +++ b/src/assets/icons/svgo.yml @@ -0,0 +1,22 @@ +# replace default config + +# multipass: true +# full: true + +plugins: + + # - name + # + # or: + # - name: false + # - name: true + # + # or: + # - name: + # param1: 1 + # param2: 2 + +- removeAttrs: + attrs: + - 'fill' + - 'fill-rule' diff --git a/src/assets/images/code.jpg b/src/assets/images/code.jpg new file mode 100644 index 0000000..5108499 Binary files /dev/null and b/src/assets/images/code.jpg differ diff --git a/src/assets/images/dark.svg b/src/assets/images/dark.svg new file mode 100644 index 0000000..f646bd7 --- /dev/null +++ b/src/assets/images/dark.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/gateway.png b/src/assets/images/gateway.png new file mode 100644 index 0000000..6918cd6 Binary files /dev/null and b/src/assets/images/gateway.png differ diff --git a/src/assets/images/light.svg b/src/assets/images/light.svg new file mode 100644 index 0000000..ab7cc08 --- /dev/null +++ b/src/assets/images/light.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/orange.svg b/src/assets/images/orange.svg new file mode 100644 index 0000000..67746c6 --- /dev/null +++ b/src/assets/images/orange.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/phone.jpg b/src/assets/images/phone.jpg new file mode 100644 index 0000000..6de9474 Binary files /dev/null and b/src/assets/images/phone.jpg differ diff --git a/src/assets/images/phone.png b/src/assets/images/phone.png new file mode 100644 index 0000000..5b4b889 Binary files /dev/null and b/src/assets/images/phone.png differ diff --git a/src/assets/images/product.png b/src/assets/images/product.png new file mode 100644 index 0000000..b34ee88 Binary files /dev/null and b/src/assets/images/product.png differ diff --git a/src/assets/images/profile.jpg b/src/assets/images/profile.jpg new file mode 100644 index 0000000..24545bd Binary files /dev/null and b/src/assets/images/profile.jpg differ diff --git a/src/assets/images/qq.png b/src/assets/images/qq.png new file mode 100644 index 0000000..3c2aaf7 Binary files /dev/null and b/src/assets/images/qq.png differ diff --git a/src/assets/images/video.png b/src/assets/images/video.png new file mode 100644 index 0000000..026b691 Binary files /dev/null and b/src/assets/images/video.png differ diff --git a/src/assets/images/weChat.png b/src/assets/images/weChat.png new file mode 100644 index 0000000..926ac0f Binary files /dev/null and b/src/assets/images/weChat.png differ diff --git a/src/assets/images/zlm-logo.png b/src/assets/images/zlm-logo.png new file mode 100644 index 0000000..5f492dc Binary files /dev/null and b/src/assets/images/zlm-logo.png differ diff --git a/src/assets/logo/cloud.png b/src/assets/logo/cloud.png new file mode 100644 index 0000000..d8c9f0c Binary files /dev/null and b/src/assets/logo/cloud.png differ diff --git a/src/assets/logo/logo.gif b/src/assets/logo/logo.gif new file mode 100644 index 0000000..c342bbd Binary files /dev/null and b/src/assets/logo/logo.gif differ diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png new file mode 100644 index 0000000..0d30fdf Binary files /dev/null and b/src/assets/logo/logo.png differ diff --git a/src/assets/styles/btn.scss b/src/assets/styles/btn.scss new file mode 100644 index 0000000..e6ba1a8 --- /dev/null +++ b/src/assets/styles/btn.scss @@ -0,0 +1,99 @@ +@import './variables.scss'; + +@mixin colorBtn($color) { + background: $color; + + &:hover { + color: $color; + + &:before, + &:after { + background: $color; + } + } +} + +.blue-btn { + @include colorBtn($blue) +} + +.light-blue-btn { + @include colorBtn($light-blue) +} + +.red-btn { + @include colorBtn($red) +} + +.pink-btn { + @include colorBtn($pink) +} + +.green-btn { + @include colorBtn($green) +} + +.tiffany-btn { + @include colorBtn($tiffany) +} + +.yellow-btn { + @include colorBtn($yellow) +} + +.pan-btn { + font-size: 14px; + color: #fff; + padding: 14px 36px; + border-radius: 8px; + border: none; + outline: none; + transition: 600ms ease all; + position: relative; + display: inline-block; + + &:hover { + background: #fff; + + &:before, + &:after { + width: 100%; + transition: 600ms ease all; + } + } + + &:before, + &:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2px; + width: 0; + transition: 400ms ease all; + } + + &::after { + right: inherit; + top: inherit; + left: 0; + bottom: 0; + } +} + +.custom-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + color: #fff; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} diff --git a/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss new file mode 100644 index 0000000..23f1179 --- /dev/null +++ b/src/assets/styles/element-ui.scss @@ -0,0 +1,92 @@ +// cover some element-ui styles + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + font-weight: 400 !important; +} + +.el-upload { + input[type='file'] { + display: none !important; + } +} + +.el-upload__input { + display: none; +} + +.cell { + .el-tag { + margin-right: 0px; + } +} + +.small-padding { + .cell { + padding-left: 5px; + padding-right: 5px; + } +} + +.fixed-width { + .el-button--mini { + padding: 7px 10px; + width: 60px; + } +} + +.status-col { + .cell { + padding: 0 10px; + text-align: center; + + .el-tag { + margin-right: 0px; + } + } +} + +// to fixed https://github.com/ElemeFE/element/issues/2461 +.el-dialog { + transform: none; + left: 0; + position: relative; + margin: 0 auto; +} + +// refine element ui upload +.upload-container { + .el-upload { + width: 100%; + + .el-upload-dragger { + width: 100%; + height: 200px; + } + } +} + +// dropdown +.el-dropdown-menu { + a { + display: block; + } +} + +// fix date-picker ui bug in filter-item +.el-range-editor.el-input__inner { + display: inline-flex !important; +} + +// to fix el-date-picker css style +.el-range-separator { + box-sizing: content-box; +} + +.el-menu--collapse > div > .el-submenu > .el-submenu__title .el-submenu__icon-arrow { + display: none; +} + +.el-tooltip__popper { + max-width: 480px; +} diff --git a/src/assets/styles/element-variables.scss b/src/assets/styles/element-variables.scss new file mode 100644 index 0000000..1615ff2 --- /dev/null +++ b/src/assets/styles/element-variables.scss @@ -0,0 +1,31 @@ +/** +* I think element-ui's default theme color is too light for long-term use. +* So I modified the default color and you can modify it to your liking. +**/ + +/* theme color */ +$--color-primary: #1890ff; +$--color-success: #13ce66; +$--color-warning: #ffba00; +$--color-danger: #ff4949; +// $--color-info: #1E1E1E; + +$--button-font-weight: 400; + +// $--color-text-regular: #1f2d3d; + +$--border-color-light: #dfe4ed; +$--border-color-lighter: #e6ebf5; + +$--table-border: 1px solid #dfe6ec; + +/* icon font path, required */ +$--font-path: '~element-ui/lib/theme-chalk/fonts'; + +@import "~element-ui/packages/theme-chalk/src/index"; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + theme: $--color-primary; +} diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss new file mode 100644 index 0000000..ed436aa --- /dev/null +++ b/src/assets/styles/index.scss @@ -0,0 +1,211 @@ +@import './variables.scss'; +@import './mixin.scss'; +@import './transition.scss'; +@import './element-ui.scss'; +@import './sidebar.scss'; +@import './btn.scss'; + +body { + height: 100%; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; +} + +label { + font-weight: 700; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +.no-padding { + padding: 0px !important; +} + +.padding-content { + padding: 4px 0; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.fr { + float: right; +} + +.fl { + float: left; +} + +.pr-5 { + padding-right: 5px; +} + +.pl-5 { + padding-left: 5px; +} + +.block { + display: block; +} + +.pointer { + cursor: pointer; +} + +.inlineBlock { + display: block; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +aside { + background: #eef1f6; + padding: 8px 24px; + margin-bottom: 20px; + border-radius: 2px; + display: block; + line-height: 32px; + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + color: #2c3e50; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + a { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } + } +} + +//main-container全局样式 +.app-container { + padding: 20px; +} + +.card-margin-bottom{ + margin-bottom: 6px; +} + +.card-padding-bottom{ + padding-bottom: 100px; +} + +.form-item-right{ + float: right; +} + +.form-minus-bomttom{ + margin-bottom: -20px; +} + +.big-box-padding{ + padding: 6px; +} + +.components-container { + margin: 10px; + position: relative; +} + +.pagination-container { + margin-top: 30px; +} + +.text-center { + text-align: center +} + +.sub-navbar { + height: 50px; + line-height: 50px; + position: relative; + width: 100%; + text-align: right; + padding-right: 20px; + transition: 600ms ease position; + background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); + + .subtitle { + font-size: 20px; + color: #fff; + } + + &.draft { + background: #d0d0d0; + } + + &.deleted { + background: #d0d0d0; + } +} + +.link-type, +.link-type:focus { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } +} + +.filter-container { + padding-bottom: 10px; + + .filter-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + } +} + +//refine vue-multiselect plugin +.multiselect { + line-height: 16px; +} + +.multiselect--active { + z-index: 1000 !important; +} diff --git a/src/assets/styles/mixin.scss b/src/assets/styles/mixin.scss new file mode 100644 index 0000000..06fa061 --- /dev/null +++ b/src/assets/styles/mixin.scss @@ -0,0 +1,66 @@ +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +@mixin scrollBar { + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} + +@mixin pct($pct) { + width: #{$pct}; + position: relative; + margin: 0 auto; +} + +@mixin triangle($width, $height, $color, $direction) { + $width: $width/2; + $color-border-style: $height solid $color; + $transparent-border-style: $width solid transparent; + height: 0; + width: 0; + + @if $direction==up { + border-bottom: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==right { + border-left: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } + + @else if $direction==down { + border-top: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==left { + border-right: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } +} diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss new file mode 100644 index 0000000..89ec7eb --- /dev/null +++ b/src/assets/styles/ruoyi.scss @@ -0,0 +1,306 @@ +/** + * 通用css样式布局处理 + * Copyright (c) 2019 ruoyi + */ + +/** 基础通用 **/ +.pt5 { + padding-top: 5px; +} +.pr5 { + padding-right: 5px; +} +.pb5 { + padding-bottom: 5px; +} +.mt5 { + margin-top: 5px; +} +.mr5 { + margin-right: 5px; +} +.mb5 { + margin-bottom: 5px; +} +.mb8 { + margin-bottom: 8px; +} +.ml5 { + margin-left: 5px; +} +.mt10 { + margin-top: 10px; +} +.mr10 { + margin-right: 10px; +} +.mb10 { + margin-bottom: 10px; +} +.ml10 { + margin-left: 10px; +} +.mt20 { + margin-top: 20px; +} +.mr20 { + margin-right: 20px; +} +.mb20 { + margin-bottom: 20px; +} +.ml20 { + margin-left: 20px; +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} + +.el-message-box__status + .el-message-box__message { + word-break: break-word; +} + +.el-dialog:not(.is-fullscreen) { + margin-top: 6vh !important; +} + +.el-dialog__wrapper.scrollbar .el-dialog .el-dialog__body { + overflow: auto; + overflow-x: hidden; + max-height: 70vh; + padding: 10px 20px 0; +} + +.el-table { + .el-table__header-wrapper, + .el-table__fixed-header-wrapper { + th { + word-break: break-word; + background-color: #f8f8f9; + color: #515a6e; + height: 40px; + font-size: 13px; + } + } + .el-table__body-wrapper { + .el-button [class*='el-icon-'] + span { + margin-left: 1px; + } + } +} + +/** 表单布局 **/ +.form-header { + font-size: 15px; + color: #6379bb; + border-bottom: 1px solid #ddd; + margin: 8px 10px 25px 10px; + padding-bottom: 5px; +} + +/** 表格布局 **/ +.pagination-container { + position: relative; + height: 25px; + margin-bottom: 10px; + margin-top: 15px; + padding: 10px 20px !important; +} + +/* tree border */ +.tree-border { + margin-top: 5px; + border: 1px solid #e5e6e7; + background: #ffffff none; + border-radius: 4px; +} + +.pagination-container .el-pagination { + right: 0; + position: absolute; +} + +@media (max-width: 768px) { + .pagination-container .el-pagination > .el-pagination__jump { + display: none !important; + } + .pagination-container .el-pagination > .el-pagination__sizes { + display: none !important; + } +} + +.el-table .fixed-width .el-button--mini { + padding-left: 0; + padding-right: 0; + width: inherit; +} + +/** 表格更多操作下拉样式 */ +.el-table .el-dropdown-link, +.el-table .el-dropdown-selfdefine { + cursor: pointer; + margin-left: 5px; +} + +.el-table .el-dropdown, +.el-icon-arrow-down { + font-size: 12px; +} + +.el-tree-node__content > .el-checkbox { + margin-right: 8px; +} + +.list-group-striped > .list-group-item { + border-left: 0; + border-right: 0; + border-radius: 0; + padding-left: 0; + padding-right: 0; +} + +.list-group { + padding-left: 0px; + list-style: none; +} + +.list-group-item { + border-bottom: 1px solid #e7eaec; + border-top: 1px solid #e7eaec; + margin-bottom: -1px; + padding: 11px 0px; + font-size: 13px; +} + +.pull-right { + float: right !important; +} + +.el-card__header { + padding: 14px 15px 7px; + min-height: 40px; +} + +.el-card__body { + padding: 15px 20px 20px 20px; +} + +.card-box { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 10px; +} + +/* button color */ +.el-button--cyan.is-active, +.el-button--cyan:active { + background: #20b2aa; + border-color: #20b2aa; + color: #ffffff; +} + +.el-button--cyan:focus, +.el-button--cyan:hover { + background: #48d1cc; + border-color: #48d1cc; + color: #ffffff; +} + +.el-button--cyan { + background-color: #20b2aa; + border-color: #20b2aa; + color: #ffffff; +} + +/* text color */ +.text-navy { + color: #1ab394; +} + +.text-primary { + color: inherit; +} + +.text-success { + color: #1c84c6; +} + +.text-info { + color: #23c6c8; +} + +.text-warning { + color: #f8ac59; +} + +.text-danger { + color: #ed5565; +} + +.text-muted { + color: #888888; +} + +/* image */ +.img-circle { + border-radius: 50%; +} + +.img-lg { + width: 120px; + height: 120px; +} + +.avatar-upload-preview { + position: relative; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 200px; + height: 200px; + border-radius: 50%; + box-shadow: 0 0 4px #ccc; + overflow: hidden; +} + +/* 拖拽列样式 */ +.sortable-ghost { + opacity: 0.8; + color: #fff !important; + background: #42b983 !important; +} + +.top-right-btn { + position: relative; + float: right; +} + +/* 修改switch按钮样式 */ +.el-switch__core { + width: 45px !important; + height: 21px; + border-radius: 2px; +} +.el-switch__core:after { + width: 20px; + height: 18px; + border-radius: 2px; +} +.el-switch.is-checked .el-switch__core::after { + margin-left: -21px; +} diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss new file mode 100644 index 0000000..ed308b8 --- /dev/null +++ b/src/assets/styles/sidebar.scss @@ -0,0 +1,227 @@ +#app { + + .main-container { + min-height: 100%; + transition: margin-left .28s; + margin-left: $base-sidebar-width; + position: relative; + } + + .sidebarHide { + margin-left: 0!important; + } + + .sidebar-container { + -webkit-transition: width .28s; + transition: width 0.28s; + width: $base-sidebar-width !important; + background-color: $base-menu-background; + height: 100%; + position: fixed; + font-size: 0px; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + overflow: hidden; + -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35); + box-shadow: 2px 0 6px rgba(0,21,41,.35); + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0px; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .svg-icon { + margin-right: 16px; + } + + .el-menu { + border: none; + height: 100%; + width: 100% !important; + } + + .el-menu-item, .el-submenu__title { + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + } + + // menu hover + .submenu-title-noDropdown, + .el-submenu__title { + &:hover { + background-color: rgba(0, 0, 0, 0.06) !important; + } + } + + & .theme-dark .is-active > .el-submenu__title { + color: $base-menu-color-active !important; + } + + & .nest-menu .el-submenu>.el-submenu__title, + & .el-submenu .el-menu-item { + min-width: $base-sidebar-width !important; + + &:hover { + background-color: rgba(0, 0, 0, 0.06) !important; + } + } + + & .theme-dark .nest-menu .el-submenu>.el-submenu__title, + & .theme-dark .el-submenu .el-menu-item { + background-color: $base-sub-menu-background !important; + + &:hover { + background-color: $base-sub-menu-hover !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: 54px !important; + } + + .main-container { + margin-left: 54px; + } + + .submenu-title-noDropdown { + padding: 0 !important; + position: relative; + + .el-tooltip { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + } + } + + .el-submenu { + overflow: hidden; + + &>.el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + } + } + + .el-menu--collapse { + .el-submenu { + &>.el-submenu__title { + &>span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-submenu { + min-width: $base-sidebar-width !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0px; + } + + .sidebar-container { + transition: transform .28s; + width: $base-sidebar-width !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-$base-sidebar-width, 0, 0); + } + } + } + + .withoutAnimation { + + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + &>.el-menu { + .svg-icon { + margin-right: 16px; + } + } + + .nest-menu .el-submenu>.el-submenu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + background-color: rgba(0, 0, 0, 0.06) !important; + } + } + + // the scroll bar appears when the subMenu is too long + >.el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/src/assets/styles/transition.scss b/src/assets/styles/transition.scss new file mode 100644 index 0000000..eb49895 --- /dev/null +++ b/src/assets/styles/transition.scss @@ -0,0 +1,53 @@ +// global transition css + +/* fade */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.28s; +} + +.fade-enter, +.fade-leave-active { + opacity: 0; +} + +/* fade-transform */ +.fade-transform--move, +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all .5s; +} + +.fade-transform-leave-active { + position: absolute; +} + +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} + +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* breadcrumb transition */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all .5s; +} + +.breadcrumb-enter, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} + +.breadcrumb-move { + transition: all .5s; +} + +.breadcrumb-leave-active { + position: absolute; +} diff --git a/src/assets/styles/variables.scss b/src/assets/styles/variables.scss new file mode 100644 index 0000000..34484d4 --- /dev/null +++ b/src/assets/styles/variables.scss @@ -0,0 +1,54 @@ +// base color +$blue:#324157; +$light-blue:#3A71A8; +$red:#C03639; +$pink: #E65D6E; +$green: #30B08F; +$tiffany: #4AB7BD; +$yellow:#FEC171; +$panGreen: #30B08F; + +// 默认菜单主题风格 +$base-menu-color:#bfcbd9; +$base-menu-color-active:#f4f4f5; +$base-menu-background:#304156; +$base-logo-title-color: #ffffff; + +$base-menu-light-color:rgba(0,0,0,.70); +$base-menu-light-background:#ffffff; +$base-logo-light-title-color: #001529; + +$base-sub-menu-background:#1f2d3d; +$base-sub-menu-hover:#001528; + +// 自定义暗色菜单风格 +/** +$base-menu-color:hsla(0,0%,100%,.65); +$base-menu-color-active:#fff; +$base-menu-background:#001529; +$base-logo-title-color: #ffffff; + +$base-menu-light-color:rgba(0,0,0,.70); +$base-menu-light-background:#ffffff; +$base-logo-light-title-color: #001529; + +$base-sub-menu-background:#000c17; +$base-sub-menu-hover:#001528; +*/ + +$base-sidebar-width: 200px; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + menuColor: $base-menu-color; + menuLightColor: $base-menu-light-color; + menuColorActive: $base-menu-color-active; + menuBackground: $base-menu-background; + menuLightBackground: $base-menu-light-background; + subMenuBackground: $base-sub-menu-background; + subMenuHover: $base-sub-menu-hover; + sideBarWidth: $base-sidebar-width; + logoTitleColor: $base-logo-title-color; + logoLightTitleColor: $base-logo-light-title-color +} diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue new file mode 100644 index 0000000..1696f54 --- /dev/null +++ b/src/components/Breadcrumb/index.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/components/Codemirror/index.vue b/src/components/Codemirror/index.vue new file mode 100644 index 0000000..34b74f2 --- /dev/null +++ b/src/components/Codemirror/index.vue @@ -0,0 +1,128 @@ +