@missing-elements/h5p-offline-player 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +273 -0
- package/dist/VERSION +1 -0
- package/dist/frame-assets/MANIFEST.json +4 -0
- package/dist/frame-assets/fonts/h5p-core-30.woff2 +0 -0
- package/dist/frame-assets/fonts/h5p-hub-publish.woff +0 -0
- package/dist/frame-assets/fonts/h5p-hub-publish.woff2 +0 -0
- package/dist/frame-assets/fonts/h5p-theme.woff2 +0 -0
- package/dist/frame-assets/fonts/inter/Inter-ExtraBold.woff2 +0 -0
- package/dist/frame-assets/fonts/inter/Inter-ExtraBoldItalic.woff2 +0 -0
- package/dist/frame-assets/fonts/inter/LICENSE.txt +92 -0
- package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.woff2 +0 -0
- package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600italic.woff2 +0 -0
- package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-italic.woff2 +0 -0
- package/dist/frame-assets/fonts/inter/inter-v18-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.woff2 +0 -0
- package/dist/frame-assets/fonts/open-sans/OFL.txt +88 -0
- package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-600.woff2 +0 -0
- package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-600italic.woff2 +0 -0
- package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-700.woff2 +0 -0
- package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-700italic.woff2 +0 -0
- package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-italic.woff2 +0 -0
- package/dist/frame-assets/fonts/open-sans/open-sans-v40-cyrillic_cyrillic-ext_greek_greek-ext_hebrew_latin_latin-ext_math_symbols_vietnamese-regular.woff2 +0 -0
- package/dist/frame-assets/frame.bundle.js +1 -0
- package/dist/frame-assets/images/h5p.svg +16 -0
- package/dist/frame-assets/images/throbber.gif +0 -0
- package/dist/frame-assets/main.bundle.js +2 -0
- package/dist/frame-assets/styles/h5p-fonts.css +103 -0
- package/dist/frame-assets/styles/h5p.css +1643 -0
- package/dist/h5p-player.js +1780 -0
- package/dist/h5p-sw-mount.js +88 -0
- package/dist/h5p-sw.js +88 -0
- package/package.json +81 -0
- package/types/h5p-offline-player.d.ts +154 -0
- package/types/jobs/chunk-writer.d.ts +16 -0
- package/types/jobs/jobs-worker.d.ts +1 -0
- package/types/node/tsconfig.node.tsbuildinfo +1 -0
- package/types/node/vite.config.d.ts +6 -0
- package/types/node/vite.demo.config.d.ts +2 -0
- package/types/node/vite.plugins.d.ts +19 -0
- package/types/shared/chunk-store.d.ts +104 -0
- package/types/shared/constants.d.ts +67 -0
- package/types/shared/entry-names.d.ts +29 -0
- package/types/shared/eviction.d.ts +16 -0
- package/types/shared/forward-index.d.ts +85 -0
- package/types/shared/idb.d.ts +9 -0
- package/types/shared/locks.d.ts +14 -0
- package/types/shared/mime.d.ts +7 -0
- package/types/shared/mp4.d.ts +41 -0
- package/types/shared/pkg-id.d.ts +21 -0
- package/types/shared/protocol.d.ts +232 -0
- package/types/shared/range.d.ts +16 -0
- package/types/shared/source.d.ts +57 -0
- package/types/shared/stream-utils.d.ts +7 -0
- package/types/sw/frame-document.d.ts +19 -0
- package/types/sw/mount.d.ts +17 -0
- package/types/sw/package-reader.d.ts +242 -0
- package/types/sw/routes.d.ts +26 -0
- package/types/sw/stream-utils.d.ts +9 -0
- package/types/sw/sw-entry.d.ts +1 -0
|
@@ -0,0 +1,1780 @@
|
|
|
1
|
+
const xt = '"use strict";(()=>{var Bd=Object.defineProperty;var ie=(t,e)=>()=>(t&&(e=t(t=0)),e);var Hd=(t,e)=>{for(var r in e)Bd(t,r,{get:e[r],enumerable:!0})};var Xr,bt,w,Gt,Se,K,Vn,We,lc,Ci,Z,Xn,ue=ie(()=>{Xr=new Date(2107,11,31,23,59,58),bt=new Date(1980,0,1),w=void 0,Gt=1/0,Se="undefined",K="function",Vn="object",We="string",lc="number",Ci="boolean",Z=new Uint8Array,Xn=Symbol.asyncDispose||Symbol()});function Er(t){if(t&&typeof t!=K)throw new Error(Hc);return t}function qr(t){if(t&&(typeof t.addEventListener!=K||typeof t.aborted!=Ci))throw new Error(Yc);return t||w}function Xt(t){if(t&&t.aborted)throw t.reason===w?new DOMException(Gc,Yd):t.reason}function ss(t,e){if(t&&typeof t!=We||e&&!(e instanceof Uint8Array))throw new Error(Mi)}function pr(t){if(t!==w&&typeof t!=Ci&&t!==Kr)throw new Error(Wc);return t}function vi(t,e,r){if(!Number.isInteger(t)||t<0||t>e)throw new Error(r)}function mr(t,e,r){t!==w&&vi(t,e,r)}function Ot(t){return typeof t==We&&t.trim()?Number(t):t}var fc,uc,dc,Ec,pc,Zn,jn,Zr,Kn,mc,hc,gc,Rc,wc,_c,Tc,Ac,yc,qn,Jn,Qn,$n,Sc,Ic,bc,Nc,es,Oc,Dc,Pc,xi,Li,Cc,xc,jr,Vt,Lc,Uc,Fc,Mc,vc,kc,Ui,zc,Bc,Fi,ts,rs,Nt,ns,ot,Kr,Hc,Yc,Mi,Wc,Gc,Yd,hr=ie(()=>{ue();fc="filenameEncoding",uc="commentEncoding",dc="decodeText",Ec="extractPrependedData",pc="extractAppendedData",Zn="password",jn="rawPassword",Zr="passThrough",Kn="signal",mc="checkPasswordOnly",hc="checkOverlappingEntryOnly",gc="checkOverlappingEntry",Rc="checkAmbiguity",wc="checkLocalDirectory",_c="checkLocalFilename",Tc="checkSignature",Ac="checkCrc32",yc="checkAuthenticationCode",qn="useWebWorkers",Jn="useCompressionStream",Qn="transferStreams",$n="preventClose",Sc="encryptionStrength",Ic="extendedTimestamp",bc="ntfsTimestamp",Nc="keepOrder",es="level",Oc="bufferedWrite",Dc="createTempStream",Pc="dataDescriptorSignature",xi="useUnicodeFileNames",Li="dataDescriptor",Cc="supportZip64SplitFile",xc="encodeText",jr="offset",Vt="usdz",Lc="unixExtraFieldType",Uc="localExtraField",Fc="centralExtraField",Mc="strictness",vc="filenameValidation",kc="normalizeFilename",Ui="maxAppendedDataSize",zc="decryptCentralDirectory",Bc="signCentralDirectory",Fi="entry",ts="filename",rs="comment",Nt="strict",ns="balanced",ot="tolerant",Kr="compressed",Hc="Invalid option (must be a function)",Yc="Invalid signal (must be an AbortSignal instance)",Mi="Invalid password (password must be a string, rawPassword must be a Uint8Array)",Wc="Invalid passThrough option (must be a boolean or \'compressed\')",Gc="The operation was aborted",Yd="AbortError"});function at(){return ki}function Jr(t){return zi(t.chunkSize)}function zi(t){return t=Ot(t),Number.isInteger(t)&&t>=Xc?Math.max(t,Wd):Vc}function Bi(t){Object.assign(ki,nl(sl(t)))}function nl(t){let e={};for(let r of Vd){let n=t[r];n!==w&&(e[r]=Xd(r,n))}return e}function Xd(t,e){if(tl.includes(t)){if(e=Ot(e),t==Qc&&(!Number.isInteger(e)||e<Xc))throw new Error(Zc)}else if(rl.includes(t))Er(e);else if(t==$c){if(e&&typeof e!=We)throw new Error(jc)}else if(el.includes(t)&&e&&typeof e!=We&&typeof e!=K)throw new Error(Kc);return e}function sl(t){t=t||{};let{CompressionStreamZlib:e,DecompressionStreamZlib:r}=t;if(e===w&&r===w)return t;let n=Object.assign({},t);return n.CompressionStreamFallback===w&&(n.CompressionStreamFallback=e),n.DecompressionStreamFallback===w&&(n.DecompressionStreamFallback=r),n}function Dt(t){let e=nl(sl(t));Object.assign(Jc,e),Object.assign(ki,e)}var Vc,Wd,Xc,Zc,jc,Kc,qc,Jc,Qc,$c,el,Gd,tl,rl,Vd,ki,Ge=ie(()=>{ue();hr();Vc=64*1024,Wd=64,Xc=1,Zc="Invalid maxWorkers (must be an integer greater than 0)",jc="Invalid baseURI (must be a string)",Kc="Invalid URI (must be a string or a function returning a string)",qc=2;try{typeof navigator!=Se&&navigator.hardwareConcurrency&&(qc=navigator.hardwareConcurrency)}catch{}Jc={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:Vc,maxWorkers:qc,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,workerStartupTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,transferStreams:!0,CompressionStream:typeof CompressionStream!=Se&&CompressionStream,DecompressionStream:typeof DecompressionStream!=Se&&DecompressionStream},Qc="maxWorkers",$c="baseURI",el=["wasmURI","workerURI"],Gd=["useCompressionStream","useWebWorkers","transferStreams"],tl=["chunkSize",Qc,"terminateWorkerTimeout","workerStarvationTimeout","workerStartupTimeout"],rl=["createWorker","CompressionStream","DecompressionStream","CompressionStreamFallback","DecompressionStreamFallback"],Vd=[$c,...el,...Gd,...tl,...rl],ki={...Jc}});function Be(t,e){let r=new Uint8Array(t.length+e.length);return r.set(t),r.set(e,t.length),r}function os(t){return t.byteOffset||t.byteLength!=t.buffer.byteLength?new Uint8Array(t):t}function L(t){return new DataView(t.buffer,t.byteOffset,t.byteLength)}var Pt=ie(()=>{});function Re(t){return!!t&&typeof t=="object"}var Zt=ie(()=>{});var Qr,ol,Zd,jd,Kd,qd,Jd,Qd,$d,Ve,$r=ie(()=>{Qr=[[],[],[],[],[],[],[],[]];for(let t=0;t<256;t++){let e=t;for(let r=0;r<8;r++)e=e&1?e>>>1^3988292384:e>>>1;Qr[0][t]=e}for(let t=0;t<256;t++)for(let e=1;e<8;e++){let r=Qr[e-1][t];Qr[e][t]=r>>>8^Qr[0][r&255]}[ol,Zd,jd,Kd,qd,Jd,Qd,$d]=Qr,Ve=class{constructor(e){this.crc=e||-1}append(e){let r=this.crc|0,n=e.length|0,s=0;if(n>=8&&e.buffer){let i=new DataView(e.buffer,e.byteOffset,n),o=n-8;for(;s<=o;s+=8){let a=r^i.getInt32(s,!0),c=i.getInt32(s+4,!0);r=$d[a&255]^Qd[a>>>8&255]^Jd[a>>>16&255]^qd[a>>>24&255]^Kd[c&255]^jd[c>>>8&255]^Zd[c>>>16&255]^ol[c>>>24&255]}}for(;s<n;s++)r=r>>>8^ol[(r^e[s])&255];this.crc=r}get(){return~this.crc}}});var en,al=ie(()=>{$r();en=class extends TransformStream{constructor(){let e,r=new Ve;super({transform(n,s){r.append(n),s.enqueue(n)},flush(){let n=new Uint8Array(4);new DataView(n.buffer).setUint32(0,r.get()),e.value=n}}),e=this}}});function gr(t){if(typeof TextEncoder==Se){t=unescape(encodeURIComponent(t));let e=new Uint8Array(t.length);for(let r=0;r<e.length;r++)e[r]=t.charCodeAt(r);return e}else return new TextEncoder().encode(t)}var Hi=ie(()=>{ue()});function tn(t,e){iE();let r=new Int32Array(60),n=oE(t,r),s=new Int32Array(16/4),i=dl(e),o=0,a=0,c=0,f=0;return{process(l,h){h&&i.update(l,0,l.length),R(l),h||i.update(l,0,l.length)},digest(){return i.digest()}};function R(l){let h=new DataView(l.buffer,l.byteOffset,l.byteLength),m=l.length,E=0;for(;E+16<=m;E+=16)p(),h.setInt32(E,h.getInt32(E)^s[0]),h.setInt32(E+4,h.getInt32(E+4)^s[1]),h.setInt32(E+8,h.getInt32(E+8)^s[2]),h.setInt32(E+12,h.getInt32(E+12)^s[3]);if(E<m){p();for(let d=0;E<m;E++,d++)l[E]^=s[d>>2]>>>24-8*(d&3)}}function p(){o=o+1|0,o||(a=a+1|0,a||(c=c+1|0,c||(f=f+1|0)));let l=as(o)^r[0],h=as(a)^r[1],m=as(c)^r[2],E=as(f)^r[3],d=O[l>>>24]^D[h>>>16&255]^P[m>>>8&255]^C[E&255]^r[4],u=O[h>>>24]^D[m>>>16&255]^P[E>>>8&255]^C[l&255]^r[5],g=O[m>>>24]^D[E>>>16&255]^P[l>>>8&255]^C[h&255]^r[6],_=O[E>>>24]^D[l>>>16&255]^P[h>>>8&255]^C[m&255]^r[7];l=O[d>>>24]^D[u>>>16&255]^P[g>>>8&255]^C[_&255]^r[8],h=O[u>>>24]^D[g>>>16&255]^P[_>>>8&255]^C[d&255]^r[9],m=O[g>>>24]^D[_>>>16&255]^P[d>>>8&255]^C[u&255]^r[10],E=O[_>>>24]^D[d>>>16&255]^P[u>>>8&255]^C[g&255]^r[11],d=O[l>>>24]^D[h>>>16&255]^P[m>>>8&255]^C[E&255]^r[12],u=O[h>>>24]^D[m>>>16&255]^P[E>>>8&255]^C[l&255]^r[13],g=O[m>>>24]^D[E>>>16&255]^P[l>>>8&255]^C[h&255]^r[14],_=O[E>>>24]^D[l>>>16&255]^P[h>>>8&255]^C[m&255]^r[15],l=O[d>>>24]^D[u>>>16&255]^P[g>>>8&255]^C[_&255]^r[16],h=O[u>>>24]^D[g>>>16&255]^P[_>>>8&255]^C[d&255]^r[17],m=O[g>>>24]^D[_>>>16&255]^P[d>>>8&255]^C[u&255]^r[18],E=O[_>>>24]^D[d>>>16&255]^P[u>>>8&255]^C[g&255]^r[19],d=O[l>>>24]^D[h>>>16&255]^P[m>>>8&255]^C[E&255]^r[20],u=O[h>>>24]^D[m>>>16&255]^P[E>>>8&255]^C[l&255]^r[21],g=O[m>>>24]^D[E>>>16&255]^P[l>>>8&255]^C[h&255]^r[22],_=O[E>>>24]^D[l>>>16&255]^P[h>>>8&255]^C[m&255]^r[23],l=O[d>>>24]^D[u>>>16&255]^P[g>>>8&255]^C[_&255]^r[24],h=O[u>>>24]^D[g>>>16&255]^P[_>>>8&255]^C[d&255]^r[25],m=O[g>>>24]^D[_>>>16&255]^P[d>>>8&255]^C[u&255]^r[26],E=O[_>>>24]^D[d>>>16&255]^P[u>>>8&255]^C[g&255]^r[27],d=O[l>>>24]^D[h>>>16&255]^P[m>>>8&255]^C[E&255]^r[28],u=O[h>>>24]^D[m>>>16&255]^P[E>>>8&255]^C[l&255]^r[29],g=O[m>>>24]^D[E>>>16&255]^P[l>>>8&255]^C[h&255]^r[30],_=O[E>>>24]^D[l>>>16&255]^P[h>>>8&255]^C[m&255]^r[31],l=O[d>>>24]^D[u>>>16&255]^P[g>>>8&255]^C[_&255]^r[32],h=O[u>>>24]^D[g>>>16&255]^P[_>>>8&255]^C[d&255]^r[33],m=O[g>>>24]^D[_>>>16&255]^P[d>>>8&255]^C[u&255]^r[34],E=O[_>>>24]^D[d>>>16&255]^P[u>>>8&255]^C[g&255]^r[35],d=O[l>>>24]^D[h>>>16&255]^P[m>>>8&255]^C[E&255]^r[36],u=O[h>>>24]^D[m>>>16&255]^P[E>>>8&255]^C[l&255]^r[37],g=O[m>>>24]^D[E>>>16&255]^P[l>>>8&255]^C[h&255]^r[38],_=O[E>>>24]^D[l>>>16&255]^P[h>>>8&255]^C[m&255]^r[39];let A=40;n>10&&(l=O[d>>>24]^D[u>>>16&255]^P[g>>>8&255]^C[_&255]^r[40],h=O[u>>>24]^D[g>>>16&255]^P[_>>>8&255]^C[d&255]^r[41],m=O[g>>>24]^D[_>>>16&255]^P[d>>>8&255]^C[u&255]^r[42],E=O[_>>>24]^D[d>>>16&255]^P[u>>>8&255]^C[g&255]^r[43],d=O[l>>>24]^D[h>>>16&255]^P[m>>>8&255]^C[E&255]^r[44],u=O[h>>>24]^D[m>>>16&255]^P[E>>>8&255]^C[l&255]^r[45],g=O[m>>>24]^D[E>>>16&255]^P[l>>>8&255]^C[h&255]^r[46],_=O[E>>>24]^D[l>>>16&255]^P[h>>>8&255]^C[m&255]^r[47],A=48),n>12&&(l=O[d>>>24]^D[u>>>16&255]^P[g>>>8&255]^C[_&255]^r[48],h=O[u>>>24]^D[g>>>16&255]^P[_>>>8&255]^C[d&255]^r[49],m=O[g>>>24]^D[_>>>16&255]^P[d>>>8&255]^C[u&255]^r[50],E=O[_>>>24]^D[d>>>16&255]^P[u>>>8&255]^C[g&255]^r[51],d=O[l>>>24]^D[h>>>16&255]^P[m>>>8&255]^C[E&255]^r[52],u=O[h>>>24]^D[m>>>16&255]^P[E>>>8&255]^C[l&255]^r[53],g=O[m>>>24]^D[E>>>16&255]^P[l>>>8&255]^C[h&255]^r[54],_=O[E>>>24]^D[l>>>16&255]^P[h>>>8&255]^C[m&255]^r[55],A=56),s[0]=(ce[d>>>24]<<24|ce[u>>>16&255]<<16|ce[g>>>8&255]<<8|ce[_&255])^r[A],s[1]=(ce[u>>>24]<<24|ce[g>>>16&255]<<16|ce[_>>>8&255]<<8|ce[d&255])^r[A+1],s[2]=(ce[g>>>24]<<24|ce[_>>>16&255]<<16|ce[d>>>8&255]<<8|ce[u&255])^r[A+2],s[3]=(ce[_>>>24]<<24|ce[d>>>16&255]<<16|ce[u>>>8&255]<<8|ce[g&255])^r[A+3]}}function ul(t,e,r,n){let s=dl(t),i=new Uint8Array(n),o=new Uint8Array(e.length+4),a=new DataView(o.buffer);o.set(e);for(let c=1,f=0;f<n;c++,f+=20){a.setUint32(e.length,c),s.update(o,0,o.length);let R=s.digest(),p=R.slice();for(let l=1;l<r;l++){s.update(R,0,20),R=s.digest();for(let h=0;h<20;h++)p[h]^=R[h]}i.set(p.subarray(0,Math.min(20,n-f)),f)}return i}function dl(t){let e=sE(),r=new Uint8Array(64),n=new Uint8Array(64);t.length>64&&(e.update(t,0,t.length),t=e.digest());for(let s=0;s<64;s++){let i=s<t.length?t[s]:0;r[s]=i^rE,n[s]=i^nE}return e.update(r,0,64),{update(s,i,o){e.update(s,i,o)},digest(){let s=e.digest();e.update(n,0,64),e.update(s,0,20);let i=e.digest();return e.update(r,0,64),i}}}function sE(){let t=new Int32Array(cl),e=new Int32Array(16),r=new Uint8Array(64),n=new DataView(r.buffer),s=new Uint8Array(8),i=0,o=0;return{update:a,digest:c};function a(R,p,l){let h=p+l;if(o+=l,i){for(;p<h&&i<64;)r[i++]=R[p++];i==64&&(f(n,0),i=0)}if(p+64<=h){let m=new DataView(R.buffer,R.byteOffset,R.byteLength);for(;p+64<=h;p+=64)f(m,p)}for(;p<h;)r[i++]=R[p++]}function c(){let R=o*8,p=Math.floor(R/4294967296),l=R>>>0;for(a(eE,0,1);i!=56;)a(tE,0,1);s[0]=p>>>24,s[1]=p>>>16,s[2]=p>>>8,s[3]=p,s[4]=l>>>24,s[5]=l>>>16,s[6]=l>>>8,s[7]=l,a(s,0,8);let h=new Uint8Array(20),m=new DataView(h.buffer);for(let E=0;E<t.length;E++)m.setInt32(4*E,t[E]);return t.set(cl),i=0,o=0,h}function f(R,p){for(let g=0;g<16;g++)e[g]=R.getInt32(p+4*g);let l=t[0],h=t[1],m=t[2],E=t[3],d=t[4],u;for(let g=0;g<15;g+=5)d=(l<<5|l>>>27)+((m^E)&h^E)+d+1518500249+e[g]|0,h=h<<30|h>>>2,E=(d<<5|d>>>27)+((h^m)&l^m)+E+1518500249+e[g+1]|0,l=l<<30|l>>>2,m=(E<<5|E>>>27)+((l^h)&d^h)+m+1518500249+e[g+2]|0,d=d<<30|d>>>2,h=(m<<5|m>>>27)+((d^l)&E^l)+h+1518500249+e[g+3]|0,E=E<<30|E>>>2,l=(h<<5|h>>>27)+((E^d)&m^d)+l+1518500249+e[g+4]|0,m=m<<30|m>>>2;d=(l<<5|l>>>27)+((m^E)&h^E)+d+1518500249+e[15]|0,h=h<<30|h>>>2,u=e[13]^e[8]^e[2]^e[0],u=u<<1|u>>>31,e[0]=u,E=(d<<5|d>>>27)+((h^m)&l^m)+E+1518500249+u|0,l=l<<30|l>>>2,u=e[14]^e[9]^e[3]^e[1],u=u<<1|u>>>31,e[1]=u,m=(E<<5|E>>>27)+((l^h)&d^h)+m+1518500249+u|0,d=d<<30|d>>>2,u=e[15]^e[10]^e[4]^e[2],u=u<<1|u>>>31,e[2]=u,h=(m<<5|m>>>27)+((d^l)&E^l)+h+1518500249+u|0,E=E<<30|E>>>2,u=e[0]^e[11]^e[5]^e[3],u=u<<1|u>>>31,e[3]=u,l=(h<<5|h>>>27)+((E^d)&m^d)+l+1518500249+u|0,m=m<<30|m>>>2;for(let g=20;g<40;g+=5)u=e[g-3&15]^e[g-8&15]^e[g-14&15]^e[g&15],u=u<<1|u>>>31,e[g&15]=u,d=(l<<5|l>>>27)+(h^m^E)+d+1859775393+u|0,h=h<<30|h>>>2,u=e[g-2&15]^e[g-7&15]^e[g-13&15]^e[g+1&15],u=u<<1|u>>>31,e[g+1&15]=u,E=(d<<5|d>>>27)+(l^h^m)+E+1859775393+u|0,l=l<<30|l>>>2,u=e[g-1&15]^e[g-6&15]^e[g-12&15]^e[g+2&15],u=u<<1|u>>>31,e[g+2&15]=u,m=(E<<5|E>>>27)+(d^l^h)+m+1859775393+u|0,d=d<<30|d>>>2,u=e[g&15]^e[g-5&15]^e[g-11&15]^e[g+3&15],u=u<<1|u>>>31,e[g+3&15]=u,h=(m<<5|m>>>27)+(E^d^l)+h+1859775393+u|0,E=E<<30|E>>>2,u=e[g+1&15]^e[g-4&15]^e[g-10&15]^e[g+4&15],u=u<<1|u>>>31,e[g+4&15]=u,l=(h<<5|h>>>27)+(m^E^d)+l+1859775393+u|0,m=m<<30|m>>>2;for(let g=40;g<60;g+=5)u=e[g-3&15]^e[g-8&15]^e[g-14&15]^e[g&15],u=u<<1|u>>>31,e[g&15]=u,d=(l<<5|l>>>27)+(h&m|(h|m)&E)+d+2400959708+u|0,h=h<<30|h>>>2,u=e[g-2&15]^e[g-7&15]^e[g-13&15]^e[g+1&15],u=u<<1|u>>>31,e[g+1&15]=u,E=(d<<5|d>>>27)+(l&h|(l|h)&m)+E+2400959708+u|0,l=l<<30|l>>>2,u=e[g-1&15]^e[g-6&15]^e[g-12&15]^e[g+2&15],u=u<<1|u>>>31,e[g+2&15]=u,m=(E<<5|E>>>27)+(d&l|(d|l)&h)+m+2400959708+u|0,d=d<<30|d>>>2,u=e[g&15]^e[g-5&15]^e[g-11&15]^e[g+3&15],u=u<<1|u>>>31,e[g+3&15]=u,h=(m<<5|m>>>27)+(E&d|(E|d)&l)+h+2400959708+u|0,E=E<<30|E>>>2,u=e[g+1&15]^e[g-4&15]^e[g-10&15]^e[g+4&15],u=u<<1|u>>>31,e[g+4&15]=u,l=(h<<5|h>>>27)+(m&E|(m|E)&d)+l+2400959708+u|0,m=m<<30|m>>>2;for(let g=60;g<80;g+=5)u=e[g-3&15]^e[g-8&15]^e[g-14&15]^e[g&15],u=u<<1|u>>>31,e[g&15]=u,d=(l<<5|l>>>27)+(h^m^E)+d+3395469782+u|0,h=h<<30|h>>>2,u=e[g-2&15]^e[g-7&15]^e[g-13&15]^e[g+1&15],u=u<<1|u>>>31,e[g+1&15]=u,E=(d<<5|d>>>27)+(l^h^m)+E+3395469782+u|0,l=l<<30|l>>>2,u=e[g-1&15]^e[g-6&15]^e[g-12&15]^e[g+2&15],u=u<<1|u>>>31,e[g+2&15]=u,m=(E<<5|E>>>27)+(d^l^h)+m+3395469782+u|0,d=d<<30|d>>>2,u=e[g&15]^e[g-5&15]^e[g-11&15]^e[g+3&15],u=u<<1|u>>>31,e[g+3&15]=u,h=(m<<5|m>>>27)+(E^d^l)+h+3395469782+u|0,E=E<<30|E>>>2,u=e[g+1&15]^e[g-4&15]^e[g-10&15]^e[g+4&15],u=u<<1|u>>>31,e[g+4&15]=u,l=(h<<5|h>>>27)+(m^E^d)+l+3395469782+u|0,m=m<<30|m>>>2;t[0]=t[0]+l|0,t[1]=t[1]+h|0,t[2]=t[2]+m|0,t[3]=t[3]+E|0,t[4]=t[4]+d|0}}function iE(){if(!ll){let t=1,e=1;do t=(t^t<<1^(t&128?27:0))&255,e=(e^e<<1)&255,e=(e^e<<2)&255,e=(e^e<<4)&255,e&128&&(e^=9),ce[t]=(e^(e<<1|e>>7)^(e<<2|e>>6)^(e<<3|e>>5)^(e<<4|e>>4)^99)&255;while(t!=1);ce[0]=99;for(let r=0;r<256;r++){let n=ce[r],s=El(n),i=s<<24|n<<16|n<<8|s^n;O[r]=i,D[r]=i>>>8|i<<24,P[r]=i>>>16|i<<16,C[r]=i>>>24|i<<8}ll=!0}}function oE(t,e){let r=t.length>>2,n=r+6,s=4*(n+1),i=1;for(let o=0;o<r;o++)e[o]=t[4*o]<<24|t[4*o+1]<<16|t[4*o+2]<<8|t[4*o+3];for(let o=r;o<s;o++){let a=e[o-1];o%r==0?(a=fl(a<<8|a>>>24)^i<<24,i=El(i)):r>6&&o%r==4&&(a=fl(a)),e[o]=e[o-r]^a}return n}function fl(t){return ce[t>>>24]<<24|ce[t>>>16&255]<<16|ce[t>>>8&255]<<8|ce[t&255]}function as(t){return t<<24|(t&65280)<<8|t>>>8&65280|t>>>24}function El(t){return(t<<1^(t>>7)*27)&255}var eE,tE,cl,rE,nE,ce,O,D,P,C,ll,Yi=ie(()=>{eE=new Uint8Array([128]),tE=new Uint8Array(1),cl=new Int32Array([1732584193,4023233417,2562383102,271733878,3285377520]),rE=54,nE=92,ce=new Uint8Array(256),O=new Int32Array(256),D=new Int32Array(256),P=new Int32Array(256),C=new Int32Array(256),ll=!1});function cs(t){if(aE)return crypto.getRandomValues(t);throw new Error(Rr)}var aE,Xe,Ct,lt,Rr,ls=ie(()=>{ue();aE=typeof crypto!=Se&&typeof crypto.getRandomValues==K,Xe="Invalid password",Ct="Invalid authentication code",lt="zipjs-abort-check-password",Rr="Crypto API not supported"});function wl(t){Rl=t||tn}function _l(t,e,r,n){Object.assign(t,{ready:new Promise(s=>t.resolveReady=s),password:wE(e,r),strength:n-1,pendingInput:Z,discarded:!1})}function Tl(t,e){let r=t.readable.getReader(),n=new ReadableStream({async pull(s){try{let{value:i,done:o}=await r.read();o?s.close():s.enqueue(i)}catch(i){throw sn(e),r.cancel(i).catch(()=>{}),i}},cancel(s){return sn(e),r.cancel(s)}});Object.defineProperty(t,"readable",{get(){return n}})}function Al(t,e,r,n,s,i){let{engine:o,pendingInput:a}=t;a.length&&(e=Be(a,e));let c=e.length-s,f=c-c%Gi;if(r=_E(r,n+f),f){let R=xe(r,n,n+f);R.set(xe(e,0,f)),o.process(R,i)}return t.pendingInput=xe(e,f),r}async function hE(t,e,r,n){let s=await yl(t,e,r,xe(n,0,rn[e])),i=xe(n,rn[e]);if(s[0]!=i[0]||s[1]!=i[1])throw sn(t),new Error(Xe)}function sn(t){let{engine:e}=t;t.discarded=!0,e&&e.dispose&&e.dispose()}async function gE(t,e,r){let n=cs(new Uint8Array(rn[e])),s=await yl(t,e,r,n);return Be(n,s)}async function yl(t,e,r,n){t.password=null;let s=pE[e],i=await RE(r,n,s*2+Wi);return t.engine=Rl(xe(i,0,s),xe(i,s,s*2)),t.discarded&&sn(t),xe(i,s*2)}async function RE(t,e,r){if(pl)try{let n=await nn.importKey(cE,t,uE,!1,EE);return new Uint8Array(await nn.deriveBits(Object.assign({salt:e},dE),n,r*8))}catch{pl=!1}return ul(t,e,hl,r)}function wE(t,e){return e===w?gr(t):e}function _E(t,e){if(e&&e>t.length){let r=t;t=new Uint8Array(e),t.set(r,0)}return t}function xe(t,e,r){return t.subarray(e,r)}var Gi,cE,ml,lE,fE,hl,uE,dE,EE,rn,pE,xt,Wi,gl,nn,mE,pl,Rl,fs,us,Vi=ie(()=>{ue();Hi();Pt();Yi();ls();Gi=16,cE="raw",ml={name:"PBKDF2"},lE={name:"HMAC"},fE="SHA-1",hl=1e3,uE=Object.assign({hash:lE},ml),dE=Object.assign({iterations:hl,hash:{name:fE}},ml),EE=["deriveBits"],rn=[8,12,16],pE=[16,24,32],xt=10,Wi=2,gl=typeof crypto!=Se,nn=gl&&crypto.subtle,mE=gl&&typeof nn!=Se,pl=mE&&typeof nn.importKey==K&&typeof nn.deriveBits==K,Rl=tn,fs=class extends TransformStream{constructor({password:e,rawPassword:r,encryptionStrength:n,checkPasswordOnly:s,checkAuthenticationCode:i=!0}){let o={};super({start(){_l(o,e,r,n)},async transform(a,c){let{password:f,strength:R,resolveReady:p,ready:l}=o;if(f?(await hE(o,R,f,xe(a,0,rn[R]+Wi)),a=xe(a,rn[R]+Wi),s?(sn(o),c.error(new Error(lt))):p()):await l,o.discarded)return;let h=new Uint8Array(a.length-xt-(a.length-xt)%Gi);c.enqueue(Al(o,a,h,0,xt,!0))},async flush(a){let{engine:c,pendingInput:f,ready:R}=o;if(c){if(await R,o.discarded)return;let p=xe(f,f.length-xt),l=new Uint8Array(xe(f,0,f.length-xt));c.process(l,!0);let h=c.digest(),m=f.length<xt?1:0;for(let E=0;E<xt;E++)m|=h[E]^p[E];if(m&&i){a.error(new Error(Ct));return}a.enqueue(l)}}}),Tl(this,o)}},us=class extends TransformStream{constructor({password:e,rawPassword:r,encryptionStrength:n}){let s={};super({start(){_l(s,e,r,n)},async transform(i,o){let{password:a,strength:c,resolveReady:f,ready:R}=s,p=Z;if(a?(p=await gE(s,c,a),f()):await R,s.discarded)return;let l=new Uint8Array(p.length+i.length-i.length%Gi);l.set(p,0),o.enqueue(Al(s,i,l,p.length,0,!1))},async flush(i){let{engine:o,pendingInput:a,ready:c}=s;if(o){if(await c,s.discarded)return;let f=new Uint8Array(a);o.process(f,!1);let R=xe(o.digest(),0,xt);i.enqueue(Be(f,R))}}}),Tl(this,s)}}});function Nl(t,e,r,n){Object.assign(t,{password:e,rawPassword:r,passwordVerification:n}),TE(t,e,r)}function Sl(t,e){let r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=Ol(t)^e[n],ps(t,r[n]);return r}function Il(t,e){let r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=Ol(t)^e[n],ps(t,e[n]);return r}function TE(t,e,r){let n=[305419896,591751049,878082192];if(Object.assign(t,{cryptoKeys:n,crcKey0:new Ve(n[0]),crcKey2:new Ve(n[2])}),r)for(let s=0;s<r.length;s++)ps(t,r[s]);else for(let s=0;s<e.length;s++)ps(t,e.charCodeAt(s))}function ps(t,e){let[,r]=t.cryptoKeys;t.crcKey0.append([e]);let n=~t.crcKey0.get();r=bl(Math.imul(bl(r+Dl(n)),134775813)+1),t.crcKey2.append([r>>>24]);let s=~t.crcKey2.get();t.cryptoKeys=[n,r,s]}function Ol(t){let e=t.cryptoKeys[2]|2;return Dl(Math.imul(e,e^1)>>>8)}function Dl(t){return t&255}function bl(t){return t&4294967295}var wr,ds,Es,Pl=ie(()=>{$r();ls();wr=12,ds=class extends TransformStream{constructor({password:e,rawPassword:r,passwordVerification:n,checkPasswordOnly:s}){super({start(){Nl(this,e,r,n)},transform(i,o){let a=this;if(a.password||a.rawPassword){let c=Sl(a,i.subarray(0,wr));if(a.password=a.rawPassword=null,(c[wr-1]^a.passwordVerification)!=0)throw new Error(Xe);i=i.subarray(wr)}s?o.error(new Error(lt)):o.enqueue(Sl(a,i))}})}},Es=class extends TransformStream{constructor({password:e,rawPassword:r,passwordVerification:n}){super({start(){Nl(this,e,r,n)},transform(s,i){let o=this,a,c;if(o.password||o.rawPassword){o.password=o.rawPassword=null;let f=cs(new Uint8Array(wr));f[wr-1]=o.passwordVerification,a=new Uint8Array(s.length+f.length),a.set(Il(o,f),0),c=wr}else a=new Uint8Array(s.length),c=0;a.set(Il(o,s),c),i.enqueue(a)}})}}});function He(t){if(t instanceof ReadableStream)return t;let e=t.getReader();return new ReadableStream({async pull(r){try{let{value:n,done:s}=await e.read();s?r.close():r.enqueue(n)}catch(n){throw e.cancel(n).catch(()=>{}),n}},cancel(r){return e.cancel(r)}})}function ft(t,e){t=He(t);let r=e?{type:e}:{};if(AE())return new Response(t).blob().then(s=>e?new Blob([s],r):s);let n=[];return t.pipeTo(new WritableStream({write(s){n.push(s)}})).then(()=>new Blob(n,r))}function AE(){return typeof Blob.prototype.stream!=K||new Blob([]).stream()instanceof ReadableStream}function Xi(t){if(t instanceof WritableStream)return t;let e=t.getWriter();return new WritableStream({write(r){return e.write(r)},close(){return e.close()},abort(r){return e.abort(r)}})}var jt=ie(()=>{ue()});function ms(t){return yE.get(t)}function hs(t){return Zi.get(t)}function SE(t,e){let{CompressionStream:r,DecompressionStream:n}=e;if(typeof r!=K&&typeof n!=K)throw new Error(Cl);Zi.set(t,{CompressionStream:r,DecompressionStream:n})}async function xl(t,e){!Zi.has(t)&&e&&SE(t,await import(e))}var Cl,ut,yE,Zi,qt=ie(()=>{ue();Cl="Invalid codec module",ut="Compression method not supported",yE=new Map,Zi=new Map});function NE(t,e,r,n,s){let i=e.writable.getWriter(),o=e.readable.getReader(),a=n===w?new Ve:w,c=0,f=!1,R=!1,p,l,h=new ReadableStream({start(A){l=A},pull(){g()},cancel(A){return R=!0,g(),o.cancel(A)}});return m(),E(),h;async function m(){let A=t.getReader();try{let T=new Uint8Array(Fl);for(T.set(bE),await i.write(T);;){await u(),await i.ready;let{value:I,done:N}=await Hl(A,s);if(N)break;await i.write(I)}a&&await i.write(new Uint8Array(0));let y=new Uint8Array(ji),S=L(y);S.setUint32(0,a?a.get():n,!0),S.setUint32(4,r,!0),f=!0,await i.write(y),await i.close()}catch(T){await Bl(i,T),await _s(A,T)}}async function E(){try{for(;;){let{value:A,done:T}=await d();if(T)break;if(c+=A.length,c>r)throw new Error(Qe);a&&a.append(A),l.enqueue(A)}R||(R=!0,l.close())}catch(A){_(A),await _s(o,A)}}function d(){return o.read().catch(A=>{if(f){if(!a)throw As(A,Lt);if(c!=r)throw As(A,Qe);return{done:!0}}throw Yl(A,s)})}function u(){if(!R&&l.desiredSize<=0)return new Promise(A=>p=A)}function g(){if(p){let A=p;p=w,A()}}function _(A){R||(R=!0,l.error(A),g())}}function qi(t,e){if(!t)return!1;let r=Ll.get(t);r||(r=new Map,Ll.set(t,r));let n=r.get(e);if(n===w){try{new t(e),n=!0}catch{n=!1}r.set(e,n)}return n}function ys(t){return qi(t,Ki)}function Ji(t){return qi(t,Tr)}function Ml(t,e,r){e=dt(e,new TransformStream({flush:r})),Object.defineProperty(t,"readable",{get(){return e}})}function vl(t,e,r){if(!t)throw new Error(ut);return new t(e,r)}function kl(t,e,r){if(t&&e)return e;if(r&&r.requiresModule)return r}function zl(t,e,r,n,s,i){let o=e&&n?n:s||n,a=r.deflate64?Ul:Ki,c;try{c=new o(a,r)}catch(f){if(e&&s&&o!=s)c=new s(a,r);else throw f}return an(t,c,i)}function dt(t,e){return He(t).pipeThrough(e)}function an(t,e,r){let n=e.writable.getWriter(),s=t.getReader();return i(),e.readable;async function i(){try{for(;;){await n.ready;let o=await Hl(s,r);if(o.done){await n.close();break}await n.write(o.value)}}catch(o){await Bl(n,o),await _s(s,o)}}}async function Bl(t,e){try{await t.abort(e)}catch{}}async function _s(t,e){try{await t.cancel(e)}catch{}}function Hl(t,e){let r=t.read();return e?r.catch(n=>{throw e.add(n),n}):r}function Yl(t,e){return e.has(t)?t:As(t,Wl(t)?Qt:Jt)}function Ts(t){return Wl(t)?As(t,Qt):t}function Wl(t){return Re(t)&&t.code==IE}function As(t,e){let r=new Error(e);return r.cause=t,r}function OE(t,e){let r=t.getReader();return new ReadableStream({async pull(n){try{let{value:s,done:i}=await r.read();i?n.close():n.enqueue(s)}catch(s){throw await _s(r,s),Yl(s,e)}},cancel(n){return r.cancel(n)}})}var Qe,Jt,Qt,Lt,IE,Ki,Ul,Tr,Fl,ji,bE,gs,Rs,ws,Ll,Qi=ie(()=>{$r();al();Vi();Pl();ls();ue();Pt();jt();Zt();qt();Qe="Invalid uncompressed size",Jt="Invalid compressed data",Qt="Codec out of memory",Lt="Invalid CRC32",IE="Z_MEM_ERROR",Ki="deflate-raw",Ul="deflate64-raw",Tr="gzip",Fl=10,ji=8,bE=[31,139,8],gs=class extends TransformStream{constructor(e,{chunkSize:r,CompressionStreamFallback:n,CompressionStream:s}){super({});let{compressed:i,encrypted:o,useCompressionStream:a,zipCrypto:c,computeCrc32:f,level:R,deflate64:p,format:l,compressionMethod:h,inputSize:m}=e,E=this,d,u,g,_=super.readable,A=l&&hs(l),T=kl(a,s,n),y=f&&i&&!p&&!A&&(!o||c)&&!!T;if((!o||c)&&f&&!y&&(d=new en,_=dt(_,d)),i)if(A)_=an(_,vl(A.CompressionStream,l,{level:R,chunkSize:r,compressionMethod:h,uncompressedSize:m}));else if(y)g=new Rs,_=an(_,new T(Tr,{level:R,chunkSize:r})),_=dt(_,g);else try{_=zl(_,a,{level:R,chunkSize:r},s,n)}catch(S){if(!a&&n)throw Ts(S);let I;try{I=new s(Tr)}catch{throw Ts(S)}_=an(_,I),_=dt(_,new Rs)}o&&(c?_=dt(_,new Es(e)):(u=new us(e),_=dt(_,u))),Ml(E,_,()=>{(!o||c)&&f&&(E.crc32=y?g.crc32:new DataView(d.value.buffer).getUint32(0))})}},Rs=class extends TransformStream{constructor(){let e,r=Fl,n=new Uint8Array(0);super({transform(s,i){if(r){let f=Math.min(r,s.length);if(r-=f,s=s.subarray(f),!s.length)return}let o=n.length+s.length;if(o<=ji){n=Be(n,s);return}let a=o-ji,c=Math.min(a,n.length);i.enqueue(Be(n.subarray(0,c),s.subarray(0,a-c))),n=Be(n.subarray(c),s.subarray(a-c))},flush(){let s=L(n);e.crc32=s.getUint32(0,!0),e.uncompressedSize=s.getUint32(4,!0)}}),e=this}};ws=class extends TransformStream{constructor(e,{chunkSize:r,DecompressionStreamFallback:n,DecompressionStream:s}){super({});let{zipCrypto:i,encrypted:o,checkCrc32:a,crc32:c,compressed:f,useCompressionStream:R,deflate64:p,format:l,compressionMethod:h,rawBitFlag:m,outputSize:E}=e,d,u,g,_=super.readable;if(o&&(i?_=dt(_,new ds(e)):(u=new fs(e),_=dt(_,u))),f){let A=new Set,T=l&&hs(l),y;if(T)_=an(_,vl(T.DecompressionStream,l,{chunkSize:r,compressionMethod:h,rawBitFlag:m,uncompressedSize:E}),A);else{let S=kl(R,s,n);if(a&&!p&&c!==w&&E!==w&&S)try{y=new S(Tr,{chunkSize:r})}catch{y=w}if(!y)try{_=zl(_,R,{chunkSize:r,deflate64:p},s,n,A)}catch(I){if(p||E===w||!R&&n)throw Ts(I);try{y=new s(Tr)}catch{throw Ts(I)}}}y?(g=!0,_=NE(_,y,E,c,A)):_=OE(_,A)}a&&!g&&(d=new en,_=dt(_,d)),Ml(this,_,()=>{if(d){let A=new DataView(d.value.buffer).getUint32(0,!1);if(c!=A)throw new Error(Lt)}})}},Ll=new Map});var DE,Gl,Vl,Xl,$i,Zl,jl,Ar,Is,Ss,cn,bs=ie(()=>{ue();Qi();DE=64*1024,Gl="message",Vl="start",Xl="pull",$i="data",Zl="ack",jl="close",Ar="deflate",Is="inflate",Ss=class extends TransformStream{constructor(e,r){super({});let n=this,{codecType:s}=e,i;s.startsWith(Ar)?i=gs:s.startsWith(Is)&&(i=ws),n.outputSize=0;let o=0,a=new i(e,r),c=super.readable,f=new TransformStream({transform(p,l){p&&p.length&&(o+=p.length,l.enqueue(p))},flush(){Object.assign(n,{inputSize:o})}}),R=new TransformStream({transform(p,l){if(p&&p.length&&(l.enqueue(p),n.outputSize+=p.length,e.outputSize!==w&&n.outputSize>e.outputSize))throw new Error(Qe)},flush(){let{crc32:p}=a;Object.assign(n,{crc32:p,inputSize:o})}});Object.defineProperty(n,"readable",{get(){return c.pipeThrough(f).pipeThrough(a).pipeThrough(R)}})}},cn=class extends TransformStream{constructor(e){let r=[],n=0,s=0;(!Number.isFinite(e)||e<1)&&(e=DE),super({transform(a,c){for(r.push(a),n+=a.length;n>e;)s+=e,c.enqueue(i())},flush(a){n&&(s+=n,a.enqueue(o(r,n)))}}),Object.defineProperty(this,"outputSize",{get:()=>s});function i(){let a=new Uint8Array(e),c=0;for(;c<e;){let f=r[0],R=e-c;f.length<=R?(a.set(f,c),c+=f.length,r.shift()):(a.set(f.subarray(0,R),c),r[0]=f.subarray(R),c+=R)}return n-=e,a}function o(a,c){let f=new Uint8Array(c),R=0;for(let p of a)f.set(p,R),R+=p.length;return f}}}});function ql({initModule:t}){to=t}function Jl(t){eo=t}async function Ql(t){let{CompressionStream:e,CompressionStreamFallback:r}=t;return r&&!r.requiresModule||ys(e)||Ji(e)?!0:r?await $l(t):!1}async function $l(t){if(to)try{return await to(t),!0}catch{}return!1}function ro(t){t.createWorker?Kl=!0:Ns=!1}async function Os(t,...e){try{await t(...e)}catch{}}function no(t,e){return{run:()=>Ps(t,e)}}async function Ps({options:t,readable:e,writable:r,onTaskFinished:n,workerOptions:s},i){let o,a,c;try{if(t.compressed&&!t.format){let m=t.codecType.startsWith(Ar),E=m?i.CompressionStreamFallback:i.DecompressionStreamFallback,d=m?i.CompressionStream:i.DecompressionStream;t.useCompressionStream?E&&E.requiresModule&&!ys(d)&&await f():!await f()&&(!E||E.requiresModule)&&(t.useCompressionStream=!0)}t.encrypted&&!t.zipCrypto&&await f(),o=new Ss(t,i),a=new cn(Jr(i));let{signal:R}=s.streamOptions;await e.pipeThrough(o).pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0,signal:R});let{crc32:p,inputSize:l,outputSize:h}=o;return{crc32:p,inputSize:l,outputSize:h}}catch(R){if(o){let p=a?a.outputSize:0;if(s.outputSize=p,Re(R))try{R.outputSize=p}catch{}}throw R}finally{n()}function f(){return c||(c=$l(i)),c}}var $t,Ns,Kl,eo,to,Ut,Ds,yr=ie(()=>{ue();Ge();Zt();bs();$t="Worker startup timeout",to=()=>{};Ut=class{constructor(e,{readable:r,writable:n},s,i){let{options:o,config:a,streamOptions:c,useWebWorkers:f,transferStreams:R,workerURI:p}=s,{createWorker:l}=s,{signal:h}=c;return Kl&&(l=w),Object.assign(e,{busy:!0,generation:(e.generation||0)+1,readable:r.pipeThrough(new cn(Jr(a))).pipeThrough(new Ds(c),{signal:h}),writable:n,options:Object.assign({},o),workerOptions:s,workerURI:p,createWorker:l,transferStreams:R,terminate(){return new Promise(m=>{let{worker:E,busy:d}=e;d?(e.terminateResolvers=e.terminateResolvers||[],e.terminateResolvers.push(m)):(E&&(E.terminate(),e.worker=null),m()),e.interface=null})},onTaskFinished(){if(e.busy){let{terminateResolvers:m,worker:E}=e;m&&(e.terminateResolvers=null,E&&(e.terminated=!0,E.terminate())),e.busy=!1;let d=i(e);m&&m.forEach(u=>u(d))}}}),Ns===w&&(Ns=typeof Worker!=Se),(f&&eo&&(Ns&&p||l)?eo:no)(e,a)}},Ds=class extends TransformStream{constructor({onstart:e,onprogress:r,size:n,onend:s}){let i=0;super({async start(){e&&await Os(e,n)},async transform(o,a){i+=o.length,r&&await Os(r,i,n),a.enqueue(o)},async flush(){s&&await Os(s,i)}})}}});async function Us(t,e){let{options:r,config:n}=e,{transferStreams:s,useWebWorkers:i,useCompressionStream:o,compressed:a,checkCrc32:c,computeCrc32:f,encrypted:R,format:p,codecURI:l}=r,{workerURI:h,createWorker:m,maxWorkers:E}=n;p&&(l&&(r.codecURI=vE(l,n.baseURI)),await xl(p,r.codecURI)),e.transferStreams=!p&&(s||s===w&&n.transferStreams);let d=!a&&!c&&!f&&!R,u=p===w||!!r.codecURI;return e.useWebWorkers=!d&&u&&(i||i===w&&n.useWebWorkers),e.workerURI=e.useWebWorkers&&h?h:w,e.createWorker=e.useWebWorkers&&m?m:w,r.useCompressionStream=o||o===w&&n.useCompressionStream,(await g()).run();async function g(){let A=er.find(T=>!T.busy);if(A)return lf(A),new Ut(A,t,e,_);if(er.length<E){let T={indexWorker:cf};return cf++,er.push(T),new Ut(T,t,e,_)}else return new Promise(T=>{tr.push({resolve:T,stream:t,workerOptions:e}),xs=n.workerStarvationTimeout,Ls()})}function _(A){if(lo(),A.terminated)return A.terminated=!1,zE();if(tr.length){let[{resolve:T,stream:y,workerOptions:S}]=tr.splice(0,1);T(new Ut(A,y,S,_)),Ls()}else A.worker?(lf(A),BE(A,e)):er=er.filter(T=>T!=A)}}function vE(t,e){try{return new URL(t,e).toString()}catch{return t}}function Ls(){!Sr&&tr.length&&Number.isFinite(xs)&&xs>=0&&(Sr=setTimeout(kE,xs))}function lo(){Sr&&(clearTimeout(Sr),Sr=null)}function kE(){if(Sr=null,tr.length){let[{resolve:t,stream:e,workerOptions:r}]=tr.splice(0,1);t(new Ut({},e,ff(r),uf)),Ls()}}function zE(){let t=tr.splice(0).map(({resolve:e,stream:r,workerOptions:n})=>new Promise(s=>{e(new Ut({},r,ff(n),()=>{uf(),s()}))}));return lo(),Promise.all(t)}function ff(t){return Object.assign({},t,{useWebWorkers:!1,workerURI:w,createWorker:w})}function uf(){lo(),Ls()}function BE(t,e){let{config:r}=e,{terminateWorkerTimeout:n}=r;Number.isFinite(n)&&n>=0&&(t.terminateTimeout=setTimeout(async()=>{er=er.filter(s=>s!=t);try{await t.terminate()}catch{}},n))}function lf(t){let{terminateTimeout:e}=t;e&&(clearTimeout(e),t.terminateTimeout=null)}var er,tr,Sr,xs,cf,Fs=ie(()=>{ue();bs();qt();yr();er=[],tr=[],cf=0});function df(t){let e="";for(let r=0;r<t.length;r++)e+=HE[t[r]];return e}var HE,Ef=ie(()=>{HE="\\0\\u263A\\u263B\\u2665\\u2666\\u2663\\u2660\\u2022\\u25D8\\u25CB\\u25D9\\u2642\\u2640\\u266A\\u266B\\u263C\\u25BA\\u25C4\\u2195\\u203C\\xB6\\xA7\\u25AC\\u21A8\\u2191\\u2193\\u2192\\u2190\\u221F\\u2194\\u25B2\\u25BC !\\"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\\u2302\\xC7\\xFC\\xE9\\xE2\\xE4\\xE0\\xE5\\xE7\\xEA\\xEB\\xE8\\xEF\\xEE\\xEC\\xC4\\xC5\\xC9\\xE6\\xC6\\xF4\\xF6\\xF2\\xFB\\xF9\\xFF\\xD6\\xDC\\xA2\\xA3\\xA5\\u20A7\\u0192\\xE1\\xED\\xF3\\xFA\\xF1\\xD1\\xAA\\xBA\\xBF\\u2310\\xAC\\xBD\\xBC\\xA1\\xAB\\xBB\\u2591\\u2592\\u2593\\u2502\\u2524\\u2561\\u2562\\u2556\\u2555\\u2563\\u2551\\u2557\\u255D\\u255C\\u255B\\u2510\\u2514\\u2534\\u252C\\u251C\\u2500\\u253C\\u255E\\u255F\\u255A\\u2554\\u2569\\u2566\\u2560\\u2550\\u256C\\u2567\\u2568\\u2564\\u2565\\u2559\\u2558\\u2552\\u2553\\u256B\\u256A\\u2518\\u250C\\u2588\\u2584\\u258C\\u2590\\u2580\\u03B1\\xDF\\u0393\\u03C0\\u03A3\\u03C3\\xB5\\u03C4\\u03A6\\u0398\\u03A9\\u03B4\\u221E\\u03C6\\u03B5\\u2229\\u2261\\xB1\\u2265\\u2264\\u2320\\u2321\\xF7\\u2248\\xB0\\u2219\\xB7\\u221A\\u207F\\xB2\\u25A0\\xA0".split("")});function ln(t,e){return YE(t,e,!0)}function fo(t){if(t.some(e=>e>127))try{return new TextDecoder("utf-8",{fatal:!0}).decode(t),!0}catch{return!1}else return!1}function YE(t,e,r){return e&&e.trim().toLowerCase()=="cp437"?df(t):new TextDecoder(e,{ignoreBOM:r}).decode(t)}var uo=ie(()=>{Ef()});function GE(){gf=(async()=>{try{let e=new Blob([new Uint8Array(3)]).slice(1,2).stream().getReader(),r=0,n=await e.read();for(;!n.done;)r+=n.value.length,n=await e.read();Eo=r==1}catch{Eo=!1}})()}function fn(t){return!!(t&&t.getData)}async function ge(t,e){if(t.init&&!t.initialized)await t.init(e);else return Promise.resolve()}async function VE(t){return t=new pt(t),await ge(t),(t.size===w||!t.readUint8Array)&&(t=new $e(await ft(t.readable)),await ge(t)),t}function re(t,e,r){return t.readUint8Array(e,r)}function po(t,e){return t.createReadable?t.createReadable(e):t.readUint8Array?Et.prototype.createReadable.call(t,e):t.readable}var mf,hf,sR,iR,oR,WE,pf,Ms,Et,Eo,gf,$e,vs,ks,pt,Ir,un=ie(()=>{ue();Ge();Pt();jt();uo();mf="Writer iterator completed too soon",hf="Invalid writer (size must be writable)",sR=256*1024,iR=16*1024*1024,oR=65557,WE="writable",pf=Symbol(),Ms=class{constructor(){this.size=0}init(){this.initialized=!0}},Et=class extends Ms{get readable(){return this.createReadable()}createReadable({offset:e=0,size:r,chunkSize:n=Jr(at())}={}){let s=this,i=0;return n=zi(n),new ReadableStream({async pull(o){let a=r===w?n:Math.min(n,r-i),c=await re(s,e+i,a);c.length&&(o.enqueue(c),i+=c.length),(r!==w&&i>=r||!c.length&&a)&&o.close()}})}};$e=class extends Et{constructor(e){super(),Object.assign(this,{sourceBlob:e,size:e.size}),gf||GE()}createReadable(e){let r=this,{sourceBlob:n,size:s}=r,{offset:i=0,size:o=s-i}=e||{};if(typeof n.stream==K){if(!i&&o>=s)return He(n.stream());if(Eo)return He(n.slice(i,i+o).stream())}return super.createReadable(e)}async readUint8Array(e,r){let n=this,s=e+r,a=await(!e&&s>=n.size?n.sourceBlob:n.sourceBlob.slice(e,s)).arrayBuffer();return a.byteLength>r&&(a=a.slice(e,s)),new Uint8Array(a)}},vs=class extends Et{constructor(e){super(),this.readers=e}async init(){let e=this;e.lastDiskNumber=0;let r=e.readers=await Promise.all(e.readers.map(VE));e.diskOffsets=r.map(n=>{let s=e.size;return e.size+=n.size,s}),super.init()}getDiskOffset(e){let{diskOffsets:r,size:n}=this,s=r[e];return s===w?n:s}async readUint8Array(e,r){let n=this,{readers:s}=this,i,o=0,a=e;for(;s[o]&&a>=s[o].size;)a-=s[o].size,o++;let c=s[o];if(c){let f=c.size;if(a+r<=f)i=await re(c,a,r);else{let R=f-a,p=await re(c,a,R),l=await n.readUint8Array(e+R,r-R);i=Be(p,l)}}else i=Z;return n.lastDiskNumber=Math.max(o,n.lastDiskNumber),i}},ks=class extends Ms{constructor(e,r=4294967295){super();let n=this;Object.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:r,availableSize:r});let s,i,o,a=new WritableStream({async write(p){if(p===pf){o&&await f();return}let{availableSize:l}=n;if(o)p.length>=l?(await c(p.subarray(0,l)),await f(),p.length>l&&await this.write(p.subarray(l))):await c(p);else{let{value:h,done:m}=await e.next();if(m&&!h)throw new Error(mf);s=h,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await ge(s),i=h.writable,o=i.getWriter(),await this.write(p)}},async close(){o&&(await o.ready,await R())},async abort(p){o&&await o.abort(p)}});Object.defineProperty(n,WE,{get(){return a}});async function c(p){let l=p.length;l&&(await o.ready,await o.write(p),s.size+=l,n.availableSize-=l)}async function f(){await R(),n.diskOffset+=s.size,n.diskNumber++,o=null,n.availableSize=n.maxSize}async function R(){await o.close()}}async closeDisk(){let e=this.writable.getWriter();try{await e.ready,await e.write(pf)}finally{e.releaseLock()}}},pt=class{constructor(e){return Array.isArray(e)&&(e=new vs(e)),(e instanceof ReadableStream||typeof e.getReader==K)&&(e={readable:He(e)}),e}},Ir=class{constructor(e){e.writable===w&&typeof e.next==K&&(e=new ks(e)),(e instanceof WritableStream||typeof e.getWriter==K)&&(e={writable:Xi(e)});try{e.size=e.size===w?0:e.size}catch{throw new Error(hf)}return e}}});function Te(t,e,r){if(!t.some(n=>n.reason==e)){let n={reason:e};r!==w&&(n.filename=r),t.push(n)}}var mo=ie(()=>{ue()});function Rf(t){if(t){let e=new Map;if(t.forEach((r,n)=>{pp.has(n)||e.set(n,r.data)}),e.size)return e}}function An(t,e,r){return t?e?12:16+r*4:0}var _o,To,gn,Ao,Rn,yo,So,Io,nr,Nr,wn,bo,_n,No,Oo,Do,Po,Co,xo,zs,Lo,Uo,Fo,Mo,sr,vo,XE,ko,Bs,ZE,Tn,jE,KE,qE,JE,zo,Bo,Ho,Yo,Wo,Go,QE,$E,ep,tp,rp,np,sp,ip,op,ap,cp,lp,fp,up,dp,Ep,mt,pp,Hs=ie(()=>{ue();_o="filename",To="rawFilename",gn="comment",Ao="rawComment",Rn="uncompressedSize",yo="compressedSize",So="offset",Io="diskNumberStart",nr="lastModDate",Nr="rawLastModDate",wn="lastAccessDate",bo="rawLastAccessDate",_n="creationDate",No="rawCreationDate",Oo="internalFileAttributes",Do="externalFileAttributes",Po="msdosAttributesRaw",Co="msdosAttributes",xo="msDosCompatible",zs="zip64",Lo="encrypted",Uo="version",Fo="versionMadeBy",Mo="zipCrypto",sr="directory",vo="executable",XE="symlink",ko="compressionMethod",Bs="signature",ZE="crc32",Tn="extraField",jE="extraFieldInfoZip",KE="extraFieldUnix",qE="extraFieldUnixType1",JE="extraFieldPkwareUnix",zo="uid",Bo="gid",Ho="unixMode",Yo="setuid",Wo="setgid",Go="sticky",QE="bitFlag",$E="rawBitFlag",ep="filenameLength",tp="extraFieldLength",rp="unixExternalUpper",np="filenameUTF8",sp="commentUTF8",ip="rawExtraField",op="extraFieldZip64",ap="extraFieldUnicodePath",cp="extraFieldUnicodeComment",lp="extraFieldAES",fp="extraFieldNTFS",up="extraFieldExtendedTimestamp",dp="extraFieldUSDZ",Ep=[_o,To,Rn,yo,nr,Nr,gn,Ao,wn,bo,_n,No,So,Io,Oo,Do,Po,Co,xo,zs,Lo,Uo,Fo,Mo,sr,vo,XE,ko,Bs,ZE,Tn,KE,jE,qE,JE,zo,Bo,Ho,rp,Yo,Wo,Go,QE,$E,ep,tp,np,sp,ip,op,ap,cp,lp,fp,up,dp],mt=class{constructor(e){Ep.forEach(r=>this[r]=e[r])}},pp=new Set([1,39169,10,21589,28789,25461,6534,30837,30805,22613,13])});var Xf={};Hd(Xf,{ERR_AMBIGUOUS_ARCHIVE:()=>Ea,ERR_BAD_FORMAT:()=>Or,ERR_CENTRAL_DIRECTORY_NOT_FOUND:()=>ca,ERR_CODEC_OUT_OF_MEMORY:()=>Qt,ERR_ENCRYPTED:()=>ii,ERR_ENCRYPTED_CENTRAL_DIRECTORY:()=>pa,ERR_ENTRY_DATA_OUT_OF_BOUNDS:()=>da,ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND:()=>aa,ERR_EOCDR_NOT_FOUND:()=>oa,ERR_EXTRAFIELD_ZIP64_NOT_FOUND:()=>fa,ERR_INVALID_AUTHENTICATION_CODE:()=>Ct,ERR_INVALID_COMPRESSED_DATA:()=>Jt,ERR_INVALID_CRC32:()=>Lt,ERR_INVALID_FILENAME_VALIDATION:()=>ga,ERR_INVALID_MAX_APPENDED_DATA_SIZE:()=>Ra,ERR_INVALID_PASSWORD:()=>Xe,ERR_INVALID_STRICTNESS:()=>ha,ERR_INVALID_UNCOMPRESSED_SIZE:()=>Qe,ERR_LOCAL_FILE_HEADER_NOT_FOUND:()=>la,ERR_OVERLAPPING_ENTRY:()=>ua,ERR_SPLIT_ZIP_FILE:()=>Vs,ERR_UNSAFE_FILENAME:()=>ma,ERR_UNSUPPORTED_COMPRESSION:()=>ut,ERR_UNSUPPORTED_ENCRYPTION:()=>Gs,ERR_UNSUPPORTED_UINT64:()=>wa,ERR_WORKER_STARTUP_TIMEOUT:()=>$t,WARNING_APPENDED_DATA:()=>Zs,WARNING_COMPRESSED_PATCHED_DATA:()=>Aa,WARNING_DUPLICATE_FILENAME:()=>ba,WARNING_MALFORMED_EXTRA_FIELD:()=>oi,WARNING_MISMATCHED_LOCAL_FILE_HEADER_BIT_FLAG:()=>Da,WARNING_MISMATCHED_LOCAL_FILE_HEADER_COMPRESSION_METHOD:()=>Pa,WARNING_MISMATCHED_LOCAL_FILE_HEADER_CRC32_OR_SIZES:()=>Ca,WARNING_MISMATCHED_LOCAL_FILE_HEADER_FILENAME:()=>Oa,WARNING_MISMATCHED_ZIP64_END_OF_CENTRAL_DIRECTORY:()=>Dr,WARNING_MULTIPLE_END_OF_CENTRAL_DIRECTORY:()=>Na,WARNING_PREPENDED_CENTRAL_DIRECTORY:()=>Sa,WARNING_PREPENDED_DATA:()=>js,WARNING_TRAILING_CENTRAL_DIRECTORY_DATA:()=>Ia,WARNING_UNKNOWN_VERSION:()=>Ta,WARNING_UNKNOWN_ZIP64_EXTENSIBLE_DATA:()=>ya,WARNING_UNSORTED_CENTRAL_DIRECTORY:()=>_a,WARNING_WRAPPED_ENTRIES_COUNT:()=>Xs,ZipReader:()=>vt,ZipReaderStream:()=>qs,isZipFile:()=>vf});function Ip(t,e){let{readable:r,writable:n}=new TransformStream,s,i={cancel:async a=>{e.delete(i),await(s?s.cancel(a):r.cancel(a))}};return i.readable=new ReadableStream({async pull(a){s||(s=r.getReader(),e.add(i),o());let{done:c,value:f}=await s.read();c?a.close():a.enqueue(f)},cancel:a=>i.cancel(a)},{highWaterMark:0}),i;async function o(){try{await t.getData(n,{preventClose:!1})}catch(a){try{await n.abort(a)}catch{}}finally{e.delete(i)}}}async function vf(t,e={}){if(t=new pt(t),await ge(t),(t.size===w||!t.readUint8Array)&&(t=new $e(await ft(t.readable)),await ge(t)),t.size<22)return!1;let r=La(e,{}),n=r!=ot,s=Yf(e[Ui],r),{endOfDirectoryInfo:i,endOfDirectoryReachingEndCount:o}=await Wf(t,n,s);if(!i||r==Nt&&o>1)return!1;let a=V(L(i),20),c=i.offset+22+a;return t.size-c<=s}function Vo(t){let e=Math.min(t.byteLength,1024)-3;for(let r=0;r<e;r++)if(v(t,r)==134630224)return!0;return!1}function Nf(t,e,r){let n=0;for(;r+46<=e.length&&v(t,r)==33639248;)r+=46+V(t,r+28)+V(t,r+30)+V(t,r+32),n++;return n%65536?0:n}function Xo(t){if(t.length>=6){let e=L(t);if(v(e,0)==84233040){let r=V(e,4);if(6+r<=t.length)return new Uint8Array(t.subarray(6,6+r))}}}function bp(t,e,r){let n=t&&t.compressedSize?t.compressedSize:e;return n>0&&n<=r?n:r}function Np(t){let e={rawExtensibleData:t};if(t.length>=28){let r=L(t),n=V(r,26);Object.assign(e,{compressionMethod:V(r,0),compressedSize:Le(r,2),uncompressedSize:Le(r,10),encryptionAlgorithm:V(r,18),bitLength:V(r,20),flags:V(r,22),hashAlgorithm:V(r,24),hashData:t.subarray(28,28+n)})}return e}function kf(t,e,r){let n=t.rawBitFlag=V(e,r+2),s=(n&1)==1,i=v(e,r+6);Object.assign(t,{encrypted:s,version:V(e,r),bitFlag:{level:(n&6)>>1,dataDescriptor:(n&8)==8,languageEncodingFlag:(n&2048)==2048},rawLastModDate:i,lastModDate:Gp(i),filenameLength:V(e,r+22),extraFieldLength:V(e,r+24)})}function zf(t,e,r,n,s){let{rawExtraField:i}=e,o=e.extraField=new Map,a=L(i),c=0,f=!1;try{for(;c<i.length;){let y=V(a,c),S=V(a,c+2);o.set(y,{type:y,data:i.slice(c+4,c+4+S)}),c+=4+S}}catch{f=!0}c>i.length&&(f=!0);let R=V(r,n+4);Object.assign(e,{signature:v(r,n+10),crc32:v(r,n+10),compressedSize:v(r,n+14),uncompressedSize:v(r,n+18)});let p=o.get(1);p&&(Op(p,e),e.extraFieldZip64=p);let l=o.get(28789);l&&(Of(l,_o,To,e,t),e.extraFieldUnicodePath=l);let h=o.get(25461);h&&(Of(h,gn,Ao,e,t),e.extraFieldUnicodeComment=h);let m=o.get(39169);m&&m.data.length>=7?(Dp(m,e,R),e.extraFieldAES=m):e.compressionMethod=R;let E=o.get(13);E&&(Df(E,e),e.extraFieldPkwareUnix=E);let d=o.get(22613);d&&(Df(d,e),e.extraFieldUnixType1=d);let u=o.get(10);u&&(Pp(u,e),e.extraFieldNTFS=u);let g=o.get(30805),_;if(g&&(_=Pf(g,e,!1),e.extraFieldUnix=g),!_){let y=o.get(30837);y&&(Pf(y,e,!0),e.extraFieldInfoZip=y)}let A=o.get(21589);A&&(Cp(A,e,s),e.extraFieldExtendedTimestamp=A);let T=o.get(6534);return T&&(e.extraFieldUSDZ=T),f}function Op(t,e){e.zip64=!0;let r=L(t.data),n=Tp.filter(([i,o])=>e[i]==o),s=n.reduce((i,[,o])=>i+If[o].bytes,0);if(t.data.length<s)throw new Error(fa);for(let i=0,o=0;i<n.length;i++){let[a,c]=n[i],f=If[c];e[a]=t[a]=f.getValue(r,o),o+=f.bytes}}function Of(t,e,r,n,s){if(t.data.length<5){t.valid=!1;return}let i=L(t.data),o=new Ve;o.append(s[r]);let a=L(new Uint8Array(4));a.setUint32(0,o.get(),!0);let c=v(i,1),f=Mt(i,0);Object.assign(t,{version:f,[e]:ln(t.data.subarray(5)),valid:f==1&&!s.bitFlag.languageEncodingFlag&&c==v(a,0)}),t.valid&&(n[e]=t[e],n[e+_p]=!0)}function Dp(t,e,r){let n=L(t.data),s=Mt(n,4);Object.assign(t,{vendorVersion:Mt(n,0),vendorId:Mt(n,2),strength:s,originalCompressionMethod:r,compressionMethod:V(n,5)}),e.compressionMethod=t.compressionMethod,t.vendorVersion!=Mf&&(e.crc32=w)}function Pp(t,e){let r=L(t.data),n=4,s;try{for(;n<t.data.length&&!s;){let i=V(r,n),o=V(r,n+2);i==1&&(s=t.data.slice(n+4,n+4+o)),n+=4+o}}catch{}if(s&&s.length==24){let i=L(s),o=i.getBigUint64(0,!0),a=i.getBigUint64(8,!0),c=i.getBigUint64(16,!0);Object.assign(t,{rawLastModDate:o,rawLastAccessDate:a,rawCreationDate:c});let f=Zo(o),R=Zo(a),p=Zo(c),l={lastModDate:f,lastAccessDate:R,creationDate:p};Object.assign(t,l),Object.assign(e,l,{rawLastAccessDate:a,rawCreationDate:c})}}function Df(t,e){if(t.data.length<8)return;let r=L(t.data),n=new Date((v(r,0)|0)*1e3),s=new Date((v(r,4)|0)*1e3),i={lastAccessDate:n,lastModDate:s};t.data.length>=12&&(i.uid=V(r,8),i.gid=V(r,10)),Object.assign(t,i),Object.assign(e,i)}function Pf(t,e,r){try{let n=L(t.data),s,i;if(r){let o=0,a=Mt(n,o++),c=Mt(n,o++);s=Cf(t.data.subarray(o,o+c)),o+=c;let f=Mt(n,o++);i=Cf(t.data.subarray(o,o+f)),Object.assign(t,{version:a,uid:s,gid:i})}else t.data.length>=4&&(s=V(n,0),i=V(n,2),Object.assign(t,{uid:s,gid:i}));return s!==w&&(e.uid=s),i!==w&&(e.gid=i),s!==w||i!==w}catch{}}function Cf(t){let e=new Uint8Array(4);return e.set(t,0),new DataView(e.buffer,e.byteOffset,4).getUint32(0,!0)}function Cp(t,e,r){if(!t.data.length)return;let n=L(t.data),s=Mt(n,0),i=[],o=[];r?((s&1)==1&&(i.push(nr),o.push(Nr)),(s&2)==2&&(i.push(wn),o.push(bo)),(s&4)==4&&(i.push(_n),o.push(No))):t.data.length>=5&&(i.push(nr),o.push(Nr));let a=1;i.forEach((c,f)=>{if(t.data.length>=a+4){let R=v(n,a);e[c]=t[c]=new Date((R|0)*1e3);let p=o[f];t[p]=R}a+=4})}async function xp({reader:t,fileEntry:e,index:r,offset:n,crc32:s,compressedSize:i,uncompressedSize:o,dataOffset:a,dataDescriptor:c,extraFieldZip64:f,readRanges:R}){let p=0;if(c&&(f?p=20:p=12),p){let d=await re(t,a+i,p+4),u=L(d),g=d.length==p+4&&v(u,0)==134695760;if(g){let _=xf(u,4,f);(e.encrypted&&!e.zipCrypto||_.crc32==s)&&_.compressedSize==i&&_.uncompressedSize==o?p+=4:g=!1}if(d.length>=p){let _=xf(u,g?4:0,f);_.signature=g,e.localDirectory.dataDescriptor=_}}let l={start:n,end:a+i+p,fileEntry:e},{indexes:h,sortedRanges:m,pendingRanges:E}=R;if(!h.has(r)){let d=Lp(m,l)||E.find(u=>Ko(l,u));if(d){let u=new Error(ua);throw u.overlappingEntry=d.fileEntry,u}h.add(r),E.push(l),E.length*E.length>m.length&&(E.sort((u,g)=>u.start-g.start),R.sortedRanges=Up(m,E),E.length=0)}}function Lp(t,e){let r=0,n=t.length;for(;r<n;){let o=r+n>>>1;t[o].start<e.start?r=o+1:n=o}let s=t[r-1],i=t[r];if(s&&Ko(e,s))return s;if(i&&Ko(e,i))return i}function Ko(t,e){return t.start<e.end&&e.start<t.end}function Up(t,e){let r=[],n=0,s=0;for(;n<t.length||s<e.length;)s==e.length||n<t.length&&t[n].start<e[s].start?r.push(t[n++]):r.push(e[s++]);return r}function xf(t,e,r){let n=v(t,e),s,i;return r?(s=Le(t,e+4),i=Le(t,e+12)):(s=v(t,e+4),i=v(t,e+8)),{crc32:n,compressedSize:s,uncompressedSize:i}}function Pr(t,e){return t.getDiskOffset?t.getDiskOffset(e):0}async function Fp(t){return await Bf(t)==134695760}async function Mp(t){let e=await Bf(t);return e==134695760||e==808471376}async function Bf(t){let e=await re(t,0,4);return v(L(e))}function Hf(t){return t===Nt||t===ns||t===ot}function vp(t,e,r){return Math.min(t,r?e*Sp:e)}function La(t,e){return Lf(t,Lf(e,ns))}function Lf(t,e){let r=t[Mc];if(r!==w){if(!Hf(r))throw new Error(ha);return r}let n=t[Rc];return n===w?e:n?Nt:e==ot?ot:ns}function kp(t,e){return t===w?e!=ot:!!t}function zp(t,e){return t===w?e==Nt:!!t}function Bp(t,e){if(t===w)return e;if(!Hf(t))throw new Error(ga);return t}function Hp(t,e){if(e==ot)return!1;let r=t.split("/");return r.length>1&&r[r.length-1]===""&&r.pop(),wp.test(t)||t.startsWith("/")||t.startsWith("\\\\")||Rp.test(t)?!0:e==Nt&&(r.includes(".")||r.includes("")||t.includes("\\0"))}function Yf(t,e){if(t!==w){let r=Ot(t);if(typeof r!=lc||Number.isNaN(r)||r<0)throw new Error(Ra);return r}return e==Nt?0:e==ot?1/0:65535}async function Wf(t,e,r){let{size:n}=t,s=Math.min(n,65557),i={remaining:yp},o,a,c=0;for await(let[f,R,p,l,h]of Gf(t,s)){let m=V(f,l+20);if(h+22+m==n){let E=await Vf(t,f,R,l,h,n,i);if(E==Ks){if(o||(o=qo(p,l,h)),c++,!e||c>1)break}else E==xa&&!a&&(a=qo(p,l,h))}}return o||(o=a),o||(o=await Yp(t,r,i)),{endOfDirectoryInfo:o,endOfDirectoryReachingEndCount:c}}async function Yp(t,e,r){let{size:n}=t,s=Math.min(n,e==1/0?n:65557+e),i,o;for await(let[a,c,f,R,p]of Gf(t,s)){let l=qo(f,R,p);i||(i=l);let h=await Vf(t,a,c,R,p,n,r);if(h==Ks)return l;h==xa&&!o&&(o=l)}return o||i}async function*Gf(t,e){let r=t.size-e,n=await re(t,r,e),s=L(n);for(let i=n.length-22;i>=0;i--)v(s,i)==101010256&&(yield[s,r,n,i,r+i])}function qo(t,e,r){return{offset:r,buffer:new Uint8Array(t.subarray(e,e+22)).buffer}}async function Vf(t,e,r,n,s,i,o){let a=V(e,n+10),c=v(e,n+12),f=v(e,n+16);if(a==65535||c==4294967295||f==4294967295)return await Uf(t,e,r,s-20,i,o)==117853008?Ks:bf;if(!a&&!c)return xa;let R=V(e,n+6);for(let p of[s-c,Pr(t,R)+f])if(await Uf(t,e,r,p,i,o)==33639248)return Ks;return bf}async function Uf(t,e,r,n,s,i){if(n<0||n+4>s)return w;if(n>=r)return v(e,n-r);if(i.remaining>0){i.remaining--;let o=await re(t,n,4);return v(L(o),0)}return w}function Wp(t,e,r,n,s){let{rawFilename:i}=t,o=!s,a=t.decryptedDirectory&&(e.rawBitFlag&8192)==8192;n&&!a&&(r.length!=i.length||r.some((c,f)=>c!=i[f]))&&tt(o,s,Oa),(e.rawBitFlag&Sf)!=(t.rawBitFlag&Sf)&&tt(o,s,Da),e.compressionMethod!=t.compressionMethod&&tt(o,s,Pa),!e.bitFlag.dataDescriptor&&!a&&(e.crc32||e.compressedSize||e.uncompressedSize)&&(e.crc32!=t.crc32||e.compressedSize!=t.compressedSize||e.uncompressedSize!=t.uncompressedSize)&&tt(o,s,Ca)}function tt(t,e,r){t?Ys(r):Te(e,r)}function Ys(t){let e=new Error(Ea);throw e.reason=t,e}function oe(t,e,r){return e[r]===w?t.options[r]:e[r]}function Ff(t,e,r){return Er(oe(t,e,r))}function Gp(t){let e=(t&4294901760)>>16,r=t&65535,n=new Date(1980+((e&65024)>>9),((e&480)>>5)-1,e&31,(r&63488)>>11,(r&2016)>>5,(r&31)*2,0);return n<bt?bt:n}function Zo(t){return new Date(Number(t/BigInt(1e4)-BigInt(116444736e5)))}function Mt(t,e){return t.getUint8(e)}function V(t,e){return t.getUint16(e,!0)}function v(t,e){return t.getUint32(e,!0)}function Le(t,e){let r=t.getBigUint64(e,!0);if(r>Ap)throw new Error(wa);return Number(r)}var Or,oa,aa,ca,la,fa,ii,Gs,Vs,ua,da,Ea,pa,ma,ha,ga,Ra,wa,_a,Ta,Aa,oi,ya,Xs,Zs,js,Sa,Ia,ba,Dr,Na,Oa,Da,Pa,Ca,gp,Rp,wp,Af,_p,yf,Sf,Mf,Tp,If,Ap,yp,Sp,bf,xa,Ks,vt,qs,jo,ai=ie(()=>{ue();Ge();qt();Fs();un();uo();Pt();mo();jt();Zt();$r();Hs();hr();Or="File format is not recognized",oa="End of central directory not found",aa="End of Zip64 central directory locator not found",ca="Central directory header not found",la="Local file header not found",fa="Zip64 extra field not found",ii="File contains encrypted entry",Gs="Encryption method not supported",Vs="Split zip file",ua="Overlapping entry found",da="Entry data out of bounds",Ea="Ambiguous archive",pa="Encrypted central directory is not supported",ma="Unsafe filename",ha="Invalid strictness (must be \'strict\', \'balanced\' or \'tolerant\')",ga="Invalid filenameValidation (must be \'strict\', \'balanced\' or \'tolerant\')",Ra="Invalid maxAppendedDataSize (must be a number greater than or equal to 0)",wa="64-bit value exceeds Number.MAX_SAFE_INTEGER",_a="unsorted central directory",Ta="unknown version needed to extract",Aa="compressed patched data",oi="malformed extra field",ya="unknown zip64 extensible data",Xs="wrapped entries count",Zs="appended data",js="prepended data",Sa="prepended central directory",Ia="trailing central directory data",ba="duplicate filename",Dr="mismatched zip64 end of central directory record",Na="multiple end of central directory records",Oa="mismatched local file header (filename)",Da="mismatched local file header (general purpose bit flag)",Pa="mismatched local file header (compression method)",Ca="mismatched local file header (crc32 or sizes)",gp=63,Rp=/^[a-zA-Z]:/,wp=/(^|[\\\\/])\\.\\.([\\\\/]|$)/,Af="utf-8",_p="UTF8",yf="cp437",Sf=2057,Mf=1,Tp=[[Rn,4294967295],[yo,4294967295],[So,4294967295],[Io,65535]],If={65535:{getValue:v,bytes:4},4294967295:{getValue:Le,bytes:8}},Ap=BigInt(Number.MAX_SAFE_INTEGER),yp=64,Sp=1032,bf=0,xa=1,Ks=2,vt=class{constructor(e,r={}){Object.assign(this,{reader:new pt(e),options:r,readRanges:{indexes:new Set,sortedRanges:[],pendingRanges:[]}})}async*getEntriesGenerator(e={}){let r=this,{reader:n}=r;if(await ge(n),(n.size===w||!n.readUint8Array)&&(n=new $e(await ft(n.readable)),await ge(n)),n.size<22)throw new Error(Or);let s=r.warnings=[],i=La(e,r.options),o=i==Nt,a=i!=ot,c=Yf(oe(r,e,Ui),i),f=Bp(oe(r,e,vc),i),R=oe(r,e,kc),{endOfDirectoryInfo:p,endOfDirectoryReachingEndCount:l}=await Wf(n,a,c);if(!p)throw await Fp(n)?new Error(Vs):new Error(oa);a&&l>1&&Ys(Na);let h=L(p),m=v(h,12),E=v(h,16),d=p.offset,u=V(h,20),g=d+22+u,_=n.size-g;_>c&&Ys(Zs),_>0&&Te(s,Zs);let A=V(h,4),T=n.lastDiskNumber||0,y=V(h,6),S=V(h,10),I=0,N,U,H,q,$=56,j,W=E==4294967295||m==4294967295||S==65535||y==65535;if(E!=4294967295&&y!=65535&&(E+=Pr(n,y)),W){let J=p.offset>=20?await re(n,p.offset-20,20):Z,b=L(J);if(J.length==20&&v(b,0)==117853008){E=Pr(n,v(b,4))+Le(b,8);let Y=await re(n,E,56),Q=L(Y),pe=p.offset-20-56;if((Y.length<56||v(Q,0)!=101075792)&&E!=pe&&pe>=0){let Ce=E;E=pe,E>Ce&&(I=E-Ce),Y=await re(n,E,56),Q=L(Y)}if(Y.length<56||v(Q,0)!=101075792)throw new Error(aa);if(H=!0,q=Le(Q,4)>44,q){let Ce=Math.min(Le(Q,4)-44,n.size-E-56);if(Ce>0){$+=Ce;let Ke=await re(n,E+56,Ce);j=Np(Ke)}}A==65535?A=v(Q,16):A!=v(Q,16)&&tt(o,s,Dr),y==65535?y=v(Q,20):y!=v(Q,20)&&tt(o,s,Dr),S==65535?S=Le(Q,32):S!=Le(Q,32)&&tt(o,s,Dr),m==4294967295?m=Le(Q,40):m!=Le(Q,40)&&tt(o,s,Dr),E=Pr(n,y)+Le(Q,48)+I}}let F=m,ne=p.offset-(H?$+20:0);if(E>=n.size&&(I=n.size-E-m-22,E=n.size-m-22),T!=A)throw new Error(Vs);if(E<0)throw new Error(Or);let z=0,X=await re(n,E,m),M=L(X);if(m){if(X.length<4)throw new Error(Or);let J=ne-m;if(E!=J&&y==A){let b=v(M,z)==33639248||!!(j&&j.compressedSize)||Vo(M),Y=!b;if(!Y&&J>=0&&J+4<=n.size){let Q=await re(n,J,4);Y=v(L(Q),0)==33639248}if(Y){let Q=E;E=J,E>Q&&(I+=E-Q,N=b),X=await re(n,E,m),M=L(X)}}}let G=ne-E;if(m!=G&&G>=0&&y==A&&(m=G,X=await re(n,E,m),M=L(X)),E<0||E>=n.size)throw new Error(Or);r.directoryOffset=E,r.directoryLength=F;let Ee=Ff(r,e,zc),me,st;if(Ee&&S&&X.length>=4&&v(M,0)!=33639248&&(q||Vo(M))){let J=bp(j,F,X.length);st=X.subarray(J),X=await Ee(X.subarray(0,J),j),M=L(X),F=X.length,me=!0}j&&!me&&(X.length<4||v(M,0)==33639248)&&Te(s,ya),U=E;let Me=oe(r,e,fc),ve=oe(r,e,uc),je=new Set,Ne,Oe=-1,De=!o&&!H;!S&&De&&(S=Nf(M,X,z),S&&Te(s,Xs));for(let J=0;J<S;J++){let b=new jo(n,r.options);if(z+46>X.length||v(M,z)!=33639248)throw J==0&&!me&&(q||Vo(M))?new Error(pa):new Error(ca);kf(b,M,z+6);let Y=!!b.bitFlag.languageEncodingFlag,Q=z+46,Ce=Q+b.filenameLength+b.extraFieldLength,Ke=V(M,z+4),Bt=Ke>>8==0,Yr=Ke>>8==3,Ht=V(M,z+32),Ye=Ce+Ht,Tt=new Uint8Array(X.subarray(Q,Ye)),it=Tt.subarray(0,b.filenameLength),de=Tt.subarray(b.filenameLength+b.extraFieldLength),ye=Y||!Me&&fo(it),Bn=Y||!ve&&fo(de),At=v(M,z+38),yt=At&255,Hn={readOnly:!!(yt&1),hidden:!!(yt&2),system:!!(yt&4),directory:!!(yt&16),archive:!!(yt&32)},Pi=v(M,z+42),Wr=Ff(r,e,dc)||ln,Yt=ye?Af:Me||yf,St=Bn?Af:ve||yf,he=Wr(it,Yt,ts);if(he===w&&(he=ln(it,Yt)),R){let ze=R(he);ze!==w&&(he=ze)}if(Hp(he,f)){let ze=new Error(ma);throw ze.filename=he,ze}let Gr=Wr(de,St,rs);Gr===w&&(Gr=ln(de,St)),Object.assign(b,{index:J,decryptedDirectory:me,versionMadeBy:Ke,msDosCompatible:Bt,zip64:!1,compressedSize:0,uncompressedSize:0,commentLength:Ht,offset:Pi,diskNumberStart:V(M,z+34),internalFileAttributes:V(M,z+36),externalFileAttributes:At,msdosAttributesRaw:yt,msdosAttributes:Hn,rawFilename:it,filenameUTF8:ye,commentUTF8:Bn,rawExtraField:Tt.subarray(b.filenameLength,b.filenameLength+b.extraFieldLength),rawComment:de,filename:he,comment:Gr}),zf(b,b,M,z+6)&&Te(s,oi,he),b.offset+=I;let Wt=Pr(n,b.diskNumberStart)+b.offset;U=Math.min(Wt,U),Wt<Oe&&Te(s,_a,he),Oe=Wt,(b.version&255)>gp&&Te(s,Ta,he),(b.rawBitFlag&32)==32&&Te(s,Aa,he),je.has(b.filename)&&(Ne=!0),je.add(b.filename);let It=b.externalFileAttributes>>16&65535;b.unixMode===w&&(It&16877)!=0&&(b.unixMode=It);let Yn=!!(b.unixMode&2048),qe=!!(b.unixMode&1024),Wn=!!(b.unixMode&512),oc=((b.unixMode===w?It:b.unixMode)&61440)==40960,Md=!oc&&(b.unixMode!==w?(b.unixMode&73)!=0:Yr&&(It&73)!=0),vd=b.unixMode!==w&&(b.unixMode&61440)==16384,kd=(It&61440)==16384;Object.assign(b,{setuid:Yn,setgid:qe,sticky:Wn,symlink:oc,unixExternalUpper:It,executable:Md,directory:vd||kd||Bt&&Hn.directory||b.filename.endsWith("/"),zipCrypto:b.encrypted&&!b.extraFieldAES});let Vr=new mt(b);if(Vr.getData=(ze,Gn)=>b.getData(ze,Vr,r.readRanges,Gn),Vr.arrayBuffer=async ze=>{let Gn=new TransformStream,cc=ft(Gn.readable).then(zd=>zd.arrayBuffer());return cc.catch(()=>{}),await b.getData(Gn,Vr,r.readRanges,Object.assign({},ze,{preventClose:!1})),cc},z=Ye,J==S-1&&De){let ze=Nf(M,X,z);ze&&(S+=ze,Te(s,Xs))}let{onprogress:ac}=e;if(ac)try{await ac(J+1,S,new mt(b))}catch{}yield Vr}let ae=z,Pe=Xo(X.subarray(z))||(me?Xo(st):w);if(!Pe&&!me){let J=E+z,b=Math.min(ne-J,65541);b>=6&&(Pe=Xo(await re(n,J,b)))}Pe&&(r.digitalSignature=Pe,ae=z+6+Pe.length),(z!=F&&ae!=F||!me&&z!=m&&ae!=m)&&tt(o,s,Ia),Ne&&tt(o,s,ba);let ke=oe(r,e,Ec),fe=oe(r,e,pc),te=(o||ke)&&S&&U==4&&await Mp(n)?4:0;return o&&(I||S&&U>te)&&Ys(js),(I||S&&U>4)&&Te(s,js),N&&Te(s,Sa),ke&&(r.prependedData=U>te?await re(n,te,U-te):Z),r.comment=u?await re(n,d+22,u):Z,fe&&(r.appendedData=g<n.size?await re(n,g,n.size-g):Z),!0}async getEntries(e={}){let r=[];for await(let n of this.getEntriesGenerator(e))r.push(n);return r}async close(){let{reader:e}=this;!e.readUint8Array&&e.readable&&!e.readable.locked&&await e.readable.cancel()}[Xn](){return this.close()}},qs=class{constructor(e={}){let r,{readable:n,writable:s}=new TransformStream({start(c){r=c}}),i=new vt(n,e),o=i.getEntriesGenerator(),a=new Set;this.readable=new ReadableStream({async pull(c){let{done:f,value:R}=await o.next();if(f)return c.close();let p=Ip(R,a),l={...R,readable:p.readable};delete l.getData,Object.defineProperties(l,{localDirectory:{get:()=>R.localDirectory,enumerable:!0},warnings:{get:()=>R.warnings,enumerable:!0}}),c.enqueue(l)},async cancel(c){let f=Array.from(a);a.clear(),r.error(c),await Promise.allSettled(f.map(R=>R.cancel(c))),await Promise.allSettled([o.return(),i.close()])}}),this.writable=s}};jo=class{constructor(e,r){Object.assign(this,{reader:e,options:r})}async getData(e,r,n,s={}){let i=this,o=at(),{reader:a,index:c,offset:f,diskNumberStart:R,extraFieldAES:p,extraFieldZip64:l,compressionMethod:h,bitFlag:m,rawBitFlag:E,crc32:d,rawLastModDate:u,uncompressedSize:g,compressedSize:_}=i,{dataDescriptor:A}=m,T=r.localDirectory={},y=r.warnings=[],S=Pr(a,R)+f,I=await re(a,S,30),N=L(I),U=oe(i,s,Zn),H=oe(i,s,jn),q=pr(oe(i,s,Zr)),$=!!q,j=q===!0;if(ss(U,H),U=U&&U.length?U:w,H=H&&H.length?H:w,p&&p.originalCompressionMethod!=99)throw new Error(ut);if(I.length<30||v(N,0)!=67324752)throw new Error(la);kf(T,N,4);let{extraFieldLength:W,filenameLength:F}=T,ne=T.dataOffset=S+30+F+W,z=oe(i,s,wc),X=La(s,i.options),M=kp(z,X),G=oe(i,s,_c),Ee=zp(G===w?z:G,X),me=Z;if(Ee&&(F||W)){let de=await re(a,S+30,F+W);me=de.subarray(0,F),T.rawExtraField=de.subarray(F)}else T.rawExtraField=W?await re(a,S+30+F,W):Z;Ee&&(T.rawFilename=me),zf(i,T,N,4,!0)&&Te(y,oi),Wp(i,T,me,Ee,M?w:y);let{lastAccessDate:st,creationDate:Me,uid:ve,gid:je}=T;st&&(r.lastAccessDate=st),Me&&(r.creationDate=Me),ve!==w&&r.uid===w&&(r.uid=ve),je!==w&&r.gid===w&&(r.gid=je);let Ne=oe(i,s,mc),Oe=i.encrypted&&T.encrypted&&(!j||Ne),De=Oe&&!p;if(j||(r.zipCrypto=De),Oe&&(T.rawBitFlag&64)==64)throw new Error(Gs);let ae=$?w:ms(h);if(h!=0&&h!=8&&h!=9&&!ae&&!$)throw new Error(ut);if(Oe){if(!De&&(p.strength<1||p.strength>3))throw new Error(Gs);if(!U&&!H)throw new Error(ii)}if(ne+_>a.size)throw new Error(da);let Pe=_,ke=qr(oe(i,s,Kn));Xt(ke);let fe=oe(i,s,gc),te=oe(i,s,hc);te&&(fe=!0);let{onstart:J,onprogress:b,onend:Y}=s,Q=h!=0&&!$,pe=$?_-An(Oe,De,p&&p.strength):g,Ce=h==9,Ke=oe(i,s,Jn);Ce&&(Ke=!1);let Bt=oe(i,s,Ac),Yr=(Bt===w?oe(i,s,Tc):Bt)&&!$&&(!Oe||De||p&&p.vendorVersion==Mf),Ht={options:{codecType:Is,password:U,rawPassword:H,zipCrypto:De,encryptionStrength:p&&p.strength,checkCrc32:Yr,checkAuthenticationCode:oe(i,s,yc),passwordVerification:De&&(A?u>>>8&255:d>>>24&255),outputSize:pe,crc32:d,compressed:Q,encrypted:Oe,useWebWorkers:oe(i,s,qn),useCompressionStream:Ke,transferStreams:oe(i,s,Qn),deflate64:Ce,format:ae?ae.format:w,codecURI:ae?ae.codecURI:w,compressionMethod:h,rawBitFlag:E,checkPasswordOnly:Ne},config:o,streamOptions:{signal:ke,size:Pe,onstart:J,onprogress:b,onend:Y}};fe&&await xp({reader:a,fileEntry:r,index:c,offset:S,crc32:d,compressedSize:_,uncompressedSize:g,dataOffset:ne,dataDescriptor:A||T.bitFlag.dataDescriptor,extraFieldZip64:l||T.extraFieldZip64,readRanges:n});let Ye,Tt,it;try{if(!te){Ne&&(e=new WritableStream),e=new Ir(e),await ge(e,vp(pe,_,Q)),{writable:Ye}=e;let de=He(a.createReadable({offset:ne,size:Pe})),{outputSize:ye}=await Us({readable:de,writable:Ye},Ht);if(Xt(ke),ye!=pe)throw Object.assign(new Error(Qe),{outputSize:ye});e.size+=ye}}catch(de){let{outputSize:ye}=Ht;if(ye!==w?e.size+=ye:Re(de)&&de.outputSize!==w&&(e.size+=de.outputSize),!Ne||!Re(de)||de.message!=lt)throw Tt=de,it=!0,de}finally{if(!(!fn(e)&&oe(i,s,$n))&&Ye&&!Ye.locked){let ye=Ye.getWriter();if(it)try{await ye.abort(Tt)}catch{}else await ye.close()}}return Ne||te?w:e.getData?e.getData():Ye}}});Ge();var is=new Uint8Array(288);is.fill(8,0,144),is.fill(9,144,256),is.fill(7,256,280),is.fill(8,280,288),new Uint8Array(30).fill(5);var ct="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",il=t=>t({workerURI:e=>{let r="text/javascript",n=`!function(t){"function"==typeof define&&define.amd?define(t):t()}(function(){"use strict";const{Array:t,Object:n,Number:e,Math:o,Error:r,Uint8Array:c,Uint16Array:s,Uint32Array:a,Int32Array:i,Map:f,DataView:u,Promise:w,TextEncoder:l,crypto:d,postMessage:p,TransformStream:h,ReadableStream:y,WritableStream:m,CompressionStream:S,DecompressionStream:g}=self,v=void 0,b="undefined",k="function",z=new c,C=[[],[],[],[],[],[],[],[]];for(let t=0;t<256;t++){let n=t;for(let t=0;t<8;t++)n=1&n?n>>>1^3988292384:n>>>1;C[0][t]=n}for(let t=0;t<256;t++)for(let n=1;n<8;n++){const e=C[n-1][t];C[n][t]=e>>>8^C[0][255&e]}const[I,M,A,E,R,x,P,D]=C;class F{constructor(t){this.o=t||-1}append(t){let n=0|this.o;const e=0|t.length;let o=0;if(e>=8&&t.buffer){const r=new u(t.buffer,t.byteOffset,e),c=e-8;for(;o<=c;o+=8){const t=n^r.getInt32(o,!0),e=r.getInt32(o+4,!0);n=D[255&t]^P[t>>>8&255]^x[t>>>16&255]^R[t>>>24&255]^E[255&e]^A[e>>>8&255]^M[e>>>16&255]^I[e>>>24&255]}}for(;o<e;o++)n=n>>>8^I[255&(n^t[o])];this.o=n}get(){return~this.o}}class U extends h{constructor(){let t;const n=new F;super({transform(t,e){n.append(t),e.enqueue(t)},flush(){const e=new c(4);new u(e.buffer).setUint32(0,n.get()),t.value=e}}),t=this}}function B(t,n){const e=new c(t.length+n.length);return e.set(t),e.set(n,t.length),e}function W(t){return new u(t.buffer,t.byteOffset,t.byteLength)}const O=64,V=20,K=new c([128]),T=new c(1),_=new i([1732584193,4023233417,2562383102,271733878,3285377520]),j=new c(256),H=new i(256),L=new i(256),Z=new i(256),N=new i(256);let q=!1;function G(t,n){!function(){if(!q){let t=1,n=1;do{t=255&(t^t<<1^(128&t?27:0)),n=255&(n^n<<1),n=255&(n^n<<2),n=255&(n^n<<4),128&n&&(n^=9),j[t]=255&(n^(n<<1|n>>7)^(n<<2|n>>6)^(n<<3|n>>5)^(n<<4|n>>4)^99)}while(1!=t);j[0]=99;for(let t=0;t<256;t++){const n=j[t],e=Y(n),o=e<<24|n<<16|n<<8|e^n;H[t]=o,L[t]=o>>>8|o<<24,Z[t]=o>>>16|o<<16,N[t]=o>>>24|o<<8}q=!0}}();const e=new i(60),o=function(t,n){const e=t.length>>2,o=e+6,r=4*(o+1);let c=1;for(let o=0;o<e;o++)n[o]=t[4*o]<<24|t[4*o+1]<<16|t[4*o+2]<<8|t[4*o+3];for(let t=e;t<r;t++){let o=n[t-1];t%e==0?(o=Q(o<<8|o>>>24)^c<<24,c=Y(c)):e>6&&t%e==4&&(o=Q(o)),n[t]=n[t-e]^o}return o}(t,e),r=new i(4),c=J(n);let s=0,a=0,f=0,w=0;return{process(t,n){n&&c.update(t,0,t.length),function(t){const n=new u(t.buffer,t.byteOffset,t.byteLength),e=t.length;let o=0;for(;o+16<=e;o+=16)l(),n.setInt32(o,n.getInt32(o)^r[0]),n.setInt32(o+4,n.getInt32(o+4)^r[1]),n.setInt32(o+8,n.getInt32(o+8)^r[2]),n.setInt32(o+12,n.getInt32(o+12)^r[3]);if(o<e){l();for(let n=0;o<e;o++,n++)t[o]^=r[n>>2]>>>24-8*(3&n)}}(t),n||c.update(t,0,t.length)},digest:()=>c.digest()};function l(){s=s+1|0,s||(a=a+1|0,a||(f=f+1|0,f||(w=w+1|0)));let t=X(s)^e[0],n=X(a)^e[1],c=X(f)^e[2],i=X(w)^e[3],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[4],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[5],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[6],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[7];t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[8],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[9],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[10],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[11],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[12],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[13],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[14],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[15],t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[16],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[17],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[18],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[19],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[20],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[21],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[22],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[23],t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[24],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[25],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[26],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[27],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[28],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[29],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[30],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[31],t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[32],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[33],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[34],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[35],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[36],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[37],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[38],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[39];let h=40;o>10&&(t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[40],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[41],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[42],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[43],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[44],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[45],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[46],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[47],h=48),o>12&&(t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[48],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[49],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[50],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[51],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[52],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[53],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[54],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[55],h=56),r[0]=(j[u>>>24]<<24|j[l>>>16&255]<<16|j[d>>>8&255]<<8|j[255&p])^e[h],r[1]=(j[l>>>24]<<24|j[d>>>16&255]<<16|j[p>>>8&255]<<8|j[255&u])^e[h+1],r[2]=(j[d>>>24]<<24|j[p>>>16&255]<<16|j[u>>>8&255]<<8|j[255&l])^e[h+2],r[3]=(j[p>>>24]<<24|j[u>>>16&255]<<16|j[l>>>8&255]<<8|j[255&d])^e[h+3]}}function J(t){const n=function(){const t=new i(_),n=new i(16),e=new c(O),r=new u(e.buffer),s=new c(8);let a=0,f=0;return{update:w,digest:function(){const n=8*f,e=o.floor(n/4294967296),r=n>>>0;for(w(K,0,1);56!=a;)w(T,0,1);s[0]=e>>>24,s[1]=e>>>16,s[2]=e>>>8,s[3]=e,s[4]=r>>>24,s[5]=r>>>16,s[6]=r>>>8,s[7]=r,w(s,0,8);const i=new c(V),l=new u(i.buffer);for(let n=0;n<t.length;n++)l.setInt32(4*n,t[n]);return t.set(_),a=0,f=0,i}};function w(t,n,o){const c=n+o;if(f+=o,a){for(;n<c&&a<O;)e[a++]=t[n++];a==O&&(l(r,0),a=0)}if(n+O<=c){const e=new u(t.buffer,t.byteOffset,t.byteLength);for(;n+O<=c;n+=O)l(e,n)}for(;n<c;)e[a++]=t[n++]}function l(e,o){for(let t=0;t<16;t++)n[t]=e.getInt32(o+4*t);let r,c=t[0],s=t[1],a=t[2],i=t[3],f=t[4];for(let t=0;t<15;t+=5)f=(c<<5|c>>>27)+((a^i)&s^i)+f+1518500249+n[t]|0,s=s<<30|s>>>2,i=(f<<5|f>>>27)+((s^a)&c^a)+i+1518500249+n[t+1]|0,c=c<<30|c>>>2,a=(i<<5|i>>>27)+((c^s)&f^s)+a+1518500249+n[t+2]|0,f=f<<30|f>>>2,s=(a<<5|a>>>27)+((f^c)&i^c)+s+1518500249+n[t+3]|0,i=i<<30|i>>>2,c=(s<<5|s>>>27)+((i^f)&a^f)+c+1518500249+n[t+4]|0,a=a<<30|a>>>2;f=(c<<5|c>>>27)+((a^i)&s^i)+f+1518500249+n[15]|0,s=s<<30|s>>>2,r=n[13]^n[8]^n[2]^n[0],r=r<<1|r>>>31,n[0]=r,i=(f<<5|f>>>27)+((s^a)&c^a)+i+1518500249+r|0,c=c<<30|c>>>2,r=n[14]^n[9]^n[3]^n[1],r=r<<1|r>>>31,n[1]=r,a=(i<<5|i>>>27)+((c^s)&f^s)+a+1518500249+r|0,f=f<<30|f>>>2,r=n[15]^n[10]^n[4]^n[2],r=r<<1|r>>>31,n[2]=r,s=(a<<5|a>>>27)+((f^c)&i^c)+s+1518500249+r|0,i=i<<30|i>>>2,r=n[0]^n[11]^n[5]^n[3],r=r<<1|r>>>31,n[3]=r,c=(s<<5|s>>>27)+((i^f)&a^f)+c+1518500249+r|0,a=a<<30|a>>>2;for(let t=20;t<40;t+=5)r=n[t-3&15]^n[t-8&15]^n[t-14&15]^n[15&t],r=r<<1|r>>>31,n[15&t]=r,f=(c<<5|c>>>27)+(s^a^i)+f+1859775393+r|0,s=s<<30|s>>>2,r=n[t-2&15]^n[t-7&15]^n[t-13&15]^n[t+1&15],r=r<<1|r>>>31,n[t+1&15]=r,i=(f<<5|f>>>27)+(c^s^a)+i+1859775393+r|0,c=c<<30|c>>>2,r=n[t-1&15]^n[t-6&15]^n[t-12&15]^n[t+2&15],r=r<<1|r>>>31,n[t+2&15]=r,a=(i<<5|i>>>27)+(f^c^s)+a+1859775393+r|0,f=f<<30|f>>>2,r=n[15&t]^n[t-5&15]^n[t-11&15]^n[t+3&15],r=r<<1|r>>>31,n[t+3&15]=r,s=(a<<5|a>>>27)+(i^f^c)+s+1859775393+r|0,i=i<<30|i>>>2,r=n[t+1&15]^n[t-4&15]^n[t-10&15]^n[t+4&15],r=r<<1|r>>>31,n[t+4&15]=r,c=(s<<5|s>>>27)+(a^i^f)+c+1859775393+r|0,a=a<<30|a>>>2;for(let t=40;t<60;t+=5)r=n[t-3&15]^n[t-8&15]^n[t-14&15]^n[15&t],r=r<<1|r>>>31,n[15&t]=r,f=(c<<5|c>>>27)+(s&a|(s|a)&i)+f+2400959708+r|0,s=s<<30|s>>>2,r=n[t-2&15]^n[t-7&15]^n[t-13&15]^n[t+1&15],r=r<<1|r>>>31,n[t+1&15]=r,i=(f<<5|f>>>27)+(c&s|(c|s)&a)+i+2400959708+r|0,c=c<<30|c>>>2,r=n[t-1&15]^n[t-6&15]^n[t-12&15]^n[t+2&15],r=r<<1|r>>>31,n[t+2&15]=r,a=(i<<5|i>>>27)+(f&c|(f|c)&s)+a+2400959708+r|0,f=f<<30|f>>>2,r=n[15&t]^n[t-5&15]^n[t-11&15]^n[t+3&15],r=r<<1|r>>>31,n[t+3&15]=r,s=(a<<5|a>>>27)+(i&f|(i|f)&c)+s+2400959708+r|0,i=i<<30|i>>>2,r=n[t+1&15]^n[t-4&15]^n[t-10&15]^n[t+4&15],r=r<<1|r>>>31,n[t+4&15]=r,c=(s<<5|s>>>27)+(a&i|(a|i)&f)+c+2400959708+r|0,a=a<<30|a>>>2;for(let t=60;t<80;t+=5)r=n[t-3&15]^n[t-8&15]^n[t-14&15]^n[15&t],r=r<<1|r>>>31,n[15&t]=r,f=(c<<5|c>>>27)+(s^a^i)+f+3395469782+r|0,s=s<<30|s>>>2,r=n[t-2&15]^n[t-7&15]^n[t-13&15]^n[t+1&15],r=r<<1|r>>>31,n[t+1&15]=r,i=(f<<5|f>>>27)+(c^s^a)+i+3395469782+r|0,c=c<<30|c>>>2,r=n[t-1&15]^n[t-6&15]^n[t-12&15]^n[t+2&15],r=r<<1|r>>>31,n[t+2&15]=r,a=(i<<5|i>>>27)+(f^c^s)+a+3395469782+r|0,f=f<<30|f>>>2,r=n[15&t]^n[t-5&15]^n[t-11&15]^n[t+3&15],r=r<<1|r>>>31,n[t+3&15]=r,s=(a<<5|a>>>27)+(i^f^c)+s+3395469782+r|0,i=i<<30|i>>>2,r=n[t+1&15]^n[t-4&15]^n[t-10&15]^n[t+4&15],r=r<<1|r>>>31,n[t+4&15]=r,c=(s<<5|s>>>27)+(a^i^f)+c+3395469782+r|0,a=a<<30|a>>>2;t[0]=t[0]+c|0,t[1]=t[1]+s|0,t[2]=t[2]+a|0,t[3]=t[3]+i|0,t[4]=t[4]+f|0}}(),e=new c(O),r=new c(O);t.length>O&&(n.update(t,0,t.length),t=n.digest());for(let n=0;n<O;n++){const o=n<t.length?t[n]:0;e[n]=54^o,r[n]=92^o}return n.update(e,0,O),{update(t,e,o){n.update(t,e,o)},digest(){const t=n.digest();n.update(r,0,O),n.update(t,0,V);const o=n.digest();return n.update(e,0,O),o}}}function Q(t){return j[t>>>24]<<24|j[t>>>16&255]<<16|j[t>>>8&255]<<8|j[255&t]}function X(t){return t<<24|(65280&t)<<8|t>>>8&65280|t>>>24}function Y(t){return 255&(t<<1^27*(t>>7))}const $=typeof d!=b&&typeof d.getRandomValues==k,tt="Invalid password",nt="zipjs-abort-check-password";function et(t){if($)return d.getRandomValues(t);throw new r("Crypto API not supported")}const ot={name:"PBKDF2"},rt=n.assign({hash:{name:"HMAC"}},ot),ct=n.assign({iterations:1e3,hash:{name:"SHA-1"}},ot),st=["deriveBits"],at=[8,12,16],it=[16,24,32],ft=10,ut=typeof d!=b,wt=ut&&d.subtle;let lt=ut&&typeof wt!=b&&typeof wt.importKey==k&&typeof wt.deriveBits==k,dt=G;class pt extends h{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:o,checkAuthenticationCode:s=!0}){const a={};super({start(){yt(a,t,n,e)},async transform(t,n){const{password:e,strength:s,l:i,ready:f}=a;if(e?(await async function(t,n,e,o){const c=await vt(t,n,e,kt(o,0,at[n])),s=kt(o,at[n]);if(c[0]!=s[0]||c[1]!=s[1])throw gt(t),new r(tt)}(a,s,e,kt(t,0,at[s]+2)),t=kt(t,at[s]+2),o?(gt(a),n.error(new r(nt))):i()):await f,a.h)return;const u=new c(t.length-ft-(t.length-ft)%16);n.enqueue(St(a,t,u,0,ft,!0))},async flush(t){const{m:n,S:e,ready:o}=a;if(n){if(await o,a.h)return;const i=kt(e,e.length-ft),f=new c(kt(e,0,e.length-ft));n.process(f,!0);const u=n.digest();let w=e.length<ft?1:0;for(let t=0;t<ft;t++)w|=u[t]^i[t];if(w&&s)return void t.error(new r("Invalid authentication code"));t.enqueue(f)}}}),mt(this,a)}}class ht extends h{constructor({password:t,rawPassword:n,encryptionStrength:e}){const o={};super({start(){yt(o,t,n,e)},async transform(t,n){const{password:e,strength:r,l:s,ready:a}=o;let i=z;if(e?(i=await async function(t,n,e){const o=et(new c(at[n]));return B(o,await vt(t,n,e,o))}(o,r,e),s()):await a,o.h)return;const f=new c(i.length+t.length-t.length%16);f.set(i,0),n.enqueue(St(o,t,f,i.length,0,!1))},async flush(t){const{m:n,S:e,ready:r}=o;if(n){if(await r,o.h)return;const s=new c(e);n.process(s,!1);const a=kt(n.digest(),0,ft);t.enqueue(B(s,a))}}}),mt(this,o)}}function yt(t,e,o,r){n.assign(t,{ready:new w(n=>t.l=n),password:bt(e,o),strength:r-1,S:z,h:!1})}function mt(t,e){const o=t.readable.getReader(),r=new y({async pull(t){try{const{value:n,done:e}=await o.read();e?t.close():t.enqueue(n)}catch(t){throw gt(e),o.cancel(t).catch(()=>{}),t}},cancel:t=>(gt(e),o.cancel(t))});n.defineProperty(t,"readable",{get:()=>r})}function St(t,n,e,o,r,s){const{m:a,S:i}=t;i.length&&(n=B(i,n));const f=n.length-r,u=f-f%16;if(e=function(t,n){if(n&&n>t.length){const e=t;(t=new c(n)).set(e,0)}return t}(e,o+u),u){const t=kt(e,o,o+u);t.set(kt(n,0,u)),a.process(t,s)}return t.S=kt(n,u),e}function gt(t){const{m:n}=t;t.h=!0,n&&n.dispose&&n.dispose()}async function vt(t,e,r,s){t.password=null;const a=it[e],i=await async function(t,e,r){if(lt)try{const o=await wt.importKey("raw",t,rt,!1,st);return new c(await wt.deriveBits(n.assign({salt:e},ct),o,8*r))}catch{lt=!1}return function(t,n,e,r){const s=J(t),a=new c(r),i=new c(n.length+4),f=new u(i.buffer);i.set(n);for(let t=1,e=0;e<r;t++,e+=V){f.setUint32(n.length,t),s.update(i,0,i.length);let c=s.digest();const u=c.slice();for(let t=1;t<1e3;t++){s.update(c,0,V),c=s.digest();for(let t=0;t<V;t++)u[t]^=c[t]}a.set(u.subarray(0,o.min(V,r-e)),e)}return a}(t,e,0,r)}(r,s,2*a+2);return t.m=dt(kt(i,0,a),kt(i,a,2*a)),t.h&>(t),kt(i,2*a)}function bt(t,n){return n===v?function(t){if(typeof l==b){t=unescape(encodeURIComponent(t));const n=new c(t.length);for(let e=0;e<n.length;e++)n[e]=t.charCodeAt(e);return n}return(new l).encode(t)}(t):n}function kt(t,n,e){return t.subarray(n,e)}class zt extends h{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:o}){super({start(){It(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=Mt(e,t.subarray(0,12));if(e.password=e.rawPassword=null,0!=(n[11]^e.passwordVerification))throw new r(tt);t=t.subarray(12)}o?n.error(new r(nt)):n.enqueue(Mt(e,t))}})}}class Ct extends h{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){It(this,t,n,e)},transform(t,n){const e=this;let o,r;if(e.password||e.rawPassword){e.password=e.rawPassword=null;const n=et(new c(12));n[11]=e.passwordVerification,o=new c(t.length+n.length),o.set(At(e,n),0),r=12}else o=new c(t.length),r=0;o.set(At(e,t),r),n.enqueue(o)}})}}function It(t,e,o,r){n.assign(t,{password:e,rawPassword:o,passwordVerification:r}),function(t,e,o){const r=[305419896,591751049,878082192];if(n.assign(t,{v:r,C:new F(r[0]),I:new F(r[2])}),o)for(let n=0;n<o.length;n++)Et(t,o[n]);else for(let n=0;n<e.length;n++)Et(t,e.charCodeAt(n))}(t,e,o)}function Mt(t,n){const e=new c(n.length);for(let o=0;o<n.length;o++)e[o]=Rt(t)^n[o],Et(t,e[o]);return e}function At(t,n){const e=new c(n.length);for(let o=0;o<n.length;o++)e[o]=Rt(t)^n[o],Et(t,n[o]);return e}function Et(t,n){let[,e]=t.v;t.C.append([n]);const r=~t.C.get();e=Pt(o.imul(Pt(e+xt(r)),134775813)+1),t.I.append([e>>>24]);const c=~t.I.get();t.v=[r,e,c]}function Rt(t){const n=2|t.v[2];return xt(o.imul(n,1^n)>>>8)}function xt(t){return 255&t}function Pt(t){return 4294967295&t}function Dt(t){if(t instanceof y)return t;const n=t.getReader();return new y({async pull(t){try{const{value:e,done:o}=await n.read();o?t.close():t.enqueue(e)}catch(t){throw n.cancel(t).catch(()=>{}),t}},cancel:t=>n.cancel(t)})}function Ft(t){return Boolean(t)&&"object"==typeof t}const Ut=new f;function Bt(t){return Ut.get(t)}const Wt="Invalid uncompressed size",Ot="Codec out of memory",Vt="Invalid CRC32",Kt="deflate-raw",Tt="gzip",_t=[31,139,8];class jt extends h{constructor(t,{chunkSize:n,CompressionStreamFallback:e,CompressionStream:o}){super({});const{compressed:r,encrypted:c,useCompressionStream:s,zipCrypto:a,computeCrc32:i,level:f,deflate64:w,format:l,compressionMethod:d,inputSize:p}=t,h=this;let y,m,S,g=super.readable;const v=l&&Bt(l),b=Gt(s,o,e),k=i&&r&&!w&&!v&&(!c||a)&&Boolean(b);if(c&&!a||!i||k||(y=new U,g=Qt(g,y)),r)if(v)g=Xt(g,qt(v.CompressionStream,l,{level:f,chunkSize:n,compressionMethod:d,uncompressedSize:p}));else if(k)S=new Ht,g=Xt(g,new b(Tt,{level:f,chunkSize:n})),g=Qt(g,S);else try{g=Jt(g,s,{level:f,chunkSize:n},o,e)}catch(t){if(!s&&e)throw en(t);let n;try{n=new o(Tt)}catch{throw en(t)}g=Xt(g,n),g=Qt(g,new Ht)}c&&(a?g=Qt(g,new Ct(t)):(m=new ht(t),g=Qt(g,m))),Nt(h,g,()=>{c&&!a||!i||(h.crc32=k?S.crc32:new u(y.value.buffer).getUint32(0))})}}class Ht extends h{constructor(){let t,n=10,e=new c(0);super({transform(t,r){if(n){const e=o.min(n,t.length);if(n-=e,!(t=t.subarray(e)).length)return}const c=e.length+t.length;if(c<=8)return void(e=B(e,t));const s=c-8,a=o.min(s,e.length);r.enqueue(B(e.subarray(0,a),t.subarray(0,s-a))),e=B(e.subarray(a),t.subarray(s-a))},flush(){const n=W(e);t.crc32=n.getUint32(0,!0),t.uncompressedSize=n.getUint32(4,!0)}}),t=this}}class Lt extends h{constructor(t,{chunkSize:n,DecompressionStreamFallback:e,DecompressionStream:o}){super({});const{zipCrypto:s,encrypted:a,checkCrc32:i,crc32:f,compressed:l,useCompressionStream:d,deflate64:p,format:h,compressionMethod:m,rawBitFlag:S,outputSize:g}=t;let b,k,z,C=super.readable;if(a&&(s?C=Qt(C,new zt(t)):(k=new pt(t),C=Qt(C,k))),l){const t=new Set,s=h&&Bt(h);let a;if(s)C=Xt(C,qt(s.DecompressionStream,h,{chunkSize:n,compressionMethod:m,rawBitFlag:S,uncompressedSize:g}),t);else{const r=Gt(d,o,e);if(i&&!p&&f!==v&&g!==v&&r)try{a=new r(Tt,{chunkSize:n})}catch{a=v}if(!a)try{C=Jt(C,d,{chunkSize:n,deflate64:p},o,e,t)}catch(t){if(p||g===v||!d&&e)throw en(t);try{a=new o(Tt)}catch{throw en(t)}}}a?(z=!0,C=function(t,n,e,o,s){const a=n.writable.getWriter(),i=n.readable.getReader(),f=o===v?new F:v;let u,l,d=0,p=!1,h=!1;const m=new y({start(t){l=t},pull(){b()},cancel:t=>(h=!0,b(),i.cancel(t))});return async function(){const n=t.getReader();try{const t=new c(10);for(t.set(_t),await a.write(t);;){await g(),await a.ready;const{value:t,done:e}=await tn(n,s);if(e)break;await a.write(t)}f&&await a.write(new c(0));const r=new c(8),i=W(r);i.setUint32(0,f?f.get():o,!0),i.setUint32(4,e,!0),p=!0,await a.write(r),await a.close()}catch(t){await Yt(a,t),await $t(n,t)}}(),async function(){try{for(;;){const{value:t,done:n}=await S();if(n)break;if(d+=t.length,d>e)throw new r(Wt);f&&f.append(t),l.enqueue(t)}h||(h=!0,l.close())}catch(t){!function(t){h||(h=!0,l.error(t),b())}(t),await $t(i,t)}}(),m;function S(){return i.read().catch(t=>{if(p){if(!f)throw rn(t,Vt);if(d!=e)throw rn(t,Wt);return{done:!0}}throw nn(t,s)})}function g(){if(!h&&l.desiredSize<=0)return new w(t=>u=t)}function b(){if(u){const t=u;u=v,t()}}}(C,a,g,f,t)):C=function(t,n){const e=t.getReader();return new y({async pull(t){try{const{value:n,done:o}=await e.read();o?t.close():t.enqueue(n)}catch(t){throw await $t(e,t),nn(t,n)}},cancel:t=>e.cancel(t)})}(C,t)}i&&!z&&(b=new U,C=Qt(C,b)),Nt(this,C,()=>{if(b){const t=new u(b.value.buffer).getUint32(0,!1);if(f!=t)throw new r(Vt)}})}}const Zt=new f;function Nt(t,e,o){e=Qt(e,new h({flush:o})),n.defineProperty(t,"readable",{get:()=>e})}function qt(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function Gt(t,n,e){return t&&n?n:e&&e.requiresModule?e:void 0}function Jt(t,n,e,o,r,c){const s=n&&o?o:r||o,a=e.deflate64?"deflate64-raw":Kt;let i;try{i=new s(a,e)}catch(t){if(!n||!r||s==r)throw t;i=new r(a,e)}return Xt(t,i,c)}function Qt(t,n){return Dt(t).pipeThrough(n)}function Xt(t,n,e){const o=n.writable.getWriter(),r=t.getReader();return async function(){try{for(;;){await o.ready;const t=await tn(r,e);if(t.done){await o.close();break}await o.write(t.value)}}catch(t){await Yt(o,t),await $t(r,t)}}(),n.readable}async function Yt(t,n){try{await t.abort(n)}catch{}}async function $t(t,n){try{await t.cancel(n)}catch{}}function tn(t,n){const e=t.read();return n?e.catch(t=>{throw n.add(t),t}):e}function nn(t,n){return n.has(t)?t:rn(t,on(t)?Ot:"Invalid compressed data")}function en(t){return on(t)?rn(t,Ot):t}function on(t){return Ft(t)&&"Z_MEM_ERROR"==t.code}function rn(t,n){const e=new r(n);return e.cause=t,e}const cn="data",sn="deflate";class an extends h{constructor(t,e){super({});const o=this,{codecType:c}=t;let s;c.startsWith(sn)?s=jt:c.startsWith("inflate")&&(s=Lt),o.outputSize=0;let a=0;const i=new s(t,e),f=super.readable,u=new h({transform(t,n){t&&t.length&&(a+=t.length,n.enqueue(t))},flush(){n.assign(o,{inputSize:a})}}),w=new h({transform(n,e){if(n&&n.length&&(e.enqueue(n),o.outputSize+=n.length,t.outputSize!==v&&o.outputSize>t.outputSize))throw new r(Wt)},flush(){const{crc32:t}=i;n.assign(o,{crc32:t,inputSize:a})}});n.defineProperty(o,"readable",{get:()=>f.pipeThrough(u).pipeThrough(i).pipeThrough(w)})}}class fn extends h{constructor(t){const o=[];let r=0,s=0;function a(){const n=new c(t);let e=0;for(;e<t;){const r=o[0],c=t-e;r.length<=c?(n.set(r,e),e+=r.length,o.shift()):(n.set(r.subarray(0,c),e),o[0]=r.subarray(c),e+=c)}return r-=t,n}(!e.isFinite(t)||t<1)&&(t=65536),super({transform(n,e){for(o.push(n),r+=n.length;r>t;)s+=t,e.enqueue(a())},flush(t){r&&(s+=r,t.enqueue(function(t,n){const e=new c(n);let o=0;for(const n of t)e.set(n,o),o+=n.length;return e}(o,r)))}}),n.defineProperty(this,"outputSize",{get:()=>s})}}let un=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(un=navigator.hardwareConcurrency)}catch{}const wn=new f,ln=new f,dn=function(){try{return structuredClone(new r)instanceof r}catch{return!1}}();let pn=0;async function hn(t){let n,c,s;try{const{options:a,config:i}=t;if(a.format)try{await async function(t,n){!Ut.has(t)&&n&&function(t,n){const{CompressionStream:e,DecompressionStream:o}=n;if(typeof e!=k&&typeof o!=k)throw new r("Invalid codec module");Ut.set(t,{CompressionStream:e,DecompressionStream:o})}(t,await(import(n)))}(a.format,a.codecURI)}catch(t){if(Ft(t))try{t.codecImportFailed=!0}catch{}throw t}if(i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,a.compressed&&!a.format)if(a.useCompressionStream){if(!function(t,n){if(!t)return!1;let e=Zt.get(t);e||(e=new f,Zt.set(t,e));let o=e.get(n);if(o===v){try{new t(n),o=!0}catch{o=!1}e.set(n,o)}return o}(a.codecType.startsWith(sn)?i.CompressionStream:i.DecompressionStream,Kt))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{a.useCompressionStream=!0}if(a.encrypted&&!a.zipCrypto)try{await self.initModule(t.config)}catch{}!i.CompressionStreamFallback&&i.CompressionStreamZlib&&(i.CompressionStreamFallback=i.CompressionStreamZlib),!i.DecompressionStreamFallback&&i.DecompressionStreamZlib&&(i.DecompressionStreamFallback=i.DecompressionStreamZlib);const u={highWaterMark:1},l=t.readable?Dt(t.readable):new y({async pull(t){const n=new w(t=>wn.set(pn,t));yn({type:"pull",messageId:pn}),pn=(pn+1)%e.MAX_SAFE_INTEGER;const{value:o,done:r}=await n;t.enqueue(o),r&&t.close()}},u);s=t.writable?function(t){if(t instanceof m)return t;const n=t.getWriter();return new m({write:t=>n.write(t),close:()=>n.close(),abort:t=>n.abort(t)})}(t.writable):new m({async write(t){let n;const o=new w(t=>n=t);ln.set(pn,n),yn({type:cn,value:t,messageId:pn}),pn=(pn+1)%e.MAX_SAFE_INTEGER,await o}},u),n=new an(a,i),c=new fn(function(t){return r="string"==typeof(n=r=t.chunkSize)&&n.trim()?e(n):n,e.isInteger(r)&&r>=1?o.max(r,64):65536;var n,r}(i)),await l.pipeThrough(n).pipeThrough(c).pipeTo(s,{preventClose:!0,preventAbort:!0}),await s.getWriter().close();const{crc32:d,inputSize:p,outputSize:h}=n;yn({type:"close",result:{crc32:d,inputSize:p,outputSize:h}})}catch(t){const n=c?c.outputSize:0;if(Ft(t))try{t.outputSize=n}catch{}if(s&&!s.locked)try{await s.getWriter().close()}catch{}mn(t,n)}}function yn(t){const{value:n}=t;if(n)if(n.length)try{t.value=(e=n,e.byteOffset||e.byteLength!=e.buffer.byteLength?new c(e):e).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var e}function mn(t,n){const{message:e,stack:o,code:c,name:s,outputSize:a,cause:i,codecImportFailed:f}=function(t=new r("Unknown error")){return Ft(t)?t:new r(String(t))}(t),u={message:e,stack:o,code:c,name:s,outputSize:a===v?n:a};if(Ft(i)&&(u.cause={name:i.name,message:i.message}),f&&(u.codecImportFailed=!0),dn)try{return void p({error:u,errorValue:{value:t}})}catch{}p({error:u})}addEventListener("message",({data:t})=>{const{type:n,messageId:e,value:o,done:r}=t;try{if("start"==n&&hn(t),n==cn){const t=wn.get(e);wn.delete(e),t({value:o||new c,done:r})}if("ack"==n){const t=ln.get(e);ln.delete(e),t()}}catch(t){mn(t)}}),p({type:"ready"});const Sn="deflate",gn="deflate-raw",vn="deflate64-raw",bn="gzip",kn=[Sn,gn,bn],zn=[Sn,gn,bn,vn];let Cn,In,Mn,An,En;function Rn(t,n){return-4===n&&(t.code="Z_MEM_ERROR"),t}function xn(t,n,e={}){if(!(t?kn:zn).includes(n))throw new TypeError("Unsupported format: "+n);if(!Cn){const t=new r("WASM module not loaded");throw t.cause=En,t}const s="number"==typeof e.level?e.level:-1,a="number"==typeof e.outBuffer?e.outBuffer:65536,i="number"==typeof e.inBufferSize?e.inBufferSize:65536,f={M:0,in:0,inBufferSize:0,A:0,R:!1};let u,l,d,p,h=!0,S=!1;return function(){try{let e;if(f.M=In(a),f.in=In(i),f.inBufferSize=i,!f.M||!f.in)throw Rn(new r("allocation failed"),-4);if(t?(f.P=Cn.deflate_process,f.D=Cn.deflate_last_consumed,f.F=Cn.deflate_end,f.A=Cn.deflate_new(),e=n===bn?Cn.deflate_init_gzip(f.A,s):n===gn?Cn.deflate_init_raw(f.A,s):Cn.deflate_init(f.A,s)):n===vn?(f.P=Cn.inflate9_process,f.D=Cn.inflate9_last_consumed,f.F=Cn.inflate9_end,f.A=Cn.inflate9_new(),e=Cn.inflate9_init_raw(f.A)):(f.P=Cn.inflate_process,f.D=Cn.inflate_last_consumed,f.F=Cn.inflate_end,f.A=Cn.inflate_new(),e=n===gn?Cn.inflate_init_raw(f.A):n===bn?Cn.inflate_init_gzip(f.A):Cn.inflate_init(f.A)),0!==e)throw Rn(new r("init failed:"+e),e)}catch(t){throw b(f),t}}(),{readable:new y({start(t){u=t},pull(){h=!1,v()},cancel(t){S=!0,p=t,b(f),l.error(t),v()}},{highWaterMark:0}),writable:new m({start(t){l=t},async write(t){if(h&&await new w(t=>d=t),S)throw p;try{!function(t){const n=new c(An.buffer),e=f.P,s=f.D,i=f.M;let u=0;for(;u<t.length;){if(f.R)throw new r("trailing data after the end of the stream");const c=o.min(t.length-u,32768);if((!f.in||f.inBufferSize<c)&&(f.in&&Mn&&(Mn(f.in),f.in=0),f.in=In(c),f.inBufferSize=c,!f.in))throw Rn(new r("allocation failed"),-4);n.set(t.subarray(u,u+c),f.in);const w=e(f.A,f.in,c,i,a,0),l=w>>24&255,d=128&l?l-256:l;if(d<0)throw Rn(new r("process error:"+d),d);const p=16777215&w;p&&g(n.slice(i,i+p));const h=s(f.A);if(1===l)f.R=!0;else if(0===h&&0===p)break;u+=h}}(t)}catch(t){throw b(f),u.error(t),t}},close(){if(S)return;try{!function(){const t=new c(An.buffer),n=f.P,e=f.M;for(;;){const o=n(f.A,0,0,e,a,4),c=o>>24&255,s=128&c?c-256:c;if(s<0)throw Rn(new r("process error:"+s),s);const i=16777215&o;if(i&&g(t.slice(e,e+i)),1===c||0===i)break}}()}catch(t){throw b(f),u.error(t),t}const t=b(f);if(0!==t){const n=Rn(new r("end error:"+t),t);throw u.error(n),n}u.close()},abort(t){b(f),u.error(t)}},{highWaterMark:1})};function g(t){h=!0,u.enqueue(t)}function v(){if(d){const t=d;d=null,t()}}function b(t){let n=0;return t.A&&t.F&&(n=t.F(t.A)),t.A=0,t.in&&Mn&&Mn(t.in),t.in=0,t.M&&Mn&&Mn(t.M),t.M=0,n}}class Pn{constructor(t=Sn,n){return xn(!0,t,n)}}class Dn{constructor(t=Sn,n){return xn(!1,t,n)}}Pn.requiresModule=!0,Dn.requiresModule=!0,Pn.supportedFormats=kn,Dn.supportedFormats=zn;const Fn=65536;let Un,Bn;function Wn(t){return new c(t.memory.buffer)}let On=!1;!function(t={}){const{init:n,U:e}=t,o=t.CompressionStreamFallback||t.CompressionStreamZlib,r=t.DecompressionStreamFallback||t.DecompressionStreamZlib;e&&(dt=e||G),self.initModule=async t=>{n&&await n(t),o&&(t.CompressionStreamFallback=o),r&&(t.DecompressionStreamFallback=r)}}({CompressionStreamFallback:Pn,DecompressionStreamFallback:Dn,U:function(t,n){const e=Un;let o=e?function(t,n,e){Bn||(Bn=t.malloc(Fn));const o=Bn?t.aes_hmac_new():0;if(o){const r=Wn(t);if(r.set(n,Bn),r.set(e,Bn+n.length),t.aes_hmac_init(o,Bn,n.length,Bn+n.length,e.length))return t.aes_hmac_end(o,0),0}return o}(e,t,n):0;if(!o)return G(t,n);const r=Bn;return{process(t,n){for(let c=0;c<t.length;c+=Fn){const s=t.subarray(c,c+Fn),a=Wn(e);a.set(s,r),e.aes_hmac_process(o,r,s.length,n?1:0),s.set(a.subarray(r,r+s.length))}},digest:()=>(e.aes_hmac_end(o,r),o=0,Wn(e).slice(r,r+20)),dispose(){o&&(e.aes_hmac_end(o,0),o=0)}}},init:t=>async function(t,{baseURI:n}){if(!On)try{await async function(t,n){let e,o;try{try{o=new URL(t,n)}catch{}const r=await fetch(o);e=await r.arrayBuffer()}catch(n){if(!t.startsWith("data:application/wasm;base64,"))throw n;e=function(t){const n=t.split(",")[1],e=atob(n),o=e.length,r=new c(o);for(let t=0;t<o;++t)r[t]=e.charCodeAt(t);return r.buffer}(t)}const s=await WebAssembly.instantiate(e);var a;(function(t){if(Cn=t,({malloc:In,free:Mn,memory:An}=Cn),"function"!=typeof In||"function"!=typeof Mn||!An)throw Cn=In=Mn=An=null,new r("Invalid WASM module")})(s.instance.exports),typeof(a=s.instance.exports).aes_hmac_new==k&&(Un=a,Bn=0)}(t,n),On=!0}catch(t){throw function(t){En=t}(t),t}}(t.wasmURI,t)})});\n`;if(typeof n=="string"&&(n=new TextEncoder().encode(n)),e){let s=new Blob([n],{type:r});return URL.createObjectURL(s)}return"data:"+r+";base64,"+(function(s){let i="",o=s.length,a=0;for(;a+2<o;a+=3){let f=s[a]<<16|s[a+1]<<8|s[a+2];i+=ct[f>>18&63]+ct[f>>12&63]+ct[f>>6&63]+ct[63&f]}let c=o-a;if(c===1){let f=s[a]<<16;i+=ct[f>>18&63]+ct[f>>12&63]+"=="}else if(c===2){let f=s[a]<<16|s[a+1]<<8;i+=ct[f>>18&63]+ct[f>>12&63]+ct[f>>6&63]+"="}return i})(n)}});Ge();ue();Pt();Zt();bs();yr();var ef={type:"module"},io="error",PE="messageerror",tf="abort",rf,so,nf,oo=!0;try{oo=typeof structuredClone==K&&structuredClone(new DOMException("","AbortError")).code!==w}catch{}Jl(CE);function CE(t,e){let{baseURI:r,chunkSize:n,workerStartupTimeout:s}=e,{wasmURI:i}=e;if(!t.interface){typeof i==K&&(i=i());let o;try{o=Cs(t.workerURI,r,t)}catch{return ro(t),no(t,e)}Object.assign(t,{worker:o,workerAlive:!1,terminated:!1,startupError:null,interface:{run:async()=>{try{return await xE(t,{chunkSize:n,wasmURI:i,baseURI:r,workerStartupTimeout:s})}catch(a){if(a&&a.workerStartupFailed)return ro(t),sf(t),Ps(t,e);if(a&&a.codecImportFailed){if(t.reader)return sf(t),Ps(t,e);t.onTaskFinished()}throw a}}}})}return t.interface}async function xE(t,e){if(!t.worker){let{startupError:h}=t;t.startupError=null;let m=h||new Error($t);throw m.workerStartupFailed=!0,m}let r,n,s=new Promise((h,m)=>{r=h,n=E=>{let{outputSize:d,workerOptions:u}=t;if(u.outputSize=d,Re(E))try{E.outputSize=d}catch{}m(E)}});Object.assign(t,{reader:null,writer:null,outputSize:0,destinationFailed:!1,destinationError:null,resolveResult:r,rejectResult:n,result:s});let{readable:i,options:o}=t,{writable:a,closed:c,abortPipe:f}=LE(t.writable,t),R;try{R=ao({type:Vl,options:o,config:e,readable:i,writable:a},t)}catch(h){f();try{await c}catch{}throw t.onTaskFinished(),h}R||Object.assign(t,{reader:i.getReader(),writer:a.getWriter()});let{workerStartupTimeout:p}=e;!t.workerAlive&&Number.isFinite(p)&&p>=0&&(t.startupTimeout=setTimeout(()=>UE(t),p));try{let h=await s;return await l(),await c,h}catch(h){await l(),f();try{await c}catch{}let{outputSize:m,workerOptions:E,destinationFailed:d,destinationError:u}=t;E.outputSize=m;let g=Re(h)&&(h.codecImportFailed||h.workerStartupFailed),_=d&&!g?u:h;if(Re(_))try{_.outputSize=m}catch{}throw _}async function l(){if(!R&&!a.locked)try{await a.getWriter().close()}catch{}}}function LE(t,e){let r=new AbortController,n,{writable:s,readable:i}=new TransformStream({transform(c,f){e.outputSize+=c.length,f.enqueue(c)}}),o=i.pipeTo(t,{preventClose:!0,preventAbort:!0,signal:r.signal});o.catch(c=>{n||Object.assign(e,{destinationFailed:!0,destinationError:c})});let{signal:a}=e.workerOptions.streamOptions;if(a){let c=()=>r.abort(a.reason),f=()=>a.removeEventListener(tf,c);a.addEventListener(tf,c),o.then(f,f)}return{writable:s,closed:o,abortPipe:()=>{n=!0,r.abort()}}}function sf(t){let{reader:e}=t;e&&e.releaseLock(),t.reader=null,t.writer=null}function co(t){let{worker:e}=t;if(e)try{e.terminate()}catch{}t.interface=null}function Cs(t,e,r,n,s=!0){let{createWorker:i}=r,o,a,c;if(i)o=i();else if(so===w||rf!==t){let f=typeof t==K;f?a=t(s):a=t;let R=a.startsWith("data:"),p=a.startsWith("blob:");if(R||p){n===w&&(n=!1),n&&(c=ef);try{o=new Worker(a,c)}catch(l){if(p)try{URL.revokeObjectURL(a)}catch{}if(f&&p)return Cs(t,e,r,n,!1);if(n)throw l;return Cs(t,e,r,!0,!1)}}else{n===w&&(n=!0),n&&(c=ef);try{a=new URL(a,e)}catch{}try{o=new Worker(a,c)}catch(l){if(n)return Cs(t,e,r,!1,s);throw l}}rf=t,so=a,nf=c}else o=new Worker(so,nf);return o.addEventListener(Gl,f=>{r.workerAlive=!0,af(r),FE(f,r)}),o.addEventListener(io,f=>of(f,r)),o.addEventListener(PE,f=>of(f,r)),o}function UE(t){if(t.startupTimeout=null,t.workerAlive)return;let{rejectResult:e,writer:r}=t;if(co(t),t.worker=null,e){let n=new Error($t);n.workerStartupFailed=!0,e(n),r&&r.releaseLock()}}function af(t){let{startupTimeout:e}=t;e&&(clearTimeout(e),t.startupTimeout=null)}function of(t,e){t.preventDefault&&t.preventDefault(),af(e);let{workerAlive:r,rejectResult:n,writer:s,onTaskFinished:i}=e;co(e),r||(e.worker=null);let o=t.error||new Error(t.message||io);r||(o=Object.assign(new Error(o.message||io),{workerStartupFailed:!0}),e.startupError=o),n&&(n(o),s&&s.releaseLock(),r&&i())}function ao(t,{worker:e,writer:r,transferStreams:n,workerAlive:s}){try{let{value:i,readable:o,writable:a}=t,c=[];if(i&&(t.value=os(i),c.push(t.value.buffer)),n&&oo&&s?(o&&c.push(o),a&&c.push(a)):t.readable=t.writable=null,c.length)try{return e.postMessage(t,c),!0}catch{oo=!1,t.readable=t.writable=null,e.postMessage(t)}else e.postMessage(t)}catch(i){throw r&&r.releaseLock(),i}}async function FE({data:t},e){let{type:r,value:n,messageId:s,result:i,error:o,errorValue:a}=t,{reader:c,writer:f,resolveResult:R,rejectResult:p,onTaskFinished:l,generation:h}=e,m=()=>e.generation!=h;try{if(o)E(ME(o,a));else{if(r==Xl){let{value:g,done:_}=await c.read();m()||ao({type:$i,value:g,done:_,messageId:s},e)}if(r==$i){let g=new Uint8Array(n);await f.ready,await f.write(g),m()||ao({type:Zl,messageId:s},e)}r==jl&&d(i)}}catch(g){m()||(co(e),E(g))}function E(g){m()||(p(g),u(),Re(g)&&g.codecImportFailed||l())}function d(g){m()||(R(g),u(),l())}function u(){f&&f.releaseLock()}}function ME(t,e){let{message:r,stack:n,code:s,name:i,outputSize:o,cause:a,codecImportFailed:c}=t,f;if(e?f=e.value:f=Object.assign(new Error(r),{stack:n,code:s,name:i}),Re(f))try{o!==w&&(f.outputSize=o),c&&(f.codecImportFailed=!0),a&&!Re(f.cause)&&(f.cause=Object.assign(new Error(a.message),{name:a.name})),e&&(f.name!==i&&(f.name=i),f.code!==s&&(f.code=s))}catch{}return f}ai();ue();Ge();qt();yr();Fs();un();Hi();Pt();mo();jt();Zt();Hs();hr();var Wa="File already exists",Ga="Zip file comment exceeds 64KB",au="Invalid zip file comment (must be a Uint8Array)",cu="File entry comment exceeds 64KB",lu="Invalid file entry comment (must be a string)",fu="Invalid date (must be a valid Date instance)",uu="File entry name exceeds 64KB",Va="Version exceeds 65535",du="The strength must equal 1, 2, or 3",Eu="Encryption is not supported in USDZ files",pu="Split zip files are not supported in USDZ files",mu="Encryption is not supported when the \'passThrough\' option is set to true (use \'compressed\' instead)",hu="Invalid extra field (must be a Map)",gu="Invalid extra field type (must be integer 0..65535)",Ru="Invalid extra field data (must be a Uint8Array)",mi="Extra field data exceeds 64KB",wu=-2147483648,_u=2147483647,qf=BigInt(0),Jf=BigInt("0x7fffffffffffffff"),hi="Zip64 is not supported (set the \'zip64\' option to \'true\')",Tu="Undefined uncompressed size",Au="Undefined compression method",yu="Undefined CRC32";var Su="Undefined reader",Iu="Invalid reader (must be a Reader instance, a ReadableStream instance, or an object with a \'readable\' property)",bu="Zip file not empty",Nu="Invalid uid (must be integer 0..2^32-1)",Ou="Invalid gid (must be integer 0..2^32-1)",Du="Invalid UNIX mode (must be integer 0..65535)",Pu="Invalid unixExtraFieldType (must be \'infozip\' or \'unix\')",Cu="uid/gid must be 0..65535 for unixExtraFieldType \'unix\' (use \'infozip\' for larger ids)",xu="Invalid msdosAttributesRaw (must be integer 0..255)",Lu="Invalid msdosAttributes (must be an object with boolean flags)",Uu="Invalid level (must be integer 0..9)",Fu="Signature data exceeds 64KB",Mu="Invalid entry option (must be an entry returned by ZipReader#getEntries())",vu="The last modification date of an entry encrypted with ZipCrypto cannot be changed when passThrough is set",ku="compression unavailable",zu="clamped last modification date",Qf=new Uint8Array([7,0,2,0,65,69,3,0,0]),tm=4,rm=9,nm=67,sm=32,im=126,om=1,ui="infozip",di="unix",am=[8,9,5,3],cm=9,Ua=0,$f=[],Ei=class{constructor(e,r={}){e=new Ir(e);let{availableSize:n=Gt,maxSize:s=Gt}=e,i=n>0&&n!==Gt&&s>0&&s!==Gt;if(i&&r[Vt])throw new Error(pu);Object.assign(this,{writer:e,addSplitZipSignature:i,options:r,fileEntries:new Map,filenames:new Set,offset:r[jr]===w?e.size||e.writable.size||0:r[jr],initialOffset:r[jr]===w?0:r[jr]-(e.size||e.writable.size||0),pendingAddFileCalls:new Set,pendingErrors:[],warnings:[],bufferedWrites:0,directWrites:0,lastFileEntry:w,archiveClosed:!1})}prependZip(e){return Fa(this,lm(this,e))}appendZip(e){return Fa(this,this.appendZipEntries(e))}async appendZipEntries(e){let r=this,{pendingAddFileCalls:n,filenames:s,fileEntries:i}=r;for(;n.size;)await Promise.allSettled(Array.from(n));let o,a=new Promise(R=>o=R);n.add(a);let c=[],f;try{e=new pt(e),await ge(e),(e.size===w||!e.readUint8Array)&&(e=new $e(await ft(e.readable)),await ge(e));let{ZipReader:R}=await Promise.resolve().then(()=>(ai(),Xf)),p=new R(e),l=await p.getEntries();await p.close(),await ge(r.writer);let{directoryOffset:h}=p;l.forEach(({filename:d})=>{if(s.has(d))throw new Error(Wa);s.add(d),c.push(d)}),r.writerLocked=!0;let{lockWriter:m}=r;r.lockWriter=new Promise(d=>f=()=>{r.writerLocked=!1,d()}),await m,r.addSplitZipSignature&&(delete r.addSplitZipSignature,await Dm(e)||(await nt(r.writer,Yu()),r.offset+=4));let E=await Pm(r,e,l,h);l.forEach(d=>{let{version:u,rawLastModDate:g,rawFilename:_,bitFlag:A,encrypted:T,uncompressedSize:y,compressedSize:S,extraFieldZip64:I}=d,{compressionMethod:N,rawExtraField:U}=d,{level:H,languageEncodingFlag:q,dataDescriptor:$}=A;U=Hu(U||Z),d.extraFieldAES&&(N=99);let j=B(U),W=!!I&&I.uncompressedSize!==w,F=!!I&&I.compressedSize!==w,ne=Vu(H,q,$,T,N)&-7|H<<1,{headerArray:z,headerView:X}=Gu({version:u,bitFlag:ne,compressionMethod:N,uncompressedSize:y,compressedSize:S,rawLastModDate:g,rawFilename:_,zip64CompressedSize:F,zip64UncompressedSize:W,extraFieldLength:j}),{crc32:M}=d;M!==w&&_e(X,10,M);let{offset:G,diskNumberStart:Ee}=E.get(d);Object.assign(d,{zip64Enabled:!0,zip64UncompressedSize:W,zip64CompressedSize:F,offset:G,diskNumberStart:Ee,zip64DiskNumberStart:!1,rawExtraFieldZip64:Z,rawExtraFieldAES:Z,rawExtraFieldExtendedTimestamp:Z,rawExtraFieldNTFS:Z,rawExtraFieldUnix:Z,rawExtraField:U,rawCentralExtraField:Z,headerArray:z,headerView:X}),i.set(d.filename,d)})}catch(R){throw c.forEach(p=>s.delete(p)),R}finally{o(),n.delete(a),f&&f()}}add(e="",r,n={}){let s=this,{pendingAddFileCalls:i}=s,o=fm(s,e,r,n);i.add(o);let a=()=>i.delete(o);return Promise.prototype.then.call(o,a,a),Fa(s,o)}remove(e){let{filenames:r,fileEntries:n}=this;if(typeof e==We&&(e=n.get(e)),e&&e.filename!==w){let{filename:s}=e;if(r.has(s)&&n.has(s))return r.delete(s),n.delete(s),!0}return!1}async close(e=Z,r={}){let n=this,{pendingAddFileCalls:s,writer:i}=this,{writable:o}=i;if(n.archiveClosed)return eu(i);if(!(e instanceof Uint8Array))throw new Error(au);if(B(e)>65535)throw new Error(Ga);for(;s.size;)await Promise.allSettled(Array.from(s));await Promise.allSettled(n.pendingErrors.map(f=>f.recorded));let a=n.pendingErrors.filter(f=>f.failed&&!f.observed);if(a.length){let f=a.map(p=>p.error);a.forEach(p=>p.observed=!0);let[R]=f;try{R.entryErrors=f}catch{}throw R}return await Sm(n,e,r),n.archiveClosed=!0,!fn(i)&&k(n,r,$n)||await o.getWriter().close(),eu(i)}[Xn](){return this.close()}};var Ba=class extends Promise{then(e,r){let{watcher:n}=this;return n&&(n.observed=!0),super.then(e,r)}};function eu(t){return t.getData?t.getData():t.writable}function Fa(t,e){let r=new Ba((s,i)=>Promise.prototype.then.call(e,s,i)),n={};return r.watcher=n,n.recorded=Promise.prototype.then.call(r,w,s=>Object.assign(n,{failed:!0,error:s})),t.pendingErrors.push(n),r}async function lm(t,e){if(t.filenames.size)throw new Error(bu);await t.appendZipEntries(e)}async function fm(t,e,r,n){n=Object.assign({},n);let s=n[Fi];if(s!==w){let{entryOptions:i,passThroughOptions:o}=Bu(s,pr(k(t,n,Zr)),k(t,n,nr));delete n[Fi],n=Object.assign(i,o,n)}if(k(t,n,sr)&&!e.endsWith("/")&&(e+="/"),t.filenames.has(e))throw new Error(Wa);t.filenames.add(e),Ua<at().maxWorkers?Ua++:await new Promise(i=>$f.push(i));try{return await um(t,e,r,n)}catch(i){throw t.filenames.delete(e),i}finally{let i=$f.shift();i?i():Ua--}}async function um(t,e,r,n){let s=Em(t,e,n);({name:e}=s);let i=pm(t,e,n),{comment:o}=i,a=n[Tn];t.fileEntries.set(e,w);let c=t.lastFileEntry,f={},R;i.resolvedOptions.keepOrder&&(f.lockFileEntry=new Promise(l=>R=l)),t.lastFileEntry=f;let p;try{let{resolvedOptions:l}=i;l.level!=0&&l.compressionMethod===w&&!l.passThroughCompression&&!await Ql(at())&&(l.level=0,Te(t.warnings,ku,e));let h=await mm(t,r,i,n);({reader:r}=h);let m=Dn(t.writer),E=Rt(t.writer),d=n.crc32===w?n[Bs]:n.crc32,u=h.resolvedOptions.encrypted&&!l.zipCrypto;if(l.passThroughCompression&&!l.passThroughEncryption&&u&&(d=w),l.passThroughCompression&&r&&!u&&d===w)throw new Error(yu);n=Object.assign({},n,s.resolvedOptions,i.resolvedOptions,h.resolvedOptions,{signature:n[Bs],crc32:d,offset:t.offset-m,diskNumberStart:E,[Vt]:t.options[Vt]});let g=wm(n);g.lastModDateClamped&&Te(t.warnings,zu,e);let _=Tm(n),A=B(g.localHeaderArray,_.dataDescriptorArray);p=await gm(t,e,r,{headerInfo:g,dataDescriptorInfo:_,metadataSize:A,fileEntry:f,previousFileEntry:c,releaseLockFileEntry:R},n)}catch(l){throw t.fileEntries.delete(e),l}finally{R&&R(c&&c.lockFileEntry)}return Object.assign(p,{name:e,comment:o,extraField:a}),new mt(p)}function Bu(t,e,r){if(t===null||typeof t!=Vn||Array.isArray(t))throw new Error(Mu);let{externalFileAttributes:n,versionMadeBy:s,comment:i,lastModDate:o,rawLastModDate:a,creationDate:c,lastAccessDate:f,uncompressedSize:R,encrypted:p,zipCrypto:l,crc32:h,compressionMethod:m,extraFieldAES:E,extraFieldUnix:d,internalFileAttributes:u,extraField:g,bitFlag:_,directory:A,uid:T,gid:y}=t,S={externalFileAttributes:n,versionMadeBy:s,comment:i,lastModDate:o,creationDate:c,lastAccessDate:f,internalFileAttributes:u,directory:A};_&&_.languageEncodingFlag&&(S[xi]=!0);let I=Rf(g);I&&(S[Tn]=I),(T!==w||y!==w)&&Object.assign(S,{uid:T,gid:y,unixExtraFieldType:d?di:ui});let N={};if(e&&!A){if(Object.assign(N,{uncompressedSize:R,crc32:h,compressionMethod:m}),e!==Kr&&Object.assign(N,{encrypted:p,zipCrypto:l,encryptionStrength:E?E.strength:w}),_&&(N.dataDescriptor=_.dataDescriptor,N[es]=am[_.level]),r===w)N.rawLastModDate=a;else if(e!==Kr&&l&&(!_||_.dataDescriptor)&&r instanceof Date&&dm(r)!=(a>>>8&255))throw new Error(vu)}return{entryOptions:S,passThroughOptions:N}}function dm(t){let e=new Date(Math.ceil(Math.floor(t.getTime()/1e3)/2)*2e3);return e<bt?e=bt:e>Xr&&(e=Xr),(e.getHours()<<3|e.getMinutes()>>3)&255}function Em(t,e,r){let n=k(t,r,xo),s=k(t,r,Fo,n?20:768),i=k(t,r,vo),o=Mr(t,r,zo),a=Mr(t,r,Bo),c=Mr(t,r,Ho),f=k(t,r,Lc),R=k(t,r,Yo),p=k(t,r,Wo),l=k(t,r,Go);if(mr(o,4294967295,Nu),mr(a,4294967295,Ou),mr(c,65535,Du),f!==w&&f!==ui&&f!==di)throw new Error(Pu);if(f===di&&(o!==w&&o>65535||a!==w&&a>65535))throw new Error(Cu);f===w&&(o!==w||a!==w)&&(f=ui);let h=Mr(t,r,Po),m=k(t,r,Co),E=o!==w||a!==w||c!==w||f||i,d=h!==w||m!==w;if(E?(n=!1,s=s&255|768):d&&(n=!0,s=s&255),mr(h,255,xu),m&&(typeof m!==Vn||Array.isArray(m)))throw new Error(Lu);if(s>65535)throw new Error(Va);let u=k(t,r,Do),g=u!==w;g||(u=0),!r[sr]&&e.endsWith("/")&&(r[sr]=!0);let _=k(t,r,sr);if(_?(e.endsWith("/")||(e+="/"),g||(u=16,n||(u|=16877<<16))):!n&&!g&&(i?u=493<<16:u=420<<16),!n){let y=c!==w||!!(R||p||l),S=u>>16&65535;c=c===w?S:c&65535,R?c|=2048:R=!!(c&2048),p?c|=1024:p=!!(c&1024),l?c|=512:l=!!(c&512),(!g||y)&&(_?c=c&-61441|16384:c&61440||(c|=32768),u=(c&65535)<<16|u&65535)}({msdosAttributesRaw:h,msdosAttributes:m}=_m(h,m)),d&&(u=u&4294967295|h&255);let A=u>>16&65535,T=c!==w&&(c&61440)==40960;return{name:e,resolvedOptions:{versionMadeBy:s,msDosCompatible:!!n,externalFileAttributes:u,unixExternalUpper:A,uid:o,gid:a,unixMode:c,unixExtraFieldType:f,symlink:T,setuid:R,setgid:p,sticky:l,msdosAttributesRaw:h,msdosAttributes:m}}}function pm(t,e,r){let n=Ha(t,r,xc)||gr,s=n(e,ts);if(s===w&&(s=gr(e)),B(s)>65535)throw new Error(uu);let i=r[gn]||"";if(typeof i!=We)throw new Error(lu);let o=n(i,rs);if(o===w&&(o=gr(i)),B(o)>65535)throw new Error(cu);let a=k(t,r,Uo);if(a!==w&&a>65535)throw new Error(Va);let c=za(t,r,nr,new Date),f=k(t,r,Nr),R=za(t,r,wn),p=za(t,r,_n),l=k(t,r,Oo,0),h=pr(k(t,r,Zr)),m=!!h,E=h===!0,d=k(t,r,Zn),u=k(t,r,jn);ss(d,u),d=d&&d.length?d:w,u=u&&u.length?u:w;let g=Mr(t,r,Sc,3),_=k(t,r,Mo),A=k(t,r,Ic,!0),T=k(t,r,bc),y=k(t,r,Nc,!0),S=k(t,r,qn),I=k(t,r,Qn),N=k(t,r,Oc),U=Ha(t,r,Dc),H=k(t,r,Pc,!0),q=qr(k(t,r,Kn));Xt(q);let $=k(t,r,xi,!ou(s)||!ou(o)),j=k(t,r,ko),W=m||j===w?w:ms(j);if(!m&&j!==w&&j!==0&&j!==8&&!W)throw new Error(ut);let F=Mr(t,r,es);if(mr(F,cm,Uu),t.options[Vt]){if(d!==w||u!==w)throw new Error(Eu);F===w&&j===w&&(F=0)}m&&(F=Ot(r[es]));let ne=k(t,r,Jn),z=k(t,r,Li);N&&z===w&&(z=!1),(z===w||_&&!E)&&(z=!0),F!==w&&F!=6&&(ne=!1);let X=k(t,r,zs);if(!_&&(d!==w||u!==w)&&!(Number.isInteger(g)&&g>=1&&g<=3))throw new Error(du);let M=Ma(r[Tn]),G=Ma(r[Uc]),Ee=Ma(r[Fc]);return{comment:i,resolvedOptions:{rawFilename:s,rawComment:o,version:a,lastModDate:c,rawLastModDate:f,lastAccessDate:R,creationDate:p,internalFileAttributes:l,passThroughCompression:m,passThroughEncryption:E,password:d,rawPassword:u,encryptionStrength:g,zipCrypto:_,extendedTimestamp:A,ntfsTimestamp:T,keepOrder:y,useWebWorkers:S,transferStreams:I,bufferedWrite:N,createTempStream:U,dataDescriptorSignature:H,signal:q,useUnicodeFileNames:$,compressionMethod:j,format:W?W.format:w,codecURI:W?W.codecURI:w,codecVersionNeeded:W?W.versionNeeded:w,level:F,useCompressionStream:ne,dataDescriptor:z,zip64:X,rawExtraField:M,rawLocalExtraField:G,rawCentralExtraField:Ee}}}function Ma(t){if(!t)return Z;if(!(t instanceof Map))throw new Error(hu);let e=0,r=0;t.forEach((i,o)=>{if(vi(o,65535,gu),!(i instanceof Uint8Array))throw new Error(Ru);if(B(i)>65535)throw new Error(mi);e+=4+B(i)});let n=new Uint8Array(e),s=L(n);return t.forEach((i,o)=>{rt(s,r,o),rt(s,r+2,B(i)),xn(n,i,r+4),r+=4+B(i)}),n}async function mm(t,e,{resolvedOptions:r},n){if(r.passThroughCompression&&!e&&!k(t,n,sr))throw new Error(Su);let s;if(e){if(e=new pt(e),await ge(e),!e.readable&&!e.readUint8Array)throw new Error(Iu);({size:s}=e)}return Object.assign({reader:e},hm(t,!!e,s,r,n))}function hm(t,e,r,n,s){let{passThroughCompression:i,passThroughEncryption:o,zipCrypto:a,password:c,rawPassword:f,encryptionStrength:R}=n,{dataDescriptor:p,zip64:l,level:h,compressionMethod:m}=n,E=0,d=0,u=!1;if(i&&e){if(d=s[Rn],d===w)throw new Error(Tu);if(m===w)throw new Error(Au)}let g=l===!0,_=k(t,s,Lo);if(e&&o&&!_&&B(c,f))throw new Error(mu);let A=e&&(!!(c&&B(c)||f&&B(f))||o&&_);e||(h=0,m=0);let T=An(A,a,R);e&&(i?(s.uncompressedSize=d,E=r===w?iu(d)+T:r+(o?0:T)):r===w?(p=!0,(l||l===w)&&(l=u=!0,E=4294967296)):(s.uncompressedSize=d=r,E=(Ya(m,h)?iu(d):d)+T));let y=!A&&(!e||r===0&&!i)&&!Ya(m,h);y&&k(t,s,Li)===w&&(p=!1);let S=g||u||d>=4294967295,I=g||E>=4294967295;if(S||I){if(l===!1)throw new Error(hi);l=!0}return l=l||!1,{maximumCompressedSize:E,resolvedOptions:{dataDescriptor:p,emptyEntry:y,zip64:l,zip64Enabled:g,unknownSize:u,zip64UncompressedSize:S,zip64CompressedSize:I,uncompressedSize:d,level:h,compressionMethod:m,encrypted:A}}}async function gm(t,e,r,n,s){let{fileEntries:i,writer:o}=t,{keepOrder:a,dataDescriptor:c,emptyEntry:f,signal:R}=s,{headerInfo:p,fileEntry:l,previousFileEntry:h,releaseLockFileEntry:m}=n,E=t.options[Vt],d=l,u,g,_,A,T,y,S=0,I,N=a&&h?h.lockFileEntry:w;i.set(e,d);try{s.bufferedWrite||!a||t.writerLocked||t.bufferedWrites||t.directWrites||!c&&!f?(u=!0,t.bufferedWrites++,s.createTempStream?I=await s.createTempStream():I=new TransformStream(w,w,{highWaterMark:Gt}),I.size=0,await ge(o)):(g=!0,t.directWrites++,I=o,await N,await U()),await ge(I);let q=Dn(o);t.addSplitZipSignature&&!u&&await nu(t,o),E&&!u&&tu(n,t.offset-q);let{localHeaderArray:$}=p;u||await H();let j=Rt(o),W=Pn(t,o);if(d.diskNumberStart=j,u||(T=!0,y=o.size,await nt(I,$)),d=await Rm(r,I,d,n,at(),s),u||(T=!1),i.set(e,d),d.filename=e,u){if(await Promise.all([I.writable.getWriter().close(),N]),await U(),t.addSplitZipSignature&&await nu(t,o),A=!0,y=o.size,await H(),d.diskNumberStart=Rt(o),d.offset=Pn(t,o),E){let F=n.metadataSize;tu(n,t.offset-Dn(o)),d.size+=n.metadataSize-F}ym(d,p.localHeaderView,s),await nt(o,p.localHeaderArray),await Wu(I.readable,o,R,F=>S+=F),o.size+=I.size,A=!1}else d.diskNumberStart=j,d.offset=W;return t.offset+=d.size,d}catch(q){if(A||T){if(t.hasCorruptedEntries=!0,q)try{q.corruptedEntry=!0}catch{}t.offset+=o.size-y,u&&(t.offset+=S)}throw i.delete(e),q}finally{if(u&&t.bufferedWrites--,g&&t.directWrites--,m&&m(N),_&&_(),u&&I&&I.dispose)try{await I.dispose()}catch{}}async function U(){t.writerLocked=!0;let{lockWriter:q}=t;t.lockWriter=new Promise($=>_=()=>{t.writerLocked=!1,$()}),await q}async function H(){vr(o,B(p.localHeaderArray))&&await o.closeDisk()}}async function Rm(t,e,{diskNumberStart:r,lockFileEntry:n},s,i,o){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:f}=s,{headerArray:R,headerView:p,lastModDate:l,rawLastModDate:h,encrypted:m,compressed:E,version:d,compressionMethod:u,rawExtraFieldZip64:g,localExtraFieldZip64Length:_,rawExtraFieldExtendedTimestamp:A,extraFieldExtendedTimestampFlag:T,extraFieldExtendedTimestampTime:y,rawExtraFieldNTFS:S,rawExtraFieldUnix:I,rawExtraFieldAES:N}=a,{dataDescriptorArray:U}=c,{rawFilename:H,lastAccessDate:q,creationDate:$,password:j,rawPassword:W,level:F,useUnicodeFileNames:ne,zip64:z,zip64Enabled:X,zip64UncompressedSize:M,zip64CompressedSize:G,zipCrypto:Ee,dataDescriptor:me,directory:st,executable:Me,versionMadeBy:ve,rawComment:je,rawExtraField:Ne,rawCentralExtraField:Oe,useWebWorkers:De,transferStreams:ae,onstart:Pe,onprogress:ke,onend:fe,signal:te,encryptionStrength:J,extendedTimestamp:b,msDosCompatible:Y,internalFileAttributes:Q,externalFileAttributes:pe,uid:Ce,gid:Ke,unixMode:Bt,symlink:Yr,setuid:Ht,setgid:Ye,sticky:Tt,unixExternalUpper:it,msdosAttributesRaw:de,msdosAttributes:ye,useCompressionStream:Bn,passThroughCompression:At,passThroughEncryption:yt,format:Hn,codecURI:Pi}=o,Wr={lockFileEntry:n,versionMadeBy:ve,zip64:z,zip64Enabled:X,directory:!!st,executable:!!Me,filenameUTF8:!!ne,rawFilename:H,commentUTF8:!!ne,rawComment:je,rawExtraFieldZip64:g,localExtraFieldZip64Length:_,rawExtraFieldExtendedTimestamp:A,rawExtraFieldNTFS:S,rawExtraFieldUnix:I,rawExtraFieldAES:N,rawExtraField:Ne,rawCentralExtraField:Oe,extendedTimestamp:b,msDosCompatible:Y,internalFileAttributes:Q,externalFileAttributes:pe,diskNumberStart:r,uid:Ce,gid:Ke,unixMode:Bt,symlink:!!Yr,setuid:Ht,setgid:Ye,sticky:Tt,unixExternalUpper:it,msdosAttributesRaw:de,msdosAttributes:ye},{crc32:Yt,uncompressedSize:St}=o,he=0;At||(St=0);let{writable:Gr}=e;if(t){let Wt=t.size,It=He(po(t,{size:Wt})),Yn={options:{codecType:Ar,inputSize:Wt,level:F,rawPassword:W,password:j,encryptionStrength:J,zipCrypto:m&&Ee,passwordVerification:m&&Ee&&h>>8&255,computeCrc32:!At,compressed:E&&!At,encrypted:m&&!yt,useWebWorkers:De,useCompressionStream:Bn,transferStreams:ae,format:Hn,codecURI:Pi,compressionMethod:u},config:i,streamOptions:{signal:te,size:Wt,onstart:Pe,onprogress:ke,onend:fe}};try{let qe=await Us({readable:It,writable:Gr},Yn);if(he=qe.outputSize,e.size+=he,Xt(te),At||(St=qe.inputSize,(!m||Ee)&&(Yt=qe.crc32)),!G&&he>=4294967295||!M&&St>=4294967295)throw new Error(hi)}catch(qe){let{outputSize:Wn}=Yn;throw Wn!==w?e.size+=Wn:Re(qe)&&qe.outputSize!==w&&(e.size+=qe.outputSize),qe}}return Am({crc32:Yt,compressedSize:he,uncompressedSize:St,headerInfo:a,dataDescriptorInfo:c},o),me&&await nt(e,U),Object.assign(Wr,{uncompressedSize:St,compressedSize:he,lastModDate:l,rawLastModDate:h,creationDate:$,lastAccessDate:q,encrypted:!!m,zipCrypto:!!Ee,size:f+he,compressionMethod:u,version:d,headerArray:R,headerView:p,signature:Yt,crc32:m&&!Ee&&!At?w:Yt,extraFieldExtendedTimestampFlag:T,extraFieldExtendedTimestampTime:y,zip64UncompressedSize:M,zip64CompressedSize:G}),Wr}function wm(t){let{rawFilename:e,lastModDate:r,rawLastModDate:n,lastAccessDate:s,creationDate:i,level:o,zip64:a,zipCrypto:c,useUnicodeFileNames:f,dataDescriptor:R,directory:p,rawExtraField:l,rawLocalExtraField:h,encryptionStrength:m,extendedTimestamp:E,ntfsTimestamp:d,passThroughCompression:u,encrypted:g,zip64UncompressedSize:_,zip64CompressedSize:A,uncompressedSize:T,unknownSize:y,crc32:S}=t,{version:I,compressionMethod:N}=t,U=!p&&Ya(N,o),H,q=u||!U,$=a&&(t.bufferedWrite||!R||!_&&!A||q&&!y),j=$||a&&R&&(_||A);if(a&&(_||A)){let te=Ue(20);if(te.writeUint16(1),te.writeUint16(16),H=te.array,$&&(te.writeUint64(T),q)){let J=An(g,c,m);te.writeUint64(u?0:T+J)}}else H=Z;let W;if(g&&!c){let fe=Ue(B(Qf)+2);fe.writeUint16(39169),fe.writeBytes(Qf),W=fe.array,W[8]=m}else W=Z;let F,ne,z,X;if(E){let fe=li(r),te=xm(fe);if(te){let b=9+(s?4:0)+(i?4:0),Y=Ue(b);z=1+(s?2:0)+(i?4:0),X=fe,Y.writeUint16(21589),Y.writeUint16(b-4),Y.writeUint8(z),Y.writeUint32(fe),s&&Y.writeUint32(su(li(s))),i&&Y.writeUint32(su(li(i))),ne=Y.array}else ne=Z;if(d===w?!te||!!(s||i):d)try{let b=ka(r),Y=Ue(36);Y.writeUint16(10),Y.writeUint16(32),Y.skip(4),Y.writeUint16(1),Y.writeUint16(24),Y.writeUint64(b),Y.writeUint64(s?ka(s):b),Y.writeUint64(i?ka(i):b),F=Y.array}catch{F=Z}else F=Z}else F=ne=Z;let M;try{let{uid:fe,gid:te,unixExtraFieldType:J}=t;if(J==ui&&(fe!==w||te!==w)){let b=ru(fe===w?0:fe),Y=ru(te===w?0:te),Q=3+b.length+Y.length,pe=Ue(4+Q);pe.writeUint16(30837),pe.writeUint16(Q),pe.writeUint8(1),pe.writeUint8(b.length),pe.writeBytes(b),pe.writeUint8(Y.length),pe.writeBytes(Y),M=pe.array}else if(J==di&&(fe!==w||te!==w)){let b=Ue(8);b.writeUint16(30805),b.writeUint16(4),b.writeUint16((fe===w?0:fe)&65535),b.writeUint16((te===w?0:te)&65535),M=b.array}else M=Z}catch{M=Z}N===w&&(N=U?8:0),I===w&&(I=N==0&&!p&&!g?10:20);let{codecVersionNeeded:G}=t;U&&G!==w&&(I=I>G?I:G),a&&(I=I>45?I:45),g&&!c&&(I=I>51?I:51,u&&S!==w&&(W[tm]=om),rt(L(W),rm,N),N=99);let Ee=j?B(H):0,me=Ee+B(W,ne,F,M,l,h),st=t[Vt]?nm:0;if(me+st>65535)throw new Error(mi);let Me=new Date(Math.ceil(Math.floor(r.getTime()/1e3)/2)*2e3),ve=Me<bt?bt:Me>Xr?Xr:Me,je=B(ne)?new Date(li(r)*1e3):B(F)?r:ve,{headerArray:Ne,headerView:Oe,rawLastModDate:De}=Gu({version:I,bitFlag:Vu(o,f,R,g,N),compressionMethod:N,uncompressedSize:T,lastModDate:ve,rawLastModDate:n,rawFilename:e,zip64CompressedSize:A,zip64UncompressedSize:_,extraFieldLength:me}),ae=Ue(30+B(e)+me),Pe=ae.array,ke=L(Pe);return ae.writeUint32(67324752),ae.writeBytes(Ne),ae.writeBytes(e),j&&ae.writeBytes(H),ae.writeBytes(W),ae.writeBytes(ne),ae.writeBytes(F),ae.writeBytes(M),ae.writeBytes(l),ae.writeBytes(h),R&&(A||_e(ke,18,0),_||_e(ke,22,0)),{localHeaderArray:Pe,localHeaderView:ke,headerArray:Ne,headerView:Oe,lastModDate:je,lastModDateClamped:je===ve&&Me.getTime()!=ve.getTime(),rawLastModDate:De,encrypted:g,compressed:U,version:I,compressionMethod:N,extraFieldExtendedTimestampFlag:z,extraFieldExtendedTimestampTime:X,rawExtraFieldZip64:Z,localExtraFieldZip64Length:Ee,rawExtraFieldExtendedTimestamp:ne,rawExtraFieldNTFS:F,rawExtraFieldUnix:M,rawExtraFieldAES:W,extraFieldLength:me}}function tu(t,e){let{headerInfo:r}=t,{localHeaderArray:n,extraFieldLength:s}=r,i=64-(e+B(n))%64;i<4&&(i+=64);let o=new Uint8Array(i),a=L(o);rt(a,0,6534),rt(a,2,i-4);let c=n;r.localHeaderArray=n=new Uint8Array(B(c)+i),xn(n,c),xn(n,o,B(c));let f=L(n);rt(f,28,s+i),r.localHeaderView=f,t.metadataSize+=i}function ru(t){let e=new Uint8Array(4);L(e).setUint32(0,t,!0);let n=4;for(;n>1&&e[n-1]===0;)n--;return e.subarray(0,n)}function _m(t,e){if(t!==w)t=t&255;else if(e!==w){let{readOnly:r,hidden:n,system:s,directory:i,archive:o}=e,a=0;r&&(a|=1),n&&(a|=2),s&&(a|=4),i&&(a|=16),o&&(a|=32),t=a&255}return e===w&&(e={readOnly:!!(t&1),hidden:!!(t&2),system:!!(t&4),directory:!!(t&16),archive:!!(t&32)}),{msdosAttributesRaw:t,msdosAttributes:e}}function Tm({zip64:t,dataDescriptor:e,dataDescriptorSignature:r}){let n=Z,s,i=0,o=t?20:12;return r&&(o+=4),e&&(n=new Uint8Array(o),s=L(n),r&&(i=4,_e(s,0,134695760))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:i}}function Am({crc32:t,compressedSize:e,uncompressedSize:r,headerInfo:n,dataDescriptorInfo:s},{zip64:i,zipCrypto:o,passThroughCompression:a,dataDescriptor:c}){let{headerView:f,encrypted:R}=n,{dataDescriptorView:p,dataDescriptorOffset:l}=s;(!R||o||a)&&t!==w&&(_e(f,10,t),c&&_e(p,l,t)),i?c&&(Cn(p,l+4,BigInt(e)),Cn(p,l+12,BigInt(r))):(_e(f,14,e),_e(f,18,r),c&&(_e(p,l+4,e),_e(p,l+8,r)))}function ym({rawFilename:t,encrypted:e,zip64:r,localExtraFieldZip64Length:n,crc32:s,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:a,zip64CompressedSize:c},f,{dataDescriptor:R,passThroughCompression:p}){if(R||((!e||p&&s!==w)&&_e(f,14,s),c||_e(f,18,i),a||_e(f,22,o)),r&&n){let l=30+B(t)+4;Cn(f,l,BigInt(o)),Cn(f,l+8,BigInt(i))}}async function Sm(t,e,r){let{directoryDataLength:n,zip64Entries:s}=Im(t.fileEntries),{directoryStart:i,directoryEnd:o,directoryArray:a}=await bm(t,n,r),c=await Nm(t,a,r);await Om(t,e,r,{directoryStart:i,directoryEnd:o,directoryDataLength:n,signatureLength:c,zip64Entries:s})}function Im(t){let e=0,r=!1;for(let[,n]of t){let{rawFilename:s,rawExtraFieldAES:i,rawComment:o,rawExtraFieldNTFS:a,rawExtraFieldUnix:c,rawExtraField:f,rawCentralExtraField:R,extraFieldExtendedTimestampFlag:p,extraFieldExtendedTimestampTime:l,zip64Enabled:h,uncompressedSize:m,compressedSize:E}=n,{zip64UncompressedSize:d,zip64CompressedSize:u}=n;h||(d&&m<4294967295&&(d=n.zip64UncompressedSize=!1),u&&E<4294967295&&(u=n.zip64CompressedSize=!1)),r=r||d||u;let g=n.offset>=4294967295,_=n.diskNumberStart>=65535,A;if(g||_||d||u){let S=4+(d?8:0)+(u?8:0)+(g?8:0)+(_?4:0),I=Ue(S);I.writeUint16(1),I.writeUint16(S-4),d&&I.writeUint64(m),u&&I.writeUint64(E),g&&I.writeUint64(n.offset),_&&I.writeUint32(n.diskNumberStart),A=I.array}else A=Z;n.rawExtraFieldZip64=A,n.zip64Offset=g,n.zip64DiskNumberStart=_;let T;if(l===w)T=Z;else{let S=Ue(9);S.writeUint16(21589),S.writeUint16(5),S.writeUint8(p),S.writeUint32(l),T=S.array}n.rawExtraFieldExtendedTimestamp=T;let y=B(A,i,a,c,T,f,R);if(y>65535)throw new Error(mi);e+=46+B(s,o)+y}return{directoryDataLength:e,zip64Entries:r}}async function bm(t,e,r){let{fileEntries:n,writer:s}=t,i=new Uint8Array(e);await ge(s);let o=0,a=0,c=Rt(s),f=Dn(s),R=0;for(let[p,l]of Array.from(n.values()).entries()){let{offset:h,rawFilename:m,rawExtraFieldZip64:E,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:u,rawExtraFieldNTFS:g,rawExtraFieldUnix:_,rawExtraField:A,rawCentralExtraField:T,rawComment:y,versionMadeBy:S,headerArray:I,headerView:N,zip64UncompressedSize:U,zip64CompressedSize:H,zip64DiskNumberStart:q,zip64Offset:$,internalFileAttributes:j,externalFileAttributes:W,diskNumberStart:F,uncompressedSize:ne,compressedSize:z}=l,X=B(E,d,u,g,_,A,T),M=46+B(m,y)+X;vr(s,o+M-a)&&(await nt(s,i.slice(a,o)),a=o,R=0,await s.closeDisk()),p==0&&(c=Rt(s),f=Dn(s)),U||_e(N,18,ne),H||_e(N,14,z),($||q)&&l.version<45&&rt(N,0,45);let G=Ue(M);if(G.writeUint32(33639248),G.writeUint16(S),G.writeBytes(I.subarray(0,24)),G.writeUint16(X),G.writeUint16(B(y)),G.writeUint16(q?65535:F),G.writeUint16(j),G.writeUint32(W),G.writeUint32($?4294967295:h),G.writeBytes(m),G.writeBytes(E),G.writeBytes(d),G.writeBytes(u),G.writeBytes(g),G.writeBytes(_),G.writeBytes(A),G.writeBytes(T),G.writeBytes(y),xn(i,G.array,o),o+=M,R++,r.onprogress)try{await r.onprogress(p+1,n.size,new mt(l))}catch{}}return await nt(s,a?i.slice(a):i),{directoryStart:{diskNumber:c,diskOffset:f},directoryEnd:{diskNumber:Rt(s),entriesLength:R},directoryArray:i}}async function Nm(t,e,r){let n=Ha(t,r,Bc);if(n){let s=await n(e),i=B(s);if(i>65535)throw new Error(Fu);let o=Ue(6+i);o.writeUint32(84233040),o.writeUint16(i),o.writeBytes(s);let{writer:a}=t;return vr(a,B(o.array))&&await a.closeDisk(),await nt(a,o.array),6+i}return 0}async function Om(t,e,r,n){let{writer:s}=t,{directoryStart:i,directoryEnd:o,signatureLength:a,zip64Entries:c}=n,{directoryDataLength:f}=n,R=t.fileEntries.size,p=i.diskNumber,l=Pn(t,i),h=B(e);if(h>65535)throw new Error(Ga);let m=k(t,r,zs),E=Rt(s);if(vr(s,(m?98:22)+h)&&E++,l>=4294967295||f>=4294967295||R>=65535||E>=65535){if(m===!1)throw new Error(hi);m=!0}else m===w&&c&&(m=!0);let d=Ue(m?98:22);vr(s,B(d.array)+h)&&await s.closeDisk(),E=Rt(s);let u=E==o.diskNumber?o.entriesLength:0;m&&(d.writeUint32(101075792),d.writeUint64(44),d.writeUint16(45),d.writeUint16(45),d.writeUint32(E),d.writeUint32(p),d.writeUint64(u),d.writeUint64(R),d.writeUint64(f),d.writeUint64(l),d.writeUint32(117853008),d.writeUint32(E),d.writeUint64(BigInt(Pn(t,s))+BigInt(f)+BigInt(a)),d.writeUint32(E+1),k(t,r,Cc,!0)&&(E=65535,p=65535),u=65535,R=65535,l=4294967295,f=4294967295),d.writeUint32(101010256),d.writeUint16(E),d.writeUint16(p),d.writeUint16(u),d.writeUint16(R),d.writeUint32(f),d.writeUint32(l),d.writeUint16(h),await nt(s,d.array),h&&await nt(s,e)}function Ue(t){let e=new Uint8Array(t),r=L(e),n=0;return{array:e,writeUint8:s=>{Um(r,n,s),n+=1},writeUint16:s=>{rt(r,n,s),n+=2},writeUint32:s=>{_e(r,n,s),n+=4},writeUint64:s=>{Cn(r,n,BigInt(s)),n+=8},writeBytes:s=>{xn(e,s,n),n+=B(s)},skip:s=>n+=s}}function Rt(t){let{diskNumber:e=0}=t;return e}function Dn(t){let{diskOffset:e=0}=t;return e}function vr(t,e){let{availableSize:r=Gt}=t;return e>r}function Pn(t,{diskNumber:e=0,diskOffset:r=0}){return t.offset-r-(e?t.initialOffset:0)}async function Dm(t){let e=await re(t,0,4);return Lm(L(e),0)==134695760}function Hu(t){let e=L(t),r=0;for(;r+4<=B(t);){let n=4+pi(e,r+2);if(pi(e,r)==1)return Hu(Be(t.subarray(0,r),t.subarray(Math.min(r+n,B(t)))));r+=n}return t}async function Pm(t,e,r,n){let{writer:s}=t,i=new Map;if(s.closeDisk){let o=Array.from(r).sort((c,f)=>ci(e,c)-ci(e,f)),a=0;for(let c of o){let f=ci(e,c);await va(t,e,a,f-a),vr(s,await Cm(e,f))&&await s.closeDisk(),i.set(c,{offset:Pn(t,s),diskNumberStart:Rt(s)}),a=f}await va(t,e,a,n-a)}else{let o=t.offset;await va(t,e,0,n),r.forEach(a=>i.set(a,{offset:o+ci(e,a),diskNumberStart:0}))}return i}async function va(t,e,r,n){if(n>0){let{writer:s}=t,i=0;try{await Wu(po(e,{offset:r,size:n}),s,w,o=>i+=o)}catch(o){t.hasCorruptedEntries=!0;try{o.corruptedEntry=!0}catch{}throw o}finally{s.size+=i,t.offset+=i}}}async function Cm(t,e){let r=await re(t,e,30);if(B(r)<30)return 30;let n=L(r);return 30+pi(n,26)+pi(n,28)}function ci(t,{offset:e,diskNumberStart:r}){return e+(t.getDiskOffset?t.getDiskOffset(r):0)}function Yu(){let t=new Uint8Array(4);return _e(L(t),0,134695760),t}async function nu(t,e){delete t.addSplitZipSignature,await nt(e,Yu()),t.offset+=4}async function nt(t,e){let{writable:r}=t,n=r.getWriter();try{await n.ready,t.size+=B(e),await n.write(e)}finally{n.releaseLock()}}async function Wu(t,e,r,n){let s=e.writable.getWriter();try{await t.pipeTo(new WritableStream({async write(i){await s.ready,await s.write(i),n(B(i))}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{s.releaseLock()}}function ka(t){if(t){let e=(BigInt(t.getTime())+BigInt(116444736e5))*BigInt(1e4);return e<qf?qf:e>Jf?Jf:e}}function li(t){return Math.floor(t.getTime()/1e3)}function xm(t){return t>=wu&&t<=_u}function su(t){return Math.min(_u,Math.max(wu,t))}function k(t,e,r,n){let s=e[r]===w?t.options[r]:e[r];return s===w?n:s}function za(t,e,r,n){let s=k(t,e,r,n);if(s===null)return n;if(s!==w&&(typeof s.getTime!=K||Number.isNaN(s.getTime())))throw new Error(fu);return s}function Ha(t,e,r){return Er(k(t,e,r))}function Mr(t,e,r,n){return Ot(k(t,e,r,n))}function iu(t){return t+5*(Math.floor(t/16383)+1)}function Ya(t,e){return t===w?e===w||e>0:t!==0}function pi(t,e){return t.getUint16(e,!0)}function Lm(t,e){return t.getUint32(e,!0)}function Um(t,e,r){t.setUint8(e,r)}function rt(t,e,r){t.setUint16(e,r,!0)}function _e(t,e,r){t.setUint32(e,r,!0)}function Cn(t,e,r){t.setBigUint64(e,r,!0)}function xn(t,e,r){t.set(e,r)}function B(...t){let e=0;return t.forEach(r=>r&&(e+=r.length)),e}function Gu({version:t,bitFlag:e,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:i,rawLastModDate:o,rawFilename:a,zip64CompressedSize:c,zip64UncompressedSize:f,extraFieldLength:R}){let p=Ue(26),l=p.array,h=L(l);if(p.writeUint16(t),p.writeUint16(e),p.writeUint16(r),o===w){let m=new Uint32Array(1),E=L(m);rt(E,0,(i.getHours()<<6|i.getMinutes())<<5|i.getSeconds()/2),rt(E,2,(i.getFullYear()-1980<<4|i.getMonth()+1)<<5|i.getDate()),o=m[0]}return p.writeUint32(o),p.skip(4),c||s!==w?p.writeUint32(c?4294967295:s):p.skip(4),f||n!==w?p.writeUint32(f?4294967295:n):p.skip(4),p.writeUint16(B(a)),p.writeUint16(R),{headerArray:l,headerView:h,rawLastModDate:o}}function ou(t){return t.every(e=>e>=sm&&e<=im)}function Vu(t,e,r,n,s){let i=0;return e&&(i=i|2048),r&&(i=i|8),(s==8||s==9)&&(t>=0&&t<=3&&(i=i|6),t>3&&t<=5&&(i=i|4),t==9&&(i=i|2)),n&&(i=i|1),i}un();hr();Ge();qt();ue();Ge();qt();Qi();var ew=1024*1024;jt();var nw=1024*1024;var iw=1024*1024;var ow=512*1024;var Vm={};try{Dt({baseURI:Vm.url})}catch{}Ge();var Xm=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],Zm=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],jm=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],Km=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],qm=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Un=new Uint8Array(288);Un.fill(8,0,144),Un.fill(9,144,256),Un.fill(7,256,280),Un.fill(8,280,288);var Jm=new Uint8Array(30).fill(5);function Ln(t){let e=new Uint16Array(16);for(let s of t)e[s]++;e[0]=0;let r=new Uint16Array(17);for(let s=1;s<=15;s++)r[s+1]=r[s]+e[s];let n=new Uint16Array(t.length);for(let s=0;s<t.length;s++)t[s]&&(n[r[t[s]]++]=s);return{lengthCounts:e,symbols:n}}var Fe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function Xu(t){let e;t({wasmURI:()=>(e||(e="data:application/wasm;base64,"+(function(r){let n="",s=r.length,i=0;for(;i+2<s;i+=3){let a=r[i]<<16|r[i+1]<<8|r[i+2];n+=Fe[a>>18&63]+Fe[a>>12&63]+Fe[a>>6&63]+Fe[63&a]}let o=s-i;if(o===1){let a=r[i]<<16;n+=Fe[a>>18&63]+Fe[a>>12&63]+"=="}else if(o===2){let a=r[i]<<16|r[i+1]<<8;n+=Fe[a>>18&63]+Fe[a>>12&63]+Fe[a>>6&63]+"="}return n})((function(r){let n=0,s=0,i=0,o=new Uint8Array(1024),a=0,c=0;for(;!c;){c=R(1);let d=R(2);if(d==0)p();else if(d==1)l(Ln(Un),Ln(Jm));else{if(d!=2)throw new Error("invalid deflate block type");l(...h())}}return o.subarray(0,a);function f(){if(n>=r.length)throw new Error("unexpected end of deflate data");return r[n++]}function R(d){for(;i<d;)s|=f()<<i,i+=8;let u=s&(1<<d)-1;return s>>>=d,i-=d,u}function p(){s=0,i=0;let d=f()|f()<<8;n+=2,E(a+d);for(let u=0;u<d;u++)o[a++]=f()}function l(d,u){let g=m(d);for(;g!=256;){if(g<256)E(a+1),o[a++]=g;else{let _=g-257,A=Xm[_]+R(Zm[_]),T=m(u),y=jm[T]+R(Km[T]);E(a+A);let S=a-y;for(let I=0;I<A;I++)o[a++]=o[S+I]}g=m(d)}}function h(){let d=R(5)+257,u=R(5)+1,g=R(4)+4,_=new Uint8Array(19);for(let S=0;S<g;S++)_[qm[S]]=R(3);let A=Ln(_),T=new Uint8Array(d+u),y=0;for(;y<T.length;){let S=m(A);if(S<16)T[y++]=S;else if(S==16){let I=T[y-1],N=R(2)+3;for(;N--;)T[y++]=I}else y+=S==17?R(3)+3:R(7)+11}return[Ln(T.subarray(0,d)),Ln(T.subarray(d))]}function m(d){let{lengthCounts:u,symbols:g}=d,_=0,A=0,T=0;for(let y=1;y<=15;y++){_|=R(1);let S=u[y];if(_-A<S)return g[T+(_-A)];T+=S,A=A+S<<1,_<<=1}throw new Error("invalid huffman code")}function E(d){if(o.length<d){let u=2*o.length;for(;u<d;)u*=2;let g=new Uint8Array(u);g.set(o.subarray(0,a)),o=g}}})((function(r){let n=(r=String(r).replace(/[^A-Za-z0-9+/=]/g,"")).length,s=[];for(let i=0;i<n;i+=4){let o=Fe.indexOf(r[i])<<18|Fe.indexOf(r[i+1])<<12|(63&Fe.indexOf(r[i+2]))<<6|63&Fe.indexOf(r[i+3]);s.push(o>>16&255),r[i+2]!=="="&&s.push(o>>8&255),r[i+3]!=="="&&s.push(255&o)}return new Uint8Array(s)})("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")))),e)})}ue();Ge();yr();Fs();Vi();var wi="deflate",gi="deflate-raw",Zu="deflate64-raw",Ri="gzip";var Qm="Z_MEM_ERROR",ju=[wi,gi,Ri],Ku=[wi,gi,Ri,Zu],le,zr,wt,Fn,qu;function Ju(t){if(le=t,{malloc:zr,free:wt,memory:Fn}=le,typeof zr!="function"||typeof wt!="function"||!Fn)throw le=zr=wt=Fn=null,new Error("Invalid WASM module")}function Qu(t){qu=t}function kr(t,e){return e===-4&&(t.code=Qm),t}function $u(t,e,r={}){if(!(t?ju:Ku).includes(e))throw new TypeError("Unsupported format: "+e);if(!le){let T=new Error("WASM module not loaded");throw T.cause=qu,T}let n=typeof r.level=="number"?r.level:-1,s=typeof r.outBuffer=="number"?r.outBuffer:64*1024,i=typeof r.inBufferSize=="number"?r.inBufferSize:64*1024,o={out:0,in:0,inBufferSize:0,streamHandle:0,streamEnded:!1},a,c,f,R,p=!0,l=!1;E();let h=new ReadableStream({start(T){a=T},pull(){p=!1,_()},cancel(T){l=!0,R=T,A(o),c.error(T),_()}},{highWaterMark:0}),m=new WritableStream({start(T){c=T},async write(T){if(p&&await new Promise(y=>f=y),l)throw R;try{d(T)}catch(y){throw A(o),a.error(y),y}},close(){if(l)return;try{u()}catch(y){throw A(o),a.error(y),y}let T=A(o);if(T!==0){let y=kr(new Error("end error:"+T),T);throw a.error(y),y}a.close()},abort(T){A(o),a.error(T)}},{highWaterMark:1});return{readable:h,writable:m};function E(){try{let T;if(o.out=zr(s),o.in=zr(i),o.inBufferSize=i,!o.out||!o.in)throw kr(new Error("allocation failed"),-4);if(t?(o._process=le.deflate_process,o._last_consumed=le.deflate_last_consumed,o._end=le.deflate_end,o.streamHandle=le.deflate_new(),e===Ri?T=le.deflate_init_gzip(o.streamHandle,n):e===gi?T=le.deflate_init_raw(o.streamHandle,n):T=le.deflate_init(o.streamHandle,n)):e===Zu?(o._process=le.inflate9_process,o._last_consumed=le.inflate9_last_consumed,o._end=le.inflate9_end,o.streamHandle=le.inflate9_new(),T=le.inflate9_init_raw(o.streamHandle)):(o._process=le.inflate_process,o._last_consumed=le.inflate_last_consumed,o._end=le.inflate_end,o.streamHandle=le.inflate_new(),e===gi?T=le.inflate_init_raw(o.streamHandle):e===Ri?T=le.inflate_init_gzip(o.streamHandle):T=le.inflate_init(o.streamHandle)),T!==0)throw kr(new Error("init failed:"+T),T)}catch(T){throw A(o),T}}function d(T){let y=new Uint8Array(Fn.buffer),S=o._process,I=o._last_consumed,N=o.out,U=0;for(;U<T.length;){if(o.streamEnded)throw new Error("trailing data after the end of the stream");let H=Math.min(T.length-U,32*1024);if((!o.in||o.inBufferSize<H)&&(o.in&&wt&&(wt(o.in),o.in=0),o.in=zr(H),o.inBufferSize=H,!o.in))throw kr(new Error("allocation failed"),-4);y.set(T.subarray(U,U+H),o.in);let q=S(o.streamHandle,o.in,H,N,s,0),$=q>>24&255,j=$&128?$-256:$;if(j<0)throw kr(new Error("process error:"+j),j);let W=q&16777215;W&&g(y.slice(N,N+W));let F=I(o.streamHandle);if($===1)o.streamEnded=!0;else if(F===0&&W===0)break;U+=F}}function u(){let T=new Uint8Array(Fn.buffer),y=o._process,S=o.out;for(;;){let I=y(o.streamHandle,0,0,S,s,4),N=I>>24&255,U=N&128?N-256:N;if(U<0)throw kr(new Error("process error:"+U),U);let H=I&16777215;if(H&&g(T.slice(S,S+H)),N===1||H===0)break}}function g(T){p=!0,a.enqueue(T)}function _(){if(f){let T=f;f=null,T()}}function A(T){let y=0;return T.streamHandle&&T._end&&(y=T._end(T.streamHandle)),T.streamHandle=0,T.in&&wt&&wt(T.in),T.in=0,T.out&&wt&&wt(T.out),T.out=0,y}}var fr=class{constructor(e=wi,r){return $u(!0,e,r)}},ur=class{constructor(e=wi,r){return $u(!1,e,r)}};fr.requiresModule=!0;ur.requiresModule=!0;fr.supportedFormats=ju;ur.supportedFormats=Ku;ue();Yi();var Xa=64*1024,$m=20,ed,_t;function td(t){typeof t.aes_hmac_new==K&&(ed=t,_t=0)}function ja(t,e){let r=ed,n=r?eh(r,t,e):0;if(!n)return tn(t,e);let s=_t;return{process(i,o){for(let a=0;a<i.length;a+=Xa){let c=i.subarray(a,a+Xa),f=Za(r);f.set(c,s),r.aes_hmac_process(n,s,c.length,o?1:0),c.set(f.subarray(s,s+c.length))}},digest(){return r.aes_hmac_end(n,s),n=0,Za(r).slice(s,s+$m)},dispose(){n&&(r.aes_hmac_end(n,0),n=0)}}}function eh(t,e,r){_t||(_t=t.malloc(Xa));let n=_t?t.aes_hmac_new():0;if(n){let s=Za(t);if(s.set(e,_t),s.set(r,_t+e.length),t.aes_hmac_init(n,_t,e.length,_t+e.length,r.length))return t.aes_hmac_end(n,0),0}return n}function Za(t){return new Uint8Array(t.memory.buffer)}var rd=!1;async function nd(t,{baseURI:e}){if(!rd)try{await th(t,e),rd=!0}catch(r){throw Qu(r),r}}async function th(t,e){let r,n;try{try{n=new URL(t,e)}catch{}r=await(await fetch(n)).arrayBuffer()}catch(i){if(t.startsWith("data:application/wasm;base64,"))r=rh(t);else throw i}let s=await WebAssembly.instantiate(r);Ju(s.instance.exports),td(s.instance.exports)}function rh(t){let e=t.split(",")[1],r=atob(e),n=r.length,s=new Uint8Array(n);for(let i=0;i<n;++i)s[i]=r.charCodeAt(i);return s.buffer}var _i;wl(ja);ql({initModule:t=>{if(!_i){let{wasmURI:e}=t;typeof e==K&&(e=e()),_i=nd(e,t).catch(r=>{throw _i=null,r})}return _i}});Dt({CompressionStreamFallback:fr,DecompressionStreamFallback:ur});Xu(Dt);un();ai();Hs();hr();yr();ue();Pt();jt();Zt();var I_=new Uint8Array(0);il(Dt);var Mn="h5p-pkg-v0-";var Ze="__archive__";var sd="h5p-player";var vn="packages",kn="https://chunks.h5p-player.invalid/";function zn(t,e){let r=e.end-e.start+1,n=0,s=0,i=new TransformStream({transform(o,a){if(s>=r)return;let c=n;if(n+=o.length,n<=e.start)return;let f=Math.max(0,e.start-c),R=Math.min(o.length,f+(r-s)),p=o.subarray(f,R);s+=p.length,a.enqueue(p),s>=r&&a.terminate()}});return t.pipeTo(i.writable).catch(()=>{}),i.readable}function id(t,e){return`h5p:${t}:${e}`}function od(t){return`h5p:${t}:`}var nh=/^h5p:([^:]+):/;async function Ti(){let t=new Set,e=typeof navigator>"u"?void 0:navigator.locks;if(!e?.query)return t;try{let{held:r=[]}=await e.query();for(let n of r){let s=n.name?nh.exec(n.name):null;s&&t.add(s[1])}}catch{}return t}var sh="/__meta__",ih="/__forward__",oh="__forward_index__",ah=32;function yi(t){return t.split("/").map(encodeURIComponent).join("/")}function Ai(t){return`${Mn}${t}`}function ad(t,e){return`${kn}${t}/whole/${yi(e)}`}function Ka(t,e,r){return`${kn}${t}/chunk/${yi(e)}/${r}`}function cd(t,e){return`${kn}${t}/chunk/${yi(e)}${sh}`}function ld(t){return`${kn}${t}/chunk/${yi(Ze)}${ih}`}function ch(t){return t instanceof DOMException&&(t.name==="QuotaExceededError"||t.name==="NS_ERROR_DOM_QUOTA_REACHED")}var Br=class extends Error{constructor(e="Not enough storage to cache this package"){super(e),this.name="QuotaError"}};function fd(t){return{first:Math.floor(t.start/8388608),last:Math.floor(t.end/8388608)}}function ud(t,e){let r=t*8388608;return{from:Math.max(0,e.start-r),to:Math.min(8388608,e.end-r+1)}}var kt=class{constructor(e){this.cachePromise=null;this.pkgId=e}cache(){return this.cachePromise??=caches.open(Ai(this.pkgId)),this.cachePromise}async getWhole(e){return(await this.cache()).match(ad(this.pkgId,e))}async putWhole(e,r,n,s){let i=new Headers({"content-type":n});s!==void 0&&i.set("content-length",String(s)),await this.write(ad(this.pkgId,e),()=>new Response(r(),{headers:i}))}async getMeta(e){let n=await(await this.cache()).match(cd(this.pkgId,e));if(n)try{return await n.json()}catch{return}}async setMeta(e,r){await(await this.cache()).put(cd(this.pkgId,e),new Response(JSON.stringify(r),{headers:{"content-type":"application/json"}})),Ed({pkgId:this.pkgId,entry:e,meta:r})}async putChunk(e,r,n){let s=n.slice();await this.write(Ka(this.pkgId,e,r),()=>new Response(s.buffer,{headers:{"content-type":"application/octet-stream"}}))}async getChunk(e,r){let s=await(await this.cache()).match(Ka(this.pkgId,e,r));if(s)return new Uint8Array(await s.arrayBuffer())}readRange(e,r,n){let{first:s,last:i}=fd(r),o=s,a=null,c=this;return new ReadableStream({async pull(f){for(;;){if(a){let{done:m,value:E}=await a.read();if(!m){f.enqueue(E);return}a=null,o+=1}if(o>i){f.close();return}if(n){let m=Math.min((o+1)*8388608,r.end+1);if(!await n(m)){f.error(new Error(`Extraction of ${e} stalled before byte ${m}`));return}}let R=await c.chunkBody(e,o);if(!R){f.error(new Error(`Missing chunk ${o} of ${e}`));return}let{from:p,to:l}=ud(o,r);a=(p===0&&l>=8388608?R:zn(R,{start:p,end:l-1})).getReader()}},async cancel(f){await a?.cancel(f)}},{highWaterMark:0})}async chunkBody(e,r){return(await(await this.cache()).match(Ka(this.pkgId,e,r)))?.body??void 0}async readRangeBytes(e,r){let n=new Uint8Array(r.end-r.start+1),{first:s,last:i}=fd(r),o=0;for(let a=s;a<=i;a+=1){let c=await this.getChunk(e,a);if(!c)throw new Error(`Missing chunk ${a} of ${e}`);let{from:f,to:R}=ud(a,r),p=c.subarray(f,Math.min(R,c.length));n.set(p,o),o+=p.length}return o===n.length?n:n.subarray(0,o)}getArchiveMeta(){return this.getMeta(Ze)}async getForwardIndex(){let r=await(await this.cache()).match(ld(this.pkgId));if(r)try{return await r.json()}catch{return}}async setForwardIndex(e){await(await this.cache()).put(ld(this.pkgId),new Response(JSON.stringify(e),{headers:{"content-type":"application/json"}})),Ed({pkgId:this.pkgId,entry:oh,meta:{size:null,available:e.parsedTo,complete:e.done}})}readArchiveRange(e){return this.readRangeBytes(Ze,e)}async write(e,r){let n=await this.cache();for(let s=0;;s+=1){let i=r();try{await n.put(e,i);return}catch(o){if(i.body?.cancel().catch(()=>{}),!ch(o))throw o;if(s>=ah)throw new Br;if(!await lh(this.pkgId))throw new Br}}}async destroy(){this.cachePromise=null,await caches.delete(Ai(this.pkgId))}},qa=null;function pd(t){qa=t}var md=null;function hd(t){md=t}async function lh(t){let e=qa?await qa(t):await fh(t);return e?(await caches.delete(Ai(e)),await md?.(e),!0):!1}async function fh(t){let[e,r]=await Promise.all([caches.keys(),Ti()]),n=Ai(t),s=e.find(i=>i.startsWith(Mn)&&i!==n&&!r.has(i.slice(Mn.length)));return s?s.slice(Mn.length):null}var uh="h5p-player-watermark",dd;function dh(){if(typeof BroadcastChannel!="function")return null;let t=new BroadcastChannel(uh);return t.unref?.(),t}function Ed(t){dd??=dh();try{dd?.postMessage(t)}catch{}}var zt=null;function gd(t,e){zt===e&&(zt=null),t.close()}function ph(){if(zt)return zt;let t=new Promise((e,r)=>{let n=indexedDB.open(sd,1);n.onupgradeneeded=()=>{let s=n.result;s.objectStoreNames.contains(vn)||s.createObjectStore(vn,{keyPath:"pkgId"}).createIndex("lastPlayed","lastPlayed")},n.onsuccess=()=>{let s=n.result;s.onversionchange=()=>gd(s,t),s.onclose=()=>gd(s,t),e(s)},n.onerror=()=>r(n.error)});return zt=t,t.catch(()=>{zt===t&&(zt=null)}),t}function mh(t){return t instanceof DOMException&&(t.name==="InvalidStateError"||t.name==="NotFoundError"||t.name==="TransactionInactiveError")}function wd(t){return new Promise((e,r)=>{t.onsuccess=()=>e(t.result),t.onerror=()=>r(t.error)})}async function Rd(t,e){let n=(await ph()).transaction(vn,t),s=await e(n.objectStore(vn));return await new Promise((i,o)=>{n.oncomplete=()=>i(),n.onerror=()=>o(n.error),n.onabort=()=>o(n.error)}),s}async function _d(t,e){try{return await Rd(t,e)}catch(r){if(!mh(r))throw r;return zt=null,Rd(t,e)}}function Td(t){return _d("readwrite",async e=>{await wd(e.delete(t))})}function hh(){return _d("readonly",t=>wd(t.getAll()))}async function Ad(){return(await hh()).sort((e,r)=>e.lastPlayed-r.lastPlayed)}async function Rh(t,e={}){let[r,n]=await Promise.all([(e.packagesByAge??Ad)(),(e.busyPackages??Ti)()]);return r.find(s=>s.pkgId!==t&&!n.has(s.pkgId))?.pkgId??null}function yd(t){pd(e=>Rh(e)),hd(async e=>{t?.(e),await Td(e)})}var wh=new TextDecoder,Si=class{constructor(){this.entries=[];this.parsedTo=0;this.done=!1;this.stopped=null;this.buffer=new Uint8Array(0);this.position=0;this.state={kind:"header"}}push(e){this.stopped||this.done||e.length===0||(this.buffer=this.buffer.length===0?e:Th(this.buffer,e),this.drain())}finish(){!this.done&&!this.stopped&&this.state.kind==="descriptor"&&(this.stopped="unresolved-descriptor")}snapshot(){return{entries:[...this.entries],parsedTo:this.parsedTo,done:this.done,stopped:this.stopped}}consume(e){this.buffer=this.buffer.subarray(e),this.position+=e}drain(){for(;;){let e=this.state;if(e.kind==="skip"){let r=Math.min(e.remaining,this.buffer.length);if(this.consume(r),e.remaining-=r,e.remaining>0)return;this.record(e.entry),this.state={kind:"header"},this.parsedTo=this.position;continue}if(e.kind==="header"){if(!this.readHeader())return;continue}if(!this.findDescriptor(e.entry))return}}readHeader(){let{buffer:e}=this;if(e.length<4)return!1;let r=new DataView(e.buffer,e.byteOffset,e.byteLength),n=r.getUint32(0,!0);if(n===33639248||n===101010256||n===101075792||n===117853008)return this.done=!0,this.stopped="central-directory",this.parsedTo=this.position,!1;if(n!==67324752)return this.stopped="bad-signature",!1;if(e.length<30)return!1;let s=r.getUint16(6,!0),i=r.getUint16(8,!0),o=r.getUint32(14,!0),a=r.getUint32(18,!0),c=r.getUint32(22,!0),f=r.getUint16(26,!0),R=r.getUint16(28,!0),p=30+f+R;if(e.length<p)return!1;let l=wh.decode(e.subarray(30,30+f)),h=e.subarray(30+f,p),m=_h(h,c===4294967295,a===4294967295);m&&(c=m.uncompressedSize??c,a=m.compressedSize??a);let E={name:l,directory:l.endsWith("/"),method:i,encrypted:(s&1)!==0,crc32:o,compressedSize:a,uncompressedSize:c,headerOffset:this.position,dataStart:this.position+p,zip64:m!==null};return this.consume(p),s&8?(this.state={kind:"descriptor",entry:E},!0):(this.state={kind:"skip",remaining:a,entry:E},!0)}findDescriptor(e){let{buffer:r}=this,n=e.zip64?24:16,s=new DataView(r.buffer,r.byteOffset,r.byteLength),i=0;for(;i+n<=r.length&&(i=r.indexOf(80,i),!(i<0||i+n>r.length));){if(s.getUint32(i,!0)===134695760){let a=this.position+i-e.dataStart,c=e.zip64?Ii(s,i+8):s.getUint32(i+8,!0);if(c===a)return e.crc32=s.getUint32(i+4,!0),e.compressedSize=c,e.uncompressedSize=e.zip64?Ii(s,i+16):s.getUint32(i+12,!0),this.record(e),this.consume(i+n),this.state={kind:"header"},this.parsedTo=this.position,!0}i+=1}let o=Math.min(r.length,n-1);return this.consume(r.length-o),!1}record(e){let{zip64:r,...n}=e;this.entries.push(n)}};function _h(t,e,r){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),s=0;for(;s+4<=t.length;){let i=n.getUint16(s,!0),o=n.getUint16(s+2,!0);if(i===1){let a={},c=s+4;return e&&c+8<=s+4+o&&(a.uncompressedSize=Ii(n,c),c+=8),r&&c+8<=s+4+o&&(a.compressedSize=Ii(n,c)),a}s+=4+o}return null}function Ii(t,e){let r=t.getBigUint64(e,!0);if(r>BigInt(Number.MAX_SAFE_INTEGER))throw new RangeError("zip64 size beyond a safe integer");return Number(r)}function Th(t,e){let r=new Uint8Array(t.length+e.length);return r.set(t,0),r.set(e,t.length),r}var se=class extends Error{constructor(e,r,n){super(r,n),this.name="PlayerError",this.code=e,this.missingLibraries=n?.missingLibraries}};var Qa=class{constructor(e,r){this.descriptor=e;this.size=r}async fetchRange(e){let r=await fetch(this.descriptor.url,{headers:{Range:`bytes=${e.start}-${e.end}`},cache:"no-store"});if(r.status!==206&&r.status!==200)throw new se("network",`Range request failed with ${r.status}`);return r}async read(e){let r=await this.fetchRange(e);if(r.status!==200)return new Uint8Array(await r.arrayBuffer());if(!r.body)throw new se("network","Range response had no body");return new Uint8Array(await new Response(zn(r.body,e)).arrayBuffer())}async stream(e){let r=await this.fetchRange(e);if(!r.body)throw new se("network","Range response had no body");return r.status===200?zn(r.body,e):r.body}},$a=class{constructor(e,r,n){this.descriptor=e;this.size=r;this.store=new kt(n)}read(e){return this.store.readRangeBytes(Ze,e)}async stream(e){return this.store.readRange(Ze,e)}},ec=class{constructor(e,r){this.descriptor=e;this.blob=r}get size(){return this.blob.size}async read(e){let r=this.blob.slice(e.start,e.end+1);return new Uint8Array(await r.arrayBuffer())}async stream(e){return this.blob.slice(e.start,e.end+1).stream()}};async function Sd(t,e,r,n={}){switch(e.type){case"range-http":return new Qa(e,e.size);case"chunked":{let s=await new kt(t).getArchiveMeta();if(!s||!s.complete&&!n.partial)throw new se("bad-archive","Archive has not finished downloading");return new $a(e,s.size??s.available,t)}case"file":{if(!r)throw new se("bad-archive","The picked file is no longer available");return new ec(e,r)}}}function Sh(t,e){let r=e.end-e.start+1,n=Math.ceil(r/4194304),s=new Map,i=0,o=0,a=!1,c=f=>{let R=e.start+f*4194304,p=t.read({start:R,end:Math.min(R+4194304-1,e.end)});p.catch(()=>{}),s.set(f,p)};return new ReadableStream({async pull(f){if(o>=n){f.close();return}for(;!a&&i<n&&s.size<4;)c(i++);let R=await s.get(o);s.delete(o),o+=1,f.enqueue(R)},cancel(){a=!0,s.clear()}},{highWaterMark:0})}var bi=class extends Et{constructor(r){super(r);this.handle=r;this.size=r.size}async readUint8Array(r,n){if(n===0)return new Uint8Array(0);let s=Math.min(r+n,this.size)-1;return s<r?new Uint8Array(0):this.handle.read({start:r,end:s})}createReadable(r={}){let n=r.offset??0,s=Math.min(n+(r.size??this.size-n),this.size)-1;if(s<n)return new Blob([]).stream();let i=this.handle;if(i.descriptor.type==="range-http"&&s-n+1>=8388608)return Sh(i,{start:n,end:s});let o=null;return new ReadableStream({async pull(a){o??=(await i.stream({start:n,end:s})).getReader();let{done:c,value:f}=await o.read();c?a.close():a.enqueue(f)},async cancel(a){await o?.cancel(a)}},{highWaterMark:0})}};var Ih=/[\\u0000-\\u001f\\u007f]/;function tc(t){if(!t||Ih.test(t))return null;let e=t.replace(/\\\\/g,"/");if(e.startsWith("/")||/^[a-zA-Z]:/.test(e))return null;let r=[];for(let n of e.split("/"))if(!(n===""||n===".")){if(n==="..")return null;r.push(n)}return r.length===0?null:r.join("/")}function Id(t){let e=new Map,r=[];for(let n of t){if(n.directory)continue;let s=tc(n.filename);if(s===null||e.has(s)){r.push(n.filename);continue}e.set(s,n)}return{index:e,rejected:r}}var bh=new Set(["js","mjs","json","css","html","htm","txt","xml","csv","vtt","srt","svg"]);function Nh(t){let e=t.slice(t.lastIndexOf("/")+1),r=e.lastIndexOf(".");return r<=0?"":e.slice(r+1).toLowerCase()}function bd(t){return bh.has(Nh(t))}var rc=0,Pd=8,Dh=67324752,Nd=30,Ni=class t{constructor(e,r,n,s,i,o=!1){this.handle=r;this.parsedTo=0;this.forwardDone=!1;this.forwardStopped=!1;this.absorbed=0;this.lastTopFolder=null;this.fallbacks=[];this.librariesByName=null;this.dataRanges=new Map;this.pkgId=e,this.entries=n,this.rejected=s,this.manifest=i,this.partial=o}get title(){return this.manifest.title}static async open(e,r,n={}){let s;try{s=await new vt(new bi(r)).getEntries({filenameValidation:"tolerant"})}catch(p){throw new se("bad-archive","Could not read the archive index",{cause:p})}let{index:i,rejected:o}=Id(s),a=new Map;for(let[p,l]of i)a.set(p,{name:p,size:l.uncompressedSize,compressedSize:l.compressedSize,method:l.compressionMethod,strategy:Cd(p,l),zip:l});if(!a.has("h5p.json"))throw new se("bad-archive","Archive has no h5p.json, so it is not an H5P package");let c=new t(e,r,a,o,{}),f=await Dd(c),R=new t(e,r,a,o,f);return n.requireLibraries!==!1&&R.assertLibrariesPresent(),R}static async fromForwardIndex(e,r,n){let s=new t(e,r,new Map,[],{},!0);return await s.absorb(n),s}async absorb(e){if(!this.partial)return!1;let r=e.entries.slice(this.absorbed);this.absorbed=e.entries.length,this.parsedTo=e.parsedTo,this.forwardDone=e.done,this.forwardStopped=e.stopped!==null&&!e.done;let n=!1;for(let s of r){if(s.directory)continue;let i=tc(s.name);if(i===null||this.entries.has(i)){this.rejected.push(s.name);continue}this.entries.set(i,Ph(i,s)),this.lastTopFolder=Od(i),i==="h5p.json"&&(n=!0)}return r.length>0&&(this.librariesByName=null),n&&(this.manifest=await Dd(this)),r.length>0}bootReady(){if(!this.partial)return!0;if(this.forwardStopped||!this.entries.has("h5p.json"))return!1;let e=this.manifest.preloadedDependencies;if(!Array.isArray(e)||e.length===0)return!1;let r=this.entryNames(),n=this.availableLibraries();return e.every(s=>{let i=Oi(s).find(o=>r.has(`${o}/library.json`))??sc(n,{machineName:s.machineName,major:Number(s.majorVersion),minor:Number(s.minorVersion)});return i!==void 0&&this.folderComplete(i)})}provablyAbsent(e){if(!this.partial||this.forwardDone)return!0;let r=Od(e);if(r===null)return!1;if(this.hasFolder(r))return this.folderComplete(r);let n=nc(r);return n!==null&&this.hasFolder(n.machineName)&&this.folderComplete(n.machineName)}folderComplete(e){return this.forwardDone||this.lastTopFolder!==e}hasFolder(e){let r=`${e}/`;for(let n of this.entries.keys())if(n.startsWith(r))return!0;return!1}use(e){e===this||this.fallbacks.includes(e)||(this.fallbacks.push(e),this.librariesByName=null)}get(e){return this.locate(e)??this.locateCompatible(e)}locate(e){let r=this.entries.get(e);if(r)return{reader:this,entry:r};for(let n of this.fallbacks){let s=n.locate(e);if(s)return s}}locateCompatible(e){let r=e.indexOf("/");if(r<0)return;let n=nc(e.slice(0,r));if(!n)return;let s=sc(this.availableLibraries(),n);if(!(!s||s===n.folder))return this.locate(`${s}/${e.slice(r+1)}`)}availableLibraries(){if(this.librariesByName)return this.librariesByName;let e=xd(this.entries.keys());for(let r of this.fallbacks)for(let[n,s]of r.availableLibraries()){let i=e.get(n);i?i.push(...s):e.set(n,[...s])}return this.librariesByName=e,e}entryNames(){let e=new Set(this.entries.keys());for(let r of this.fallbacks)for(let n of r.entryNames())e.add(n);return e}missingLibraries(){return Lh(this.entryNames(),this.manifest)}get hasFallbacks(){return this.fallbacks.length>0}mergedManifest(){let e=this.entryNames(),r=new Map,n=s=>{r.has(s.machineName)||Oi(s).some(i=>e.has(`${i}/library.json`))&&r.set(s.machineName,s)};for(let s of this.manifest.preloadedDependencies??[])n(s);for(let s of this.fallbacks)for(let i of s.manifest.preloadedDependencies??[])n(i);return{...this.manifest,preloadedDependencies:[...r.values()]}}assertLibrariesPresent(){let e=this.missingLibraries();if(e)throw new se("bad-archive",Uh(e),{missingLibraries:e})}prefetchable(){return[...this.entries.values()].filter(e=>e.strategy.kind==="chunked").map(e=>({entry:e.name,size:e.size}))}inflate(e){if(!e.zip)return this.inflateDirect(e);if(e.zip.encrypted)throw new se("bad-archive",`${e.name} is encrypted`);let r=e.zip.getData;if(!r)throw new se("bad-archive",`${e.name} has no readable data`);let n=new TransformStream;return r.call(e.zip,n.writable).catch(s=>{if(!n.writable.locked)try{n.writable.abort(s)}catch{}}),n.readable}dataRange(e){let r=this.dataRanges.get(e.name);if(r)return r;let n=this.readDataRange(e);return this.dataRanges.set(e.name,n),n.catch(()=>this.dataRanges.delete(e.name)),n}inflateDirect(e){if(e.encrypted)throw new se("bad-archive",`${e.name} is encrypted`);if(e.method!==rc&&e.method!==Pd)throw new se("bad-archive",`${e.name} uses compression method ${e.method}`);if(e.compressedSize===0)return new Blob([]).stream();let r=Ch(()=>this.sliceStream(e,{start:0,end:e.compressedSize-1}));if(e.method===rc)return r;let n=new DecompressionStream("deflate-raw");return r.pipeThrough(n)}async readDataRange(e){if(e.dataStart!==void 0)return{start:e.dataStart,end:e.dataStart+e.compressedSize-1};if(!e.zip)throw new se("bad-archive",`${e.name} has no known location`);let r=await this.handle.read({start:e.zip.offset,end:e.zip.offset+Nd-1}),n=new DataView(r.buffer,r.byteOffset,r.byteLength);if(n.getUint32(0,!0)!==Dh)throw new se("bad-archive",`${e.name} has a malformed local header`);let s=n.getUint16(26,!0),i=n.getUint16(28,!0),o=e.zip.offset+Nd+s+i;return{start:o,end:o+e.compressedSize-1}}async sliceStream(e,r){let n=await this.dataRange(e);return this.handle.stream({start:n.start+r.start,end:n.start+r.end})}};function Cd(t,e){return bd(t)?{kind:"inline"}:e.uncompressedSize<=16777216?{kind:"inline"}:e.compressionMethod===rc?{kind:"slice"}:e.compressionMethod===Pd?{kind:"chunked"}:{kind:"inline"}}function Ph(t,e){return{name:t,size:e.uncompressedSize,compressedSize:e.compressedSize,method:e.method,strategy:Cd(t,{uncompressedSize:e.uncompressedSize,compressionMethod:e.method}),dataStart:e.dataStart,encrypted:e.encrypted}}function Od(t){let e=t.indexOf("/");return e<0?null:t.slice(0,e)}function Ch(t){let e=null;return new ReadableStream({async pull(r){e??=(await t()).getReader();let{done:n,value:s}=await e.read();n?r.close():r.enqueue(s)},async cancel(r){await e?.cancel(r)}},{highWaterMark:0})}async function Dd(t){let{entry:e}=t.get("h5p.json");try{let r=await new Response(t.inflate(e)).json();if(!r||typeof r!="object")throw new Error("not an object");return r}catch(r){throw new se("bad-archive","h5p.json is not readable JSON",{cause:r})}}function Oi(t){return[`${t.machineName}-${t.majorVersion}.${t.minorVersion}`,t.machineName]}function nc(t){let e=/^(.+)-(\\d+)\\.(\\d+)$/.exec(t);return e?{machineName:e[1],major:Number(e[2]),minor:Number(e[3]),folder:t}:null}function xd(t){let e=new Map;for(let r of t){let n=r.indexOf("/");if(n<0||r.slice(n+1)!=="library.json")continue;let s=nc(r.slice(0,n));if(!s)continue;let i=e.get(s.machineName);i?i.push(s):e.set(s.machineName,[s])}return e}function sc(t,e){return(t.get(e.machineName)??[]).filter(n=>n.major===e.major&&n.minor>=e.minor).sort((n,s)=>n.minor-s.minor)[0]?.folder}function xh(t,e){let r=e.preloadedDependencies;if(!Array.isArray(r))return[];let n=xd(t);return r.filter(s=>Oi(s).some(i=>t.has(`${i}/library.json`))?!1:!sc(n,{machineName:s.machineName,major:Number(s.majorVersion),minor:Number(s.minorVersion)}))}function Lh(t,e){let r=e.preloadedDependencies;if(!Array.isArray(r)||r.length===0)return{mainLibrary:e.mainLibrary,folders:[],all:!0};let n=xh(t,e);return n.length===0?null:{mainLibrary:e.mainLibrary,folders:n.map(s=>Oi(s)[0]),all:n.length===r.length}}function Uh(t){if(t.folders.length===0)return"h5p.json lists no preloadedDependencies, so there is nothing to run";let e=t.folders.join(", ");return t.all?`This package contains no libraries, only content. Exports from h5p.com and h5p.org often leave them out because the site they came from already has them. Set the "libraries" attribute to fetch them, or re-export with them included. Missing: ${e}`:`This package is missing ${t.folders.length} of its libraries: ${e}. Set the "libraries" attribute to fetch them, or re-export with them included.`}var Ld=1024*1024;function ic(t){let{store:e,entry:r,totalSize:n,onProgress:s}=t,i=t.startOffset??0;if(i%8388608!==0)throw new Error("A resumed write must start on a chunk boundary");let o=i/8388608,a=new Uint8Array(8388608),c=0,f=i,R=Ld,p=async l=>{await e.setMeta(r,{size:l?f:n,available:f,complete:l}),s?.(f)};return new WritableStream({async write(l){let h=0;for(;h<l.length;){let m=8388608-c,E=Math.min(m,l.length-h);a.set(l.subarray(h,h+E),c),c+=E,h+=E,f+=E,c===8388608?(await e.putChunk(r,o,a),o+=1,a=new Uint8Array(8388608),c=0,R=Ld,await p(!1)):c>=R&&(await e.putChunk(r,o,a.subarray(0,c)),R=c*2,await p(!1))}},async close(){c>0&&await e.putChunk(r,o,a.subarray(0,c)),await p(!0)},abort(){}})}Bi({useWebWorkers:!1});var Ud=self,Hr=new Map,Fd=new Map,Di=new Map;function Fh(t,e){let r=Di.get(t);if(r)return r;let n=(async()=>{let s=await Sd(t,e,Fd.get(t));return Ni.open(t,s,{requireLibraries:!1})})();return Di.set(t,n),n.catch(()=>Di.delete(t)),n}function dr(t){Ud.postMessage(t)}yd(t=>{Di.delete(t)});function Mh(t,e){return id(t,e??Ze)}Ud.addEventListener("message",t=>{let e=t.data;if(e){if(e.type==="abort"){for(let[r,n]of Hr)r.startsWith(od(e.pkgId))&&(n.abort(),Hr.delete(r));return}e.file&&Fd.set(e.pkgId,e.file),vh(e)}});async function vh(t){let e=t.type==="extract"?t.entry:void 0,r=Mh(t.pkgId,e);if(Hr.has(r))return;let n=new AbortController;Hr.set(r,n);try{await navigator.locks.request(r,{signal:n.signal},async()=>{t.type==="download"?await kh(t.pkgId,t.source,n.signal):await zh(t.pkgId,t.entry,t.source,n.signal)})}catch(s){if(n.signal.aborted)return;dr({type:"failed",pkgId:t.pkgId,entry:e,code:Bh(s),message:s instanceof Error?s.message:String(s)})}finally{Hr.get(r)===n&&Hr.delete(r)}}async function kh(t,e,r){if(e.type!=="chunked")throw new se("network","Only a chunked source is downloaded ahead of play");let n=new kt(t),s=await n.getArchiveMeta();if(s?.complete){dr({type:"done",pkgId:t,size:s.size??s.available});return}let i=s?Math.floor(s.available/8388608)*8388608:0,o=await fetch(e.url,{signal:r,cache:"no-store",headers:i>0?{Range:`bytes=${i}-`}:void 0});if(i>0&&o.status!==206&&(i=0,o.status!==200&&(o=await fetch(e.url,{signal:r,cache:"no-store"}))),!o.ok&&o.status!==206)throw new se("network",`${e.url} returned ${o.status}`);if(!o.body)throw new se("network","The archive response had no body");let a=o.headers.get("content-length"),c=a?Number(a)+i:e.size,f=new Si;i>0&&await n.readRange(Ze,{start:0,end:i-1}).pipeTo(new WritableStream({write:E=>f.push(E)}));let R=-1,p=Promise.resolve(),l=E=>{E&&f.finish();let d=f.snapshot();return!E&&d.entries.length===R||(R=d.entries.length,p=p.then(()=>n.setForwardIndex(d))),p},h=new TransformStream({transform(E,d){f.push(E),d.enqueue(E)}});await o.body.pipeThrough(h).pipeTo(ic({store:n,entry:Ze,totalSize:c,startOffset:i,onProgress:E=>{dr({type:"progress",pkgId:t,loaded:E,total:c}),l(!1)}}),{signal:r}),await l(!0);let m=await n.getArchiveMeta();dr({type:"done",pkgId:t,size:m?.size??m?.available??0})}async function zh(t,e,r,n){let s=new kt(t),i=await s.getMeta(e);if(i?.complete){dr({type:"done",pkgId:t,entry:e,size:i.size??i.available});return}let o=await Fh(t,r),a=o.get(e);if(!a)throw new se("bad-archive",`${e} is not in the archive`);let{entry:c}=a;await s.setMeta(e,{size:c.size,available:0,complete:!1}),await o.inflate(c).pipeTo(ic({store:s,entry:e,totalSize:c.size,onProgress:f=>dr({type:"progress",pkgId:t,entry:e,loaded:f,total:c.size})}),{signal:n}),dr({type:"done",pkgId:t,entry:e,size:c.size})}function Bh(t){return t instanceof se?t.code:t instanceof Br?"quota":"network"}})();\n', de = "0.1.0", zt = "https://api.h5p.org/v1/content-types/";
|
|
2
|
+
class I extends Error {
|
|
3
|
+
constructor(e, t, n) {
|
|
4
|
+
super(t, n), this.name = "PlayerError", this.code = e, this.missingLibraries = n?.missingLibraries;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
function Ut(r, e) {
|
|
8
|
+
return `h5p:${r}:${e}`;
|
|
9
|
+
}
|
|
10
|
+
const It = new TextEncoder();
|
|
11
|
+
async function Ct(r) {
|
|
12
|
+
const e = await crypto.subtle.digest("SHA-256", It.encode(r));
|
|
13
|
+
return Array.from(new Uint8Array(e)).map((t) => t.toString(16).padStart(2, "0")).join("");
|
|
14
|
+
}
|
|
15
|
+
async function Fe(r) {
|
|
16
|
+
return (await Ct(r)).slice(0, 32);
|
|
17
|
+
}
|
|
18
|
+
function Se(r, e) {
|
|
19
|
+
return Fe(`url\0${r}\0${e ?? ""}`);
|
|
20
|
+
}
|
|
21
|
+
function Tt(r) {
|
|
22
|
+
return Fe(`file\0${r.name}\0${r.size}\0${r.lastModified}`);
|
|
23
|
+
}
|
|
24
|
+
const C = void 0, B = "undefined", j = "function", he = "string", Pe = new Uint8Array(), Dt = "Invalid option (must be a function)";
|
|
25
|
+
function Lt(r) {
|
|
26
|
+
if (r && typeof r != j)
|
|
27
|
+
throw new Error(Dt);
|
|
28
|
+
return r;
|
|
29
|
+
}
|
|
30
|
+
function Nt(r) {
|
|
31
|
+
return typeof r == he && r.trim() ? Number(r) : r;
|
|
32
|
+
}
|
|
33
|
+
const Ot = 64 * 1024, Ft = 1, Pt = "Invalid maxWorkers (must be an integer greater than 0)", Bt = "Invalid baseURI (must be a string)", Mt = "Invalid URI (must be a string or a function returning a string)";
|
|
34
|
+
let Be = 2;
|
|
35
|
+
try {
|
|
36
|
+
typeof navigator != B && navigator.hardwareConcurrency && (Be = navigator.hardwareConcurrency);
|
|
37
|
+
} catch {
|
|
38
|
+
}
|
|
39
|
+
const Me = {
|
|
40
|
+
workerURI: "./core/web-worker-wasm.js",
|
|
41
|
+
wasmURI: "./core/streams/zlib-wasm/zlib-streams.wasm",
|
|
42
|
+
chunkSize: Ot,
|
|
43
|
+
maxWorkers: Be,
|
|
44
|
+
terminateWorkerTimeout: 5e3,
|
|
45
|
+
workerStarvationTimeout: 5e3,
|
|
46
|
+
workerStartupTimeout: 5e3,
|
|
47
|
+
useWebWorkers: !0,
|
|
48
|
+
useCompressionStream: !0,
|
|
49
|
+
transferStreams: !0,
|
|
50
|
+
CompressionStream: typeof CompressionStream != B && CompressionStream,
|
|
51
|
+
DecompressionStream: typeof DecompressionStream != B && DecompressionStream
|
|
52
|
+
}, We = "maxWorkers", He = "baseURI", je = [
|
|
53
|
+
"wasmURI",
|
|
54
|
+
"workerURI"
|
|
55
|
+
], Wt = [
|
|
56
|
+
"useCompressionStream",
|
|
57
|
+
"useWebWorkers",
|
|
58
|
+
"transferStreams"
|
|
59
|
+
], Ze = [
|
|
60
|
+
"chunkSize",
|
|
61
|
+
We,
|
|
62
|
+
"terminateWorkerTimeout",
|
|
63
|
+
"workerStarvationTimeout",
|
|
64
|
+
"workerStartupTimeout"
|
|
65
|
+
], Ve = [
|
|
66
|
+
"createWorker",
|
|
67
|
+
"CompressionStream",
|
|
68
|
+
"DecompressionStream",
|
|
69
|
+
"CompressionStreamFallback",
|
|
70
|
+
"DecompressionStreamFallback"
|
|
71
|
+
], Ht = [
|
|
72
|
+
He,
|
|
73
|
+
...je,
|
|
74
|
+
...Wt,
|
|
75
|
+
...Ze,
|
|
76
|
+
...Ve
|
|
77
|
+
], jt = { ...Me };
|
|
78
|
+
function Zt(r) {
|
|
79
|
+
const e = {};
|
|
80
|
+
for (const t of Ht) {
|
|
81
|
+
const n = r[t];
|
|
82
|
+
n !== C && (e[t] = Vt(t, n));
|
|
83
|
+
}
|
|
84
|
+
return e;
|
|
85
|
+
}
|
|
86
|
+
function Vt(r, e) {
|
|
87
|
+
if (Ze.includes(r)) {
|
|
88
|
+
if (e = Nt(e), r == We && (!Number.isInteger(e) || e < Ft))
|
|
89
|
+
throw new Error(Pt);
|
|
90
|
+
} else if (Ve.includes(r))
|
|
91
|
+
Lt(e);
|
|
92
|
+
else if (r == He) {
|
|
93
|
+
if (e && typeof e != he)
|
|
94
|
+
throw new Error(Bt);
|
|
95
|
+
} else if (je.includes(r) && e && typeof e != he && typeof e != j)
|
|
96
|
+
throw new Error(Mt);
|
|
97
|
+
return e;
|
|
98
|
+
}
|
|
99
|
+
function Yt(r) {
|
|
100
|
+
r = r || {};
|
|
101
|
+
const { CompressionStreamZlib: e, DecompressionStreamZlib: t } = r;
|
|
102
|
+
if (e === C && t === C)
|
|
103
|
+
return r;
|
|
104
|
+
const n = Object.assign({}, r);
|
|
105
|
+
return n.CompressionStreamFallback === C && (n.CompressionStreamFallback = e), n.DecompressionStreamFallback === C && (n.DecompressionStreamFallback = t), n;
|
|
106
|
+
}
|
|
107
|
+
function se(r) {
|
|
108
|
+
const e = Zt(Yt(r));
|
|
109
|
+
Object.assign(Me, e), Object.assign(jt, e);
|
|
110
|
+
}
|
|
111
|
+
const Q = new Uint8Array(288);
|
|
112
|
+
Q.fill(8, 0, 144), Q.fill(9, 144, 256), Q.fill(7, 256, 280), Q.fill(8, 280, 288), new Uint8Array(30).fill(5);
|
|
113
|
+
const O = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", Xt = (r) => r({ workerURI: (e) => {
|
|
114
|
+
const t = "text/javascript";
|
|
115
|
+
let n = `!function(t){"function"==typeof define&&define.amd?define(t):t()}(function(){"use strict";const{Array:t,Object:n,Number:e,Math:o,Error:r,Uint8Array:c,Uint16Array:s,Uint32Array:a,Int32Array:i,Map:f,DataView:u,Promise:w,TextEncoder:l,crypto:d,postMessage:p,TransformStream:h,ReadableStream:y,WritableStream:m,CompressionStream:S,DecompressionStream:g}=self,v=void 0,b="undefined",k="function",z=new c,C=[[],[],[],[],[],[],[],[]];for(let t=0;t<256;t++){let n=t;for(let t=0;t<8;t++)n=1&n?n>>>1^3988292384:n>>>1;C[0][t]=n}for(let t=0;t<256;t++)for(let n=1;n<8;n++){const e=C[n-1][t];C[n][t]=e>>>8^C[0][255&e]}const[I,M,A,E,R,x,P,D]=C;class F{constructor(t){this.o=t||-1}append(t){let n=0|this.o;const e=0|t.length;let o=0;if(e>=8&&t.buffer){const r=new u(t.buffer,t.byteOffset,e),c=e-8;for(;o<=c;o+=8){const t=n^r.getInt32(o,!0),e=r.getInt32(o+4,!0);n=D[255&t]^P[t>>>8&255]^x[t>>>16&255]^R[t>>>24&255]^E[255&e]^A[e>>>8&255]^M[e>>>16&255]^I[e>>>24&255]}}for(;o<e;o++)n=n>>>8^I[255&(n^t[o])];this.o=n}get(){return~this.o}}class U extends h{constructor(){let t;const n=new F;super({transform(t,e){n.append(t),e.enqueue(t)},flush(){const e=new c(4);new u(e.buffer).setUint32(0,n.get()),t.value=e}}),t=this}}function B(t,n){const e=new c(t.length+n.length);return e.set(t),e.set(n,t.length),e}function W(t){return new u(t.buffer,t.byteOffset,t.byteLength)}const O=64,V=20,K=new c([128]),T=new c(1),_=new i([1732584193,4023233417,2562383102,271733878,3285377520]),j=new c(256),H=new i(256),L=new i(256),Z=new i(256),N=new i(256);let q=!1;function G(t,n){!function(){if(!q){let t=1,n=1;do{t=255&(t^t<<1^(128&t?27:0)),n=255&(n^n<<1),n=255&(n^n<<2),n=255&(n^n<<4),128&n&&(n^=9),j[t]=255&(n^(n<<1|n>>7)^(n<<2|n>>6)^(n<<3|n>>5)^(n<<4|n>>4)^99)}while(1!=t);j[0]=99;for(let t=0;t<256;t++){const n=j[t],e=Y(n),o=e<<24|n<<16|n<<8|e^n;H[t]=o,L[t]=o>>>8|o<<24,Z[t]=o>>>16|o<<16,N[t]=o>>>24|o<<8}q=!0}}();const e=new i(60),o=function(t,n){const e=t.length>>2,o=e+6,r=4*(o+1);let c=1;for(let o=0;o<e;o++)n[o]=t[4*o]<<24|t[4*o+1]<<16|t[4*o+2]<<8|t[4*o+3];for(let t=e;t<r;t++){let o=n[t-1];t%e==0?(o=Q(o<<8|o>>>24)^c<<24,c=Y(c)):e>6&&t%e==4&&(o=Q(o)),n[t]=n[t-e]^o}return o}(t,e),r=new i(4),c=J(n);let s=0,a=0,f=0,w=0;return{process(t,n){n&&c.update(t,0,t.length),function(t){const n=new u(t.buffer,t.byteOffset,t.byteLength),e=t.length;let o=0;for(;o+16<=e;o+=16)l(),n.setInt32(o,n.getInt32(o)^r[0]),n.setInt32(o+4,n.getInt32(o+4)^r[1]),n.setInt32(o+8,n.getInt32(o+8)^r[2]),n.setInt32(o+12,n.getInt32(o+12)^r[3]);if(o<e){l();for(let n=0;o<e;o++,n++)t[o]^=r[n>>2]>>>24-8*(3&n)}}(t),n||c.update(t,0,t.length)},digest:()=>c.digest()};function l(){s=s+1|0,s||(a=a+1|0,a||(f=f+1|0,f||(w=w+1|0)));let t=X(s)^e[0],n=X(a)^e[1],c=X(f)^e[2],i=X(w)^e[3],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[4],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[5],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[6],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[7];t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[8],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[9],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[10],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[11],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[12],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[13],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[14],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[15],t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[16],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[17],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[18],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[19],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[20],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[21],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[22],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[23],t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[24],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[25],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[26],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[27],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[28],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[29],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[30],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[31],t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[32],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[33],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[34],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[35],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[36],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[37],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[38],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[39];let h=40;o>10&&(t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[40],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[41],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[42],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[43],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[44],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[45],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[46],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[47],h=48),o>12&&(t=H[u>>>24]^L[l>>>16&255]^Z[d>>>8&255]^N[255&p]^e[48],n=H[l>>>24]^L[d>>>16&255]^Z[p>>>8&255]^N[255&u]^e[49],c=H[d>>>24]^L[p>>>16&255]^Z[u>>>8&255]^N[255&l]^e[50],i=H[p>>>24]^L[u>>>16&255]^Z[l>>>8&255]^N[255&d]^e[51],u=H[t>>>24]^L[n>>>16&255]^Z[c>>>8&255]^N[255&i]^e[52],l=H[n>>>24]^L[c>>>16&255]^Z[i>>>8&255]^N[255&t]^e[53],d=H[c>>>24]^L[i>>>16&255]^Z[t>>>8&255]^N[255&n]^e[54],p=H[i>>>24]^L[t>>>16&255]^Z[n>>>8&255]^N[255&c]^e[55],h=56),r[0]=(j[u>>>24]<<24|j[l>>>16&255]<<16|j[d>>>8&255]<<8|j[255&p])^e[h],r[1]=(j[l>>>24]<<24|j[d>>>16&255]<<16|j[p>>>8&255]<<8|j[255&u])^e[h+1],r[2]=(j[d>>>24]<<24|j[p>>>16&255]<<16|j[u>>>8&255]<<8|j[255&l])^e[h+2],r[3]=(j[p>>>24]<<24|j[u>>>16&255]<<16|j[l>>>8&255]<<8|j[255&d])^e[h+3]}}function J(t){const n=function(){const t=new i(_),n=new i(16),e=new c(O),r=new u(e.buffer),s=new c(8);let a=0,f=0;return{update:w,digest:function(){const n=8*f,e=o.floor(n/4294967296),r=n>>>0;for(w(K,0,1);56!=a;)w(T,0,1);s[0]=e>>>24,s[1]=e>>>16,s[2]=e>>>8,s[3]=e,s[4]=r>>>24,s[5]=r>>>16,s[6]=r>>>8,s[7]=r,w(s,0,8);const i=new c(V),l=new u(i.buffer);for(let n=0;n<t.length;n++)l.setInt32(4*n,t[n]);return t.set(_),a=0,f=0,i}};function w(t,n,o){const c=n+o;if(f+=o,a){for(;n<c&&a<O;)e[a++]=t[n++];a==O&&(l(r,0),a=0)}if(n+O<=c){const e=new u(t.buffer,t.byteOffset,t.byteLength);for(;n+O<=c;n+=O)l(e,n)}for(;n<c;)e[a++]=t[n++]}function l(e,o){for(let t=0;t<16;t++)n[t]=e.getInt32(o+4*t);let r,c=t[0],s=t[1],a=t[2],i=t[3],f=t[4];for(let t=0;t<15;t+=5)f=(c<<5|c>>>27)+((a^i)&s^i)+f+1518500249+n[t]|0,s=s<<30|s>>>2,i=(f<<5|f>>>27)+((s^a)&c^a)+i+1518500249+n[t+1]|0,c=c<<30|c>>>2,a=(i<<5|i>>>27)+((c^s)&f^s)+a+1518500249+n[t+2]|0,f=f<<30|f>>>2,s=(a<<5|a>>>27)+((f^c)&i^c)+s+1518500249+n[t+3]|0,i=i<<30|i>>>2,c=(s<<5|s>>>27)+((i^f)&a^f)+c+1518500249+n[t+4]|0,a=a<<30|a>>>2;f=(c<<5|c>>>27)+((a^i)&s^i)+f+1518500249+n[15]|0,s=s<<30|s>>>2,r=n[13]^n[8]^n[2]^n[0],r=r<<1|r>>>31,n[0]=r,i=(f<<5|f>>>27)+((s^a)&c^a)+i+1518500249+r|0,c=c<<30|c>>>2,r=n[14]^n[9]^n[3]^n[1],r=r<<1|r>>>31,n[1]=r,a=(i<<5|i>>>27)+((c^s)&f^s)+a+1518500249+r|0,f=f<<30|f>>>2,r=n[15]^n[10]^n[4]^n[2],r=r<<1|r>>>31,n[2]=r,s=(a<<5|a>>>27)+((f^c)&i^c)+s+1518500249+r|0,i=i<<30|i>>>2,r=n[0]^n[11]^n[5]^n[3],r=r<<1|r>>>31,n[3]=r,c=(s<<5|s>>>27)+((i^f)&a^f)+c+1518500249+r|0,a=a<<30|a>>>2;for(let t=20;t<40;t+=5)r=n[t-3&15]^n[t-8&15]^n[t-14&15]^n[15&t],r=r<<1|r>>>31,n[15&t]=r,f=(c<<5|c>>>27)+(s^a^i)+f+1859775393+r|0,s=s<<30|s>>>2,r=n[t-2&15]^n[t-7&15]^n[t-13&15]^n[t+1&15],r=r<<1|r>>>31,n[t+1&15]=r,i=(f<<5|f>>>27)+(c^s^a)+i+1859775393+r|0,c=c<<30|c>>>2,r=n[t-1&15]^n[t-6&15]^n[t-12&15]^n[t+2&15],r=r<<1|r>>>31,n[t+2&15]=r,a=(i<<5|i>>>27)+(f^c^s)+a+1859775393+r|0,f=f<<30|f>>>2,r=n[15&t]^n[t-5&15]^n[t-11&15]^n[t+3&15],r=r<<1|r>>>31,n[t+3&15]=r,s=(a<<5|a>>>27)+(i^f^c)+s+1859775393+r|0,i=i<<30|i>>>2,r=n[t+1&15]^n[t-4&15]^n[t-10&15]^n[t+4&15],r=r<<1|r>>>31,n[t+4&15]=r,c=(s<<5|s>>>27)+(a^i^f)+c+1859775393+r|0,a=a<<30|a>>>2;for(let t=40;t<60;t+=5)r=n[t-3&15]^n[t-8&15]^n[t-14&15]^n[15&t],r=r<<1|r>>>31,n[15&t]=r,f=(c<<5|c>>>27)+(s&a|(s|a)&i)+f+2400959708+r|0,s=s<<30|s>>>2,r=n[t-2&15]^n[t-7&15]^n[t-13&15]^n[t+1&15],r=r<<1|r>>>31,n[t+1&15]=r,i=(f<<5|f>>>27)+(c&s|(c|s)&a)+i+2400959708+r|0,c=c<<30|c>>>2,r=n[t-1&15]^n[t-6&15]^n[t-12&15]^n[t+2&15],r=r<<1|r>>>31,n[t+2&15]=r,a=(i<<5|i>>>27)+(f&c|(f|c)&s)+a+2400959708+r|0,f=f<<30|f>>>2,r=n[15&t]^n[t-5&15]^n[t-11&15]^n[t+3&15],r=r<<1|r>>>31,n[t+3&15]=r,s=(a<<5|a>>>27)+(i&f|(i|f)&c)+s+2400959708+r|0,i=i<<30|i>>>2,r=n[t+1&15]^n[t-4&15]^n[t-10&15]^n[t+4&15],r=r<<1|r>>>31,n[t+4&15]=r,c=(s<<5|s>>>27)+(a&i|(a|i)&f)+c+2400959708+r|0,a=a<<30|a>>>2;for(let t=60;t<80;t+=5)r=n[t-3&15]^n[t-8&15]^n[t-14&15]^n[15&t],r=r<<1|r>>>31,n[15&t]=r,f=(c<<5|c>>>27)+(s^a^i)+f+3395469782+r|0,s=s<<30|s>>>2,r=n[t-2&15]^n[t-7&15]^n[t-13&15]^n[t+1&15],r=r<<1|r>>>31,n[t+1&15]=r,i=(f<<5|f>>>27)+(c^s^a)+i+3395469782+r|0,c=c<<30|c>>>2,r=n[t-1&15]^n[t-6&15]^n[t-12&15]^n[t+2&15],r=r<<1|r>>>31,n[t+2&15]=r,a=(i<<5|i>>>27)+(f^c^s)+a+3395469782+r|0,f=f<<30|f>>>2,r=n[15&t]^n[t-5&15]^n[t-11&15]^n[t+3&15],r=r<<1|r>>>31,n[t+3&15]=r,s=(a<<5|a>>>27)+(i^f^c)+s+3395469782+r|0,i=i<<30|i>>>2,r=n[t+1&15]^n[t-4&15]^n[t-10&15]^n[t+4&15],r=r<<1|r>>>31,n[t+4&15]=r,c=(s<<5|s>>>27)+(a^i^f)+c+3395469782+r|0,a=a<<30|a>>>2;t[0]=t[0]+c|0,t[1]=t[1]+s|0,t[2]=t[2]+a|0,t[3]=t[3]+i|0,t[4]=t[4]+f|0}}(),e=new c(O),r=new c(O);t.length>O&&(n.update(t,0,t.length),t=n.digest());for(let n=0;n<O;n++){const o=n<t.length?t[n]:0;e[n]=54^o,r[n]=92^o}return n.update(e,0,O),{update(t,e,o){n.update(t,e,o)},digest(){const t=n.digest();n.update(r,0,O),n.update(t,0,V);const o=n.digest();return n.update(e,0,O),o}}}function Q(t){return j[t>>>24]<<24|j[t>>>16&255]<<16|j[t>>>8&255]<<8|j[255&t]}function X(t){return t<<24|(65280&t)<<8|t>>>8&65280|t>>>24}function Y(t){return 255&(t<<1^27*(t>>7))}const $=typeof d!=b&&typeof d.getRandomValues==k,tt="Invalid password",nt="zipjs-abort-check-password";function et(t){if($)return d.getRandomValues(t);throw new r("Crypto API not supported")}const ot={name:"PBKDF2"},rt=n.assign({hash:{name:"HMAC"}},ot),ct=n.assign({iterations:1e3,hash:{name:"SHA-1"}},ot),st=["deriveBits"],at=[8,12,16],it=[16,24,32],ft=10,ut=typeof d!=b,wt=ut&&d.subtle;let lt=ut&&typeof wt!=b&&typeof wt.importKey==k&&typeof wt.deriveBits==k,dt=G;class pt extends h{constructor({password:t,rawPassword:n,encryptionStrength:e,checkPasswordOnly:o,checkAuthenticationCode:s=!0}){const a={};super({start(){yt(a,t,n,e)},async transform(t,n){const{password:e,strength:s,l:i,ready:f}=a;if(e?(await async function(t,n,e,o){const c=await vt(t,n,e,kt(o,0,at[n])),s=kt(o,at[n]);if(c[0]!=s[0]||c[1]!=s[1])throw gt(t),new r(tt)}(a,s,e,kt(t,0,at[s]+2)),t=kt(t,at[s]+2),o?(gt(a),n.error(new r(nt))):i()):await f,a.h)return;const u=new c(t.length-ft-(t.length-ft)%16);n.enqueue(St(a,t,u,0,ft,!0))},async flush(t){const{m:n,S:e,ready:o}=a;if(n){if(await o,a.h)return;const i=kt(e,e.length-ft),f=new c(kt(e,0,e.length-ft));n.process(f,!0);const u=n.digest();let w=e.length<ft?1:0;for(let t=0;t<ft;t++)w|=u[t]^i[t];if(w&&s)return void t.error(new r("Invalid authentication code"));t.enqueue(f)}}}),mt(this,a)}}class ht extends h{constructor({password:t,rawPassword:n,encryptionStrength:e}){const o={};super({start(){yt(o,t,n,e)},async transform(t,n){const{password:e,strength:r,l:s,ready:a}=o;let i=z;if(e?(i=await async function(t,n,e){const o=et(new c(at[n]));return B(o,await vt(t,n,e,o))}(o,r,e),s()):await a,o.h)return;const f=new c(i.length+t.length-t.length%16);f.set(i,0),n.enqueue(St(o,t,f,i.length,0,!1))},async flush(t){const{m:n,S:e,ready:r}=o;if(n){if(await r,o.h)return;const s=new c(e);n.process(s,!1);const a=kt(n.digest(),0,ft);t.enqueue(B(s,a))}}}),mt(this,o)}}function yt(t,e,o,r){n.assign(t,{ready:new w(n=>t.l=n),password:bt(e,o),strength:r-1,S:z,h:!1})}function mt(t,e){const o=t.readable.getReader(),r=new y({async pull(t){try{const{value:n,done:e}=await o.read();e?t.close():t.enqueue(n)}catch(t){throw gt(e),o.cancel(t).catch(()=>{}),t}},cancel:t=>(gt(e),o.cancel(t))});n.defineProperty(t,"readable",{get:()=>r})}function St(t,n,e,o,r,s){const{m:a,S:i}=t;i.length&&(n=B(i,n));const f=n.length-r,u=f-f%16;if(e=function(t,n){if(n&&n>t.length){const e=t;(t=new c(n)).set(e,0)}return t}(e,o+u),u){const t=kt(e,o,o+u);t.set(kt(n,0,u)),a.process(t,s)}return t.S=kt(n,u),e}function gt(t){const{m:n}=t;t.h=!0,n&&n.dispose&&n.dispose()}async function vt(t,e,r,s){t.password=null;const a=it[e],i=await async function(t,e,r){if(lt)try{const o=await wt.importKey("raw",t,rt,!1,st);return new c(await wt.deriveBits(n.assign({salt:e},ct),o,8*r))}catch{lt=!1}return function(t,n,e,r){const s=J(t),a=new c(r),i=new c(n.length+4),f=new u(i.buffer);i.set(n);for(let t=1,e=0;e<r;t++,e+=V){f.setUint32(n.length,t),s.update(i,0,i.length);let c=s.digest();const u=c.slice();for(let t=1;t<1e3;t++){s.update(c,0,V),c=s.digest();for(let t=0;t<V;t++)u[t]^=c[t]}a.set(u.subarray(0,o.min(V,r-e)),e)}return a}(t,e,0,r)}(r,s,2*a+2);return t.m=dt(kt(i,0,a),kt(i,a,2*a)),t.h&>(t),kt(i,2*a)}function bt(t,n){return n===v?function(t){if(typeof l==b){t=unescape(encodeURIComponent(t));const n=new c(t.length);for(let e=0;e<n.length;e++)n[e]=t.charCodeAt(e);return n}return(new l).encode(t)}(t):n}function kt(t,n,e){return t.subarray(n,e)}class zt extends h{constructor({password:t,rawPassword:n,passwordVerification:e,checkPasswordOnly:o}){super({start(){It(this,t,n,e)},transform(t,n){const e=this;if(e.password||e.rawPassword){const n=Mt(e,t.subarray(0,12));if(e.password=e.rawPassword=null,0!=(n[11]^e.passwordVerification))throw new r(tt);t=t.subarray(12)}o?n.error(new r(nt)):n.enqueue(Mt(e,t))}})}}class Ct extends h{constructor({password:t,rawPassword:n,passwordVerification:e}){super({start(){It(this,t,n,e)},transform(t,n){const e=this;let o,r;if(e.password||e.rawPassword){e.password=e.rawPassword=null;const n=et(new c(12));n[11]=e.passwordVerification,o=new c(t.length+n.length),o.set(At(e,n),0),r=12}else o=new c(t.length),r=0;o.set(At(e,t),r),n.enqueue(o)}})}}function It(t,e,o,r){n.assign(t,{password:e,rawPassword:o,passwordVerification:r}),function(t,e,o){const r=[305419896,591751049,878082192];if(n.assign(t,{v:r,C:new F(r[0]),I:new F(r[2])}),o)for(let n=0;n<o.length;n++)Et(t,o[n]);else for(let n=0;n<e.length;n++)Et(t,e.charCodeAt(n))}(t,e,o)}function Mt(t,n){const e=new c(n.length);for(let o=0;o<n.length;o++)e[o]=Rt(t)^n[o],Et(t,e[o]);return e}function At(t,n){const e=new c(n.length);for(let o=0;o<n.length;o++)e[o]=Rt(t)^n[o],Et(t,n[o]);return e}function Et(t,n){let[,e]=t.v;t.C.append([n]);const r=~t.C.get();e=Pt(o.imul(Pt(e+xt(r)),134775813)+1),t.I.append([e>>>24]);const c=~t.I.get();t.v=[r,e,c]}function Rt(t){const n=2|t.v[2];return xt(o.imul(n,1^n)>>>8)}function xt(t){return 255&t}function Pt(t){return 4294967295&t}function Dt(t){if(t instanceof y)return t;const n=t.getReader();return new y({async pull(t){try{const{value:e,done:o}=await n.read();o?t.close():t.enqueue(e)}catch(t){throw n.cancel(t).catch(()=>{}),t}},cancel:t=>n.cancel(t)})}function Ft(t){return Boolean(t)&&"object"==typeof t}const Ut=new f;function Bt(t){return Ut.get(t)}const Wt="Invalid uncompressed size",Ot="Codec out of memory",Vt="Invalid CRC32",Kt="deflate-raw",Tt="gzip",_t=[31,139,8];class jt extends h{constructor(t,{chunkSize:n,CompressionStreamFallback:e,CompressionStream:o}){super({});const{compressed:r,encrypted:c,useCompressionStream:s,zipCrypto:a,computeCrc32:i,level:f,deflate64:w,format:l,compressionMethod:d,inputSize:p}=t,h=this;let y,m,S,g=super.readable;const v=l&&Bt(l),b=Gt(s,o,e),k=i&&r&&!w&&!v&&(!c||a)&&Boolean(b);if(c&&!a||!i||k||(y=new U,g=Qt(g,y)),r)if(v)g=Xt(g,qt(v.CompressionStream,l,{level:f,chunkSize:n,compressionMethod:d,uncompressedSize:p}));else if(k)S=new Ht,g=Xt(g,new b(Tt,{level:f,chunkSize:n})),g=Qt(g,S);else try{g=Jt(g,s,{level:f,chunkSize:n},o,e)}catch(t){if(!s&&e)throw en(t);let n;try{n=new o(Tt)}catch{throw en(t)}g=Xt(g,n),g=Qt(g,new Ht)}c&&(a?g=Qt(g,new Ct(t)):(m=new ht(t),g=Qt(g,m))),Nt(h,g,()=>{c&&!a||!i||(h.crc32=k?S.crc32:new u(y.value.buffer).getUint32(0))})}}class Ht extends h{constructor(){let t,n=10,e=new c(0);super({transform(t,r){if(n){const e=o.min(n,t.length);if(n-=e,!(t=t.subarray(e)).length)return}const c=e.length+t.length;if(c<=8)return void(e=B(e,t));const s=c-8,a=o.min(s,e.length);r.enqueue(B(e.subarray(0,a),t.subarray(0,s-a))),e=B(e.subarray(a),t.subarray(s-a))},flush(){const n=W(e);t.crc32=n.getUint32(0,!0),t.uncompressedSize=n.getUint32(4,!0)}}),t=this}}class Lt extends h{constructor(t,{chunkSize:n,DecompressionStreamFallback:e,DecompressionStream:o}){super({});const{zipCrypto:s,encrypted:a,checkCrc32:i,crc32:f,compressed:l,useCompressionStream:d,deflate64:p,format:h,compressionMethod:m,rawBitFlag:S,outputSize:g}=t;let b,k,z,C=super.readable;if(a&&(s?C=Qt(C,new zt(t)):(k=new pt(t),C=Qt(C,k))),l){const t=new Set,s=h&&Bt(h);let a;if(s)C=Xt(C,qt(s.DecompressionStream,h,{chunkSize:n,compressionMethod:m,rawBitFlag:S,uncompressedSize:g}),t);else{const r=Gt(d,o,e);if(i&&!p&&f!==v&&g!==v&&r)try{a=new r(Tt,{chunkSize:n})}catch{a=v}if(!a)try{C=Jt(C,d,{chunkSize:n,deflate64:p},o,e,t)}catch(t){if(p||g===v||!d&&e)throw en(t);try{a=new o(Tt)}catch{throw en(t)}}}a?(z=!0,C=function(t,n,e,o,s){const a=n.writable.getWriter(),i=n.readable.getReader(),f=o===v?new F:v;let u,l,d=0,p=!1,h=!1;const m=new y({start(t){l=t},pull(){b()},cancel:t=>(h=!0,b(),i.cancel(t))});return async function(){const n=t.getReader();try{const t=new c(10);for(t.set(_t),await a.write(t);;){await g(),await a.ready;const{value:t,done:e}=await tn(n,s);if(e)break;await a.write(t)}f&&await a.write(new c(0));const r=new c(8),i=W(r);i.setUint32(0,f?f.get():o,!0),i.setUint32(4,e,!0),p=!0,await a.write(r),await a.close()}catch(t){await Yt(a,t),await $t(n,t)}}(),async function(){try{for(;;){const{value:t,done:n}=await S();if(n)break;if(d+=t.length,d>e)throw new r(Wt);f&&f.append(t),l.enqueue(t)}h||(h=!0,l.close())}catch(t){!function(t){h||(h=!0,l.error(t),b())}(t),await $t(i,t)}}(),m;function S(){return i.read().catch(t=>{if(p){if(!f)throw rn(t,Vt);if(d!=e)throw rn(t,Wt);return{done:!0}}throw nn(t,s)})}function g(){if(!h&&l.desiredSize<=0)return new w(t=>u=t)}function b(){if(u){const t=u;u=v,t()}}}(C,a,g,f,t)):C=function(t,n){const e=t.getReader();return new y({async pull(t){try{const{value:n,done:o}=await e.read();o?t.close():t.enqueue(n)}catch(t){throw await $t(e,t),nn(t,n)}},cancel:t=>e.cancel(t)})}(C,t)}i&&!z&&(b=new U,C=Qt(C,b)),Nt(this,C,()=>{if(b){const t=new u(b.value.buffer).getUint32(0,!1);if(f!=t)throw new r(Vt)}})}}const Zt=new f;function Nt(t,e,o){e=Qt(e,new h({flush:o})),n.defineProperty(t,"readable",{get:()=>e})}function qt(t,n,e){if(!t)throw new r("Compression method not supported");return new t(n,e)}function Gt(t,n,e){return t&&n?n:e&&e.requiresModule?e:void 0}function Jt(t,n,e,o,r,c){const s=n&&o?o:r||o,a=e.deflate64?"deflate64-raw":Kt;let i;try{i=new s(a,e)}catch(t){if(!n||!r||s==r)throw t;i=new r(a,e)}return Xt(t,i,c)}function Qt(t,n){return Dt(t).pipeThrough(n)}function Xt(t,n,e){const o=n.writable.getWriter(),r=t.getReader();return async function(){try{for(;;){await o.ready;const t=await tn(r,e);if(t.done){await o.close();break}await o.write(t.value)}}catch(t){await Yt(o,t),await $t(r,t)}}(),n.readable}async function Yt(t,n){try{await t.abort(n)}catch{}}async function $t(t,n){try{await t.cancel(n)}catch{}}function tn(t,n){const e=t.read();return n?e.catch(t=>{throw n.add(t),t}):e}function nn(t,n){return n.has(t)?t:rn(t,on(t)?Ot:"Invalid compressed data")}function en(t){return on(t)?rn(t,Ot):t}function on(t){return Ft(t)&&"Z_MEM_ERROR"==t.code}function rn(t,n){const e=new r(n);return e.cause=t,e}const cn="data",sn="deflate";class an extends h{constructor(t,e){super({});const o=this,{codecType:c}=t;let s;c.startsWith(sn)?s=jt:c.startsWith("inflate")&&(s=Lt),o.outputSize=0;let a=0;const i=new s(t,e),f=super.readable,u=new h({transform(t,n){t&&t.length&&(a+=t.length,n.enqueue(t))},flush(){n.assign(o,{inputSize:a})}}),w=new h({transform(n,e){if(n&&n.length&&(e.enqueue(n),o.outputSize+=n.length,t.outputSize!==v&&o.outputSize>t.outputSize))throw new r(Wt)},flush(){const{crc32:t}=i;n.assign(o,{crc32:t,inputSize:a})}});n.defineProperty(o,"readable",{get:()=>f.pipeThrough(u).pipeThrough(i).pipeThrough(w)})}}class fn extends h{constructor(t){const o=[];let r=0,s=0;function a(){const n=new c(t);let e=0;for(;e<t;){const r=o[0],c=t-e;r.length<=c?(n.set(r,e),e+=r.length,o.shift()):(n.set(r.subarray(0,c),e),o[0]=r.subarray(c),e+=c)}return r-=t,n}(!e.isFinite(t)||t<1)&&(t=65536),super({transform(n,e){for(o.push(n),r+=n.length;r>t;)s+=t,e.enqueue(a())},flush(t){r&&(s+=r,t.enqueue(function(t,n){const e=new c(n);let o=0;for(const n of t)e.set(n,o),o+=n.length;return e}(o,r)))}}),n.defineProperty(this,"outputSize",{get:()=>s})}}let un=2;try{typeof navigator!=b&&navigator.hardwareConcurrency&&(un=navigator.hardwareConcurrency)}catch{}const wn=new f,ln=new f,dn=function(){try{return structuredClone(new r)instanceof r}catch{return!1}}();let pn=0;async function hn(t){let n,c,s;try{const{options:a,config:i}=t;if(a.format)try{await async function(t,n){!Ut.has(t)&&n&&function(t,n){const{CompressionStream:e,DecompressionStream:o}=n;if(typeof e!=k&&typeof o!=k)throw new r("Invalid codec module");Ut.set(t,{CompressionStream:e,DecompressionStream:o})}(t,await(import(n)))}(a.format,a.codecURI)}catch(t){if(Ft(t))try{t.codecImportFailed=!0}catch{}throw t}if(i.CompressionStream=self.CompressionStream,i.DecompressionStream=self.DecompressionStream,a.compressed&&!a.format)if(a.useCompressionStream){if(!function(t,n){if(!t)return!1;let e=Zt.get(t);e||(e=new f,Zt.set(t,e));let o=e.get(n);if(o===v){try{new t(n),o=!0}catch{o=!1}e.set(n,o)}return o}(a.codecType.startsWith(sn)?i.CompressionStream:i.DecompressionStream,Kt))try{await self.initModule(t.config)}catch{}}else try{await self.initModule(t.config)}catch{a.useCompressionStream=!0}if(a.encrypted&&!a.zipCrypto)try{await self.initModule(t.config)}catch{}!i.CompressionStreamFallback&&i.CompressionStreamZlib&&(i.CompressionStreamFallback=i.CompressionStreamZlib),!i.DecompressionStreamFallback&&i.DecompressionStreamZlib&&(i.DecompressionStreamFallback=i.DecompressionStreamZlib);const u={highWaterMark:1},l=t.readable?Dt(t.readable):new y({async pull(t){const n=new w(t=>wn.set(pn,t));yn({type:"pull",messageId:pn}),pn=(pn+1)%e.MAX_SAFE_INTEGER;const{value:o,done:r}=await n;t.enqueue(o),r&&t.close()}},u);s=t.writable?function(t){if(t instanceof m)return t;const n=t.getWriter();return new m({write:t=>n.write(t),close:()=>n.close(),abort:t=>n.abort(t)})}(t.writable):new m({async write(t){let n;const o=new w(t=>n=t);ln.set(pn,n),yn({type:cn,value:t,messageId:pn}),pn=(pn+1)%e.MAX_SAFE_INTEGER,await o}},u),n=new an(a,i),c=new fn(function(t){return r="string"==typeof(n=r=t.chunkSize)&&n.trim()?e(n):n,e.isInteger(r)&&r>=1?o.max(r,64):65536;var n,r}(i)),await l.pipeThrough(n).pipeThrough(c).pipeTo(s,{preventClose:!0,preventAbort:!0}),await s.getWriter().close();const{crc32:d,inputSize:p,outputSize:h}=n;yn({type:"close",result:{crc32:d,inputSize:p,outputSize:h}})}catch(t){const n=c?c.outputSize:0;if(Ft(t))try{t.outputSize=n}catch{}if(s&&!s.locked)try{await s.getWriter().close()}catch{}mn(t,n)}}function yn(t){const{value:n}=t;if(n)if(n.length)try{t.value=(e=n,e.byteOffset||e.byteLength!=e.buffer.byteLength?new c(e):e).buffer,p(t,[t.value])}catch{p(t)}else p(t);else p(t);var e}function mn(t,n){const{message:e,stack:o,code:c,name:s,outputSize:a,cause:i,codecImportFailed:f}=function(t=new r("Unknown error")){return Ft(t)?t:new r(String(t))}(t),u={message:e,stack:o,code:c,name:s,outputSize:a===v?n:a};if(Ft(i)&&(u.cause={name:i.name,message:i.message}),f&&(u.codecImportFailed=!0),dn)try{return void p({error:u,errorValue:{value:t}})}catch{}p({error:u})}addEventListener("message",({data:t})=>{const{type:n,messageId:e,value:o,done:r}=t;try{if("start"==n&&hn(t),n==cn){const t=wn.get(e);wn.delete(e),t({value:o||new c,done:r})}if("ack"==n){const t=ln.get(e);ln.delete(e),t()}}catch(t){mn(t)}}),p({type:"ready"});const Sn="deflate",gn="deflate-raw",vn="deflate64-raw",bn="gzip",kn=[Sn,gn,bn],zn=[Sn,gn,bn,vn];let Cn,In,Mn,An,En;function Rn(t,n){return-4===n&&(t.code="Z_MEM_ERROR"),t}function xn(t,n,e={}){if(!(t?kn:zn).includes(n))throw new TypeError("Unsupported format: "+n);if(!Cn){const t=new r("WASM module not loaded");throw t.cause=En,t}const s="number"==typeof e.level?e.level:-1,a="number"==typeof e.outBuffer?e.outBuffer:65536,i="number"==typeof e.inBufferSize?e.inBufferSize:65536,f={M:0,in:0,inBufferSize:0,A:0,R:!1};let u,l,d,p,h=!0,S=!1;return function(){try{let e;if(f.M=In(a),f.in=In(i),f.inBufferSize=i,!f.M||!f.in)throw Rn(new r("allocation failed"),-4);if(t?(f.P=Cn.deflate_process,f.D=Cn.deflate_last_consumed,f.F=Cn.deflate_end,f.A=Cn.deflate_new(),e=n===bn?Cn.deflate_init_gzip(f.A,s):n===gn?Cn.deflate_init_raw(f.A,s):Cn.deflate_init(f.A,s)):n===vn?(f.P=Cn.inflate9_process,f.D=Cn.inflate9_last_consumed,f.F=Cn.inflate9_end,f.A=Cn.inflate9_new(),e=Cn.inflate9_init_raw(f.A)):(f.P=Cn.inflate_process,f.D=Cn.inflate_last_consumed,f.F=Cn.inflate_end,f.A=Cn.inflate_new(),e=n===gn?Cn.inflate_init_raw(f.A):n===bn?Cn.inflate_init_gzip(f.A):Cn.inflate_init(f.A)),0!==e)throw Rn(new r("init failed:"+e),e)}catch(t){throw b(f),t}}(),{readable:new y({start(t){u=t},pull(){h=!1,v()},cancel(t){S=!0,p=t,b(f),l.error(t),v()}},{highWaterMark:0}),writable:new m({start(t){l=t},async write(t){if(h&&await new w(t=>d=t),S)throw p;try{!function(t){const n=new c(An.buffer),e=f.P,s=f.D,i=f.M;let u=0;for(;u<t.length;){if(f.R)throw new r("trailing data after the end of the stream");const c=o.min(t.length-u,32768);if((!f.in||f.inBufferSize<c)&&(f.in&&Mn&&(Mn(f.in),f.in=0),f.in=In(c),f.inBufferSize=c,!f.in))throw Rn(new r("allocation failed"),-4);n.set(t.subarray(u,u+c),f.in);const w=e(f.A,f.in,c,i,a,0),l=w>>24&255,d=128&l?l-256:l;if(d<0)throw Rn(new r("process error:"+d),d);const p=16777215&w;p&&g(n.slice(i,i+p));const h=s(f.A);if(1===l)f.R=!0;else if(0===h&&0===p)break;u+=h}}(t)}catch(t){throw b(f),u.error(t),t}},close(){if(S)return;try{!function(){const t=new c(An.buffer),n=f.P,e=f.M;for(;;){const o=n(f.A,0,0,e,a,4),c=o>>24&255,s=128&c?c-256:c;if(s<0)throw Rn(new r("process error:"+s),s);const i=16777215&o;if(i&&g(t.slice(e,e+i)),1===c||0===i)break}}()}catch(t){throw b(f),u.error(t),t}const t=b(f);if(0!==t){const n=Rn(new r("end error:"+t),t);throw u.error(n),n}u.close()},abort(t){b(f),u.error(t)}},{highWaterMark:1})};function g(t){h=!0,u.enqueue(t)}function v(){if(d){const t=d;d=null,t()}}function b(t){let n=0;return t.A&&t.F&&(n=t.F(t.A)),t.A=0,t.in&&Mn&&Mn(t.in),t.in=0,t.M&&Mn&&Mn(t.M),t.M=0,n}}class Pn{constructor(t=Sn,n){return xn(!0,t,n)}}class Dn{constructor(t=Sn,n){return xn(!1,t,n)}}Pn.requiresModule=!0,Dn.requiresModule=!0,Pn.supportedFormats=kn,Dn.supportedFormats=zn;const Fn=65536;let Un,Bn;function Wn(t){return new c(t.memory.buffer)}let On=!1;!function(t={}){const{init:n,U:e}=t,o=t.CompressionStreamFallback||t.CompressionStreamZlib,r=t.DecompressionStreamFallback||t.DecompressionStreamZlib;e&&(dt=e||G),self.initModule=async t=>{n&&await n(t),o&&(t.CompressionStreamFallback=o),r&&(t.DecompressionStreamFallback=r)}}({CompressionStreamFallback:Pn,DecompressionStreamFallback:Dn,U:function(t,n){const e=Un;let o=e?function(t,n,e){Bn||(Bn=t.malloc(Fn));const o=Bn?t.aes_hmac_new():0;if(o){const r=Wn(t);if(r.set(n,Bn),r.set(e,Bn+n.length),t.aes_hmac_init(o,Bn,n.length,Bn+n.length,e.length))return t.aes_hmac_end(o,0),0}return o}(e,t,n):0;if(!o)return G(t,n);const r=Bn;return{process(t,n){for(let c=0;c<t.length;c+=Fn){const s=t.subarray(c,c+Fn),a=Wn(e);a.set(s,r),e.aes_hmac_process(o,r,s.length,n?1:0),s.set(a.subarray(r,r+s.length))}},digest:()=>(e.aes_hmac_end(o,r),o=0,Wn(e).slice(r,r+20)),dispose(){o&&(e.aes_hmac_end(o,0),o=0)}}},init:t=>async function(t,{baseURI:n}){if(!On)try{await async function(t,n){let e,o;try{try{o=new URL(t,n)}catch{}const r=await fetch(o);e=await r.arrayBuffer()}catch(n){if(!t.startsWith("data:application/wasm;base64,"))throw n;e=function(t){const n=t.split(",")[1],e=atob(n),o=e.length,r=new c(o);for(let t=0;t<o;++t)r[t]=e.charCodeAt(t);return r.buffer}(t)}const s=await WebAssembly.instantiate(e);var a;(function(t){if(Cn=t,({malloc:In,free:Mn,memory:An}=Cn),"function"!=typeof In||"function"!=typeof Mn||!An)throw Cn=In=Mn=An=null,new r("Invalid WASM module")})(s.instance.exports),typeof(a=s.instance.exports).aes_hmac_new==k&&(Un=a,Bn=0)}(t,n),On=!0}catch(t){throw function(t){En=t}(t),t}}(t.wasmURI,t)})});
|
|
116
|
+
`;
|
|
117
|
+
if (typeof n == "string" && (n = new TextEncoder().encode(n)), e) {
|
|
118
|
+
const i = new Blob([n], { type: t });
|
|
119
|
+
return URL.createObjectURL(i);
|
|
120
|
+
}
|
|
121
|
+
return "data:" + t + ";base64," + (function(i) {
|
|
122
|
+
let s = "";
|
|
123
|
+
const c = i.length;
|
|
124
|
+
let u = 0;
|
|
125
|
+
for (; u + 2 < c; u += 3) {
|
|
126
|
+
const g = i[u] << 16 | i[u + 1] << 8 | i[u + 2];
|
|
127
|
+
s += O[g >> 18 & 63] + O[g >> 12 & 63] + O[g >> 6 & 63] + O[63 & g];
|
|
128
|
+
}
|
|
129
|
+
const w = c - u;
|
|
130
|
+
if (w === 1) {
|
|
131
|
+
const g = i[u] << 16;
|
|
132
|
+
s += O[g >> 18 & 63] + O[g >> 12 & 63] + "==";
|
|
133
|
+
} else if (w === 2) {
|
|
134
|
+
const g = i[u] << 16 | i[u + 1] << 8;
|
|
135
|
+
s += O[g >> 18 & 63] + O[g >> 12 & 63] + O[g >> 6 & 63] + "=";
|
|
136
|
+
}
|
|
137
|
+
return s;
|
|
138
|
+
})(n);
|
|
139
|
+
} });
|
|
140
|
+
function W(r, e) {
|
|
141
|
+
const t = new Uint8Array(r.length + e.length);
|
|
142
|
+
return t.set(r), t.set(e, r.length), t;
|
|
143
|
+
}
|
|
144
|
+
function Ye(r) {
|
|
145
|
+
return new DataView(r.buffer, r.byteOffset, r.byteLength);
|
|
146
|
+
}
|
|
147
|
+
function qt(r) {
|
|
148
|
+
return !!r && typeof r == "object";
|
|
149
|
+
}
|
|
150
|
+
const Y = [[], [], [], [], [], [], [], []];
|
|
151
|
+
for (let r = 0; r < 256; r++) {
|
|
152
|
+
let e = r;
|
|
153
|
+
for (let t = 0; t < 8; t++)
|
|
154
|
+
e = e & 1 ? e >>> 1 ^ 3988292384 : e >>> 1;
|
|
155
|
+
Y[0][r] = e;
|
|
156
|
+
}
|
|
157
|
+
for (let r = 0; r < 256; r++)
|
|
158
|
+
for (let e = 1; e < 8; e++) {
|
|
159
|
+
const t = Y[e - 1][r];
|
|
160
|
+
Y[e][r] = t >>> 8 ^ Y[0][t & 255];
|
|
161
|
+
}
|
|
162
|
+
const [Re, Gt, Kt, Qt, Jt, _t, $t, er] = Y;
|
|
163
|
+
class ee {
|
|
164
|
+
constructor(e) {
|
|
165
|
+
this.crc = e || -1;
|
|
166
|
+
}
|
|
167
|
+
append(e) {
|
|
168
|
+
let t = this.crc | 0;
|
|
169
|
+
const n = e.length | 0;
|
|
170
|
+
let i = 0;
|
|
171
|
+
if (n >= 8 && e.buffer) {
|
|
172
|
+
const s = new DataView(e.buffer, e.byteOffset, n), c = n - 8;
|
|
173
|
+
for (; i <= c; i += 8) {
|
|
174
|
+
const u = t ^ s.getInt32(i, !0), w = s.getInt32(i + 4, !0);
|
|
175
|
+
t = er[u & 255] ^ $t[u >>> 8 & 255] ^ _t[u >>> 16 & 255] ^ Jt[u >>> 24 & 255] ^ Qt[w & 255] ^ Kt[w >>> 8 & 255] ^ Gt[w >>> 16 & 255] ^ Re[w >>> 24 & 255];
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
for (; i < n; i++)
|
|
179
|
+
t = t >>> 8 ^ Re[(t ^ e[i]) & 255];
|
|
180
|
+
this.crc = t;
|
|
181
|
+
}
|
|
182
|
+
get() {
|
|
183
|
+
return ~this.crc;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
class Xe extends TransformStream {
|
|
187
|
+
constructor() {
|
|
188
|
+
let e;
|
|
189
|
+
const t = new ee();
|
|
190
|
+
super({
|
|
191
|
+
transform(n, i) {
|
|
192
|
+
t.append(n), i.enqueue(n);
|
|
193
|
+
},
|
|
194
|
+
flush() {
|
|
195
|
+
const n = new Uint8Array(4);
|
|
196
|
+
new DataView(n.buffer).setUint32(0, t.get()), e.value = n;
|
|
197
|
+
}
|
|
198
|
+
}), e = this;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function tr(r) {
|
|
202
|
+
if (typeof TextEncoder == B) {
|
|
203
|
+
r = unescape(encodeURIComponent(r));
|
|
204
|
+
const e = new Uint8Array(r.length);
|
|
205
|
+
for (let t = 0; t < e.length; t++)
|
|
206
|
+
e[t] = r.charCodeAt(t);
|
|
207
|
+
return e;
|
|
208
|
+
} else
|
|
209
|
+
return new TextEncoder().encode(r);
|
|
210
|
+
}
|
|
211
|
+
const le = 16, rr = 60, L = 64, M = 20, nr = 16, ir = 56, ar = new Uint8Array([128]), sr = new Uint8Array(1), Ae = new Int32Array([1732584193, 4023233417, 2562383102, 271733878, 3285377520]), or = 54, cr = 92, U = new Uint8Array(256), E = new Int32Array(256), S = new Int32Array(256), R = new Int32Array(256), A = new Int32Array(256);
|
|
212
|
+
let ve = !1;
|
|
213
|
+
function ge(r, e) {
|
|
214
|
+
fr();
|
|
215
|
+
const t = new Int32Array(rr), n = dr(r, t), i = new Int32Array(le / 4), s = qe(e);
|
|
216
|
+
let c = 0, u = 0, w = 0, g = 0;
|
|
217
|
+
return {
|
|
218
|
+
process(l, h) {
|
|
219
|
+
h && s.update(l, 0, l.length), b(l), h || s.update(l, 0, l.length);
|
|
220
|
+
},
|
|
221
|
+
digest() {
|
|
222
|
+
return s.digest();
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
function b(l) {
|
|
226
|
+
const h = new DataView(l.buffer, l.byteOffset, l.byteLength), p = l.length;
|
|
227
|
+
let f = 0;
|
|
228
|
+
for (; f + le <= p; f += le)
|
|
229
|
+
y(), h.setInt32(f, h.getInt32(f) ^ i[0]), h.setInt32(f + 4, h.getInt32(f + 4) ^ i[1]), h.setInt32(f + 8, h.getInt32(f + 8) ^ i[2]), h.setInt32(f + 12, h.getInt32(f + 12) ^ i[3]);
|
|
230
|
+
if (f < p) {
|
|
231
|
+
y();
|
|
232
|
+
for (let d = 0; f < p; f++, d++)
|
|
233
|
+
l[f] ^= i[d >> 2] >>> 24 - 8 * (d & 3);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
function y() {
|
|
237
|
+
c = c + 1 | 0, c || (u = u + 1 | 0, u || (w = w + 1 | 0, w || (g = g + 1 | 0)));
|
|
238
|
+
let l = J(c) ^ t[0], h = J(u) ^ t[1], p = J(w) ^ t[2], f = J(g) ^ t[3], d = E[l >>> 24] ^ S[h >>> 16 & 255] ^ R[p >>> 8 & 255] ^ A[f & 255] ^ t[4], a = E[h >>> 24] ^ S[p >>> 16 & 255] ^ R[f >>> 8 & 255] ^ A[l & 255] ^ t[5], o = E[p >>> 24] ^ S[f >>> 16 & 255] ^ R[l >>> 8 & 255] ^ A[h & 255] ^ t[6], m = E[f >>> 24] ^ S[l >>> 16 & 255] ^ R[h >>> 8 & 255] ^ A[p & 255] ^ t[7];
|
|
239
|
+
l = E[d >>> 24] ^ S[a >>> 16 & 255] ^ R[o >>> 8 & 255] ^ A[m & 255] ^ t[8], h = E[a >>> 24] ^ S[o >>> 16 & 255] ^ R[m >>> 8 & 255] ^ A[d & 255] ^ t[9], p = E[o >>> 24] ^ S[m >>> 16 & 255] ^ R[d >>> 8 & 255] ^ A[a & 255] ^ t[10], f = E[m >>> 24] ^ S[d >>> 16 & 255] ^ R[a >>> 8 & 255] ^ A[o & 255] ^ t[11], d = E[l >>> 24] ^ S[h >>> 16 & 255] ^ R[p >>> 8 & 255] ^ A[f & 255] ^ t[12], a = E[h >>> 24] ^ S[p >>> 16 & 255] ^ R[f >>> 8 & 255] ^ A[l & 255] ^ t[13], o = E[p >>> 24] ^ S[f >>> 16 & 255] ^ R[l >>> 8 & 255] ^ A[h & 255] ^ t[14], m = E[f >>> 24] ^ S[l >>> 16 & 255] ^ R[h >>> 8 & 255] ^ A[p & 255] ^ t[15], l = E[d >>> 24] ^ S[a >>> 16 & 255] ^ R[o >>> 8 & 255] ^ A[m & 255] ^ t[16], h = E[a >>> 24] ^ S[o >>> 16 & 255] ^ R[m >>> 8 & 255] ^ A[d & 255] ^ t[17], p = E[o >>> 24] ^ S[m >>> 16 & 255] ^ R[d >>> 8 & 255] ^ A[a & 255] ^ t[18], f = E[m >>> 24] ^ S[d >>> 16 & 255] ^ R[a >>> 8 & 255] ^ A[o & 255] ^ t[19], d = E[l >>> 24] ^ S[h >>> 16 & 255] ^ R[p >>> 8 & 255] ^ A[f & 255] ^ t[20], a = E[h >>> 24] ^ S[p >>> 16 & 255] ^ R[f >>> 8 & 255] ^ A[l & 255] ^ t[21], o = E[p >>> 24] ^ S[f >>> 16 & 255] ^ R[l >>> 8 & 255] ^ A[h & 255] ^ t[22], m = E[f >>> 24] ^ S[l >>> 16 & 255] ^ R[h >>> 8 & 255] ^ A[p & 255] ^ t[23], l = E[d >>> 24] ^ S[a >>> 16 & 255] ^ R[o >>> 8 & 255] ^ A[m & 255] ^ t[24], h = E[a >>> 24] ^ S[o >>> 16 & 255] ^ R[m >>> 8 & 255] ^ A[d & 255] ^ t[25], p = E[o >>> 24] ^ S[m >>> 16 & 255] ^ R[d >>> 8 & 255] ^ A[a & 255] ^ t[26], f = E[m >>> 24] ^ S[d >>> 16 & 255] ^ R[a >>> 8 & 255] ^ A[o & 255] ^ t[27], d = E[l >>> 24] ^ S[h >>> 16 & 255] ^ R[p >>> 8 & 255] ^ A[f & 255] ^ t[28], a = E[h >>> 24] ^ S[p >>> 16 & 255] ^ R[f >>> 8 & 255] ^ A[l & 255] ^ t[29], o = E[p >>> 24] ^ S[f >>> 16 & 255] ^ R[l >>> 8 & 255] ^ A[h & 255] ^ t[30], m = E[f >>> 24] ^ S[l >>> 16 & 255] ^ R[h >>> 8 & 255] ^ A[p & 255] ^ t[31], l = E[d >>> 24] ^ S[a >>> 16 & 255] ^ R[o >>> 8 & 255] ^ A[m & 255] ^ t[32], h = E[a >>> 24] ^ S[o >>> 16 & 255] ^ R[m >>> 8 & 255] ^ A[d & 255] ^ t[33], p = E[o >>> 24] ^ S[m >>> 16 & 255] ^ R[d >>> 8 & 255] ^ A[a & 255] ^ t[34], f = E[m >>> 24] ^ S[d >>> 16 & 255] ^ R[a >>> 8 & 255] ^ A[o & 255] ^ t[35], d = E[l >>> 24] ^ S[h >>> 16 & 255] ^ R[p >>> 8 & 255] ^ A[f & 255] ^ t[36], a = E[h >>> 24] ^ S[p >>> 16 & 255] ^ R[f >>> 8 & 255] ^ A[l & 255] ^ t[37], o = E[p >>> 24] ^ S[f >>> 16 & 255] ^ R[l >>> 8 & 255] ^ A[h & 255] ^ t[38], m = E[f >>> 24] ^ S[l >>> 16 & 255] ^ R[h >>> 8 & 255] ^ A[p & 255] ^ t[39];
|
|
240
|
+
let v = 40;
|
|
241
|
+
n > 10 && (l = E[d >>> 24] ^ S[a >>> 16 & 255] ^ R[o >>> 8 & 255] ^ A[m & 255] ^ t[40], h = E[a >>> 24] ^ S[o >>> 16 & 255] ^ R[m >>> 8 & 255] ^ A[d & 255] ^ t[41], p = E[o >>> 24] ^ S[m >>> 16 & 255] ^ R[d >>> 8 & 255] ^ A[a & 255] ^ t[42], f = E[m >>> 24] ^ S[d >>> 16 & 255] ^ R[a >>> 8 & 255] ^ A[o & 255] ^ t[43], d = E[l >>> 24] ^ S[h >>> 16 & 255] ^ R[p >>> 8 & 255] ^ A[f & 255] ^ t[44], a = E[h >>> 24] ^ S[p >>> 16 & 255] ^ R[f >>> 8 & 255] ^ A[l & 255] ^ t[45], o = E[p >>> 24] ^ S[f >>> 16 & 255] ^ R[l >>> 8 & 255] ^ A[h & 255] ^ t[46], m = E[f >>> 24] ^ S[l >>> 16 & 255] ^ R[h >>> 8 & 255] ^ A[p & 255] ^ t[47], v = 48), n > 12 && (l = E[d >>> 24] ^ S[a >>> 16 & 255] ^ R[o >>> 8 & 255] ^ A[m & 255] ^ t[48], h = E[a >>> 24] ^ S[o >>> 16 & 255] ^ R[m >>> 8 & 255] ^ A[d & 255] ^ t[49], p = E[o >>> 24] ^ S[m >>> 16 & 255] ^ R[d >>> 8 & 255] ^ A[a & 255] ^ t[50], f = E[m >>> 24] ^ S[d >>> 16 & 255] ^ R[a >>> 8 & 255] ^ A[o & 255] ^ t[51], d = E[l >>> 24] ^ S[h >>> 16 & 255] ^ R[p >>> 8 & 255] ^ A[f & 255] ^ t[52], a = E[h >>> 24] ^ S[p >>> 16 & 255] ^ R[f >>> 8 & 255] ^ A[l & 255] ^ t[53], o = E[p >>> 24] ^ S[f >>> 16 & 255] ^ R[l >>> 8 & 255] ^ A[h & 255] ^ t[54], m = E[f >>> 24] ^ S[l >>> 16 & 255] ^ R[h >>> 8 & 255] ^ A[p & 255] ^ t[55], v = 56), i[0] = (U[d >>> 24] << 24 | U[a >>> 16 & 255] << 16 | U[o >>> 8 & 255] << 8 | U[m & 255]) ^ t[v], i[1] = (U[a >>> 24] << 24 | U[o >>> 16 & 255] << 16 | U[m >>> 8 & 255] << 8 | U[d & 255]) ^ t[v + 1], i[2] = (U[o >>> 24] << 24 | U[m >>> 16 & 255] << 16 | U[d >>> 8 & 255] << 8 | U[a & 255]) ^ t[v + 2], i[3] = (U[m >>> 24] << 24 | U[d >>> 16 & 255] << 16 | U[a >>> 8 & 255] << 8 | U[o & 255]) ^ t[v + 3];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function lr(r, e, t, n) {
|
|
245
|
+
const i = qe(r), s = new Uint8Array(n), c = new Uint8Array(e.length + 4), u = new DataView(c.buffer);
|
|
246
|
+
c.set(e);
|
|
247
|
+
for (let w = 1, g = 0; g < n; w++, g += M) {
|
|
248
|
+
u.setUint32(e.length, w), i.update(c, 0, c.length);
|
|
249
|
+
let b = i.digest();
|
|
250
|
+
const y = b.slice();
|
|
251
|
+
for (let l = 1; l < t; l++) {
|
|
252
|
+
i.update(b, 0, M), b = i.digest();
|
|
253
|
+
for (let h = 0; h < M; h++)
|
|
254
|
+
y[h] ^= b[h];
|
|
255
|
+
}
|
|
256
|
+
s.set(y.subarray(0, Math.min(M, n - g)), g);
|
|
257
|
+
}
|
|
258
|
+
return s;
|
|
259
|
+
}
|
|
260
|
+
function qe(r) {
|
|
261
|
+
const e = ur(), t = new Uint8Array(L), n = new Uint8Array(L);
|
|
262
|
+
r.length > L && (e.update(r, 0, r.length), r = e.digest());
|
|
263
|
+
for (let i = 0; i < L; i++) {
|
|
264
|
+
const s = i < r.length ? r[i] : 0;
|
|
265
|
+
t[i] = s ^ or, n[i] = s ^ cr;
|
|
266
|
+
}
|
|
267
|
+
return e.update(t, 0, L), {
|
|
268
|
+
update(i, s, c) {
|
|
269
|
+
e.update(i, s, c);
|
|
270
|
+
},
|
|
271
|
+
digest() {
|
|
272
|
+
const i = e.digest();
|
|
273
|
+
e.update(n, 0, L), e.update(i, 0, M);
|
|
274
|
+
const s = e.digest();
|
|
275
|
+
return e.update(t, 0, L), s;
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
function ur() {
|
|
280
|
+
const r = new Int32Array(Ae), e = new Int32Array(nr), t = new Uint8Array(L), n = new DataView(t.buffer), i = new Uint8Array(8);
|
|
281
|
+
let s = 0, c = 0;
|
|
282
|
+
return {
|
|
283
|
+
update: u,
|
|
284
|
+
digest: w
|
|
285
|
+
};
|
|
286
|
+
function u(b, y, l) {
|
|
287
|
+
const h = y + l;
|
|
288
|
+
if (c += l, s) {
|
|
289
|
+
for (; y < h && s < L; )
|
|
290
|
+
t[s++] = b[y++];
|
|
291
|
+
s == L && (g(n, 0), s = 0);
|
|
292
|
+
}
|
|
293
|
+
if (y + L <= h) {
|
|
294
|
+
const p = new DataView(b.buffer, b.byteOffset, b.byteLength);
|
|
295
|
+
for (; y + L <= h; y += L)
|
|
296
|
+
g(p, y);
|
|
297
|
+
}
|
|
298
|
+
for (; y < h; )
|
|
299
|
+
t[s++] = b[y++];
|
|
300
|
+
}
|
|
301
|
+
function w() {
|
|
302
|
+
const b = c * 8, y = Math.floor(b / 4294967296), l = b >>> 0;
|
|
303
|
+
for (u(ar, 0, 1); s != ir; )
|
|
304
|
+
u(sr, 0, 1);
|
|
305
|
+
i[0] = y >>> 24, i[1] = y >>> 16, i[2] = y >>> 8, i[3] = y, i[4] = l >>> 24, i[5] = l >>> 16, i[6] = l >>> 8, i[7] = l, u(i, 0, 8);
|
|
306
|
+
const h = new Uint8Array(M), p = new DataView(h.buffer);
|
|
307
|
+
for (let f = 0; f < r.length; f++)
|
|
308
|
+
p.setInt32(4 * f, r[f]);
|
|
309
|
+
return r.set(Ae), s = 0, c = 0, h;
|
|
310
|
+
}
|
|
311
|
+
function g(b, y) {
|
|
312
|
+
for (let o = 0; o < 16; o++)
|
|
313
|
+
e[o] = b.getInt32(y + 4 * o);
|
|
314
|
+
let l = r[0], h = r[1], p = r[2], f = r[3], d = r[4], a;
|
|
315
|
+
for (let o = 0; o < 15; o += 5)
|
|
316
|
+
d = (l << 5 | l >>> 27) + ((p ^ f) & h ^ f) + d + 1518500249 + e[o] | 0, h = h << 30 | h >>> 2, f = (d << 5 | d >>> 27) + ((h ^ p) & l ^ p) + f + 1518500249 + e[o + 1] | 0, l = l << 30 | l >>> 2, p = (f << 5 | f >>> 27) + ((l ^ h) & d ^ h) + p + 1518500249 + e[o + 2] | 0, d = d << 30 | d >>> 2, h = (p << 5 | p >>> 27) + ((d ^ l) & f ^ l) + h + 1518500249 + e[o + 3] | 0, f = f << 30 | f >>> 2, l = (h << 5 | h >>> 27) + ((f ^ d) & p ^ d) + l + 1518500249 + e[o + 4] | 0, p = p << 30 | p >>> 2;
|
|
317
|
+
d = (l << 5 | l >>> 27) + ((p ^ f) & h ^ f) + d + 1518500249 + e[15] | 0, h = h << 30 | h >>> 2, a = e[13] ^ e[8] ^ e[2] ^ e[0], a = a << 1 | a >>> 31, e[0] = a, f = (d << 5 | d >>> 27) + ((h ^ p) & l ^ p) + f + 1518500249 + a | 0, l = l << 30 | l >>> 2, a = e[14] ^ e[9] ^ e[3] ^ e[1], a = a << 1 | a >>> 31, e[1] = a, p = (f << 5 | f >>> 27) + ((l ^ h) & d ^ h) + p + 1518500249 + a | 0, d = d << 30 | d >>> 2, a = e[15] ^ e[10] ^ e[4] ^ e[2], a = a << 1 | a >>> 31, e[2] = a, h = (p << 5 | p >>> 27) + ((d ^ l) & f ^ l) + h + 1518500249 + a | 0, f = f << 30 | f >>> 2, a = e[0] ^ e[11] ^ e[5] ^ e[3], a = a << 1 | a >>> 31, e[3] = a, l = (h << 5 | h >>> 27) + ((f ^ d) & p ^ d) + l + 1518500249 + a | 0, p = p << 30 | p >>> 2;
|
|
318
|
+
for (let o = 20; o < 40; o += 5)
|
|
319
|
+
a = e[o - 3 & 15] ^ e[o - 8 & 15] ^ e[o - 14 & 15] ^ e[o & 15], a = a << 1 | a >>> 31, e[o & 15] = a, d = (l << 5 | l >>> 27) + (h ^ p ^ f) + d + 1859775393 + a | 0, h = h << 30 | h >>> 2, a = e[o - 2 & 15] ^ e[o - 7 & 15] ^ e[o - 13 & 15] ^ e[o + 1 & 15], a = a << 1 | a >>> 31, e[o + 1 & 15] = a, f = (d << 5 | d >>> 27) + (l ^ h ^ p) + f + 1859775393 + a | 0, l = l << 30 | l >>> 2, a = e[o - 1 & 15] ^ e[o - 6 & 15] ^ e[o - 12 & 15] ^ e[o + 2 & 15], a = a << 1 | a >>> 31, e[o + 2 & 15] = a, p = (f << 5 | f >>> 27) + (d ^ l ^ h) + p + 1859775393 + a | 0, d = d << 30 | d >>> 2, a = e[o & 15] ^ e[o - 5 & 15] ^ e[o - 11 & 15] ^ e[o + 3 & 15], a = a << 1 | a >>> 31, e[o + 3 & 15] = a, h = (p << 5 | p >>> 27) + (f ^ d ^ l) + h + 1859775393 + a | 0, f = f << 30 | f >>> 2, a = e[o + 1 & 15] ^ e[o - 4 & 15] ^ e[o - 10 & 15] ^ e[o + 4 & 15], a = a << 1 | a >>> 31, e[o + 4 & 15] = a, l = (h << 5 | h >>> 27) + (p ^ f ^ d) + l + 1859775393 + a | 0, p = p << 30 | p >>> 2;
|
|
320
|
+
for (let o = 40; o < 60; o += 5)
|
|
321
|
+
a = e[o - 3 & 15] ^ e[o - 8 & 15] ^ e[o - 14 & 15] ^ e[o & 15], a = a << 1 | a >>> 31, e[o & 15] = a, d = (l << 5 | l >>> 27) + (h & p | (h | p) & f) + d + 2400959708 + a | 0, h = h << 30 | h >>> 2, a = e[o - 2 & 15] ^ e[o - 7 & 15] ^ e[o - 13 & 15] ^ e[o + 1 & 15], a = a << 1 | a >>> 31, e[o + 1 & 15] = a, f = (d << 5 | d >>> 27) + (l & h | (l | h) & p) + f + 2400959708 + a | 0, l = l << 30 | l >>> 2, a = e[o - 1 & 15] ^ e[o - 6 & 15] ^ e[o - 12 & 15] ^ e[o + 2 & 15], a = a << 1 | a >>> 31, e[o + 2 & 15] = a, p = (f << 5 | f >>> 27) + (d & l | (d | l) & h) + p + 2400959708 + a | 0, d = d << 30 | d >>> 2, a = e[o & 15] ^ e[o - 5 & 15] ^ e[o - 11 & 15] ^ e[o + 3 & 15], a = a << 1 | a >>> 31, e[o + 3 & 15] = a, h = (p << 5 | p >>> 27) + (f & d | (f | d) & l) + h + 2400959708 + a | 0, f = f << 30 | f >>> 2, a = e[o + 1 & 15] ^ e[o - 4 & 15] ^ e[o - 10 & 15] ^ e[o + 4 & 15], a = a << 1 | a >>> 31, e[o + 4 & 15] = a, l = (h << 5 | h >>> 27) + (p & f | (p | f) & d) + l + 2400959708 + a | 0, p = p << 30 | p >>> 2;
|
|
322
|
+
for (let o = 60; o < 80; o += 5)
|
|
323
|
+
a = e[o - 3 & 15] ^ e[o - 8 & 15] ^ e[o - 14 & 15] ^ e[o & 15], a = a << 1 | a >>> 31, e[o & 15] = a, d = (l << 5 | l >>> 27) + (h ^ p ^ f) + d + 3395469782 + a | 0, h = h << 30 | h >>> 2, a = e[o - 2 & 15] ^ e[o - 7 & 15] ^ e[o - 13 & 15] ^ e[o + 1 & 15], a = a << 1 | a >>> 31, e[o + 1 & 15] = a, f = (d << 5 | d >>> 27) + (l ^ h ^ p) + f + 3395469782 + a | 0, l = l << 30 | l >>> 2, a = e[o - 1 & 15] ^ e[o - 6 & 15] ^ e[o - 12 & 15] ^ e[o + 2 & 15], a = a << 1 | a >>> 31, e[o + 2 & 15] = a, p = (f << 5 | f >>> 27) + (d ^ l ^ h) + p + 3395469782 + a | 0, d = d << 30 | d >>> 2, a = e[o & 15] ^ e[o - 5 & 15] ^ e[o - 11 & 15] ^ e[o + 3 & 15], a = a << 1 | a >>> 31, e[o + 3 & 15] = a, h = (p << 5 | p >>> 27) + (f ^ d ^ l) + h + 3395469782 + a | 0, f = f << 30 | f >>> 2, a = e[o + 1 & 15] ^ e[o - 4 & 15] ^ e[o - 10 & 15] ^ e[o + 4 & 15], a = a << 1 | a >>> 31, e[o + 4 & 15] = a, l = (h << 5 | h >>> 27) + (p ^ f ^ d) + l + 3395469782 + a | 0, p = p << 30 | p >>> 2;
|
|
324
|
+
r[0] = r[0] + l | 0, r[1] = r[1] + h | 0, r[2] = r[2] + p | 0, r[3] = r[3] + f | 0, r[4] = r[4] + d | 0;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
function fr() {
|
|
328
|
+
if (!ve) {
|
|
329
|
+
let r = 1, e = 1;
|
|
330
|
+
do
|
|
331
|
+
r = (r ^ r << 1 ^ (r & 128 ? 27 : 0)) & 255, e = (e ^ e << 1) & 255, e = (e ^ e << 2) & 255, e = (e ^ e << 4) & 255, e & 128 && (e ^= 9), U[r] = (e ^ (e << 1 | e >> 7) ^ (e << 2 | e >> 6) ^ (e << 3 | e >> 5) ^ (e << 4 | e >> 4) ^ 99) & 255;
|
|
332
|
+
while (r != 1);
|
|
333
|
+
U[0] = 99;
|
|
334
|
+
for (let t = 0; t < 256; t++) {
|
|
335
|
+
const n = U[t], i = Ge(n), s = i << 24 | n << 16 | n << 8 | i ^ n;
|
|
336
|
+
E[t] = s, S[t] = s >>> 8 | s << 24, R[t] = s >>> 16 | s << 16, A[t] = s >>> 24 | s << 8;
|
|
337
|
+
}
|
|
338
|
+
ve = !0;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
function dr(r, e) {
|
|
342
|
+
const t = r.length >> 2, n = t + 6, i = 4 * (n + 1);
|
|
343
|
+
let s = 1;
|
|
344
|
+
for (let c = 0; c < t; c++)
|
|
345
|
+
e[c] = r[4 * c] << 24 | r[4 * c + 1] << 16 | r[4 * c + 2] << 8 | r[4 * c + 3];
|
|
346
|
+
for (let c = t; c < i; c++) {
|
|
347
|
+
let u = e[c - 1];
|
|
348
|
+
c % t == 0 ? (u = ke(u << 8 | u >>> 24) ^ s << 24, s = Ge(s)) : t > 6 && c % t == 4 && (u = ke(u)), e[c] = e[c - t] ^ u;
|
|
349
|
+
}
|
|
350
|
+
return n;
|
|
351
|
+
}
|
|
352
|
+
function ke(r) {
|
|
353
|
+
return U[r >>> 24] << 24 | U[r >>> 16 & 255] << 16 | U[r >>> 8 & 255] << 8 | U[r & 255];
|
|
354
|
+
}
|
|
355
|
+
function J(r) {
|
|
356
|
+
return r << 24 | (r & 65280) << 8 | r >>> 8 & 65280 | r >>> 24;
|
|
357
|
+
}
|
|
358
|
+
function Ge(r) {
|
|
359
|
+
return (r << 1 ^ (r >> 7) * 27) & 255;
|
|
360
|
+
}
|
|
361
|
+
const hr = typeof crypto != B && typeof crypto.getRandomValues == j, Ke = "Invalid password", pr = "Invalid authentication code", Qe = "zipjs-abort-check-password", wr = "Crypto API not supported";
|
|
362
|
+
function Je(r) {
|
|
363
|
+
if (hr)
|
|
364
|
+
return crypto.getRandomValues(r);
|
|
365
|
+
throw new Error(wr);
|
|
366
|
+
}
|
|
367
|
+
const ye = 16, mr = "raw", _e = { name: "PBKDF2" }, gr = { name: "HMAC" }, yr = "SHA-1", $e = 1e3, br = Object.assign({ hash: gr }, _e), Er = Object.assign({ iterations: $e, hash: { name: yr } }, _e), Sr = ["deriveBits"], q = [8, 12, 16], Rr = [16, 24, 32], P = 10, pe = 2, et = typeof crypto != B, G = et && crypto.subtle, Ar = et && typeof G != B;
|
|
368
|
+
let xe = Ar && typeof G.importKey == j && typeof G.deriveBits == j, tt = ge;
|
|
369
|
+
class vr extends TransformStream {
|
|
370
|
+
constructor({ password: e, rawPassword: t, encryptionStrength: n, checkPasswordOnly: i, checkAuthenticationCode: s = !0 }) {
|
|
371
|
+
const c = {};
|
|
372
|
+
super({
|
|
373
|
+
start() {
|
|
374
|
+
rt(c, e, t, n);
|
|
375
|
+
},
|
|
376
|
+
async transform(u, w) {
|
|
377
|
+
const {
|
|
378
|
+
password: g,
|
|
379
|
+
strength: b,
|
|
380
|
+
resolveReady: y,
|
|
381
|
+
ready: l
|
|
382
|
+
} = c;
|
|
383
|
+
if (g ? (await zr(c, b, g, N(u, 0, q[b] + pe)), u = N(u, q[b] + pe), i ? (K(c), w.error(new Error(Qe))) : y()) : await l, c.discarded)
|
|
384
|
+
return;
|
|
385
|
+
const h = new Uint8Array(u.length - P - (u.length - P) % ye);
|
|
386
|
+
w.enqueue(it(c, u, h, 0, P, !0));
|
|
387
|
+
},
|
|
388
|
+
async flush(u) {
|
|
389
|
+
const {
|
|
390
|
+
engine: w,
|
|
391
|
+
pendingInput: g,
|
|
392
|
+
ready: b
|
|
393
|
+
} = c;
|
|
394
|
+
if (w) {
|
|
395
|
+
if (await b, c.discarded)
|
|
396
|
+
return;
|
|
397
|
+
const y = N(g, g.length - P), l = new Uint8Array(N(g, 0, g.length - P));
|
|
398
|
+
w.process(l, !0);
|
|
399
|
+
const h = w.digest();
|
|
400
|
+
let p = g.length < P ? 1 : 0;
|
|
401
|
+
for (let f = 0; f < P; f++)
|
|
402
|
+
p |= h[f] ^ y[f];
|
|
403
|
+
if (p && s) {
|
|
404
|
+
u.error(new Error(pr));
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
u.enqueue(l);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}), nt(this, c);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
class kr extends TransformStream {
|
|
414
|
+
constructor({ password: e, rawPassword: t, encryptionStrength: n }) {
|
|
415
|
+
const i = {};
|
|
416
|
+
super({
|
|
417
|
+
start() {
|
|
418
|
+
rt(i, e, t, n);
|
|
419
|
+
},
|
|
420
|
+
async transform(s, c) {
|
|
421
|
+
const {
|
|
422
|
+
password: u,
|
|
423
|
+
strength: w,
|
|
424
|
+
resolveReady: g,
|
|
425
|
+
ready: b
|
|
426
|
+
} = i;
|
|
427
|
+
let y = Pe;
|
|
428
|
+
if (u ? (y = await Ur(i, w, u), g()) : await b, i.discarded)
|
|
429
|
+
return;
|
|
430
|
+
const l = new Uint8Array(y.length + s.length - s.length % ye);
|
|
431
|
+
l.set(y, 0), c.enqueue(it(i, s, l, y.length, 0, !1));
|
|
432
|
+
},
|
|
433
|
+
async flush(s) {
|
|
434
|
+
const {
|
|
435
|
+
engine: c,
|
|
436
|
+
pendingInput: u,
|
|
437
|
+
ready: w
|
|
438
|
+
} = i;
|
|
439
|
+
if (c) {
|
|
440
|
+
if (await w, i.discarded)
|
|
441
|
+
return;
|
|
442
|
+
const g = new Uint8Array(u);
|
|
443
|
+
c.process(g, !1);
|
|
444
|
+
const b = N(c.digest(), 0, P);
|
|
445
|
+
s.enqueue(W(g, b));
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}), nt(this, i);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
function xr(r) {
|
|
452
|
+
tt = r || ge;
|
|
453
|
+
}
|
|
454
|
+
function rt(r, e, t, n) {
|
|
455
|
+
Object.assign(r, {
|
|
456
|
+
ready: new Promise((i) => r.resolveReady = i),
|
|
457
|
+
password: Cr(e, t),
|
|
458
|
+
strength: n - 1,
|
|
459
|
+
pendingInput: Pe,
|
|
460
|
+
discarded: !1
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
function nt(r, e) {
|
|
464
|
+
const t = r.readable.getReader(), n = new ReadableStream({
|
|
465
|
+
async pull(i) {
|
|
466
|
+
try {
|
|
467
|
+
const { value: s, done: c } = await t.read();
|
|
468
|
+
c ? i.close() : i.enqueue(s);
|
|
469
|
+
} catch (s) {
|
|
470
|
+
throw K(e), t.cancel(s).catch(() => {
|
|
471
|
+
}), s;
|
|
472
|
+
}
|
|
473
|
+
},
|
|
474
|
+
cancel(i) {
|
|
475
|
+
return K(e), t.cancel(i);
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
Object.defineProperty(r, "readable", {
|
|
479
|
+
get() {
|
|
480
|
+
return n;
|
|
481
|
+
}
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
function it(r, e, t, n, i, s) {
|
|
485
|
+
const {
|
|
486
|
+
engine: c,
|
|
487
|
+
pendingInput: u
|
|
488
|
+
} = r;
|
|
489
|
+
u.length && (e = W(u, e));
|
|
490
|
+
const w = e.length - i, g = w - w % ye;
|
|
491
|
+
if (t = Tr(t, n + g), g) {
|
|
492
|
+
const b = N(t, n, n + g);
|
|
493
|
+
b.set(N(e, 0, g)), c.process(b, s);
|
|
494
|
+
}
|
|
495
|
+
return r.pendingInput = N(e, g), t;
|
|
496
|
+
}
|
|
497
|
+
async function zr(r, e, t, n) {
|
|
498
|
+
const i = await at(r, e, t, N(n, 0, q[e])), s = N(n, q[e]);
|
|
499
|
+
if (i[0] != s[0] || i[1] != s[1])
|
|
500
|
+
throw K(r), new Error(Ke);
|
|
501
|
+
}
|
|
502
|
+
function K(r) {
|
|
503
|
+
const { engine: e } = r;
|
|
504
|
+
r.discarded = !0, e && e.dispose && e.dispose();
|
|
505
|
+
}
|
|
506
|
+
async function Ur(r, e, t) {
|
|
507
|
+
const n = Je(new Uint8Array(q[e])), i = await at(r, e, t, n);
|
|
508
|
+
return W(n, i);
|
|
509
|
+
}
|
|
510
|
+
async function at(r, e, t, n) {
|
|
511
|
+
r.password = null;
|
|
512
|
+
const i = Rr[e], s = await Ir(t, n, i * 2 + pe);
|
|
513
|
+
return r.engine = tt(N(s, 0, i), N(s, i, i * 2)), r.discarded && K(r), N(s, i * 2);
|
|
514
|
+
}
|
|
515
|
+
async function Ir(r, e, t) {
|
|
516
|
+
if (xe)
|
|
517
|
+
try {
|
|
518
|
+
const n = await G.importKey(mr, r, br, !1, Sr);
|
|
519
|
+
return new Uint8Array(await G.deriveBits(Object.assign({ salt: e }, Er), n, t * 8));
|
|
520
|
+
} catch {
|
|
521
|
+
xe = !1;
|
|
522
|
+
}
|
|
523
|
+
return lr(r, e, $e, t);
|
|
524
|
+
}
|
|
525
|
+
function Cr(r, e) {
|
|
526
|
+
return e === C ? tr(r) : e;
|
|
527
|
+
}
|
|
528
|
+
function Tr(r, e) {
|
|
529
|
+
if (e && e > r.length) {
|
|
530
|
+
const t = r;
|
|
531
|
+
r = new Uint8Array(e), r.set(t, 0);
|
|
532
|
+
}
|
|
533
|
+
return r;
|
|
534
|
+
}
|
|
535
|
+
function N(r, e, t) {
|
|
536
|
+
return r.subarray(e, t);
|
|
537
|
+
}
|
|
538
|
+
const H = 12;
|
|
539
|
+
class Dr extends TransformStream {
|
|
540
|
+
constructor({ password: e, rawPassword: t, passwordVerification: n, checkPasswordOnly: i }) {
|
|
541
|
+
super({
|
|
542
|
+
start() {
|
|
543
|
+
st(this, e, t, n);
|
|
544
|
+
},
|
|
545
|
+
transform(s, c) {
|
|
546
|
+
const u = this;
|
|
547
|
+
if (u.password || u.rawPassword) {
|
|
548
|
+
const w = ze(u, s.subarray(0, H));
|
|
549
|
+
if (u.password = u.rawPassword = null, (w[H - 1] ^ u.passwordVerification) != 0)
|
|
550
|
+
throw new Error(Ke);
|
|
551
|
+
s = s.subarray(H);
|
|
552
|
+
}
|
|
553
|
+
i ? c.error(new Error(Qe)) : c.enqueue(ze(u, s));
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
class Lr extends TransformStream {
|
|
559
|
+
constructor({ password: e, rawPassword: t, passwordVerification: n }) {
|
|
560
|
+
super({
|
|
561
|
+
start() {
|
|
562
|
+
st(this, e, t, n);
|
|
563
|
+
},
|
|
564
|
+
transform(i, s) {
|
|
565
|
+
const c = this;
|
|
566
|
+
let u, w;
|
|
567
|
+
if (c.password || c.rawPassword) {
|
|
568
|
+
c.password = c.rawPassword = null;
|
|
569
|
+
const g = Je(new Uint8Array(H));
|
|
570
|
+
g[H - 1] = c.passwordVerification, u = new Uint8Array(i.length + g.length), u.set(Ue(c, g), 0), w = H;
|
|
571
|
+
} else
|
|
572
|
+
u = new Uint8Array(i.length), w = 0;
|
|
573
|
+
u.set(Ue(c, i), w), s.enqueue(u);
|
|
574
|
+
}
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
function st(r, e, t, n) {
|
|
579
|
+
Object.assign(r, {
|
|
580
|
+
password: e,
|
|
581
|
+
rawPassword: t,
|
|
582
|
+
passwordVerification: n
|
|
583
|
+
}), Nr(r, e, t);
|
|
584
|
+
}
|
|
585
|
+
function ze(r, e) {
|
|
586
|
+
const t = new Uint8Array(e.length);
|
|
587
|
+
for (let n = 0; n < e.length; n++)
|
|
588
|
+
t[n] = ot(r) ^ e[n], te(r, t[n]);
|
|
589
|
+
return t;
|
|
590
|
+
}
|
|
591
|
+
function Ue(r, e) {
|
|
592
|
+
const t = new Uint8Array(e.length);
|
|
593
|
+
for (let n = 0; n < e.length; n++)
|
|
594
|
+
t[n] = ot(r) ^ e[n], te(r, e[n]);
|
|
595
|
+
return t;
|
|
596
|
+
}
|
|
597
|
+
function Nr(r, e, t) {
|
|
598
|
+
const n = [305419896, 591751049, 878082192];
|
|
599
|
+
if (Object.assign(r, {
|
|
600
|
+
cryptoKeys: n,
|
|
601
|
+
crcKey0: new ee(n[0]),
|
|
602
|
+
crcKey2: new ee(n[2])
|
|
603
|
+
}), t)
|
|
604
|
+
for (let i = 0; i < t.length; i++)
|
|
605
|
+
te(r, t[i]);
|
|
606
|
+
else
|
|
607
|
+
for (let i = 0; i < e.length; i++)
|
|
608
|
+
te(r, e.charCodeAt(i));
|
|
609
|
+
}
|
|
610
|
+
function te(r, e) {
|
|
611
|
+
let [, t] = r.cryptoKeys;
|
|
612
|
+
r.crcKey0.append([e]);
|
|
613
|
+
const n = ~r.crcKey0.get();
|
|
614
|
+
t = Ie(Math.imul(Ie(t + ct(n)), 134775813) + 1), r.crcKey2.append([t >>> 24]);
|
|
615
|
+
const i = ~r.crcKey2.get();
|
|
616
|
+
r.cryptoKeys = [n, t, i];
|
|
617
|
+
}
|
|
618
|
+
function ot(r) {
|
|
619
|
+
const e = r.cryptoKeys[2] | 2;
|
|
620
|
+
return ct(Math.imul(e, e ^ 1) >>> 8);
|
|
621
|
+
}
|
|
622
|
+
function ct(r) {
|
|
623
|
+
return r & 255;
|
|
624
|
+
}
|
|
625
|
+
function Ie(r) {
|
|
626
|
+
return r & 4294967295;
|
|
627
|
+
}
|
|
628
|
+
function Or(r) {
|
|
629
|
+
if (r instanceof ReadableStream)
|
|
630
|
+
return r;
|
|
631
|
+
const e = r.getReader();
|
|
632
|
+
return new ReadableStream({
|
|
633
|
+
async pull(t) {
|
|
634
|
+
try {
|
|
635
|
+
const { value: n, done: i } = await e.read();
|
|
636
|
+
i ? t.close() : t.enqueue(n);
|
|
637
|
+
} catch (n) {
|
|
638
|
+
throw e.cancel(n).catch(() => {
|
|
639
|
+
}), n;
|
|
640
|
+
}
|
|
641
|
+
},
|
|
642
|
+
cancel(t) {
|
|
643
|
+
return e.cancel(t);
|
|
644
|
+
}
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
const Fr = "Compression method not supported", Pr = /* @__PURE__ */ new Map();
|
|
648
|
+
function lt(r) {
|
|
649
|
+
return Pr.get(r);
|
|
650
|
+
}
|
|
651
|
+
const we = "Invalid uncompressed size", Br = "Invalid compressed data", ut = "Codec out of memory", ft = "Invalid CRC32", Mr = "Z_MEM_ERROR", Wr = "deflate-raw", Hr = "deflate64-raw", re = "gzip", dt = 10, me = 8, jr = [31, 139, 8];
|
|
652
|
+
class Zr extends TransformStream {
|
|
653
|
+
constructor(e, { chunkSize: t, CompressionStreamFallback: n, CompressionStream: i }) {
|
|
654
|
+
super({});
|
|
655
|
+
const { compressed: s, encrypted: c, useCompressionStream: u, zipCrypto: w, computeCrc32: g, level: b, deflate64: y, format: l, compressionMethod: h, inputSize: p } = e, f = this;
|
|
656
|
+
let d, a, o, m = super.readable;
|
|
657
|
+
const v = l && lt(l), k = wt(u, i, n), x = g && s && !y && !v && (!c || w) && !!k;
|
|
658
|
+
if ((!c || w) && g && !x && (d = new Xe(), m = F(m, d)), s)
|
|
659
|
+
if (v)
|
|
660
|
+
m = X(m, pt(v.CompressionStream, l, { level: b, chunkSize: t, compressionMethod: h, uncompressedSize: p }));
|
|
661
|
+
else if (x)
|
|
662
|
+
o = new Ce(), m = X(m, new k(re, { level: b, chunkSize: t })), m = F(m, o);
|
|
663
|
+
else
|
|
664
|
+
try {
|
|
665
|
+
m = mt(m, u, { level: b, chunkSize: t }, i, n);
|
|
666
|
+
} catch (z) {
|
|
667
|
+
if (!u && n)
|
|
668
|
+
throw ie(z);
|
|
669
|
+
let T;
|
|
670
|
+
try {
|
|
671
|
+
T = new i(re);
|
|
672
|
+
} catch {
|
|
673
|
+
throw ie(z);
|
|
674
|
+
}
|
|
675
|
+
m = X(m, T), m = F(m, new Ce());
|
|
676
|
+
}
|
|
677
|
+
c && (w ? m = F(m, new Lr(e)) : (a = new kr(e), m = F(m, a))), ht(f, m, () => {
|
|
678
|
+
(!c || w) && g && (f.crc32 = x ? o.crc32 : new DataView(d.value.buffer).getUint32(0));
|
|
679
|
+
});
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
class Ce extends TransformStream {
|
|
683
|
+
constructor() {
|
|
684
|
+
let e, t = dt, n = new Uint8Array(0);
|
|
685
|
+
super({
|
|
686
|
+
transform(i, s) {
|
|
687
|
+
if (t) {
|
|
688
|
+
const g = Math.min(t, i.length);
|
|
689
|
+
if (t -= g, i = i.subarray(g), !i.length)
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
692
|
+
const c = n.length + i.length;
|
|
693
|
+
if (c <= me) {
|
|
694
|
+
n = W(n, i);
|
|
695
|
+
return;
|
|
696
|
+
}
|
|
697
|
+
const u = c - me, w = Math.min(u, n.length);
|
|
698
|
+
s.enqueue(W(
|
|
699
|
+
n.subarray(0, w),
|
|
700
|
+
i.subarray(0, u - w)
|
|
701
|
+
)), n = W(
|
|
702
|
+
n.subarray(w),
|
|
703
|
+
i.subarray(u - w)
|
|
704
|
+
);
|
|
705
|
+
},
|
|
706
|
+
flush() {
|
|
707
|
+
const i = Ye(n);
|
|
708
|
+
e.crc32 = i.getUint32(0, !0), e.uncompressedSize = i.getUint32(4, !0);
|
|
709
|
+
}
|
|
710
|
+
}), e = this;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
function Vr(r, e, t, n, i) {
|
|
714
|
+
const s = e.writable.getWriter(), c = e.readable.getReader(), u = n === C ? new ee() : C;
|
|
715
|
+
let w = 0, g = !1, b = !1, y, l;
|
|
716
|
+
const h = new ReadableStream({
|
|
717
|
+
start(v) {
|
|
718
|
+
l = v;
|
|
719
|
+
},
|
|
720
|
+
pull() {
|
|
721
|
+
o();
|
|
722
|
+
},
|
|
723
|
+
cancel(v) {
|
|
724
|
+
return b = !0, o(), c.cancel(v);
|
|
725
|
+
}
|
|
726
|
+
});
|
|
727
|
+
return p(), f(), h;
|
|
728
|
+
async function p() {
|
|
729
|
+
const v = r.getReader();
|
|
730
|
+
try {
|
|
731
|
+
const k = new Uint8Array(dt);
|
|
732
|
+
for (k.set(jr), await s.write(k); ; ) {
|
|
733
|
+
await a(), await s.ready;
|
|
734
|
+
const { value: T, done: ce } = await yt(v, i);
|
|
735
|
+
if (ce)
|
|
736
|
+
break;
|
|
737
|
+
await s.write(T);
|
|
738
|
+
}
|
|
739
|
+
u && await s.write(new Uint8Array(0));
|
|
740
|
+
const x = new Uint8Array(me), z = Ye(x);
|
|
741
|
+
z.setUint32(0, u ? u.get() : n, !0), z.setUint32(4, t, !0), g = !0, await s.write(x), await s.close();
|
|
742
|
+
} catch (k) {
|
|
743
|
+
await gt(s, k), await ne(v, k);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
async function f() {
|
|
747
|
+
try {
|
|
748
|
+
for (; ; ) {
|
|
749
|
+
const { value: v, done: k } = await d();
|
|
750
|
+
if (k)
|
|
751
|
+
break;
|
|
752
|
+
if (w += v.length, w > t)
|
|
753
|
+
throw new Error(we);
|
|
754
|
+
u && u.append(v), l.enqueue(v);
|
|
755
|
+
}
|
|
756
|
+
b || (b = !0, l.close());
|
|
757
|
+
} catch (v) {
|
|
758
|
+
m(v), await ne(c, v);
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
function d() {
|
|
762
|
+
return c.read().catch((v) => {
|
|
763
|
+
if (g) {
|
|
764
|
+
if (!u)
|
|
765
|
+
throw ae(v, ft);
|
|
766
|
+
if (w != t)
|
|
767
|
+
throw ae(v, we);
|
|
768
|
+
return { done: !0 };
|
|
769
|
+
}
|
|
770
|
+
throw bt(v, i);
|
|
771
|
+
});
|
|
772
|
+
}
|
|
773
|
+
function a() {
|
|
774
|
+
if (!b && l.desiredSize <= 0)
|
|
775
|
+
return new Promise((v) => y = v);
|
|
776
|
+
}
|
|
777
|
+
function o() {
|
|
778
|
+
if (y) {
|
|
779
|
+
const v = y;
|
|
780
|
+
y = C, v();
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
function m(v) {
|
|
784
|
+
b || (b = !0, l.error(v), o());
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
class Yr extends TransformStream {
|
|
788
|
+
constructor(e, { chunkSize: t, DecompressionStreamFallback: n, DecompressionStream: i }) {
|
|
789
|
+
super({});
|
|
790
|
+
const { zipCrypto: s, encrypted: c, checkCrc32: u, crc32: w, compressed: g, useCompressionStream: b, deflate64: y, format: l, compressionMethod: h, rawBitFlag: p, outputSize: f } = e;
|
|
791
|
+
let d, a, o, m = super.readable;
|
|
792
|
+
if (c && (s ? m = F(m, new Dr(e)) : (a = new vr(e), m = F(m, a))), g) {
|
|
793
|
+
const v = /* @__PURE__ */ new Set(), k = l && lt(l);
|
|
794
|
+
let x;
|
|
795
|
+
if (k)
|
|
796
|
+
m = X(m, pt(k.DecompressionStream, l, { chunkSize: t, compressionMethod: h, rawBitFlag: p, uncompressedSize: f }), v);
|
|
797
|
+
else {
|
|
798
|
+
const z = wt(b, i, n);
|
|
799
|
+
if (u && !y && w !== C && f !== C && z)
|
|
800
|
+
try {
|
|
801
|
+
x = new z(re, { chunkSize: t });
|
|
802
|
+
} catch {
|
|
803
|
+
x = C;
|
|
804
|
+
}
|
|
805
|
+
if (!x)
|
|
806
|
+
try {
|
|
807
|
+
m = mt(m, b, { chunkSize: t, deflate64: y }, i, n, v);
|
|
808
|
+
} catch (T) {
|
|
809
|
+
if (y || f === C || !b && n)
|
|
810
|
+
throw ie(T);
|
|
811
|
+
try {
|
|
812
|
+
x = new i(re);
|
|
813
|
+
} catch {
|
|
814
|
+
throw ie(T);
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
x ? (o = !0, m = Vr(m, x, f, w, v)) : m = Xr(m, v);
|
|
819
|
+
}
|
|
820
|
+
u && !o && (d = new Xe(), m = F(m, d)), ht(this, m, () => {
|
|
821
|
+
if (d) {
|
|
822
|
+
const v = new DataView(d.value.buffer).getUint32(0, !1);
|
|
823
|
+
if (w != v)
|
|
824
|
+
throw new Error(ft);
|
|
825
|
+
}
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
function ht(r, e, t) {
|
|
830
|
+
e = F(e, new TransformStream({ flush: t })), Object.defineProperty(r, "readable", {
|
|
831
|
+
get() {
|
|
832
|
+
return e;
|
|
833
|
+
}
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
function pt(r, e, t) {
|
|
837
|
+
if (!r)
|
|
838
|
+
throw new Error(Fr);
|
|
839
|
+
return new r(e, t);
|
|
840
|
+
}
|
|
841
|
+
function wt(r, e, t) {
|
|
842
|
+
if (r && e)
|
|
843
|
+
return e;
|
|
844
|
+
if (t && t.requiresModule)
|
|
845
|
+
return t;
|
|
846
|
+
}
|
|
847
|
+
function mt(r, e, t, n, i, s) {
|
|
848
|
+
const c = e && n ? n : i || n, u = t.deflate64 ? Hr : Wr;
|
|
849
|
+
let w;
|
|
850
|
+
try {
|
|
851
|
+
w = new c(u, t);
|
|
852
|
+
} catch (g) {
|
|
853
|
+
if (e && i && c != i)
|
|
854
|
+
w = new i(u, t);
|
|
855
|
+
else
|
|
856
|
+
throw g;
|
|
857
|
+
}
|
|
858
|
+
return X(r, w, s);
|
|
859
|
+
}
|
|
860
|
+
function F(r, e) {
|
|
861
|
+
return Or(r).pipeThrough(e);
|
|
862
|
+
}
|
|
863
|
+
function X(r, e, t) {
|
|
864
|
+
const n = e.writable.getWriter(), i = r.getReader();
|
|
865
|
+
return s(), e.readable;
|
|
866
|
+
async function s() {
|
|
867
|
+
try {
|
|
868
|
+
for (; ; ) {
|
|
869
|
+
await n.ready;
|
|
870
|
+
const c = await yt(i, t);
|
|
871
|
+
if (c.done) {
|
|
872
|
+
await n.close();
|
|
873
|
+
break;
|
|
874
|
+
}
|
|
875
|
+
await n.write(c.value);
|
|
876
|
+
}
|
|
877
|
+
} catch (c) {
|
|
878
|
+
await gt(n, c), await ne(i, c);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
async function gt(r, e) {
|
|
883
|
+
try {
|
|
884
|
+
await r.abort(e);
|
|
885
|
+
} catch {
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
async function ne(r, e) {
|
|
889
|
+
try {
|
|
890
|
+
await r.cancel(e);
|
|
891
|
+
} catch {
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
function yt(r, e) {
|
|
895
|
+
const t = r.read();
|
|
896
|
+
return e ? t.catch((n) => {
|
|
897
|
+
throw e.add(n), n;
|
|
898
|
+
}) : t;
|
|
899
|
+
}
|
|
900
|
+
function bt(r, e) {
|
|
901
|
+
return e.has(r) ? r : ae(r, Et(r) ? ut : Br);
|
|
902
|
+
}
|
|
903
|
+
function ie(r) {
|
|
904
|
+
return Et(r) ? ae(r, ut) : r;
|
|
905
|
+
}
|
|
906
|
+
function Et(r) {
|
|
907
|
+
return qt(r) && r.code == Mr;
|
|
908
|
+
}
|
|
909
|
+
function ae(r, e) {
|
|
910
|
+
const t = new Error(e);
|
|
911
|
+
return t.cause = r, t;
|
|
912
|
+
}
|
|
913
|
+
function Xr(r, e) {
|
|
914
|
+
const t = r.getReader();
|
|
915
|
+
return new ReadableStream({
|
|
916
|
+
async pull(n) {
|
|
917
|
+
try {
|
|
918
|
+
const { value: i, done: s } = await t.read();
|
|
919
|
+
s ? n.close() : n.enqueue(i);
|
|
920
|
+
} catch (i) {
|
|
921
|
+
throw await ne(t, i), bt(i, e);
|
|
922
|
+
}
|
|
923
|
+
},
|
|
924
|
+
cancel(n) {
|
|
925
|
+
return t.cancel(n);
|
|
926
|
+
}
|
|
927
|
+
});
|
|
928
|
+
}
|
|
929
|
+
const qr = 64 * 1024, Gr = "deflate", Kr = "inflate";
|
|
930
|
+
class yn extends TransformStream {
|
|
931
|
+
constructor(e, t) {
|
|
932
|
+
super({});
|
|
933
|
+
const n = this, { codecType: i } = e;
|
|
934
|
+
let s;
|
|
935
|
+
i.startsWith(Gr) ? s = Zr : i.startsWith(Kr) && (s = Yr), n.outputSize = 0;
|
|
936
|
+
let c = 0;
|
|
937
|
+
const u = new s(e, t), w = super.readable, g = new TransformStream({
|
|
938
|
+
transform(y, l) {
|
|
939
|
+
y && y.length && (c += y.length, l.enqueue(y));
|
|
940
|
+
},
|
|
941
|
+
flush() {
|
|
942
|
+
Object.assign(n, {
|
|
943
|
+
inputSize: c
|
|
944
|
+
});
|
|
945
|
+
}
|
|
946
|
+
}), b = new TransformStream({
|
|
947
|
+
transform(y, l) {
|
|
948
|
+
if (y && y.length && (l.enqueue(y), n.outputSize += y.length, e.outputSize !== C && n.outputSize > e.outputSize))
|
|
949
|
+
throw new Error(we);
|
|
950
|
+
},
|
|
951
|
+
flush() {
|
|
952
|
+
const { crc32: y } = u;
|
|
953
|
+
Object.assign(n, {
|
|
954
|
+
crc32: y,
|
|
955
|
+
inputSize: c
|
|
956
|
+
});
|
|
957
|
+
}
|
|
958
|
+
});
|
|
959
|
+
Object.defineProperty(n, "readable", {
|
|
960
|
+
get() {
|
|
961
|
+
return w.pipeThrough(g).pipeThrough(u).pipeThrough(b);
|
|
962
|
+
}
|
|
963
|
+
});
|
|
964
|
+
}
|
|
965
|
+
}
|
|
966
|
+
class bn extends TransformStream {
|
|
967
|
+
constructor(e) {
|
|
968
|
+
const t = [];
|
|
969
|
+
let n = 0, i = 0;
|
|
970
|
+
(!Number.isFinite(e) || e < 1) && (e = qr), super({
|
|
971
|
+
transform(u, w) {
|
|
972
|
+
for (t.push(u), n += u.length; n > e; )
|
|
973
|
+
i += e, w.enqueue(s());
|
|
974
|
+
},
|
|
975
|
+
flush(u) {
|
|
976
|
+
n && (i += n, u.enqueue(c(t, n)));
|
|
977
|
+
}
|
|
978
|
+
}), Object.defineProperty(this, "outputSize", {
|
|
979
|
+
get: () => i
|
|
980
|
+
});
|
|
981
|
+
function s() {
|
|
982
|
+
const u = new Uint8Array(e);
|
|
983
|
+
let w = 0;
|
|
984
|
+
for (; w < e; ) {
|
|
985
|
+
const g = t[0], b = e - w;
|
|
986
|
+
g.length <= b ? (u.set(g, w), w += g.length, t.shift()) : (u.set(g.subarray(0, b), w), t[0] = g.subarray(b), w += b);
|
|
987
|
+
}
|
|
988
|
+
return n -= e, u;
|
|
989
|
+
}
|
|
990
|
+
function c(u, w) {
|
|
991
|
+
const g = new Uint8Array(w);
|
|
992
|
+
let b = 0;
|
|
993
|
+
for (const y of u)
|
|
994
|
+
g.set(y, b), b += y.length;
|
|
995
|
+
return g;
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
class En extends TransformStream {
|
|
1000
|
+
constructor({ onstart: e, onprogress: t, size: n, onend: i }) {
|
|
1001
|
+
let s = 0;
|
|
1002
|
+
super({
|
|
1003
|
+
async start() {
|
|
1004
|
+
e && await ue(e, n);
|
|
1005
|
+
},
|
|
1006
|
+
async transform(c, u) {
|
|
1007
|
+
s += c.length, t && await ue(t, s, n), u.enqueue(c);
|
|
1008
|
+
},
|
|
1009
|
+
async flush() {
|
|
1010
|
+
i && await ue(i, s);
|
|
1011
|
+
}
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
async function ue(r, ...e) {
|
|
1016
|
+
try {
|
|
1017
|
+
await r(...e);
|
|
1018
|
+
} catch {
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
let Qr = !0;
|
|
1022
|
+
try {
|
|
1023
|
+
Qr = typeof structuredClone == j && structuredClone(new DOMException("", "AbortError")).code !== C;
|
|
1024
|
+
} catch {
|
|
1025
|
+
}
|
|
1026
|
+
BigInt(Number.MAX_SAFE_INTEGER);
|
|
1027
|
+
BigInt(0);
|
|
1028
|
+
BigInt("0x7fffffffffffffff");
|
|
1029
|
+
try {
|
|
1030
|
+
se({ baseURI: import.meta.url });
|
|
1031
|
+
} catch {
|
|
1032
|
+
}
|
|
1033
|
+
const Jr = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258], _r = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], $r = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577], en = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], tn = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], V = new Uint8Array(288);
|
|
1034
|
+
V.fill(8, 0, 144), V.fill(9, 144, 256), V.fill(7, 256, 280), V.fill(8, 280, 288);
|
|
1035
|
+
const rn = new Uint8Array(30).fill(5);
|
|
1036
|
+
function Z(r) {
|
|
1037
|
+
const e = new Uint16Array(16);
|
|
1038
|
+
for (const i of r) e[i]++;
|
|
1039
|
+
e[0] = 0;
|
|
1040
|
+
const t = new Uint16Array(17);
|
|
1041
|
+
for (let i = 1; i <= 15; i++) t[i + 1] = t[i] + e[i];
|
|
1042
|
+
const n = new Uint16Array(r.length);
|
|
1043
|
+
for (let i = 0; i < r.length; i++) r[i] && (n[t[r[i]]++] = i);
|
|
1044
|
+
return { lengthCounts: e, symbols: n };
|
|
1045
|
+
}
|
|
1046
|
+
const D = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
1047
|
+
function nn(r) {
|
|
1048
|
+
let e;
|
|
1049
|
+
r({ wasmURI: () => (e || (e = "data:application/wasm;base64," + (function(t) {
|
|
1050
|
+
let n = "";
|
|
1051
|
+
const i = t.length;
|
|
1052
|
+
let s = 0;
|
|
1053
|
+
for (; s + 2 < i; s += 3) {
|
|
1054
|
+
const u = t[s] << 16 | t[s + 1] << 8 | t[s + 2];
|
|
1055
|
+
n += D[u >> 18 & 63] + D[u >> 12 & 63] + D[u >> 6 & 63] + D[63 & u];
|
|
1056
|
+
}
|
|
1057
|
+
const c = i - s;
|
|
1058
|
+
if (c === 1) {
|
|
1059
|
+
const u = t[s] << 16;
|
|
1060
|
+
n += D[u >> 18 & 63] + D[u >> 12 & 63] + "==";
|
|
1061
|
+
} else if (c === 2) {
|
|
1062
|
+
const u = t[s] << 16 | t[s + 1] << 8;
|
|
1063
|
+
n += D[u >> 18 & 63] + D[u >> 12 & 63] + D[u >> 6 & 63] + "=";
|
|
1064
|
+
}
|
|
1065
|
+
return n;
|
|
1066
|
+
})((function(t) {
|
|
1067
|
+
let n = 0, i = 0, s = 0, c = new Uint8Array(1024), u = 0, w = 0;
|
|
1068
|
+
for (; !w; ) {
|
|
1069
|
+
w = b(1);
|
|
1070
|
+
const d = b(2);
|
|
1071
|
+
if (d == 0) y();
|
|
1072
|
+
else if (d == 1) l(Z(V), Z(rn));
|
|
1073
|
+
else {
|
|
1074
|
+
if (d != 2) throw new Error("invalid deflate block type");
|
|
1075
|
+
l(...h());
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
return c.subarray(0, u);
|
|
1079
|
+
function g() {
|
|
1080
|
+
if (n >= t.length) throw new Error("unexpected end of deflate data");
|
|
1081
|
+
return t[n++];
|
|
1082
|
+
}
|
|
1083
|
+
function b(d) {
|
|
1084
|
+
for (; s < d; ) i |= g() << s, s += 8;
|
|
1085
|
+
const a = i & (1 << d) - 1;
|
|
1086
|
+
return i >>>= d, s -= d, a;
|
|
1087
|
+
}
|
|
1088
|
+
function y() {
|
|
1089
|
+
i = 0, s = 0;
|
|
1090
|
+
const d = g() | g() << 8;
|
|
1091
|
+
n += 2, f(u + d);
|
|
1092
|
+
for (let a = 0; a < d; a++) c[u++] = g();
|
|
1093
|
+
}
|
|
1094
|
+
function l(d, a) {
|
|
1095
|
+
let o = p(d);
|
|
1096
|
+
for (; o != 256; ) {
|
|
1097
|
+
if (o < 256) f(u + 1), c[u++] = o;
|
|
1098
|
+
else {
|
|
1099
|
+
const m = o - 257, v = Jr[m] + b(_r[m]), k = p(a), x = $r[k] + b(en[k]);
|
|
1100
|
+
f(u + v);
|
|
1101
|
+
const z = u - x;
|
|
1102
|
+
for (let T = 0; T < v; T++) c[u++] = c[z + T];
|
|
1103
|
+
}
|
|
1104
|
+
o = p(d);
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
function h() {
|
|
1108
|
+
const d = b(5) + 257, a = b(5) + 1, o = b(4) + 4, m = new Uint8Array(19);
|
|
1109
|
+
for (let z = 0; z < o; z++) m[tn[z]] = b(3);
|
|
1110
|
+
const v = Z(m), k = new Uint8Array(d + a);
|
|
1111
|
+
let x = 0;
|
|
1112
|
+
for (; x < k.length; ) {
|
|
1113
|
+
const z = p(v);
|
|
1114
|
+
if (z < 16) k[x++] = z;
|
|
1115
|
+
else if (z == 16) {
|
|
1116
|
+
const T = k[x - 1];
|
|
1117
|
+
let ce = b(2) + 3;
|
|
1118
|
+
for (; ce--; ) k[x++] = T;
|
|
1119
|
+
} else x += z == 17 ? b(3) + 3 : b(7) + 11;
|
|
1120
|
+
}
|
|
1121
|
+
return [Z(k.subarray(0, d)), Z(k.subarray(d))];
|
|
1122
|
+
}
|
|
1123
|
+
function p(d) {
|
|
1124
|
+
const { lengthCounts: a, symbols: o } = d;
|
|
1125
|
+
let m = 0, v = 0, k = 0;
|
|
1126
|
+
for (let x = 1; x <= 15; x++) {
|
|
1127
|
+
m |= b(1);
|
|
1128
|
+
const z = a[x];
|
|
1129
|
+
if (m - v < z) return o[k + (m - v)];
|
|
1130
|
+
k += z, v = v + z << 1, m <<= 1;
|
|
1131
|
+
}
|
|
1132
|
+
throw new Error("invalid huffman code");
|
|
1133
|
+
}
|
|
1134
|
+
function f(d) {
|
|
1135
|
+
if (c.length < d) {
|
|
1136
|
+
let a = 2 * c.length;
|
|
1137
|
+
for (; a < d; ) a *= 2;
|
|
1138
|
+
const o = new Uint8Array(a);
|
|
1139
|
+
o.set(c.subarray(0, u)), c = o;
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
})((function(t) {
|
|
1143
|
+
const n = (t = String(t).replace(/[^A-Za-z0-9+/=]/g, "")).length, i = [];
|
|
1144
|
+
for (let s = 0; s < n; s += 4) {
|
|
1145
|
+
const c = D.indexOf(t[s]) << 18 | D.indexOf(t[s + 1]) << 12 | (63 & D.indexOf(t[s + 2])) << 6 | 63 & D.indexOf(t[s + 3]);
|
|
1146
|
+
i.push(c >> 16 & 255), t[s + 2] !== "=" && i.push(c >> 8 & 255), t[s + 3] !== "=" && i.push(255 & c);
|
|
1147
|
+
}
|
|
1148
|
+
return new Uint8Array(i);
|
|
1149
|
+
})("zb19kF3HdSfW3bfvx3v3vXl3gAEwwIDAuRcQNZQ4AClRA4qkpWmIg+EQhKh19Ier4ioSAkcS7gMBvvdGIOWlOUPxw5BNaRGHUdEOa43YSqRykRUmy93IDncFr+m1dq3d0BttLROpUqpYZWsTpYrKslysFEOGv3P6vo/5AEAStsMp8N17++v06dOnT58+57Q63rtfK6X0fzp2r1lZUffqFb2CJ71yb7DCP3pF8aO6V+mVe+2KPKp7oxX+T6/cG6/0H63/1Y/olXtD/zX49LFEW6W1jSJtdM3UNf4zxtSM1irQQVAP0yAIlDKN0NjY2liFYRhqYwNjjTEqaupQaaViZZPAhvoBXa+HkdZfMV8xUaJXtHvhO2Ea/5ml6P6l+890v2xU4+Tpz586vrz08XtOLz2okvH+68nTJ5fv6R5/UNWaI99UmvXfH+ieObHU66nGoJal0/ep1vb+66njveV7Tpw53fvS/Uv3qSz1CdJYVUrqHc+GX7npLeMjn77wKycfUFtb1bd+6/1aufFt1dvatu9bGm67euO2J7LhV2572/jIJ257e6v6VrW9o18r2t5pP99dWlJmW/VxDQjR/cdPnTpzQunG8aXePV+8//gJBmau2X9laFzWf6/auWNQAg0tppzz5PFTJ39lSamd99xz8vR9J7tLJ5bv+fyXTp9YPnnm9D3Lxz93akmrnfcs3d870T35wPLS6Xt6y8dPtO/pLvWWz3SXVLR7XdIXlpbvOfGlbnfp9LKKi3vuOfHQ8XtOnj7RXbp/6fTyPUsPnVh6gCvvLn3+xJkvnV5Wd9ZaWjmd1tTU7ubk0UO3fKL+0rPBMaPS735Qpyv7lMvaRX2/MnPr/0i51/UxO+ce3zZtVBG4jJRLS/dG0MHD4lQRueBsoc4W2gUdixLarfSc7pAqC+OC5UK757aVhSI9bV7cVuhpkxThEa6RAvcImQc7s0Y1dEohqVnTIEXhrElS0i4pc0WauBbjgu6ssXgtC43KrNP40khTitxTDF5yrKlJAwpnSKGQItPukia13PkiQFwuFINjSDE4ai04+sFOEfQBMgDIeIAURR4IRVFZWOL6NEXtIhRYSJEukVtRYucocQ910Fqu3TOALzdmhQKnKXHB2eUi7sz7dinuooxGo0BQmgfo6KxJKKhg0PITCCiMG/fMNrKzRrmntnGjjTR15xgR6XxTU/pFZ5anzYs7CgNsPdShqJ1bMrkOeJymTVaoectPE4Wab+oUWPE5C03Atl0s9FSOnhnSU7khlQPMlMy0mcxrZPDQKNSCncNTUuhqFPWsSRp1zjhRaLtCxk2UIV6zQs83AzIuK9M8DOYozGPShXITZR4ChIlCNxUpl/n3DO8pxU6hl7XUreQRKffdlaOcLS0L7R7q5JHvfTzfVG5vnjglPVbu9bffjo/ZOYrctaCrs18oVPssE6nTy233iTJPUk/wSYU0jdFROSgBPxS5nZQ4fbbtFCVu78LUcm4qRFY4C8je3VSk85CCwjaVU7klnatGAPJhPAfEY+uuOetsp+S+HZkiRcFUrsg4vZwbQm9RIOwKDKEzlIB0Fal2l+IORisgVQ1wrlLi8QvmhkfQkF3MNRkMpIxhiIcKpXaFtKA7LRS3GM43FVmZTBS10ZUQw5xQiAc/zOH6YU5SfJVhDnmYw/4whzzMJpgjA7KWYTZrhtkMDXMgwxwP5nUIDiRTSJk5Cpk8XXa3nZOpaEj3J2BYAiQ1mK2YVIrC/tQNR/mHU7lxKtcpZhFKYlYZroEnWaMGOM4zHGbRzrnz28gwAMj77Db3LCcJHCg2DEyfYVRVeUo6WBbWrLgfTU4bZefcT/ALOvvp5OGVQ0a5H08eXr2wurq6avH2o0mqu0bpHui4V3//3/1+2EPLr00ymtxF/7tKaaHLInCKdLuIO2BMx5qJe2mSMWjn3Iv8lJAuixolxyik2mK3WUvNnLs4OaOUs2BIFef3/ULBlydzJZSF4hgMCilhSisXmwFzjURIyKksLIxbOdIMSOeB+zG3qZxuFyGZDpgNmTZYasnE3CnzIKUAoAYeVNUHNaSgLGIKj5GieLHbtCkFWVgoMgtN3QhRzrQxG/CVKUgJUEeamgxPCkCiKXI3lBQAbpWbhk0F4ZgfFLRLXiQ6hclCyW0oKPOAswYpGbey0DQp8HwRpZwFr05J+45yj9FOFzzyWLcZ4hesIHLT5bFmmLoXJ6VD6A6P1Xf4TYGavjOJiaTSPsLtAOHSJUy1aWOLsDzSNANUoxtPC+kBk2SOTYFZPC3Ey4TmvjeJ9UK5lyf5o/vmNreC329vE9LD8ytCPxhfWc5kvQ5nzYvbSGNd+c42sMmyUI4WmirFBAjcdLtQ7iEybQdSayM/ZoNfn3k1o8GqaEo3jbl2YZv7mW+4YVNwpmNYY452pWcNl3TwRAGFJfI/u42se4gst6KkYnd+m0xHoNOQajNOscb75gzZDZoLGCWNSH4q5JE5OoQ0GfqQ8W/msDD5EQDb85jXDQPePKMA7HwzSP1omblqtCwIDWsn02IRLvqFNeG1ZBP8xRvgL74U/shS6D5IISoo3cF2ASKwLisXpwrtplhWct+fvM6oQyYj7V6Wx8R9f5JFK7S3lj48LZB2k6VMeRdX7IuUs5DHwkXwaE32CBY6YaSPdJCLxYV2YTzULMAog3X/bYiQZCpxSJkVL09qx+Ld2eXCVMKQJsPCEEtgioUhjZ5BGNL4abhGblwCdrmXl8y3/eJu3LVkNlzcVUoW02w32cOMDuXMsntxR5lrZnUiNoQOcmIRMCTnIJaFIpaxkAVwjNuJSlkEUCIC8KquRIopKknA8Ex115zFWoslXWaD7ZRFgGUu5GUO1WaATM+aSZfkhmyhc+UalRhYcLcbAkAiXUh4Yk/mxjVSsn6tA8ULG/ELlQJDxUzBGvSeliqbutVt7gYUVJX8IqsikzUFJU+1ioTLIunXoN1DpOVjQBElZWHbeVwxOAogbT/rJdf+XI6FNaKTXq7XqSz5UmAg6nrxZF0BEIlgAfgLwDKVCzpOH8HkhXxYw9dGbnhbIzQZiCxjZAcgVOkeASs8K/sSkwohexE88XVP5pEBgw4WqkpUlUtJLsPfJwplIfNDJApE4G5qClgk0sEcS4qqgGScaxGJVFOxZAzBjQuAVkLn+wVpJaVovqmk/t0FSBmE9+IORhRp0LUMlWlqd26bUDc6VfUIRSmaNhnyR8iboVv8NJGS4Z2AoWjWTHqg7Zx0LBMqmEx93yAvcsJEPyGmWpnHFFCNid3mTOqqzyMqpmYpLglcj2I/FvHG/CF+t/xBJkpDJpbnEwateD4Ru2sp3pBPGMxGM8QnTMUn1BCfYKa1XIQVn9CeT6g+n4jdTojyzCeM3yrw6iBjXlQyegw+ga0ABltEfzBf8ImwLw6HfT6hMCC26qP11KiEhK2I48IpnM86hIeUEpnZPP6JUFAICtKgIMMUhJ0wGaYgnlyKKYhivzGO+/QTUuLpJ2G6ACD8NOF3IqQoAQzSDxbUNeiH9w2T1XYB9MMJE1WCmSPrWiJiWjAqNSy4C/PpMwjsBHxyiLwB+TQw15KHg6ynLrsxddkroq5AqCsAOgPBajBEXdyKpy7rriW72SoUyCoUbLQKYWaw0qKiK1OpBXiRlgYnAZfddBkS8qq2+7a/DOlqGTKevOLBphq1Z6JnwLyuOhl48jLC3IKB+kE2aJOVaoL7hA2gkBdzvpqQl+mTV8jkBTZL4TrySoW8+sRlqOaJq9Ynrtoa4qoBArMJcZnLEpdZS1xmPXGZPnEZ5A37xGWxybTrtDzKb1G1WRnoeChYq+UZIq3A759lbBvkN9VatDxY80Kv3rEinjKKU6q7rNyvSKX/W6qTFSxn3FeXYNuhnG0LdT8EmTkPWSenOxDXnOnw+gP2rSB2BiIGLzY1665yrwSsVl6/ujWgk6ikOFnu7ELTDK+Yur9ihtUCObI8ji6i1i8genRxZH2BLI42mCPLaiFeHK0f02pxtH7sh9RCATMVy4pIFyw0A+CNySwk7ZefoC8ssLJRtTzDB2DMT80GKywTsB2ssHbTFVa/5xVWM2Y9EQ+tsFpWWE/E1RQNvWYGndUdBtVrr3iEbSVqhV7UCkZELeUlpwEyAhnvhSYULqJOeEZ+W14Iw77fi2HBiBi2vjLsyyrkggZJ8bZhlIpYh2TXyV0jVDQ6MjYVXRTIKhxSQw2TVbCpGsp4NdS7JyuTbkg//V7KxnJAMuEakgmvnGTCKyWZcBOSCTcnmXVwU0DJQlNVk6SV9mVi1Vdb91dKi6WJGZqq2Jkiu1Zp7ZeqhFS1iOjBAtESMUz1F0rlrgXLOvuFQstCqYfEsEDEsGCNGGbNipkzK6OCWDwQxITDWqHRSb9NJLWROGbBqpkc+ts21RfHbF8TS3awXtrBeonKSefWcbeDoo+FwkrfBRNuMlfY2TmV5jFrF2Td8JjhwYi9ZuabTBEaeoEVUlNg+OlTqY5XhDOHxqsYLHbYHaZY4eZKdFnayxHIBQWUX4686qKRB/2NeCAy41oWboYnn5K55tcAzm+qUTV+PvJ+xdoVUjzXWINrWTE9pPKNyRaBqHyZo9mmYhYv7xVSR1m4GWbhWli48VNQ9fesIScxC/eADVh40J+PCvPRDOajGsxHEatG56MZmo9qaD4G/fkY8HwMeD4GMh+554Yxi3krctKkR5DBfOSEiSqhz659bzfi2WqEZ2uvFBr0Xr0bnq1GePYGleHcymMTahomJuHZA7LxPDtYw7PNKM8eHooBzw6GePYoHVU8247ybDvg2e+ejphnryeYfi+FZwejPNtsyLMvRyPhldJIuAmNhJvQyEZwY1PlebauFlgZG13xbNPn2Tho1Myz9WB3EzCDNJVgn/LxkJLdjT/QMYNzHebZARrxPFv3z8+M8GxT8WxWEAXg2Up4dlDxbDO0dcY6EgxxbOs5tvH7AV6umJW6nTgpZZYdCMsOALESasA4McvWYNkBWDZ+NHKBd/dZthGW7VUX1iPW91SWJawE/fMs0bGRkh2OqnbVvIFOb9Cahe1CZ7rwIrdt4+QkgBBGvBPB+cubKZ/fpYtYQX824ZX4Li4hkhuWssmw1l6z1p7UJ5XLlo819UDrttJK3c8mBC86jRSp/Sq1ap9Kc61X3Msqs6xbUs7Mmv1YnWcNkQqdStNxRTjYdY/wqv5AVk//y0BHK+5XsIq4byQA+UYQ0iNQP0lHlGdkVAT8Ydrs97/TTrsfHaJgPFCFQbUPt7w2cDd6MWtursbPOC0fX3xLzRoLXGXXiHRK2qk7RGJxDxwpolnz6iE5qtIucy2Kpo7msehYFdKwTz3rwjLHAR1IsNWBZMOkkWC7ovOAYpGJglkzLWJiQxqUSm4iA1K8fvgbSU8TodIJsrx5tE53Zs0NqRS4TbLuf+cNR3APsARy+MW31CFsBQ8/Kt++fwhn3+7FOgvAD7xTZnXVutVVQ9EU702Bks/Kz2ccy1fTDCYwO648ynenFPLgZrV0CxME+sO6fZuNpX9wh8lXzCP7lKN2MbYfAzZZYZVX9aLmB0kV0bws1NYfN+xmPUARuO++pUStc5FHBT+YrtqF7XwvGfcjVeZExr0elvk2Mu5VVeZTZNxrqsx3SRfz7UhXZT6OSTgHWWba3CYnybbYnSeyBDbzLcPGIzgUcb+a240MS/4m/igA4bXH9oZRnNQOHLzhxnraaI61svHATGzThdo/tct+/JZbb2Pmd1eeNor+0xQ/ncobjUyeihZ+7uXz+tbiVJ42xjihkdvGjDwVwfwQXhsHcPwei34hmW9+BNYC7TyhaEYpipcphDVD5HSZR9A/lkzvOO42nXkK3e98wyx058WMYloqbs2aaaxUWMwU/rI9BfPYMeS+VWNDMuZs6Uy2hxfqf8yQyJTY7VQeNw4wqPtxrEgWp383sKZm2a2+FXTwdLZ0ex+YB/PsdJiC3O/VmX7dn1fdotC1Oi5hQdD9PF2fas8WASZoHb2yVHfxMe5FkdoVSkOZm9NkU7J3d5pbKXY4EYAIM1IZBXnYmBnF4o1XiEU20pmg0L2tNwN1BqCuXoSZEin3vyZrExlPAa/QwAvzBMVrvFu1zOANTv3kccwltyhLY5z1FhWKIczu/nDw1Dbun8iUgwmHymPp2l7ftRuutGtDcM0ayxqyGbWNpf9RmDh9BBLbh+R/2ACSCskH3wMkLjkrUhyjHOvjpeACrW6Moe+MwiUb8sCtJhimkHdoFaCsbBuB04LcRuE0qCchm4eNG3kZZuK7XWCv2zmq431CplUgI7tvAO0+GiO7MbSNfRUGkI2VoFlj3+iYzlw5ubrJZVDWW0HHJctdITk/KSfPdrsy0VmmuoGM+2fr0ZTxdKWmyDY1kVQSf5onUlU8y+rUcNbc5kw+2bgx7XOSvWsa+C43kNJeZxabHxLxsJkA5m5epygPKPGDYVjNPd+EIlrDvioY7muAvgZUH+ook4f7o7dUngwx69Dps3w+1x4LlDZBKgrjVw8VdUjikXttoizSacMmapF7c7KE+IdjxtflMZLzsCiYc+c1J5zng/px4Hu5dMmtWnnUA5Rgzq2aPKLErRrJlnC2GrIlyJb4bM8Yru0ZM1xbvLY2StyFkYqS0YpojOpudfyUO7+zhLyzm9AvAC+jM+ZqQIumcXfB0JjbXYKplLSN6hntAhFzGzTcRLimCa7xzcmSxrDeJ1ItrBWdeadaWlcrpbxB8oqkz5A5/NXV1dVX1CHzS2RAO58l4/5UmLF20UIzwPEbeHXoApxmB3lENk8aM6l7GeMp6pXnwGjBSfMklXpsuknBD6R8zpdj+x67uHOWj86tn0BrZrgdnT+Wl5fBDI8bH+YZHrq33w46BVjRSs9lZ4X7/2ltZG1B9g+A/P/50Bp5ezWhpLeqMY0cf+yngpk2t3t2BxV9sjhVBNSkgJp4mm9+kGrY62W5MIvbKWiD0+DoM68hYztH7giwJ3hLmIX4qdYohHU0Peu49l2wjr2dd7Z3j5py1tzH7+FZfLJOl7Pmi/ylfhZrti2LdNbcS7Ebk7EYO8vnAYG75pj1042s27PYZaHR/d4Izlg8cn9ScZ6WyMWnUjZ2SakFRcBWSil1W49NiS6NUtahUQqDoWDWnKJxPC8f1OcbTMEKFBzkaUOlvF/flLskV8ZdWmgokoZaQw1R6OIO2holwyhv9UlRKtguUvp2keHjWZ4J21lmzxtO0bjbSrtoirYJtjIqdjB5/dGo/JADVf/Ckxajyal8B9PQfUWGny+WeSuYowa1YPe1gk+/tOxWevlWPH4mn6Aor1OCbQ2jYoJC2tpxZrksds4oXaRkj4IWgZoAqAmoPjxJ6kBNvZokOgU/3XlQmyKpjrwaQ7gSJDHLspQyhigVDMH+xKywplUMYrP2mFHaYKBNCX6Lw7NFgYWuDJaRRiw1RNL86ugUrUNR5NfuD4I4DIpYZwCXZZ1gmScMOo2XzrQPatYZpvg+CtbedwGWJxBKz7IxO0+6GG2BuaUuXlv3nndTdzxUdyx1v606Li1T2CeneUQtSqhRLl4CISJkJLwOyLhFGDcMZ97wXMNTcwPzs1+Ovx3Ur1tB91ujs5tAsrUBwftZgBWJsg1p/r9O1lcQzZpfFv73wKz5LNYdpnkGE1RPu4jWVfQfN6joTys+s8MzYxhPN65F0vcGDPnVQ8VWSlxrsUtN97hZ7DajK5eBqEbNssjcY6ad78QLbWmXec5GSuCQ10DzjpW0MZibjWlzE28CG9Pm+mIPfm4oCtqzOAWTbf78y3kLP5/N6/j5TN7EzxzI/GPmtnwf3m7m1dy6m7sgAbY6aJs5alJ0HWjo+Sdp3+PFvm9VEz6eUUrEXzn7jmeUuUVBDR6DFbBVe5P2UfT8ufWlaqCL2nBBTTXM3Br0bZuXz2Mhdp71DbNCyqww4XOZEGX2Ufj8uXwfvqginOcT+go23yx0vi6D8B4f1CaXzWMRs0lkzHV8y61QDOx2KC3zlN6pDpWm1Mpjqos8QOFwPu5dCCikBilAIaCIuTGzgl1Cp5jw1pd5TJGYStzcxfMAy/m+Cv8uLjH/xig8qI00N8HNsfXrboppQlqb4NZqlLdhjbzIXi4hxXgrjjUVxvf7h+Bz8Jf1RiRnv/HdbBoTUNwu81CsY/bg7Khd8BeKKb2bt0YpKkqhkqqhUsqyAoZqeUxJHkJ3mS4ymn2aL4H8feEu25fXIAEmecyCYB5SRrW2O3gXvAcobDNO4/lmneuplTNKDUYMdiftPJYFmdvJ9uc1mPTjJRWAYI3Pr5wWpe6H4M8XVacZ7KI6Y5BJKJRqQiSBPJpMBUgSBIf98ZQVHLIQhY46Tb3LfTet5MjUm2BEdA2wVKOdMKJNB1PcD2ERidp4J7r7mCkLzwiuoajtxsqCOUGDLIxsA/CBhoARMBjgCKPqLLac+e5baqF5DQy/Z80rhxrXgAP9G2HIfZlVhNi4sTtl5pFHjT3VE8Ww/eAOXpOybMnywAQ0hIbqy8L5Nt6E/dO3lMfI6kXVmfI7vsZOvzdqFFYcQoCckX3nnisUHhVtoSZbiUybiVKOG8y0IbbnJD7sLOrzYIxHujK9g3bOjHd33hIgJuwctQim+HtEJ98oUCyvY8AkYS/0i4aG+oYO1FktgE11eNndLzc0dYQ1038+oo+iZr6lsSvtC+7NfAsG6H+SlWRHSs35Zo1qLJCDyKvVg5pAULNiUzu8pvmVQ8OiWCaiWGuNKNaikDLhQo1RUcxeoSzQAC/MQIDgWQ2n26yoGkM1ad5yKk8FfRnPjQm3Qik1SgaqwQwR4mCjQ+lZBiMDGC1Ky8V3BweLYbaS9bIZpfIGZQwcRixjTQlk+xKoIUstkV9ayN4AzKJnNu5fC8LH4B1DHf703Ur8lYnDSReVqNu+O6qLgy7V/csq/17Xoq1TFHXACO+qxJeUUhwCDg0F2+Rb4YjBPJ/8XEmnmcRfOUSpdMpv1kLg2PP7Fvo9KgdXMpTdYF5PbvBtxwbftsseMudT1X9V7Ttbs+YHh1Ihu1+WEcbjZzcku0ZnMN7vegcgI9swczzSRSYuU4wMOWxpUYPpbSvTWyb0ljGStzLNV/TWWENvyXuit2oY8pjnQZ7JvGhQK+dhiqshGh2KrE9FP0w3lI/Hgd8/q/CbQRBgQmJ5+I4BPQ2hl1I7SkzR+yCmO4aJCS2Owo89TT2PAOT3vSTbbLLuqtkY96z9jsJ61nyU5Qt4JhVsjnTDMWGbLGIQhIyRmdRKDVMShFS7KMN7M/53va+jXfrT3ptxsNQuUzkjhW6jTpbqi1MFhEELrUZep6Zr3QUtqWMFbI2C65Q6xMJCAmEhwE8AzZP16dNKzXK6lXTr041PP6jUrZxuJN34dBiuGWQYkUZwdl+jgOrZB0SGFSVMpXZhAL1cY3m0RO/gq1on24gOQYQS61pH0eG7eWWrgwe3OqxPGNJKosBYorQ11trAApia0+0blTr86FceP3f+wsVV/Uix75CCvLYPiKljibRe6yOwRJLWz2Jdhiw1mCvUBBjIbQU+mfZBpbJraey6IGEpc+y6IBsq67VJAdWPNGF6OijhG0b+fJ+U3x/MDZreL8OWCR6yNptIgJ/127btaaWyD15R2wENl3hvbQeCzqR9nVIjOBxuyFSV+4z5vuGK921YMRONhaRSz4MAArg9xuPNQ51yLVTDQzLSKpOQlcYtzAdkjte4NgoqGvTvTJOeA4Am66zua1Jd9Hz1hWajL240GhusB2MbfGtu8K0x2MInKSs766yziuHhLep/9weDPfFEUffnJQyYJfgKsbaSWQmfWaRgHikOaRv+aRL8fBpn4O3CgsdYapQEfQS6Lhb0raNT0G5Om4m8ziLcBidh/qAEilB/plMpQws+eBHNp9eDpmSbQKH7wyFV2e39oyN0gn2mk/lmIkoXTGjMUH+Agxbr2KK3vDR5e5HiA93NoKSsAr2dJRgKblHiToyxBcUni1NNtfk5Vb8n1amZrXS3lnsw39TwBq7OgJScAfEp1v+4YXeyoe7El+rO/rXdmf5b6k6yrjv70Z2XhonLYtB5tRycGMZXtt8Q2CqAQiijdotQ//ioPBikI0db/pQR5iQ3gBJdTY5jr0/XnoSvOb/iPf98k0WNiflmOLJJCq9wk2QZXk1cC8ElWLk/HFl1GUibB7yF9YCL4WGS0g6cUQDQVySv0zmMJa9USeUXIqzgTcU7sSa7gtkiQo1HYfvi7EITp1H/mt+9uUcwbW4W6TzwZjuwjJtedlnp2EqUYMETwV4nmm8atjC/vki4AOxebuDYFFwEG+frMXosktQpuZsN3GqUtCnJcqGUm8SP4PpZc4O3eoMUEpdUo3qbEug1IqpTRPXFIpkqoixnHSbARBY4JkZtwmc2kVtTHb/cBMcLxHFIBNj6whRnhA4uofrdbDUH9sl2DbBByZtsk5JzvA6YrdJuStqlWCVzb6J1e9+I974VoQ42vzCwQQSJQPa/dTIiak3wKXJAUbYHkMrj3lQO+XhIb2ADqWl41sMgDGepU6Vb1fIMx0QY5eATlALsxvPP8QHHVpwwC/HN/X2yU+LXy0BNga3T7iNTIIAjU/mkkNm/9WT2cD6JtZ3gGjKZ/nZNN1bEDAwGS2J/dHM+hp/bCJEMzAqN8V4u02J4NXc3Mlden3wK4GB8nZbs1IpwLzlLD+2ihl60oANpmjlqOfZyodStGthmpc6WxOdaNezQoQdnj3unl4/Bl17Jgt0seW+SSlZkKxKXoYIaOJ7Tna4zbAFZoxSRABLvj9OAyq3yxokpyTARvf1s4wjHaMBjsyyalB5j0XCD+hJp0jskwlm2csJOvLPlM4Man6pqTChdbMKFNJHCvKXasP5m39cxgTNkIt6OCTznvMu0yBYoSElVlPPGFA8HqIixVWB/oKb3B4q9pyHwUCTOdJqaHZEA4TgghBI/bedbkKOR1/kcR0xFGzB3jKm+xow3GXZ5jakOLlVHO4lvZ5L1F3VqLAxVMpLL8PeJIrYr1GBT3gYEjhi8tMGmvM1gjpp5QnFRhylvE92cKGIsghDpmlj6MrzDW3Hg8lpPKRNL3Qafc8M+IGZLXYwNxWypWwd266OWusmQpW6DMm+pmyEvW+ry00QK1RRP5AxMXoDmOR6DZXM3J1PfN16xkTDRT9giy6IfyfEBEYyPjqQM94aUuMVT9roylNCWDHIzVsY4ZbiwVDFiMHXZAnCXe9g9BFsV9vyKXdCZYg0l6sJxbHx0ikvWaIziN+uQI8YyQ7W0GPMM4t7KpvM2UjQ2a25OCcbKYzBIlAJsDJtVvh2c1wqPvVmUsCFF43B/41hBYMLtWd7Igi232YQYPh6Ty930Po3TBbviHkHu7BrPbHfDE+NmNpJeaysJ/qu9CaVeY0LJ0VsYjsyQygzp0D2Sppk3gvWml3NrrGJbWX3Nl866L3uzeloXO/lWdlf12Bk87s3uWmu2GWZj6X/4gG6Ko8ojpLJZmFoe7TbVrsqFo+GNNneLW7BFlBU24vQGrvaILBPW/Xa44I/mf47DO4ELpj8iE0xjbYJ18nR/A+vXJ5XdzBllU2ArkWRl1kxXLk32SJd9btyDjr2Oj06VbEPN74Gzd06Vd3abMOu/hMmldR9aYNPC3w4XxBcFlkGNLRIgSlSFP2fJTEJBrWrXWHarr+k2S03WG/1op+8UAfgHugicuaOp3EVIzoGLFpsKS+dF+M1HR6ZyCRxCYbcIHHWJV+eX9FQRuL0PUNB1e3vZJ+WbuK0f1B/BBzzckH0SuPTKdxEcGTrGF1DnZS00Yt3HwSO9uOntz724WZmpaZYjOCkp3V5WOG+c9hv6EonJLarvLytGpRvnU5eo428qzRlxi+OBqS28s2pYZ0WQ4WGbgk7nDj8sG9VC9hItBKKjHx0Epm6h1RaLqftz9hDdnbOQCbU/xMGcpcKM5wBXXpPKGeKabzx2asFBxEqmugx3MNV1HBpsqusyHI9NdRmGabObZfqqstBDGvqKgivLxeagkvGgjq6guhkVXz7X+0U+g924Amg4QAm8crHnvxJcTFwZLkIK0mlzPVssqmlMIcjmKIbN6Q1saDTYQhNHXpJ5yEzmT1R7LDS1Wi1gRd4PFSuk3F+phSar6IVamNcPejFHwUE9wTJ+G36jAFbOEMR6mzfEd8uMT6DukB7xIRCVrB4q+tZdjYINjCXL9fNgQKJIHO6PLRG2oF11afhorU/b4irUziN/jtdny410E0CiCoYJDnIwAgY0XRuBEQyBwRjlA5f+3nX3tNktS8NEHgtCdnsUidaZBavI9zRe30Rc8nm+b6LPPUNfkxdacXgCHYRgwhMIUShaELBxTzJ9sEEvgddq+D7KuoDIefGxploLRTCAYtDRH6rKUJrr2F/V8Tff1/3voa/vpad/NTyU18tQNip9jRFzogpQK9Chss0B6adecipXa2cFxlq+HVTEHPfJOuo/hf0ngYY9Vcy0eRn+1+ykzefvvx0eaepK5lipuJ+sijo71KjSPBM0lXWacT+Bn2zQT+R6TXbrcBuRUMnjB0SJoqXDz4G9qk9bbu2cpqCEH5UIERS0nc78mv+SnjXPMcNQ2c0ucPwRctaU9E7Nmhe0r4Sz90ffTJvXZryJ5mszcgLz05nh5fc9JMvQhexsh/AnwUFEei1hHWak1063Z83LuoKeFYez6BXXiP+/PnM5NOAcyakNUVB1n+PxpVIpq9+uBKuXrnK+GQhOX90KMzcZXbY9FdNE6V8RuccMn2oOcP+SFrspDL2eH8q32GnGFK3PTJEzR5t+3FiTN0wlRyp57GpQSdxHUu3qICn2KmkATkPmIRxgqcApF45+Ez7WhNKQn3T/ySzw5vsrpsybzgwfhYkHF841xPaKEgn3E3IhI09w0pYnu9C08hQuQNOKp2ihGclTvACVMVRlOHsKy6LG4OAY+f/RixTmASujYTnEp4ARnnBgCBIIYd/pLctwyMg+w/AN5NPC0EXe3C2E+Rof0NSo2UafOABZQBHOQqoBf20GgSVdsNjUu8Q9QeYUzyjEpdTDU66fHG44I9clo+Z2Iawd5hIz6sJ5RIOgtHSPJ2vmaMNd+E0NZ8z1s3favKDZpcsTqlAxW5i/LJtNYS8ym5liAZAc7sbMdTALg9HeBWvA7ycHG/ZuXTKFSOaxeZf8Jh1lOOp9Mxw59UOEhsA1Trk3tsInZNyotAjcIx1nxOXxt9ljigL3qx0+cec9cTPaNSwwBk4v9Bcc7IjbY6FCWHfN1rPnDsj8fepAESx3Oe5b4MY+zUwhulWfO7CZ5B1tvu2BsvmrB7xsjIpds51bZ1xGQfsse5iAkEq/1501Tx1wv/uUPqhlLYncBX5BTKLlbuGhYG1t0CZ7x2ADWS31dgOY1qYNYIIFp4csbJ/l2hGR02Vt0czbMgVIZLKD3mWXhYIZ+JsviBDzLGsWOA7qO409rYuwsv3nEFCKAjhJC30/e2CwWnu2y78YdPyCeip9BudhGUI0JbATZtqYBCXdBXNElmRAFqa/sK0fAN2XeTbPUsk8B/VH8stUNKM+ml+2reT9ZRmAU788OOmls/BhVYvnj8vOjqpHZJJNIq7sndY7qrf7cbXmU1aN/YTVUX8/3a31ypDKLNs1pIhL/5nWwQo0YFD1hX0VH7bPHCvlEpo+zURz6QznL5fhnH73ysRfZeXXz9WRqRSO2TozaY31e6cync5zbC/EWfFu89OG1njL75ZgDqwrUn4yWPeDt1Tb3bvIcKXP1ky8Ej9C2qsnzZx7+jHEb0PIzsd4QTj/mOZ1yGkcIUuqBBmdB+eD9ScfLIdwlYQXGluXs98rwiYUNXfhyf/9/3qkB6MYpzswVMd09xtOsG8oss7fKuttyOeYHG86D9yFx7Q846xBi32NoyPcRno4+UU7d/hVQ+nh4Mlfzeuc86E8cBJMp/4Ztq05rB/jB+v2djhG+YXHNAXZNCx/BA7kOcc2oyml33L15YJjXJ7/1Du85/wfI2xZv2lx14MHCMyILSxHg2xaYvv1u5Qe1g+zDWUKbOHgWEkJHCRm01j+AcOgBAeH7slRvDu42OSAy/OkXdyZFzdsnBUbwnBQ0GNzTfTk/K28GepxUAKESRk6AwZvmj5d1AC4tyVix2t9XUAUPf9E0fzWoJ5P5RESJkk9/0QxNpKgkJBR/PwTRWskIUbCOwLV808U2UhCiARFwfNPFOlIQnBY53UMzOHk78G0BqhmBPPxV/1w8GTROFeVKDnue49tBMZozXfVyyEzttZ+j3uwVads7fewl0MMTNd+D4C6OoarLqZQDDn6lY9xv/MW4yXPGG852Pw0wtHU3C+dIsMBX55/IrvueVjuP/8EP7WAK37KgE5+SoHxJ7Lr8oCDuHId3GCAkMTJooVzA9jDZUfYk4L31l/phZsWKRDQCqma1HDqIMFslhBslmA3Swg3S4g2S4jXJHAPE+lh4nuY/tOQmTb7VOYcy8nHwzrClgXoOgIn/vztoA0NhXvt7eAoTqktbmHIcOnG6uptJa8snESqi0A1fAEEzsk81v30qioMxJd7MKXIookHXLYMdozGEBqQa+y2wP5+aDguwgsfxu5Pc7jqACufr0xe4IXoH83gMRg82sFjOHiMBo/x4DEZPNYGj/XBYzp4bAwem4PHscFjC498OUXG8fE4RH5TVf3mow9+wBi98GEZpBc+XNGhsStMx9mAjq8Qo/2aw8FocuRkptuyUP7RDB6DwaMdPIaDx2jwGA8ek8FjbfBYHzymg8fG4LE5eBwbPFb40j42MkwqGRXQLMMUcLkbOp2m/7Kmt+NOmzk2LvCb2Njh4FdUv8SrZMNRSVrcqnkTs8znroP9zJCXNYeKi10Lx+hgpVXxui8Mvgrcy2oWwZRYAmwiZLrcJHHRzEL23fCz0/kYNrcxzpVhj5vHTrMpaY1P6akuG11us1a1qSuDWbC0UBLjgYttjEQxZ4rhpEW1o1P5mNNct3iWZwvibr2cp763XAFJS2gE9g3q003dsKgGXquI2jGP3i50m2LvRA00aFCzWIitQfQAx3wC3RAgPa5hfMHYDuUzO6SmQ7h3E/k4hcXWfKIKbTdmjEKYpJZbbVI0lU+4i2PuYgOPW92jJh/Hyfhq5lbHfGrLXWxKqsrHYYyFwCP6iPufI/eDiKKpYtJpGlsuWoudJqajOeL+3LpXLJJ2knxtYXh3ydnTFhpjna9xK1BHOU3Rcr49wGmvonEKaVvV36bT5dGm2kVNGl9kxUzT/ZjNNrbiU9vp5SJCzrxJEU1g057msVuhGmXtYsdyPkVbYM/OJvj5btrOA7ebEpoq2QiiLCJq3qoNRbQDXn4RxRD/E9zSwPTRXpZRKSKnz3IEwqgDHjMgpT7Rt4sqwkGbTIeiko/IcoPuIC5QzAuC+ASxObAe6qr/EeXLrg6MZI7A2OBYt8lOZXA8qx+doozGKJsqMhzHbKHt3K8tABUdjpdhH8I2JjFlZZEeZasghjX1LbSL1Kk7m5riPBoaS4wBtcqiRZNHOzyG1KKdRzvdZixTLiXBV0xjQFQsG+GYtsA2yZwFDpOcNQpoKW9W8weTC9MrlmnC1FsWQquDecK+Oge1Ail77gzTOfZ7wzYK1SsZIhxrix0nA0Yt5OGQDBZmF0pMIONW6lbSDytUFMwJA1Sif9d8KdZALuEQZ2n6n2tctRCQaov9vhH7fQhWYr/vF3rlQwgbsd9H3Gix39dQrWl/y0PKwSUl3dvva6jjkG44nYN9wUpy1xro2I5Ek8k+kKb3m2BFPyI3H6kCRt2BhGlqHZV4d9NGwYbPwkAbfrzWG2grig5VigpfOmxLLGwtdmR8SRcHBZdbNUil37Em6AfLCnCfGew2jgIYOanjqJu7fahrRp53ABiKUCX6n2EHAO7WWgeAaARK2+bI7UAg7yKaEWniLNpn4dXKr10i9YoiFPj05vwBJGCOuOmN8H31Ui9agQMADDeqEr5h5MfBOMpjtvebjmXc++slkwrHXq7arsz5r6TtQIxGfIn31nYg6BQHgGiThkxVufYOANFwxdGGFRsOPwiH2MBNltk+tpqExUCbg1FnH2ARiNhUpw3izFnDxraSOv2ywTWPPFUkJnefDAMZPezjnD3rA8Iy0RQyXQC3qjYSm5T30HpJb2gzodJCaxbfIMdx3NaS9K3cJDY6LI9vlGWWs9gqy906WPEbcbmSTFV3LfFmCy2S6njjIn22sJV2gMXDzpSwkrPVFie9UZrUPpBWtX37GPY56nBy7ok+C5JufCt9Tmu7IjPP7mfw27yDNwL5EY54oTkI4BRrHJyP5ChxQZXnlRHiVWi5PodXJ1ExswqLVyfM4ezDLCQY1GO8YIuBDEnC9hYRRGxcCACWzLyCFdT9/OlNOliR+5VgiVcEPtav00c5rr70rp3728jeZtO19Pc1W63xMZRh7PxDI1eL4ICK7xDjr3vk4/e3DX/cuuBjH5pKQBvGn9O36p/URAO1ekBiE74xI++vzYSbFdw0If1vDcMKnR7rbhXrcqErDlmbi7XCihJb+TC+fWWwYiUhK/o3SVOVopgjsPrKg0pR7Jpt8bwPvJZYZQeqmgaqSKnJDLWyLq3Sd26W/PbbQU9OWjaBs29/4iMYi+E3L065Nw+fIATRmUi/pX1sT+6LdrUh1GhfrR50/9yBoWY3SGf0iIZa3dVUl6uJbdJkYNA+8woluGNKRDgSlDx/IP1vKkDNSh9YNmp9n8BWEDgPdnIHXwlw2TpRfAC5S9o85mn6Vl3HUJXGg5tEcY4vKmWOV1mfNtdDRR/4OVVzb6++/TsrrPSLJOyVZfUnoiyByrHrYbM8fbYf9Y33CBpL10F9zjRZi/2U/33GNI2jvhIRCwsrBL0CsoYK56tzJA41Km4oESyBI3Y2AVp+ur3MbuSn1/tPP9ElOvGz7dlH+P3Vrfz+RvW+uoNzun+zDaxuC1Ywg14F2AYYOd8J4YbyytaqZyJ6S48E8W/MoMSpsgjdeDnLDGHavDnj6iWuXIWt6RQ/hcdE8/wqzqo5bEqMyCEwf8HpN2zx7VFv1MJHh9kMr4XgDXLr0FMHcov9HWcInOn6gyWzCbNYSxDmigiMT5U8zXpmodczC3fhce0ufE1nH2VChCGqB4cvbuoD4mF7PwD56dNkD2WXkW7LEsjgiM+OFaAw1EUNAQr8jaRvbMfWgxHT8PDQCM7eB1wSzmwYV7w4pW25lMTjgqwLyxSBvJ+SIdIDSGLSVwWS+NKQcDP8ZQBJ5P7ftwVJDFJzgJyrA9JG6CkST0yNtgh5VXPVd1umhfXgsT93NTNFtoyoLkJIsmZS4obIfjWXnwbJlXXAbAj70EQYhrXPD8BzCkO17KaK4xSaYn6DWdRHcfh2PZ+uquxAmv6rmh5fkUuBEn/YxjETJYRt8I6MAXnxlT9Vh8yF69ipMHDqTr4l1n37Oh5A99wOcOWVvN4X1qycAqlpc+E6XENwl5fdNF8od+E6WN3yKU2dJWQH0xJzRxFPyX1zCacWjRICj/K3gPaR9sYMGw+8AfOmOsXw9Y7mq1XozRmKeJNt2rPmzRkWf9gJRwRH6DCqgblwHRqve3jqDI+/7q5qz0i0kpi35iOipIZPh/XiMAuv6i7re8wfRIDnytW0eWEHb5t8t/lmxhd2EGsPs48JON+8jrcPs+abVQnYp8hhVtS/UW84V5XqccbGXf2eWugbElkRudssGON4nkVeGPvwFSn8hK1UtAiJG722FEATEcsPm7IPAetD6/XH9s6mSodhMx42GWDuiSgxn9oB/0k+120IxcV9isvkGrsk9+a8mQRxbyKoNxT2ooTk2Av94IAMhz9Vs6y9FBgEwZW8a9xLVhLQS/eSvWsqH+dl1khHDI3D1TTmI1ApW+Dgs9hSFnBriWnMhybCpgOFsDreVZipogX8GNGfBzm4SQM6p4gjDI7avXB08pDST7NfUcjqJG5LIuLLMj4mthoBtcpTspI3hwkb0Q22AIqSQqQLeRsOJYA9D2+FoGsk2VBFZAo+LzAMThO1j0GSoSaNOd2WnVLIiQYmLFDa3MpqqlR0fRz2z5k78b92Dhd6VD7PfdSVMs/Itpb10IiNUQzQCHxwYH0xBEL4J9yHvlBNwTdmEBKKr85s+x6HpKu5Vm1/ZZMl6hDYhkXZh0Lmwib72FC+9J8YXVshjVAhfK0ok8Dbbwe36shZF5CFxjx2v67xlPi9lzCuFQ7S7jedqedjlo+rQ7nhlS8USo/wrVjas7KKKOwRLAn4FB6F3tSsQFEt8bgCr3+N0M9QJiFbx7CiiReUKlPIyBB6SWVX9tR2fn1qOxdi2bB2TLB3UJ+XxPPbvcrioH5avjy9PUXMwLqLHG5YtEeKYKrqtgucpWDKo4Px9oNE1/ym5rUZlv9Y5Au9yBc0qgvDfzoDLzQ7owxHB+WV7qDyIeV1Ze0l+O9vKkF1UbX5q3aWLuPoAXcMFsm1+7bwEnu6oUUyGt5Y+l0rTrRgg2TEBknkw5At7IoaZnbCUD6ZjIL5eFLUfV3xchfKAFnNBdZ4CNbYwxNXG8grg7XehzVun/X1wwjP20vhsVrTa25325262/obFC98HX5QHphk2qyOF4k34GKezuKHHRaa1oJhr2SfvkZksu2zbCaYDCy6RKiUjxWsirgrchGebhcJJS4+61ZN+c77o2ZxakZd+E2P+ViYgOgQmdwRXGZY3+Ayivpdez8qh/pwP3z9cOToYzsqU2iHGdsWnrAJ/Ckv/ANEgnEZnle3wPPcUynURsGALqT9gf37u6IEuw7R6wEctFhRdR9gCWVapDJjcdFyCrb3lYTVyyGeV3FVSTCgCnHRvvSUs1eGWN2HW/ntGV88nXlp3+/Q0n+U6vqKsFuw5CKeyi2z4XiKzQU88x1lvCscplthC8e3+YRUF6arRVSsVyw3ofiI6PHKwgjT5TsHhenGfGIUeEZmPSODXVRQUZ8VztSgcA2SojaFQ0haO8LDSFqbNoSkRh9JYfusrz8cDG7IgxmKdWR1OoPDqsGOO6h23IhZyQFaIorZWlUCRfpesi40l8vQI+G1tqJSMyeDfqnZdEUUayoeW0qEosgboAYy5HZ4F8y3yGHlEkhgOQVcHNRf314MYBmZRVcBJrMBTMa7Kj91gMJqu2lc69N9rmnWbjUj31i0wVbTVN4wl91qGj8tDGLFGor9qYM06FPYPinm2AkUypoeyJq+Fm2/+XeKtrcqtI39LaKt2d4IZRJoORA5Zy2WvvF3iqW/rrBU/1vEUs0vE6NYQrBaIxGjPXwpi4ExJUcKw2JgAk4MMdBADEymOKq6iIJva52uyNYeQhu29kXY37QWNShFOErwsvexkZOUajto75TrUMl+usl32WND0C1sVT6uFCaJT/TfG9X3psTDbS7wFoP9E3g/P6MkgI3Fdilli5DRGmy/5kXezLETioTok90uLs0i3xV/uaLfXlQfazhef0yL6a65pOku352pK9NdKFAlWssPFe6p2n7MwdhcL7tHL6yazpTcLyi+qdoYw9K9+9ARUvBh63Kco48vNKtb2036Zo1HYdo0XNgumCYehoE8BYtTOW9zOXYNn7MuiLWRKLf5+JzvM/N69g+x5jfmWCmgI3x+SYvk8JwuGpDWcPs6wkQZROLh/SyiQIhS7+6pwhyFerhO8XwHaQvdbocjHSmJBnCE1T2dIspmhg5PnG17+h58CtqDs5rBV4OvK9UBzeC7bg+cCcWjI5WQItL7Bn7PaekHaz1gSHR0ih1xGQ8W9lgN9qrla9DhJwu3mExeJjhlQibgc5rfnmO1d5sHoTp+YPuLBpns47tGP5T+/mv2v23L3djB4KSI7wxM5Tb3gE8L5J5gWxi5N5BHgkmQw0QbhHHkgWY3Nb6ubfWA7yWbgABT6JzPxf4PPMVf0lIJhlz7EYZ/x1E+UQpQdcC+fFwZ5jO0QB5RqwfAfI71FXRoNa0qwe/jB+6WetBgWgFU+nFAeEWyFVgvaZh3GmlMOO7DUkcRtKGdpxDx0EtfFYB/jhnqO2P+9IGjAsSsefoAb3Wt+O/psVArpbTHJvxBYQsXSLHncLXfoPfGBy1GtrubfnCLUHBm7+CewGygDyT8sHnkK+Twrd3mMsh5mAKvBHtJy2Sr0GSkb4EnQo7aARYtYfYEJ3D6xACApDzaggHagmG02XZVnKxH2wbYqlBRRO0irOZ5Y5gHAC2Bn9G2YigBprpYnAWY5H46Rwvd+W7T9LEtN6UKqOc0Rey8DjwdnSoMm7OJg80u8ZuSEdrFnu9pocEX/BwzZYVpzGfokZwJXcAXnLuEzy0pSH9DvEHYRSI76EOVFFqujoPyJVic8re2e1/mjHRFgQ3Spdz0LN9LiUXDR7h6MOFxiCO3a3Llil+Rpvs+Z+/Ak6Xp1zQ7rvANecxjYMRs/CKPac/I3I2wR4Eo8eFKnLP1kjkycBDHYfIeH7LMF3Dc1lD6Xh8QTCop+zrfhF8Qgi/9rYQv+mVTgtgfiEZyg151ePqydk/w5SgKbq3ypTDuSTFuEm8eccCGa6NXHL2ks9vEIQWk4Z40bU+Xpr0oQJLJfgEk+oL2XXhB5yYVB1sX3F31dNQbUIk3oFSlps1F3R46iR/1VFaVX+TQcf6GOQw8J43EAxn2nIzEc9JrMsUQJGaNpNz7g42m10sgmtriFLwqy8qtcqSYErRJNwvTxk5NXl+fkWn/2gwfBgaLMvVe0dXJqWj9X9DBXDW3/akHz222Ruhkt/mJ/4L2GnO4bvb16MNFArILzZANoryLZ8UxTL/WafPMgUpNzKyl4BsPklnzjP/6TdZ/QcOhps239TJi2j/jK+eIP/3F1Huim81Hc+gk5j0ki1QQ+UOKjZBeeYauxx47hipxDA28h+HCCHd6TuMwCX6i0iHrnaTJip+or3OYC6m+Y7phExvTZ+rGmbunhp27qyb0cBO6akKLY/f6Jtix2zcz1fJKG890L1vlpaGGqRaWQrDNP450fUU4e4wJLILiy3IU4BdH3zdbQpvI6Q+XchOGrH4cA6yEvr5dMdSLmq+RuDggvLjtQwNUbD2WBdTKkiXWZ7YvLTzNQD+r5RRCZs/DbO4UiN+n1xBDcwhbYkrunvJ2WF4touDC5083An+2ccVl4eL1LHQvcZmHXk5QfOXpvBcG+lOdCaakMPu4fGPCkyQIMPAp0lLBMwf4kmPWGvr1uy1dQnQKxTchD03zxw/wsYinJTbJ9WwZntaQU1KxpgkWqxXhnBdauOpCs9adg3IOpnSRkJ1ha26e1EW03OtgZJ7R4hMfCjyarTX4nA97oeUeJVU2QSwA1KQ7bKwsA2b5TKh+UPNJW520zM9gXTe4A+YoayCNe8IcbQ5EADmbYsoTmezpA4VhGxSxSXq5YjiFJnPUzrmvsFMK70HcVwy2HvNY7ftBNnlqIKgRuwSD0QnW4MCvyRxjNaFpQ/EpcqAXFeyKXLnsuWN187KAFBK8vqCzfPpAmt7Dq71nmVWT7I017RHG3BOEcSn8yYGbYtMAQZ0cZKc/NKa1Yh5Btu97HnMWL9/zKPqRhluHn6Yitbbdk2D1js+lj/n934+91ImAFXJ2m9c92aQU8tGUBMPQ7aJJQXlQKbl893EtoT3Pa9zThs+ZD4SCLXlaCklqWA6zJHRQKcr4iUmKj1oDf99Po4R57jhLzHja8ot89dSWJ37lWy44i0MYU2Jxse4Nvehj48Pl4CsmLcynmdI1cxZDrDcx4oJnqOnhNTlHAm+RprFO5S2hIWfH7IjAd730Qzek/64+EI6SgXDkxaOV9cLR/JB0tNhBOJL5JiNaoj4MyUZpbqsVG2P/PV0xx1nzokY8DNmwvaBxUzRrolkouHu9QGX7ApXNfsFHmwhceLRvm6XFOTdYaGoXVHsMLzy5Rwky23CDqZAP71lFHAkWB5GJhpdgmXKjQlnBtPaidiu9clQyG4pYsYlktj7Hu5HMkvchmX2PY/+1h0fiZYmsUjLDjqFsELX/6zMynV6bGRXIgv5myx7DwiubI2HZaABswctm36tkMz/CLIh9Z0RAkfUwXgD1VLLTIGaF2jBmxSVkEcPy3rT5zoBtCaeUKC1/N9LZQPoaloXMcBeNdLHaOWzSzWEpdyBHDAl+fSzYUNbvEWRvUKRh+H7P/79hTOhkWKjEHvxdCJXBexEqzeWrvCKhEgylBTuCT/bXxPV6aj1qfL0uGUbLsXLfDjKb/vtIx7D9/7FqF/X9Ck6ClZKVHTRClx1lzU7kNC4Ae/QrHA6ew6Zd+AZ8h7B/rbwSJ5fd3i+5qQ7HK+6AGS33KOwV8lrj23gp6rEpD76HzvpfKVnryI3URdgrOG/o4rNdtpdCqKCz3R6sapf50lR+RnFn+bnn/kL1blEvfIOd5xawpqk8ci98Q7u/ALmwZbKEI0B9RUrR9chd8ME4w6yXe0UNIQoq8DO53Wq5i8jO7H3dxa7zhWc0x9GZfHDWvHBBnjM8f1ueEzy/oIfNnC98Q2JCiPOVvb9A5KNZ85rmeCohm+8lwYooyVf4ki2z7HZDhtIU3jGVY/Q1heISSOkChxI2y4RgABI6mKPbxBSeKWpy63LyYHaYg/YiKIC+6LsJkb0nHjU1ZxfIuN13QN0dZYdhPQ3HF2w1BhEFoPIY8kiFg0PwhpbfVZiy/pES5ehrf/xn//DhWfOMIXX4rT/4P//kP3z9v/it7FBwHu+P/oun//AbP/8//vLMoeCckbIX5HzUZp+CYUB2u5tAZAk2vXI/hVgPImO31ItqgWdRBHMMvkXJR0mCtTf7zsKqYbYHotfy8iPVEyPYAdzvCT5U7y6q7FMOLvuM8qIGY7Namc2PYga+f3X3YwW3pDj9JHgNr7egSDji99/gFq/c5Fl5mVzuQtE2lJwsd7vp7+jK/05dF1wwkCifPxw8+TDDFUGWc5/s8P7HXfT4/zYLgxcV394hF70DUutDQLtzHFMrzI7A+Zys+2R5zK6gXxDKbZkdIevm2hJhQy6Bg0pW1GolaudsPqR0+m915bGXsceewMk2ueHh5O9B4nKrycDsMvuU++kEGCGyHX4jeOzwxeAXRb0ClzaXgA4AY24rk1U3IVYGpmSrgoc7TJE4mXDBsniHiPGn+HmG3+KaSooO30whQpycuw0GNAhXEXpfo4lsQTCFQV3oD3TgsnK/SqfBMhWcvCcxRP0b7lT/hjvFN9yl/0uuP70iDpg3FQFHNRnkDvq5A38bPPJRYZDPDPKZfj4j+WrIl1w+31Z2/Lx8voler+f0g4VB/usLjr5iB/ltP7+V/C3km7h8vjryNS6fr+Hbt8h/c3G5ewOLEPn2FxHyRYN8UT9fJPmaBFtVZS+fc9JDECGYjp5Wk0WMIvGgSNwvEkuRbVixyHIx3H/QwtrCb2M9VDFdJLJE9KtI+lUkUkVKtR4Zzn3b5XPDxFtlRYZ82SBf1s+XSb7ttLVHqYCSoczuYhxlxgdlxvtlxqXMEar3KJAy4/z/nbBkRf/4jYPo9SiWtyn+/27UfUMBzkR6ULfu162lbkfbaHuPV179YKGpSUd6lEhN10Dt0+tRSK5Hukdj/HUP/39vD0y6R3t6tJs/EI3RNT3aK0XzHqUolfXoGv5Q4Pr2Ho1L8j441fdop7ztJ0vjPdolbx+gmHb2aErerqUx2oU2+O2DNIUWSd6m+f/XkUZdBdrG+4doHIDskzwfpr14pD3I8KEe5fz1ev7/TI8I367v0XX84QDl9OEezUjRgz3aiVL7e/Rh/nAD7aJ9PfqAJN9IU0i6Vt4+QrvpAz36oLx9lIiu7dG0vN1EOX0QbfDbx2gaLR6Qt1n+/yHaD0BuQNt4v5k+AEBulDwfpxk80vXIcHOPDvLXW/j/t/boAL7d0qND/OEwHaSP9+hWKbrQo2tR6iM9+jh/uI0+SDf26KOS/As0jaSb5O0TdB19tEcfk7dP0gG6qUez8nYHHaSPoQ1+W6RZtHhY3o7x/z9NHwEgt6FtvM/RLXRbr0cL/HYnfRRg/UKP5vj9U/QJ+hgdoBm6gT5AU3zNAUIV1eUw6m6aEHXi7S58sCzlmOgoH0MVrFtIioleh+Z7pfut//jVH4RlscPtebDYUlKDjuKpXtIkzZdUp4ke3d6hiV5JO1BXlX+SttDtyNnodajRK2krTZS0A9dr9DpU75U0OZx9pOxdxK3VaRI/W3sd2tpDy9tRwRbChy29ku4aLtMYftnuga3RXXhK0fo21FCn1Le+fTj/VtpCDeSs9TpU66FbR0rajrsrcIczoN+0rW1SMqWtDLOvHne/cHtbPLDbhss0h1+2cMPw6N2GpwStt0pqYrx861uG87dQOXIGvQ4FPYRpcCVtYQbQoaRXUmvTtlIpmVALP61eh1q9UmSgJvRVvvvpcJnaaG1ouOQriVAEr7gOZ8+DRdjrUNhDXKRWyVcpV+CMQGCGXyIBxgjqcR9nKQEvex3SPYiowyV7XraC1qzm+z5SneaX/+rf/9VfI7wRKrU4EuDdHgCUhkyPS+IiElhe9LilYLjo+noiqSHukaFrIGiFGxXr4Xx5J8fSljbWVDT0Yjx0Ee1CLQwdN6GxKALqAr2NekO93LSeSGqIsWbs8dCtKybQ7fPQmSuEbv8m0O19b9DtvjR0H3pX0F3rYQI8tBk8bIos7YOg6MOlLKxoIhytdRgcIZUA8teeB4uxDoiy00VLOWAc2wBGqeCbT/5nv4ZzJkZaSTf2YfS4GKMPshtOlyAkkEGldrikobALe6UQKQFdj+aiLukOfvFtpB09/BJIY7brCb2DnSOKRDTtGw37jQabVsNdjkq6WRAX+OmD4DofQTVBl2wfIeFINRR1kcJwWroOYxpzT0OK8W0U3NFuBx52QRibbAnGP+objfqNmk2rqWA/6FHgyRc2dx/HdBfYzeVhv8nDbt4f7Le9B9gt/YInF8OGgoC/OwCDbrlMR0YbGExeC+41yxOlS3G/r6OEwLP7Vr5egaH2FLRB53//zdefg9bcQx3S3ADZQ7zC0iE0OTLpfdH19fi5Cu5KnwTdxhsUExgPszvg8DzctFbG6cKG0IV0B68q7xq6myCJfaJHn5Jdz6VhXXyXsB7bBNaPQcD7ZLVTSN4L5Leiik/16M5qi3RpyGfRxzuwZeHd0bvoB93tLZjmKaRP0Bygpkx2jJ6jbAy9cNxS7uCaoEPo8CK2Nk4/yGEPmSmRHubhQy37mxCP0hwdRjfp01xQg6SjnkgoI/0s5Zqv2+mTwEuCjZ7TD5bEUs7Y+s7C2JYj4rDG3q2JWtX2AUp+N9dbV0Tvk3KkJlYXB1WMguxTUDb9WJd5hohZuszHERlAl/kW3B1qynwrdCumzCdIuTc5QJlyb+gy304mH2NfZb5UMJBje9QYih7sDX1YP8zax+3ZPG3L5vOYJrJ58YpTvcK6sbPuzbgzzWpZtjzbms1Dl7y9+v6M7omLmO0VsYuqz9/WPe8xAm10FWbzhRd0jy3DoBdeU/UkjHEH+cgOV0bRSPZwpP1eDxrxEYjY+i0aqS8cqS8eqc+uq68+2hU2rbMj9UUj9YUj9cXr6rPrcDANNK7BwX6qj7RRG2kjuQzM8TocXC+a901wWh+pr7auvnAdDggG1kP1JSP1jVJL/QpwcNMGdHADhZfA8+XGbT0d3HxJuhodt+gK6OC2NXQVXwIH4RXgYG4DOrjrKtPB7VeZDu64ynTwyxvQwS9dZTr4zFWmg89eZTr44gZ0cN9VpoNTV5kO7r3KdLC8AR08cJXp4KGrTAcPX2U6WNXA9BokPKXfFyU01mHhcf2+SKG1Dg3n9Puihdo6PDyre2Ld8oym1iVW8salQRWPoaf1GipqjNQxSnStdXXE3gqucYkxaF16pPOQ4Aa5hY0YdNFw6R3wH+gbPjEtb95Lexm6HMW9t4a+Ynkq3mDeDOeG45u+pPwTX4bO62sp+jl9yXkTXoai1+PXimnMGrKuX6LWTWjlxbVzLbwErSQb08oLa7F/qfla34BWxqnhmoueQn6kxV7r6lLIy1eZQi5eZQr5/t8Ihbx6FSjkB1eBQl55vxSSpbh4XvVxPqNknKTcjPrvX2DDiAoNM+offVuMI6phmVH/3TNiHNG77KEqLDNSwkX3failvWhte/G69ux7as9Ke0mf5qU9u7a9aF174XtqL5H2Gn2ak/bCte3Zde3FG7R3uaN8aCw0NUu5+JRtaZttl8HuJIXpkcWPzWP8JHlIER4aFE2rRm9WNRDRCC9Jb1YlUMrgxfZmlSXY9ETTSvVmOegm2zCPwewDLsLweBUT+RT2PmzS42+B4cBDY3AEH6Mm3z8vF8OkYsnxiNY+pK2BaYr1Kg0y2e3v0RKIjZLYFIjtWSb4V2e3Q9nx7QC2JBmb+yKabZpwmypNA6XSp5o6HNyzNIilmwcCYbRfuUcYq8q70MFIcZI3sIXyXs3wc3Z8OYFbOTKVB7hc06k7YMBDph36EMNOwxwcF0TJBRtZG47nfM1XcqSIO3x5CgWudrTbbSr3MGIyTZtpp92FA6TGAyXtIdC4U+6ZA2+mUMDgbiVSDpceSjS4VXbSZBjdh0THpCWemCazjBwPkzr89tuPrr6iDrHV/uHV1a+svqYPmWd13x/rcS3RxacBVdfBSsXQeKBm2VJUUthQeyjlvO5/f1YPEmBXBKQ97b1v4d/iVlf1rPnZjK8Kr85WBQBjIhaSP5txZnnWNCpfPXh5eKe785VH49P8YOQ2d76XDi4OCTCgs127+q6+D8Px3risZAMs669Ls5VngyRzLGfTb6LvPME9eFWLW+8PONz7LWp/BWTh7TdnEfGJzeFPOWjsXp8B8ZDOZpsc6H3WXA/yQvc0YhFPoMu7YfYsQRUC8aLk0NoFk9AchxAU0+1JBE3+uPsQbGePFGqKewoz/cFl6rijwV/CnuI+9cA9wrfx5cY98/XKIlT50K27JRSsWS54XC58XTteLFfHlxFcH32+cwpOPErsxDjUsrtwXleXXw8HiubQr0pe3e/8pna7/RXn/gonE8y5jO9jQVRdvghnzxExcYPVOg7MXLw8i3BCDK6mEPGEXNzmG6y8GWY4CG1t3YWnES12AMnwtVWiGWVrOR8qW+LhmUE8vAH4bAQcHdSZRBx353Eljzuv5esWRhfs7Pk6Y7LuNcQG3OJWjWQY8xme6WeYLG/VY+4Z49u+4FFnll1yq/7dx/Uw6hA14hkYQGccofV3DMK19a3s9lQlC+XCW/Xvfk2maIhY3Re+NlwRBpjNWCU8g4vXtuS/1zb5nqz/Hg5o4x9UtLHlkrTxm9qHmxrqoNyEVtFGSgEo/6kD4hnjwzMH7qfZrDm3gwL3g2zWvLmdAncxmzWvbWeu+v1t8CTfwc+vbi1nzevy/SfQov90OwXZ9TKTVDWTZ71nf/+6RC2sojBVUG9/A58eTO9nD8gvwgRwFE86xOb1gPc7evDtOe/SUHmW/UC7xqlCu9e3wt9m1vyYOaR7zb/+SF7/b//6irz+tX/9vk4RlRmGqTZN/xLG36tJ+o/tqjp5uvelz3/+5ImTS6eX6f6l+890v6xuPPDRAzceuHHm/jPLp5a+rE6ePnv81Mn76NTJ5aXu8VMHTy2d/sLyF3vUW1rup504c98SDSd86XT79JkHT9MXl47ft9Slz586/oXREved7C0fP31iafTr504u+2qou/TA0vFltXzmDN1//PSXq89nuv2i1Pvy/Z87c6rXL91bPtNduo8+d+rMiXYFjfrclz7/+aUuLXW7Z7qqt9xdOn6/fxkBfmaG7j/Z6508/QVaOn3fzJnPz3A16uTpE2e63aUTy1VXTnxxaeSzh2vt5/uOLx/vfxztMqFPnz/epc8dP9FWVbXdEwDg/uPLJ77YL/HgydP3nXmQeid/ZWmAIu7d8pcfWNpkZLg/6xvlr9WwnDhz/wPdpV7v5JnTdP/S8hfP3KfwX6bG1RalVKJiVVORqqtQpcqqhgpUUxk1prRqKXexkf6BDZRVoYpUrBJVU3WVqqZqqXG1Ve1QU2qv2qc+rD6qblWfUv+JOqF66jH1e+qP1V8oo5Vva/Rv3P9t8X9b/d+E/9vm/zK1qL7HkSeMEhgAa1ONq50qVzcqp46rR9UfKa0fxS2wgbY60olu6ExPatI36Dl973D7VZtVW2hju9qudqgdalJNqp1qp9qldqkpNaV2q93qGnWNmlNz6r32P5Duq9U1f4/6v6/4v8f83+P+7wn/d/4q9F+v6ovD7VbtVe08qZ5Uv6Z+TZ1T59RX1VfVr6tfV7+hfkM9pZ5SX1NfU19XX1d0WKnVRCmtldqjlWoppS4cUUrVpH97lHzjvvpvW5VSsXIXxtNjEjxk8M+s+Res+WfX/AtH/rnzW9KltVWtLVplj/y/2P9L/L+a/1f3/1L/r+H/Nfmfu7g13VdVH/sOZuNbVBLXonqY2kbQNGO6pdwbW9P7Y27bqoT/KR6vTCX+OWIfncTnATXWGJaMv1fPGCV5pneelcYznoxWVp6NNlplNeV+NpHWbvhlLVj9/wA=")))), e) });
|
|
1150
|
+
}
|
|
1151
|
+
const oe = "deflate", St = "deflate-raw", an = "deflate64-raw", Rt = "gzip", At = [oe, St, Rt], vt = [oe, St, Rt, an];
|
|
1152
|
+
let sn;
|
|
1153
|
+
function kt(r, e, t = {}) {
|
|
1154
|
+
if (!(r ? At : vt).includes(e))
|
|
1155
|
+
throw new TypeError("Unsupported format: " + e);
|
|
1156
|
+
{
|
|
1157
|
+
const n = new Error("WASM module not loaded");
|
|
1158
|
+
throw n.cause = sn, n;
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
class be {
|
|
1162
|
+
constructor(e = oe, t) {
|
|
1163
|
+
return kt(!0, e, t);
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
class Ee {
|
|
1167
|
+
constructor(e = oe, t) {
|
|
1168
|
+
return kt(!1, e, t);
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
be.requiresModule = !0;
|
|
1172
|
+
Ee.requiresModule = !0;
|
|
1173
|
+
be.supportedFormats = At;
|
|
1174
|
+
Ee.supportedFormats = vt;
|
|
1175
|
+
function on(r, e) {
|
|
1176
|
+
return ge(r, e);
|
|
1177
|
+
}
|
|
1178
|
+
xr(on);
|
|
1179
|
+
se({
|
|
1180
|
+
CompressionStreamFallback: be,
|
|
1181
|
+
DecompressionStreamFallback: Ee
|
|
1182
|
+
});
|
|
1183
|
+
nn(se);
|
|
1184
|
+
Xt(se);
|
|
1185
|
+
async function $(r) {
|
|
1186
|
+
try {
|
|
1187
|
+
await r.body?.cancel();
|
|
1188
|
+
} catch {
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
function cn(r) {
|
|
1192
|
+
if (!r) return null;
|
|
1193
|
+
const e = /\/(\d+)$/.exec(r.trim());
|
|
1194
|
+
return e ? Number(e[1]) : null;
|
|
1195
|
+
}
|
|
1196
|
+
function ln(r) {
|
|
1197
|
+
return r.headers.get("etag") ?? r.headers.get("last-modified");
|
|
1198
|
+
}
|
|
1199
|
+
async function Te(r, e) {
|
|
1200
|
+
let t;
|
|
1201
|
+
try {
|
|
1202
|
+
t = await fetch(r, { headers: { Range: "bytes=0-0" }, signal: e, cache: "no-store" });
|
|
1203
|
+
} catch (s) {
|
|
1204
|
+
throw e?.aborted ? s : new I("no-cors", `Cannot read ${r} from the browser (no CORS headers?)`, {
|
|
1205
|
+
cause: s
|
|
1206
|
+
});
|
|
1207
|
+
}
|
|
1208
|
+
const n = ln(t);
|
|
1209
|
+
if (!t.ok && t.status !== 206)
|
|
1210
|
+
throw await $(t), new I("network", `${r} returned ${t.status}`);
|
|
1211
|
+
if (t.status === 206) {
|
|
1212
|
+
const s = cn(t.headers.get("content-range"));
|
|
1213
|
+
await $(t);
|
|
1214
|
+
const c = s ?? await un(r, e);
|
|
1215
|
+
return c === null ? { type: "chunked", url: r, size: null, validator: n } : { type: "range-http", url: r, size: c, validator: n };
|
|
1216
|
+
}
|
|
1217
|
+
const i = t.headers.get("content-length");
|
|
1218
|
+
return await $(t), { type: "chunked", url: r, size: i ? Number(i) : null, validator: n };
|
|
1219
|
+
}
|
|
1220
|
+
async function un(r, e) {
|
|
1221
|
+
const t = await fetch(r, { signal: e, cache: "no-store" }), n = t.headers.get("content-length");
|
|
1222
|
+
return await $(t), n ? Number(n) : null;
|
|
1223
|
+
}
|
|
1224
|
+
function De(r) {
|
|
1225
|
+
const e = r.endsWith("/") ? r : `${r}/`, t = e.endsWith("h5p/") ? e : `${e}h5p/`;
|
|
1226
|
+
return {
|
|
1227
|
+
base: t,
|
|
1228
|
+
virtual: `${t}virtual/`,
|
|
1229
|
+
frame: `${t}frame/`,
|
|
1230
|
+
ping: `${t}virtual/_ping`
|
|
1231
|
+
};
|
|
1232
|
+
}
|
|
1233
|
+
const fn = new URL(
|
|
1234
|
+
/* @vite-ignore */
|
|
1235
|
+
"./h5p-sw.js",
|
|
1236
|
+
import.meta.url
|
|
1237
|
+
).href, dn = new URL(
|
|
1238
|
+
/* @vite-ignore */
|
|
1239
|
+
"./frame-assets/",
|
|
1240
|
+
import.meta.url
|
|
1241
|
+
).href, fe = {
|
|
1242
|
+
mainJs: "main.bundle.js",
|
|
1243
|
+
frameJs: "frame.bundle.js",
|
|
1244
|
+
frameCss: "styles/h5p.css"
|
|
1245
|
+
}, Le = `
|
|
1246
|
+
/* Any rule in the host page that names this element beats a :host rule, however
|
|
1247
|
+
specific — so the layout lives on a wrapper inside the shadow tree, which the page
|
|
1248
|
+
cannot reach. A host writing "h5p-player { display: block; height: 400px }", which is
|
|
1249
|
+
the obvious thing to write, then cannot break it. */
|
|
1250
|
+
:host { display: block; position: relative; width: 100%; }
|
|
1251
|
+
:host([hidden]) { display: none !important; }
|
|
1252
|
+
|
|
1253
|
+
/* H5P's own fullscreen targets the frame, which the browser sizes to the screen on its
|
|
1254
|
+
own; this is for a host page that calls requestFullscreen on the element instead.
|
|
1255
|
+
Without the important flag, the inline height auto-resize writes would pin it to the
|
|
1256
|
+
content height while it is meant to be filling the screen. */
|
|
1257
|
+
:host(:fullscreen) { height: 100% !important; width: 100% !important; }
|
|
1258
|
+
|
|
1259
|
+
/* height: 100% covers a host given an explicit height; min-height: inherit covers one
|
|
1260
|
+
given only a min-height, where a percentage height would resolve to auto and leave the
|
|
1261
|
+
frame at an iframe's intrinsic 150px. */
|
|
1262
|
+
.viewport {
|
|
1263
|
+
display: flex;
|
|
1264
|
+
flex-direction: column;
|
|
1265
|
+
height: 100%;
|
|
1266
|
+
min-height: inherit;
|
|
1267
|
+
}
|
|
1268
|
+
|
|
1269
|
+
iframe { display: block; flex: 1 1 auto; width: 100%; min-height: 0; border: 0; }
|
|
1270
|
+
`;
|
|
1271
|
+
let _ = null;
|
|
1272
|
+
function hn(r) {
|
|
1273
|
+
if ("adoptedStyleSheets" in r && typeof CSSStyleSheet.prototype.replaceSync == "function") {
|
|
1274
|
+
_ || (_ = new CSSStyleSheet(), _.replaceSync(Le)), r.adoptedStyleSheets = [_];
|
|
1275
|
+
return;
|
|
1276
|
+
}
|
|
1277
|
+
const e = document.createElement("style");
|
|
1278
|
+
e.textContent = Le, r.prepend(e);
|
|
1279
|
+
}
|
|
1280
|
+
class pn extends HTMLElement {
|
|
1281
|
+
constructor() {
|
|
1282
|
+
super(), this.jobs = null, this.jobsUrl = null, this.routes = null, this.registration = null, this.currentFile = null, this.currentSource = null, this.load = null, this.connected = !1, this.internalState = "idle", this.internalPkgId = null, this.prefetchQueue = [], this.prefetching = null, this.onWindowMessage = (t) => {
|
|
1283
|
+
const n = t.data;
|
|
1284
|
+
if (n && t.source === this.iframe.contentWindow && t.origin === location.origin) {
|
|
1285
|
+
if ("context" in n && n.context === "h5p") {
|
|
1286
|
+
this.onResizerMessage(n);
|
|
1287
|
+
return;
|
|
1288
|
+
}
|
|
1289
|
+
if (!(!("channel" in n) || n.channel !== "h5p-player") && !(this.internalPkgId && n.pkgId !== this.internalPkgId))
|
|
1290
|
+
switch (n.type) {
|
|
1291
|
+
case "ready":
|
|
1292
|
+
this.setState("ready"), this.advancePrefetch(), this.dispatchEvent(new CustomEvent("ready", { detail: { pkgId: n.pkgId } }));
|
|
1293
|
+
return;
|
|
1294
|
+
case "xapi":
|
|
1295
|
+
this.dispatchEvent(
|
|
1296
|
+
new CustomEvent("xapi", { detail: { statement: n.statement, verb: n.verb } })
|
|
1297
|
+
);
|
|
1298
|
+
return;
|
|
1299
|
+
case "finished":
|
|
1300
|
+
this.dispatchEvent(new CustomEvent("finished", { detail: { statement: n.statement } }));
|
|
1301
|
+
return;
|
|
1302
|
+
case "error":
|
|
1303
|
+
this.dispatchEvent(
|
|
1304
|
+
new CustomEvent("error", {
|
|
1305
|
+
detail: { code: "runtime", message: n.message }
|
|
1306
|
+
})
|
|
1307
|
+
), this.setState("error");
|
|
1308
|
+
return;
|
|
1309
|
+
case "relay":
|
|
1310
|
+
this.handleWorkerRequest(n.payload);
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1313
|
+
}, this.onServiceWorkerMessage = (t) => {
|
|
1314
|
+
(t.data?.type === "need-job" || t.data?.type === "need-file") && this.handleWorkerRequest(t.data);
|
|
1315
|
+
}, this.onWindowResize = () => {
|
|
1316
|
+
this.iframe.contentWindow?.postMessage({ context: "h5p", action: "resize" }, location.origin);
|
|
1317
|
+
};
|
|
1318
|
+
const e = this.attachShadow({ mode: "open" });
|
|
1319
|
+
e.innerHTML = `
|
|
1320
|
+
<div class="viewport">
|
|
1321
|
+
<iframe part="frame" allow="fullscreen" title="H5P content"></iframe>
|
|
1322
|
+
</div>
|
|
1323
|
+
`, hn(e), this.iframe = e.querySelector("iframe");
|
|
1324
|
+
}
|
|
1325
|
+
static get observedAttributes() {
|
|
1326
|
+
return ["src", "sw", "assets-base", "auto-resize", "libraries", "allow-origins", "preload"];
|
|
1327
|
+
}
|
|
1328
|
+
/* ---------------------------------------------------------------- public surface */
|
|
1329
|
+
get src() {
|
|
1330
|
+
return this.getAttribute("src");
|
|
1331
|
+
}
|
|
1332
|
+
set src(e) {
|
|
1333
|
+
e === null ? this.removeAttribute("src") : this.setAttribute("src", e);
|
|
1334
|
+
}
|
|
1335
|
+
/**
|
|
1336
|
+
* Whether to pull large deflated media before the content asks for it. `none` (the default)
|
|
1337
|
+
* fetches an entry when the runtime requests it; `auto` starts once the content is up.
|
|
1338
|
+
*
|
|
1339
|
+
* Off by default because `auto` spends a learner's bandwidth on a video they may never reach —
|
|
1340
|
+
* the host's call, not the element's. It is worth making for a package whose media cannot be
|
|
1341
|
+
* streamed: see `PrefetchEntry`.
|
|
1342
|
+
*/
|
|
1343
|
+
get preload() {
|
|
1344
|
+
return this.getAttribute("preload") === "auto" ? "auto" : "none";
|
|
1345
|
+
}
|
|
1346
|
+
set preload(e) {
|
|
1347
|
+
this.setAttribute("preload", e);
|
|
1348
|
+
}
|
|
1349
|
+
/** A `File` from a picker. Setting it loads, and takes precedence over `src`. */
|
|
1350
|
+
get file() {
|
|
1351
|
+
return this.currentFile;
|
|
1352
|
+
}
|
|
1353
|
+
set file(e) {
|
|
1354
|
+
this.currentFile = e, this.connected && (e ? this.startLoad() : this.clear());
|
|
1355
|
+
}
|
|
1356
|
+
get state() {
|
|
1357
|
+
return this.internalState;
|
|
1358
|
+
}
|
|
1359
|
+
get pkgId() {
|
|
1360
|
+
return this.internalPkgId;
|
|
1361
|
+
}
|
|
1362
|
+
/** The resolved Service Worker scope the routes live under. Read-only, `null` until registered. */
|
|
1363
|
+
get scope() {
|
|
1364
|
+
return this.routes?.base ?? null;
|
|
1365
|
+
}
|
|
1366
|
+
/* ---------------------------------------------------------------- lifecycle */
|
|
1367
|
+
connectedCallback() {
|
|
1368
|
+
this.connected = !0, window.addEventListener("message", this.onWindowMessage), navigator.serviceWorker?.addEventListener("message", this.onServiceWorkerMessage), (this.src || this.currentFile) && this.startLoad();
|
|
1369
|
+
}
|
|
1370
|
+
disconnectedCallback() {
|
|
1371
|
+
this.connected = !1, window.removeEventListener("message", this.onWindowMessage), window.removeEventListener("resize", this.onWindowResize), navigator.serviceWorker?.removeEventListener("message", this.onServiceWorkerMessage), this.abortLoad(), this.jobs?.terminate(), this.jobs = null, this.jobsUrl && URL.revokeObjectURL(this.jobsUrl), this.jobsUrl = null;
|
|
1372
|
+
}
|
|
1373
|
+
attributeChangedCallback(e, t, n) {
|
|
1374
|
+
if (t !== n && this.connected) {
|
|
1375
|
+
if (e === "src") {
|
|
1376
|
+
if (this.currentFile = null, n === null) {
|
|
1377
|
+
this.clear();
|
|
1378
|
+
return;
|
|
1379
|
+
}
|
|
1380
|
+
this.startLoad();
|
|
1381
|
+
return;
|
|
1382
|
+
}
|
|
1383
|
+
e === "auto-resize" && n === null && this.style.removeProperty("height");
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
/* ---------------------------------------------------------------- loading */
|
|
1387
|
+
abortLoad() {
|
|
1388
|
+
this.load?.abort(), this.load = null, this.prefetchQueue = [], this.prefetching = null, this.internalPkgId && this.postToJobs({ type: "abort", pkgId: this.internalPkgId });
|
|
1389
|
+
}
|
|
1390
|
+
/**
|
|
1391
|
+
* Holds a shared lock on the package for as long as it is loaded here. Eviction — in this tab
|
|
1392
|
+
* or any other — never picks a package with a lock under its prefix, so a learner mid-video is
|
|
1393
|
+
* safe from a quota squeeze caused by a package loading somewhere else. Shared, so two tabs on
|
|
1394
|
+
* the same package both hold it. Released when the load is aborted, which a new `src`,
|
|
1395
|
+
* `clear()` and disconnection all do.
|
|
1396
|
+
*/
|
|
1397
|
+
holdPackage(e, t) {
|
|
1398
|
+
const n = navigator.locks;
|
|
1399
|
+
if (!n) return;
|
|
1400
|
+
const i = new Promise((s) => {
|
|
1401
|
+
t.addEventListener("abort", () => s(), { once: !0 });
|
|
1402
|
+
});
|
|
1403
|
+
n.request(Ut(e, "playing"), { mode: "shared", signal: t }, () => i).catch(() => {
|
|
1404
|
+
});
|
|
1405
|
+
}
|
|
1406
|
+
/** Empties the player without an error: what removing `src`, or setting `file` to null, means. */
|
|
1407
|
+
clear() {
|
|
1408
|
+
this.abortLoad(), this.iframe.removeAttribute("src"), this.internalPkgId = null, this.setState("idle");
|
|
1409
|
+
}
|
|
1410
|
+
async startLoad() {
|
|
1411
|
+
this.abortLoad();
|
|
1412
|
+
const e = new AbortController();
|
|
1413
|
+
this.load = e;
|
|
1414
|
+
const { signal: t } = e;
|
|
1415
|
+
this.iframe.removeAttribute("src"), this.internalPkgId = null;
|
|
1416
|
+
try {
|
|
1417
|
+
this.setState("probing");
|
|
1418
|
+
const n = await this.ensureWorker();
|
|
1419
|
+
if (t.aborted) return;
|
|
1420
|
+
const { descriptor: i, pkgId: s } = await this.resolveSource(t);
|
|
1421
|
+
if (t.aborted || (this.currentSource = i, this.internalPkgId = s, this.holdPackage(s, t), await this.send({ type: "register", record: this.recordFor(s, i) }), t.aborted)) return;
|
|
1422
|
+
i.type === "file" && this.currentFile && await this.send({ type: "file", pkgId: s, file: this.currentFile });
|
|
1423
|
+
const c = `${n.frame}${s}`;
|
|
1424
|
+
let u;
|
|
1425
|
+
if (i.type === "chunked" ? (this.setState("downloading"), u = await this.downloadAndIndex(s, i, t, c)) : (this.setState("indexing"), u = await this.index(s, t)), t.aborted) return;
|
|
1426
|
+
this.prefetchQueue = u.map((w) => w.entry), this.iframe.getAttribute("src") !== c ? this.iframe.src = c : this.internalState === "ready" && this.advancePrefetch();
|
|
1427
|
+
} catch (n) {
|
|
1428
|
+
if (t.aborted) return;
|
|
1429
|
+
this.fail(n);
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
/**
|
|
1433
|
+
* Downloads a package from a host that ignores `Range`, and boots as soon as the worker's
|
|
1434
|
+
* forward index says the runtime has what it needs — for a libraries-first export, long before
|
|
1435
|
+
* the media has finished. Each progress report is a chance to ask; a "not yet" is not an error.
|
|
1436
|
+
* The final index after the download is the real one, from the central directory: it swaps the
|
|
1437
|
+
* worker onto it, and is where a package missing libraries is found out.
|
|
1438
|
+
*/
|
|
1439
|
+
async downloadAndIndex(e, t, n, i) {
|
|
1440
|
+
let s = !1, c = null;
|
|
1441
|
+
const u = () => {
|
|
1442
|
+
s || c || n.aborted || (c = this.send({ type: "index", pkgId: e }).then((w) => {
|
|
1443
|
+
n.aborted || s || w.ok && w.type === "indexed" && w.ready !== !1 && (s = !0, this.iframe.src = i);
|
|
1444
|
+
}).catch(() => {
|
|
1445
|
+
}).finally(() => {
|
|
1446
|
+
c = null;
|
|
1447
|
+
}));
|
|
1448
|
+
};
|
|
1449
|
+
return await this.runDownload(e, t, n, "download", u), n.aborted ? [] : (c && await c, s || this.setState("indexing"), this.index(e, n));
|
|
1450
|
+
}
|
|
1451
|
+
/**
|
|
1452
|
+
* Indexes the package, and if it turns out to declare libraries it does not carry, fetches them
|
|
1453
|
+
* from the configured source and indexes again.
|
|
1454
|
+
*
|
|
1455
|
+
* Without a `libraries` attribute this is one call that either works or reports exactly what is
|
|
1456
|
+
* missing. Reaching out to a third party is never something the element decides on its own.
|
|
1457
|
+
*/
|
|
1458
|
+
async index(e, t) {
|
|
1459
|
+
try {
|
|
1460
|
+
return Ne(await this.send({ type: "index", pkgId: e }));
|
|
1461
|
+
} catch (n) {
|
|
1462
|
+
const i = n instanceof I ? n.missingLibraries : void 0, s = this.librarySource();
|
|
1463
|
+
if (!i || !s) throw n;
|
|
1464
|
+
return await this.supplyLibraries(e, i, s, t), t.aborted ? [] : Ne(await this.send({ type: "index", pkgId: e }));
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
/**
|
|
1468
|
+
* Registers a second package as the source of the libraries this one is missing.
|
|
1469
|
+
*
|
|
1470
|
+
* Every failure along the way — an unreachable URL, a bundle that is not an archive, one that
|
|
1471
|
+
* turns out not to have them either — is reported as one thing: these libraries are missing and
|
|
1472
|
+
* this is where the attempt to supply them stopped.
|
|
1473
|
+
*/
|
|
1474
|
+
async supplyLibraries(e, t, n, i) {
|
|
1475
|
+
const s = wn(t, n);
|
|
1476
|
+
try {
|
|
1477
|
+
const c = await Te(s, i), u = await Se(s, c.validator), w = {
|
|
1478
|
+
type: "chunked",
|
|
1479
|
+
url: s,
|
|
1480
|
+
size: c.size,
|
|
1481
|
+
validator: c.validator
|
|
1482
|
+
};
|
|
1483
|
+
if (await this.send({
|
|
1484
|
+
type: "register",
|
|
1485
|
+
record: { ...this.recordFor(u, w), role: "libraries" }
|
|
1486
|
+
}), this.setState("downloading"), await this.runDownload(u, w, i, "libraries"), i.aborted) return;
|
|
1487
|
+
this.setState("indexing"), await this.send({ type: "index", pkgId: u }), await this.send({ type: "attach-libraries", pkgId: e, libraryPkgId: u });
|
|
1488
|
+
} catch (c) {
|
|
1489
|
+
if (i.aborted) throw c;
|
|
1490
|
+
const u = c instanceof Error ? c.message : String(c);
|
|
1491
|
+
throw new I(
|
|
1492
|
+
"bad-archive",
|
|
1493
|
+
`This package is missing ${t.folders.join(", ")}, and ${s} did not supply them: ${u}`,
|
|
1494
|
+
{ cause: c, missingLibraries: t }
|
|
1495
|
+
);
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
/**
|
|
1499
|
+
* Origins the host vouches for, added to the frame's policy. For content that reaches somewhere
|
|
1500
|
+
* the built-in list cannot know about — a tenant's own Panopto host, an in-house CDN. The
|
|
1501
|
+
* worker drops anything that is not plainly a host.
|
|
1502
|
+
*/
|
|
1503
|
+
allowOrigins() {
|
|
1504
|
+
const e = this.getAttribute("allow-origins")?.trim();
|
|
1505
|
+
return e ? e.split(/\s+/) : [];
|
|
1506
|
+
}
|
|
1507
|
+
librarySource() {
|
|
1508
|
+
const e = this.getAttribute("libraries")?.trim();
|
|
1509
|
+
return e ? e === "hub" ? "hub" : { url: e } : null;
|
|
1510
|
+
}
|
|
1511
|
+
async resolveSource(e) {
|
|
1512
|
+
if (this.currentFile) {
|
|
1513
|
+
const s = this.currentFile;
|
|
1514
|
+
return { descriptor: {
|
|
1515
|
+
type: "file",
|
|
1516
|
+
name: s.name,
|
|
1517
|
+
size: s.size,
|
|
1518
|
+
lastModified: s.lastModified
|
|
1519
|
+
}, pkgId: await Tt(s) };
|
|
1520
|
+
}
|
|
1521
|
+
const t = this.src;
|
|
1522
|
+
if (!t) throw new I("network", "No src or file was set");
|
|
1523
|
+
const n = new URL(t, location.href).href, i = await Te(n, e);
|
|
1524
|
+
return { descriptor: i, pkgId: await Se(n, i.validator) };
|
|
1525
|
+
}
|
|
1526
|
+
recordFor(e, t) {
|
|
1527
|
+
return {
|
|
1528
|
+
pkgId: e,
|
|
1529
|
+
source: t,
|
|
1530
|
+
frameAssets: this.frameAssets(),
|
|
1531
|
+
allowOrigins: this.allowOrigins(),
|
|
1532
|
+
status: "registered",
|
|
1533
|
+
lastPlayed: Date.now(),
|
|
1534
|
+
version: de
|
|
1535
|
+
};
|
|
1536
|
+
}
|
|
1537
|
+
frameAssets() {
|
|
1538
|
+
const e = this.getAttribute("assets-base")?.trim(), t = e ? new URL(e.endsWith("/") ? e : `${e}/`, location.href).href : dn;
|
|
1539
|
+
return {
|
|
1540
|
+
mainJs: new URL(fe.mainJs, t).href,
|
|
1541
|
+
frameJs: new URL(fe.frameJs, t).href,
|
|
1542
|
+
frameCss: new URL(fe.frameCss, t).href
|
|
1543
|
+
};
|
|
1544
|
+
}
|
|
1545
|
+
/** Runs the pre-play download for a host that does not honour `Range`, reporting progress. */
|
|
1546
|
+
runDownload(e, t, n, i = "download", s) {
|
|
1547
|
+
return new Promise((c, u) => {
|
|
1548
|
+
const w = this.ensureJobs(), g = (b) => {
|
|
1549
|
+
const y = b.data;
|
|
1550
|
+
if (!(y.pkgId !== e || y.entry)) {
|
|
1551
|
+
if (y.type === "progress") {
|
|
1552
|
+
this.emitProgress({
|
|
1553
|
+
phase: i,
|
|
1554
|
+
loaded: y.loaded,
|
|
1555
|
+
total: y.total,
|
|
1556
|
+
fraction: y.total ? y.loaded / y.total : null
|
|
1557
|
+
}), s?.();
|
|
1558
|
+
return;
|
|
1559
|
+
}
|
|
1560
|
+
w.removeEventListener("message", g), y.type === "done" ? c() : u(new I(y.code, y.message));
|
|
1561
|
+
}
|
|
1562
|
+
};
|
|
1563
|
+
w.addEventListener("message", g), n.addEventListener("abort", () => {
|
|
1564
|
+
w.removeEventListener("message", g), c();
|
|
1565
|
+
}), this.postToJobs({ type: "download", pkgId: e, source: t });
|
|
1566
|
+
});
|
|
1567
|
+
}
|
|
1568
|
+
/* ---------------------------------------------------------------- Service Worker */
|
|
1569
|
+
/**
|
|
1570
|
+
* Finds the routes, registering our own worker unless a host has already mounted the handlers
|
|
1571
|
+
* into theirs. Registration uses an explicit `h5p/` sub-scope, so a host worker living in the
|
|
1572
|
+
* same directory — or at `/`, for a root-placed `h5p-sw.js` — is never displaced.
|
|
1573
|
+
*/
|
|
1574
|
+
async ensureWorker() {
|
|
1575
|
+
if (this.routes && this.registration) {
|
|
1576
|
+
if (await mn(this.registration)) return this.routes;
|
|
1577
|
+
this.routes = null, this.registration = null;
|
|
1578
|
+
}
|
|
1579
|
+
if (!("serviceWorker" in navigator))
|
|
1580
|
+
throw new I(
|
|
1581
|
+
"no-worker",
|
|
1582
|
+
"This browser has no Service Worker support, or the page is not on https/localhost"
|
|
1583
|
+
);
|
|
1584
|
+
const e = await this.findMountedRoutes();
|
|
1585
|
+
if (e)
|
|
1586
|
+
return this.routes = e.routes, this.registration = e.registration, e.routes;
|
|
1587
|
+
const t = this.getAttribute("sw")?.trim() || fn, n = new URL(t, location.href);
|
|
1588
|
+
if (n.origin !== location.origin)
|
|
1589
|
+
throw new I("no-worker", "The Service Worker script must be served same-origin");
|
|
1590
|
+
const i = new URL("h5p/", n).href;
|
|
1591
|
+
let s;
|
|
1592
|
+
try {
|
|
1593
|
+
s = await navigator.serviceWorker.register(n.href, { scope: i });
|
|
1594
|
+
} catch (c) {
|
|
1595
|
+
throw new I("no-worker", `Could not register ${n.href}`, { cause: c });
|
|
1596
|
+
}
|
|
1597
|
+
return await gn(s), this.registration = s, this.routes = De(s.scope), this.warnOnVersionMismatch(), this.routes;
|
|
1598
|
+
}
|
|
1599
|
+
/** A host that enforces one worker mounts our handlers in theirs; those routes answer `_ping`. */
|
|
1600
|
+
async findMountedRoutes() {
|
|
1601
|
+
if (!navigator.serviceWorker.controller) return null;
|
|
1602
|
+
try {
|
|
1603
|
+
const e = await navigator.serviceWorker.ready, t = De(e.scope), n = await fetch(t.ping, { cache: "no-store" });
|
|
1604
|
+
if (!n.ok) return null;
|
|
1605
|
+
const i = await n.json();
|
|
1606
|
+
return Oe(i.version), { routes: t, registration: e };
|
|
1607
|
+
} catch {
|
|
1608
|
+
return null;
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
/**
|
|
1612
|
+
* Asks the worker its version over the control channel rather than over the `_ping` route. The
|
|
1613
|
+
* route only answers for a client the worker controls, and the host page deliberately is not
|
|
1614
|
+
* one — our scope is a sub-directory it does not sit under. `postMessage` to the registration's
|
|
1615
|
+
* own worker has no such requirement.
|
|
1616
|
+
*/
|
|
1617
|
+
async warnOnVersionMismatch() {
|
|
1618
|
+
try {
|
|
1619
|
+
const e = await this.send({ type: "ping" });
|
|
1620
|
+
e.ok && e.type === "pong" && Oe(e.version);
|
|
1621
|
+
} catch {
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
/** Sends a control message to the worker and waits for its reply on a private port. */
|
|
1625
|
+
async send(e) {
|
|
1626
|
+
const t = this.registration?.active;
|
|
1627
|
+
if (!t) throw new I("no-worker", "The Service Worker is not active");
|
|
1628
|
+
const n = await new Promise((i, s) => {
|
|
1629
|
+
const c = new MessageChannel(), u = setTimeout(() => {
|
|
1630
|
+
c.port1.close(), s(new I("no-worker", `The worker did not answer "${e.type}"`));
|
|
1631
|
+
}, 3e4);
|
|
1632
|
+
c.port1.onmessage = (w) => {
|
|
1633
|
+
clearTimeout(u), c.port1.close(), i(w.data);
|
|
1634
|
+
}, t.postMessage(e, [c.port2]);
|
|
1635
|
+
});
|
|
1636
|
+
if (!n.ok)
|
|
1637
|
+
throw new I(n.code, n.message, { missingLibraries: n.missingLibraries });
|
|
1638
|
+
return n;
|
|
1639
|
+
}
|
|
1640
|
+
/* ---------------------------------------------------------------- Jobs worker */
|
|
1641
|
+
ensureJobs() {
|
|
1642
|
+
if (this.jobs) return this.jobs;
|
|
1643
|
+
const e = new Blob([xt], { type: "text/javascript" });
|
|
1644
|
+
return this.jobsUrl = URL.createObjectURL(e), this.jobs = new Worker(this.jobsUrl), this.jobs.addEventListener("message", (t) => {
|
|
1645
|
+
const n = t.data;
|
|
1646
|
+
n.type === "progress" && n.entry && this.emitProgress({
|
|
1647
|
+
phase: "extract",
|
|
1648
|
+
entry: n.entry,
|
|
1649
|
+
loaded: n.loaded,
|
|
1650
|
+
total: n.total,
|
|
1651
|
+
fraction: n.total ? n.loaded / n.total : null
|
|
1652
|
+
}), (n.type === "done" || n.type === "failed") && n.entry && n.entry === this.prefetching && (this.prefetching = null, this.advancePrefetch()), n.type === "failed" && n.entry && this.dispatchEvent(
|
|
1653
|
+
new CustomEvent("error", {
|
|
1654
|
+
detail: { code: n.code, message: `${n.entry}: ${n.message}` }
|
|
1655
|
+
})
|
|
1656
|
+
);
|
|
1657
|
+
}), this.jobs;
|
|
1658
|
+
}
|
|
1659
|
+
/**
|
|
1660
|
+
* Starts the next queued entry, one at a time. Serial rather than parallel: these are whole
|
|
1661
|
+
* videos, and running two halves the rate of the one the learner reaches first. A demand
|
|
1662
|
+
* request from the runtime is not queued behind this — it is posted straight through, and the
|
|
1663
|
+
* Jobs worker's in-flight map collapses the two if they name the same entry.
|
|
1664
|
+
*/
|
|
1665
|
+
advancePrefetch() {
|
|
1666
|
+
if (this.preload !== "auto" || this.prefetching) return;
|
|
1667
|
+
const e = this.prefetchQueue.shift();
|
|
1668
|
+
if (!e) return;
|
|
1669
|
+
const t = this.internalPkgId, n = this.currentSource;
|
|
1670
|
+
!t || !n || (this.prefetching = e, this.postToJobs({ type: "extract", pkgId: t, entry: e, source: n }));
|
|
1671
|
+
}
|
|
1672
|
+
postToJobs(e) {
|
|
1673
|
+
if (e.type === "abort" && !this.jobs) return;
|
|
1674
|
+
const t = this.ensureJobs();
|
|
1675
|
+
if (e.type !== "abort" && this.currentFile && this.currentSource?.type === "file") {
|
|
1676
|
+
t.postMessage({ ...e, file: this.currentFile });
|
|
1677
|
+
return;
|
|
1678
|
+
}
|
|
1679
|
+
t.postMessage(e);
|
|
1680
|
+
}
|
|
1681
|
+
handleWorkerRequest(e) {
|
|
1682
|
+
if (e.pkgId === this.internalPkgId) {
|
|
1683
|
+
if (e.type === "need-file") {
|
|
1684
|
+
if (!this.currentFile) return;
|
|
1685
|
+
this.send({ type: "file", pkgId: e.pkgId, file: this.currentFile }).catch(() => {
|
|
1686
|
+
});
|
|
1687
|
+
return;
|
|
1688
|
+
}
|
|
1689
|
+
this.currentSource && this.postToJobs({
|
|
1690
|
+
type: "extract",
|
|
1691
|
+
pkgId: e.pkgId,
|
|
1692
|
+
entry: e.entry,
|
|
1693
|
+
source: this.currentSource
|
|
1694
|
+
});
|
|
1695
|
+
}
|
|
1696
|
+
}
|
|
1697
|
+
/* ---------------------------------------------------------------- H5P's resizer protocol */
|
|
1698
|
+
/**
|
|
1699
|
+
* The embedder half of H5P's own iframe resizing, the same exchange `h5p-resizer.js` implements
|
|
1700
|
+
* for a site embedding h5p.org content.
|
|
1701
|
+
*
|
|
1702
|
+
* H5P drives it from the `resize` events content types raise when they actually change — a
|
|
1703
|
+
* dialog opening, an interaction loading, an image arriving. Watching the frame's DOM from the
|
|
1704
|
+
* outside would both miss those and fire on changes that are not resizes.
|
|
1705
|
+
*/
|
|
1706
|
+
onResizerMessage(e) {
|
|
1707
|
+
const t = (n, i = {}) => {
|
|
1708
|
+
this.iframe.contentWindow?.postMessage({ ...i, context: "h5p", action: n }, location.origin);
|
|
1709
|
+
};
|
|
1710
|
+
switch (e.action) {
|
|
1711
|
+
case "hello":
|
|
1712
|
+
this.iframe.getBoundingClientRect(), window.addEventListener("resize", this.onWindowResize), t("hello");
|
|
1713
|
+
return;
|
|
1714
|
+
case "prepareResize": {
|
|
1715
|
+
const { scrollHeight: n = 0, clientHeight: i = 0 } = e;
|
|
1716
|
+
if (this.iframe.clientHeight === n && n === i) return;
|
|
1717
|
+
this.hasAttribute("auto-resize") && i > 0 && (this.style.height = `${i}px`), t("resizePrepared");
|
|
1718
|
+
return;
|
|
1719
|
+
}
|
|
1720
|
+
case "resize": {
|
|
1721
|
+
const n = e.scrollHeight ?? 0;
|
|
1722
|
+
if (n <= 0) return;
|
|
1723
|
+
this.dispatchEvent(new CustomEvent("resize", { detail: { height: n } })), this.hasAttribute("auto-resize") && (this.style.height = `${n}px`);
|
|
1724
|
+
return;
|
|
1725
|
+
}
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
/* ---------------------------------------------------------------- events out */
|
|
1729
|
+
setState(e) {
|
|
1730
|
+
this.internalState !== e && (this.internalState = e, this.setAttribute("state", e), this.dispatchEvent(new CustomEvent("statechange", { detail: { state: e } })));
|
|
1731
|
+
}
|
|
1732
|
+
emitProgress(e) {
|
|
1733
|
+
this.dispatchEvent(new CustomEvent("progress", { detail: e }));
|
|
1734
|
+
}
|
|
1735
|
+
fail(e) {
|
|
1736
|
+
const t = e instanceof I ? e.code : "network", n = e instanceof Error ? e.message : String(e), i = e instanceof I ? e.missingLibraries : void 0;
|
|
1737
|
+
this.setState("error"), this.dispatchEvent(
|
|
1738
|
+
new CustomEvent("error", { detail: { code: t, message: n, missingLibraries: i } })
|
|
1739
|
+
);
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
function Ne(r) {
|
|
1743
|
+
return r.ok && r.type === "indexed" ? r.prefetch ?? [] : [];
|
|
1744
|
+
}
|
|
1745
|
+
function wn(r, e) {
|
|
1746
|
+
if (e !== "hub") return new URL(e.url, location.href).href;
|
|
1747
|
+
if (!r.mainLibrary)
|
|
1748
|
+
throw new I(
|
|
1749
|
+
"bad-archive",
|
|
1750
|
+
"h5p.json names no mainLibrary, so there is nothing to ask the hub for",
|
|
1751
|
+
{ missingLibraries: r }
|
|
1752
|
+
);
|
|
1753
|
+
return `${zt}${encodeURIComponent(r.mainLibrary)}`;
|
|
1754
|
+
}
|
|
1755
|
+
async function mn(r) {
|
|
1756
|
+
try {
|
|
1757
|
+
return (await navigator.serviceWorker.getRegistration(r.scope))?.active != null;
|
|
1758
|
+
} catch {
|
|
1759
|
+
return !1;
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1762
|
+
function gn(r) {
|
|
1763
|
+
const e = r.active ?? r.waiting ?? r.installing;
|
|
1764
|
+
return e ? e.state === "activated" ? Promise.resolve(e) : new Promise((t, n) => {
|
|
1765
|
+
const i = () => {
|
|
1766
|
+
e.state === "activated" ? (e.removeEventListener("statechange", i), t(r.active ?? e)) : e.state === "redundant" && (e.removeEventListener("statechange", i), n(new I("no-worker", "The Service Worker became redundant")));
|
|
1767
|
+
};
|
|
1768
|
+
e.addEventListener("statechange", i);
|
|
1769
|
+
}) : Promise.reject(new I("no-worker", "The registration has no worker"));
|
|
1770
|
+
}
|
|
1771
|
+
function Oe(r) {
|
|
1772
|
+
r && r !== de && console.warn(
|
|
1773
|
+
`[h5p-player] element is ${de} but the Service Worker is ${r}. Re-copy h5p-sw.js so the two match.`
|
|
1774
|
+
);
|
|
1775
|
+
}
|
|
1776
|
+
customElements.get("h5p-player") || customElements.define("h5p-player", pn);
|
|
1777
|
+
export {
|
|
1778
|
+
pn as H5PPlayerElement,
|
|
1779
|
+
pn as default
|
|
1780
|
+
};
|