!function(A,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((A="undefined"!=typeof globalThis?globalThis:A||self).esptooljs={})}(this,(function(A){"use strict";class t extends Error{} /*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */function e(A){let t=A.length;for(;--t>=0;)A[t]=0}const i=256,s=286,a=30,n=15,r=new Uint8Array([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]),h=new Uint8Array([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]),E=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),o=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),g=new Array(576);e(g);const B=new Array(60);e(B);const c=new Array(512);e(c);const w=new Array(256);e(w);const _=new Array(29);e(_);const C=new Array(a);function I(A,t,e,i,s){this.static_tree=A,this.extra_bits=t,this.extra_base=e,this.elems=i,this.max_length=s,this.has_stree=A&&A.length}let l,d,D;function R(A,t){this.dyn_tree=A,this.max_code=0,this.stat_desc=t}e(C);const S=A=>A<256?c[A]:c[256+(A>>>7)],M=(A,t)=>{A.pending_buf[A.pending++]=255&t,A.pending_buf[A.pending++]=t>>>8&255},f=(A,t,e)=>{A.bi_valid>16-e?(A.bi_buf|=t<>16-A.bi_valid,A.bi_valid+=e-16):(A.bi_buf|=t<{f(A,e[2*t],e[2*t+1])},F=(A,t)=>{let e=0;do{e|=1&A,A>>>=1,e<<=1}while(--t>0);return e>>>1},u=(A,t,e)=>{const i=new Array(16);let s,a,r=0;for(s=1;s<=n;s++)r=r+e[s-1]<<1,i[s]=r;for(a=0;a<=t;a++){let t=A[2*a+1];0!==t&&(A[2*a]=F(i[t]++,t))}},T=A=>{let t;for(t=0;t{A.bi_valid>8?M(A,A.bi_buf):A.bi_valid>0&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0},O=(A,t,e,i)=>{const s=2*t,a=2*e;return A[s]{const i=A.heap[e];let s=e<<1;for(;s<=A.heap_len&&(s{let s,a,n,E,o=0;if(0!==A.sym_next)do{s=255&A.pending_buf[A.sym_buf+o++],s+=(255&A.pending_buf[A.sym_buf+o++])<<8,a=A.pending_buf[A.sym_buf+o++],0===s?Q(A,a,t):(n=w[a],Q(A,n+i+1,t),E=r[n],0!==E&&(a-=_[n],f(A,a,E)),s--,n=S(s),Q(A,n,e),E=h[n],0!==E&&(s-=C[n],f(A,s,E)))}while(o{const e=t.dyn_tree,i=t.stat_desc.static_tree,s=t.stat_desc.has_stree,a=t.stat_desc.elems;let r,h,E,o=-1;for(A.heap_len=0,A.heap_max=573,r=0;r>1;r>=1;r--)P(A,e,r);E=a;do{r=A.heap[1],A.heap[1]=A.heap[A.heap_len--],P(A,e,1),h=A.heap[1],A.heap[--A.heap_max]=r,A.heap[--A.heap_max]=h,e[2*E]=e[2*r]+e[2*h],A.depth[E]=(A.depth[r]>=A.depth[h]?A.depth[r]:A.depth[h])+1,e[2*r+1]=e[2*h+1]=E,A.heap[1]=E++,P(A,e,1)}while(A.heap_len>=2);A.heap[--A.heap_max]=A.heap[1],((A,t)=>{const e=t.dyn_tree,i=t.max_code,s=t.stat_desc.static_tree,a=t.stat_desc.has_stree,r=t.stat_desc.extra_bits,h=t.stat_desc.extra_base,E=t.stat_desc.max_length;let o,g,B,c,w,_,C=0;for(c=0;c<=n;c++)A.bl_count[c]=0;for(e[2*A.heap[A.heap_max]+1]=0,o=A.heap_max+1;o<573;o++)g=A.heap[o],c=e[2*e[2*g+1]+1]+1,c>E&&(c=E,C++),e[2*g+1]=c,g>i||(A.bl_count[c]++,w=0,g>=h&&(w=r[g-h]),_=e[2*g],A.opt_len+=_*(c+w),a&&(A.static_len+=_*(s[2*g+1]+w)));if(0!==C){do{for(c=E-1;0===A.bl_count[c];)c--;A.bl_count[c]--,A.bl_count[c+1]+=2,A.bl_count[E]--,C-=2}while(C>0);for(c=E;0!==c;c--)for(g=A.bl_count[c];0!==g;)B=A.heap[--o],B>i||(e[2*B+1]!==c&&(A.opt_len+=(c-e[2*B+1])*e[2*B],e[2*B+1]=c),g--)}})(A,t),u(e,o,A.bl_count)},H=(A,t,e)=>{let i,s,a=-1,n=t[1],r=0,h=7,E=4;for(0===n&&(h=138,E=3),t[2*(e+1)+1]=65535,i=0;i<=e;i++)s=n,n=t[2*(i+1)+1],++r{let i,s,a=-1,n=t[1],r=0,h=7,E=4;for(0===n&&(h=138,E=3),i=0;i<=e;i++)if(s=n,n=t[2*(i+1)+1],!(++r{f(A,0+(i?1:0),3),p(A),M(A,e),M(A,~e),e&&A.pending_buf.set(A.window.subarray(t,t+e),A.pending),A.pending+=e};var Y=(A,t,e,s)=>{let a,n,r=0;A.level>0?(2===A.strm.data_type&&(A.strm.data_type=(A=>{let t,e=4093624447;for(t=0;t<=31;t++,e>>>=1)if(1&e&&0!==A.dyn_ltree[2*t])return 0;if(0!==A.dyn_ltree[18]||0!==A.dyn_ltree[20]||0!==A.dyn_ltree[26])return 1;for(t=32;t{let t;for(H(A,A.dyn_ltree,A.l_desc.max_code),H(A,A.dyn_dtree,A.d_desc.max_code),y(A,A.bl_desc),t=18;t>=3&&0===A.bl_tree[2*o[t]+1];t--);return A.opt_len+=3*(t+1)+5+5+4,t})(A),a=A.opt_len+3+7>>>3,n=A.static_len+3+7>>>3,n<=a&&(a=n)):a=n=e+5,e+4<=a&&-1!==t?G(A,t,e,s):4===A.strategy||n===a?(f(A,2+(s?1:0),3),U(A,g,B)):(f(A,4+(s?1:0),3),((A,t,e,i)=>{let s;for(f(A,t-257,5),f(A,e-1,5),f(A,i-4,4),s=0;s{m||((()=>{let A,t,e,i,o;const R=new Array(16);for(e=0,i=0;i<28;i++)for(_[i]=e,A=0;A<1<>=7;i(A.pending_buf[A.sym_buf+A.sym_next++]=t,A.pending_buf[A.sym_buf+A.sym_next++]=t>>8,A.pending_buf[A.sym_buf+A.sym_next++]=e,0===t?A.dyn_ltree[2*e]++:(A.matches++,t--,A.dyn_ltree[2*(w[e]+i+1)]++,A.dyn_dtree[2*S(t)]++),A.sym_next===A.sym_end),_tr_align:A=>{f(A,2,3),Q(A,256,g),(A=>{16===A.bi_valid?(M(A,A.bi_buf),A.bi_buf=0,A.bi_valid=0):A.bi_valid>=8&&(A.pending_buf[A.pending++]=255&A.bi_buf,A.bi_buf>>=8,A.bi_valid-=8)})(A)}};var x=(A,t,e,i)=>{let s=65535&A,a=A>>>16&65535,n=0;for(;0!==e;){n=e>2e3?2e3:e,e-=n;do{s=s+t[i++]|0,a=a+s|0}while(--n);s%=65521,a%=65521}return s|a<<16};const K=new Uint32Array((()=>{let A,t=[];for(var e=0;e<256;e++){A=e;for(var i=0;i<8;i++)A=1&A?3988292384^A>>>1:A>>>1;t[e]=A}return t})());var L=(A,t,e,i)=>{const s=K,a=i+e;A^=-1;for(let e=i;e>>8^s[255&(A^t[e])];return~A},N={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},J={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:v,_tr_stored_block:z,_tr_flush_block:j,_tr_tally:W,_tr_align:Z}=b,{Z_NO_FLUSH:X,Z_PARTIAL_FLUSH:V,Z_FULL_FLUSH:q,Z_FINISH:$,Z_BLOCK:AA,Z_OK:tA,Z_STREAM_END:eA,Z_STREAM_ERROR:iA,Z_DATA_ERROR:sA,Z_BUF_ERROR:aA,Z_DEFAULT_COMPRESSION:nA,Z_FILTERED:rA,Z_HUFFMAN_ONLY:hA,Z_RLE:EA,Z_FIXED:oA,Z_DEFAULT_STRATEGY:gA,Z_UNKNOWN:BA,Z_DEFLATED:cA}=J,wA=258,_A=262,CA=42,IA=113,lA=666,dA=(A,t)=>(A.msg=N[t],t),DA=A=>2*A-(A>4?9:0),RA=A=>{let t=A.length;for(;--t>=0;)A[t]=0},SA=A=>{let t,e,i,s=A.w_size;t=A.hash_size,i=t;do{e=A.head[--i],A.head[i]=e>=s?e-s:0}while(--t);t=s,i=t;do{e=A.prev[--i],A.prev[i]=e>=s?e-s:0}while(--t)};let MA=(A,t,e)=>(t<{const t=A.state;let e=t.pending;e>A.avail_out&&(e=A.avail_out),0!==e&&(A.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+e),A.next_out),A.next_out+=e,t.pending_out+=e,A.total_out+=e,A.avail_out-=e,t.pending-=e,0===t.pending&&(t.pending_out=0))},QA=(A,t)=>{j(A,A.block_start>=0?A.block_start:-1,A.strstart-A.block_start,t),A.block_start=A.strstart,fA(A.strm)},FA=(A,t)=>{A.pending_buf[A.pending++]=t},uA=(A,t)=>{A.pending_buf[A.pending++]=t>>>8&255,A.pending_buf[A.pending++]=255&t},TA=(A,t,e,i)=>{let s=A.avail_in;return s>i&&(s=i),0===s?0:(A.avail_in-=s,t.set(A.input.subarray(A.next_in,A.next_in+s),e),1===A.state.wrap?A.adler=x(A.adler,t,s,e):2===A.state.wrap&&(A.adler=L(A.adler,t,s,e)),A.next_in+=s,A.total_in+=s,s)},pA=(A,t)=>{let e,i,s=A.max_chain_length,a=A.strstart,n=A.prev_length,r=A.nice_match;const h=A.strstart>A.w_size-_A?A.strstart-(A.w_size-_A):0,E=A.window,o=A.w_mask,g=A.prev,B=A.strstart+wA;let c=E[a+n-1],w=E[a+n];A.prev_length>=A.good_match&&(s>>=2),r>A.lookahead&&(r=A.lookahead);do{if(e=t,E[e+n]===w&&E[e+n-1]===c&&E[e]===E[a]&&E[++e]===E[a+1]){a+=2,e++;do{}while(E[++a]===E[++e]&&E[++a]===E[++e]&&E[++a]===E[++e]&&E[++a]===E[++e]&&E[++a]===E[++e]&&E[++a]===E[++e]&&E[++a]===E[++e]&&E[++a]===E[++e]&&an){if(A.match_start=t,n=i,i>=r)break;c=E[a+n-1],w=E[a+n]}}}while((t=g[t&o])>h&&0!=--s);return n<=A.lookahead?n:A.lookahead},OA=A=>{const t=A.w_size;let e,i,s;do{if(i=A.window_size-A.lookahead-A.strstart,A.strstart>=t+(t-_A)&&(A.window.set(A.window.subarray(t,t+t-i),0),A.match_start-=t,A.strstart-=t,A.block_start-=t,A.insert>A.strstart&&(A.insert=A.strstart),SA(A),i+=t),0===A.strm.avail_in)break;if(e=TA(A.strm,A.window,A.strstart+A.lookahead,i),A.lookahead+=e,A.lookahead+A.insert>=3)for(s=A.strstart-A.insert,A.ins_h=A.window[s],A.ins_h=MA(A,A.ins_h,A.window[s+1]);A.insert&&(A.ins_h=MA(A,A.ins_h,A.window[s+3-1]),A.prev[s&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=s,s++,A.insert--,!(A.lookahead+A.insert<3)););}while(A.lookahead<_A&&0!==A.strm.avail_in)},PA=(A,t)=>{let e,i,s,a=A.pending_buf_size-5>A.w_size?A.w_size:A.pending_buf_size-5,n=0,r=A.strm.avail_in;do{if(e=65535,s=A.bi_valid+42>>3,A.strm.avail_outi+A.strm.avail_in&&(e=i+A.strm.avail_in),e>s&&(e=s),e>8,A.pending_buf[A.pending-2]=~e,A.pending_buf[A.pending-1]=~e>>8,fA(A.strm),i&&(i>e&&(i=e),A.strm.output.set(A.window.subarray(A.block_start,A.block_start+i),A.strm.next_out),A.strm.next_out+=i,A.strm.avail_out-=i,A.strm.total_out+=i,A.block_start+=i,e-=i),e&&(TA(A.strm,A.strm.output,A.strm.next_out,e),A.strm.next_out+=e,A.strm.avail_out-=e,A.strm.total_out+=e)}while(0===n);return r-=A.strm.avail_in,r&&(r>=A.w_size?(A.matches=2,A.window.set(A.strm.input.subarray(A.strm.next_in-A.w_size,A.strm.next_in),0),A.strstart=A.w_size,A.insert=A.strstart):(A.window_size-A.strstart<=r&&(A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,A.insert>A.strstart&&(A.insert=A.strstart)),A.window.set(A.strm.input.subarray(A.strm.next_in-r,A.strm.next_in),A.strstart),A.strstart+=r,A.insert+=r>A.w_size-A.insert?A.w_size-A.insert:r),A.block_start=A.strstart),A.high_waters&&A.block_start>=A.w_size&&(A.block_start-=A.w_size,A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,s+=A.w_size,A.insert>A.strstart&&(A.insert=A.strstart)),s>A.strm.avail_in&&(s=A.strm.avail_in),s&&(TA(A.strm,A.window,A.strstart,s),A.strstart+=s,A.insert+=s>A.w_size-A.insert?A.w_size-A.insert:s),A.high_water>3,s=A.pending_buf_size-s>65535?65535:A.pending_buf_size-s,a=s>A.w_size?A.w_size:s,i=A.strstart-A.block_start,(i>=a||(i||t===$)&&t!==X&&0===A.strm.avail_in&&i<=s)&&(e=i>s?s:i,n=t===$&&0===A.strm.avail_in&&e===i?1:0,z(A,A.block_start,e,n),A.block_start+=e,fA(A.strm)),n?3:1)},UA=(A,t)=>{let e,i;for(;;){if(A.lookahead<_A){if(OA(A),A.lookahead<_A&&t===X)return 1;if(0===A.lookahead)break}if(e=0,A.lookahead>=3&&(A.ins_h=MA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),0!==e&&A.strstart-e<=A.w_size-_A&&(A.match_length=pA(A,e)),A.match_length>=3)if(i=W(A,A.strstart-A.match_start,A.match_length-3),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=3){A.match_length--;do{A.strstart++,A.ins_h=MA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart}while(0!=--A.match_length);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=MA(A,A.ins_h,A.window[A.strstart+1]);else i=W(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(i&&(QA(A,!1),0===A.strm.avail_out))return 1}return A.insert=A.strstart<2?A.strstart:2,t===$?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2},yA=(A,t)=>{let e,i,s;for(;;){if(A.lookahead<_A){if(OA(A),A.lookahead<_A&&t===X)return 1;if(0===A.lookahead)break}if(e=0,A.lookahead>=3&&(A.ins_h=MA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=2,0!==e&&A.prev_length4096)&&(A.match_length=2)),A.prev_length>=3&&A.match_length<=A.prev_length){s=A.strstart+A.lookahead-3,i=W(A,A.strstart-1-A.prev_match,A.prev_length-3),A.lookahead-=A.prev_length-1,A.prev_length-=2;do{++A.strstart<=s&&(A.ins_h=MA(A,A.ins_h,A.window[A.strstart+3-1]),e=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart)}while(0!=--A.prev_length);if(A.match_available=0,A.match_length=2,A.strstart++,i&&(QA(A,!1),0===A.strm.avail_out))return 1}else if(A.match_available){if(i=W(A,0,A.window[A.strstart-1]),i&&QA(A,!1),A.strstart++,A.lookahead--,0===A.strm.avail_out)return 1}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(i=W(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<2?A.strstart:2,t===$?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2};function HA(A,t,e,i,s){this.good_length=A,this.max_lazy=t,this.nice_length=e,this.max_chain=i,this.func=s}const kA=[new HA(0,0,0,0,PA),new HA(4,4,8,4,UA),new HA(4,5,16,8,UA),new HA(4,6,32,32,UA),new HA(4,4,16,16,yA),new HA(8,16,32,32,yA),new HA(8,16,128,128,yA),new HA(8,32,128,256,yA),new HA(32,128,258,1024,yA),new HA(32,258,258,4096,yA)];function mA(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=cA,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),RA(this.dyn_ltree),RA(this.dyn_dtree),RA(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),RA(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),RA(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const GA=A=>{if(!A)return 1;const t=A.state;return!t||t.strm!==A||t.status!==CA&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==IA&&t.status!==lA?1:0},YA=A=>{if(GA(A))return dA(A,iA);A.total_in=A.total_out=0,A.data_type=BA;const t=A.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?CA:IA,A.adler=2===t.wrap?0:1,t.last_flush=-2,v(t),tA},bA=A=>{const t=YA(A);var e;return t===tA&&((e=A.state).window_size=2*e.w_size,RA(e.head),e.max_lazy_match=kA[e.level].max_lazy,e.good_match=kA[e.level].good_length,e.nice_match=kA[e.level].nice_length,e.max_chain_length=kA[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=2,e.match_available=0,e.ins_h=0),t},xA=(A,t,e,i,s,a)=>{if(!A)return iA;let n=1;if(t===nA&&(t=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),s<1||s>9||e!==cA||i<8||i>15||t<0||t>9||a<0||a>oA||8===i&&1!==n)return dA(A,iA);8===i&&(i=9);const r=new mA;return A.state=r,r.strm=A,r.status=CA,r.wrap=n,r.gzhead=null,r.w_bits=i,r.w_size=1<xA(A,t,cA,15,8,gA),deflateInit2:xA,deflateReset:bA,deflateResetKeep:YA,deflateSetHeader:(A,t)=>GA(A)||2!==A.state.wrap?iA:(A.state.gzhead=t,tA),deflate:(A,t)=>{if(GA(A)||t>AA||t<0)return A?dA(A,iA):iA;const e=A.state;if(!A.output||0!==A.avail_in&&!A.input||e.status===lA&&t!==$)return dA(A,0===A.avail_out?aA:iA);const i=e.last_flush;if(e.last_flush=t,0!==e.pending){if(fA(A),0===A.avail_out)return e.last_flush=-1,tA}else if(0===A.avail_in&&DA(t)<=DA(i)&&t!==$)return dA(A,aA);if(e.status===lA&&0!==A.avail_in)return dA(A,aA);if(e.status===CA&&0===e.wrap&&(e.status=IA),e.status===CA){let t=cA+(e.w_bits-8<<4)<<8,i=-1;if(i=e.strategy>=hA||e.level<2?0:e.level<6?1:6===e.level?2:3,t|=i<<6,0!==e.strstart&&(t|=32),t+=31-t%31,uA(e,t),0!==e.strstart&&(uA(e,A.adler>>>16),uA(e,65535&A.adler)),A.adler=1,e.status=IA,fA(A),0!==e.pending)return e.last_flush=-1,tA}if(57===e.status)if(A.adler=0,FA(e,31),FA(e,139),FA(e,8),e.gzhead)FA(e,(e.gzhead.text?1:0)+(e.gzhead.hcrc?2:0)+(e.gzhead.extra?4:0)+(e.gzhead.name?8:0)+(e.gzhead.comment?16:0)),FA(e,255&e.gzhead.time),FA(e,e.gzhead.time>>8&255),FA(e,e.gzhead.time>>16&255),FA(e,e.gzhead.time>>24&255),FA(e,9===e.level?2:e.strategy>=hA||e.level<2?4:0),FA(e,255&e.gzhead.os),e.gzhead.extra&&e.gzhead.extra.length&&(FA(e,255&e.gzhead.extra.length),FA(e,e.gzhead.extra.length>>8&255)),e.gzhead.hcrc&&(A.adler=L(A.adler,e.pending_buf,e.pending,0)),e.gzindex=0,e.status=69;else if(FA(e,0),FA(e,0),FA(e,0),FA(e,0),FA(e,0),FA(e,9===e.level?2:e.strategy>=hA||e.level<2?4:0),FA(e,3),e.status=IA,fA(A),0!==e.pending)return e.last_flush=-1,tA;if(69===e.status){if(e.gzhead.extra){let t=e.pending,i=(65535&e.gzhead.extra.length)-e.gzindex;for(;e.pending+i>e.pending_buf_size;){let s=e.pending_buf_size-e.pending;if(e.pending_buf.set(e.gzhead.extra.subarray(e.gzindex,e.gzindex+s),e.pending),e.pending=e.pending_buf_size,e.gzhead.hcrc&&e.pending>t&&(A.adler=L(A.adler,e.pending_buf,e.pending-t,t)),e.gzindex+=s,fA(A),0!==e.pending)return e.last_flush=-1,tA;t=0,i-=s}let s=new Uint8Array(e.gzhead.extra);e.pending_buf.set(s.subarray(e.gzindex,e.gzindex+i),e.pending),e.pending+=i,e.gzhead.hcrc&&e.pending>t&&(A.adler=L(A.adler,e.pending_buf,e.pending-t,t)),e.gzindex=0}e.status=73}if(73===e.status){if(e.gzhead.name){let t,i=e.pending;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>i&&(A.adler=L(A.adler,e.pending_buf,e.pending-i,i)),fA(A),0!==e.pending)return e.last_flush=-1,tA;i=0}t=e.gzindexi&&(A.adler=L(A.adler,e.pending_buf,e.pending-i,i)),e.gzindex=0}e.status=91}if(91===e.status){if(e.gzhead.comment){let t,i=e.pending;do{if(e.pending===e.pending_buf_size){if(e.gzhead.hcrc&&e.pending>i&&(A.adler=L(A.adler,e.pending_buf,e.pending-i,i)),fA(A),0!==e.pending)return e.last_flush=-1,tA;i=0}t=e.gzindexi&&(A.adler=L(A.adler,e.pending_buf,e.pending-i,i))}e.status=103}if(103===e.status){if(e.gzhead.hcrc){if(e.pending+2>e.pending_buf_size&&(fA(A),0!==e.pending))return e.last_flush=-1,tA;FA(e,255&A.adler),FA(e,A.adler>>8&255),A.adler=0}if(e.status=IA,fA(A),0!==e.pending)return e.last_flush=-1,tA}if(0!==A.avail_in||0!==e.lookahead||t!==X&&e.status!==lA){let i=0===e.level?PA(e,t):e.strategy===hA?((A,t)=>{let e;for(;;){if(0===A.lookahead&&(OA(A),0===A.lookahead)){if(t===X)return 1;break}if(A.match_length=0,e=W(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++,e&&(QA(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,t===$?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2})(e,t):e.strategy===EA?((A,t)=>{let e,i,s,a;const n=A.window;for(;;){if(A.lookahead<=wA){if(OA(A),A.lookahead<=wA&&t===X)return 1;if(0===A.lookahead)break}if(A.match_length=0,A.lookahead>=3&&A.strstart>0&&(s=A.strstart-1,i=n[s],i===n[++s]&&i===n[++s]&&i===n[++s])){a=A.strstart+wA;do{}while(i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&i===n[++s]&&sA.lookahead&&(A.match_length=A.lookahead)}if(A.match_length>=3?(e=W(A,1,A.match_length-3),A.lookahead-=A.match_length,A.strstart+=A.match_length,A.match_length=0):(e=W(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++),e&&(QA(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,t===$?(QA(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(QA(A,!1),0===A.strm.avail_out)?1:2})(e,t):kA[e.level].func(e,t);if(3!==i&&4!==i||(e.status=lA),1===i||3===i)return 0===A.avail_out&&(e.last_flush=-1),tA;if(2===i&&(t===V?Z(e):t!==AA&&(z(e,0,0,!1),t===q&&(RA(e.head),0===e.lookahead&&(e.strstart=0,e.block_start=0,e.insert=0))),fA(A),0===A.avail_out))return e.last_flush=-1,tA}return t!==$?tA:e.wrap<=0?eA:(2===e.wrap?(FA(e,255&A.adler),FA(e,A.adler>>8&255),FA(e,A.adler>>16&255),FA(e,A.adler>>24&255),FA(e,255&A.total_in),FA(e,A.total_in>>8&255),FA(e,A.total_in>>16&255),FA(e,A.total_in>>24&255)):(uA(e,A.adler>>>16),uA(e,65535&A.adler)),fA(A),e.wrap>0&&(e.wrap=-e.wrap),0!==e.pending?tA:eA)},deflateEnd:A=>{if(GA(A))return iA;const t=A.state.status;return A.state=null,t===IA?dA(A,sA):tA},deflateSetDictionary:(A,t)=>{let e=t.length;if(GA(A))return iA;const i=A.state,s=i.wrap;if(2===s||1===s&&i.status!==CA||i.lookahead)return iA;if(1===s&&(A.adler=x(A.adler,t,e,0)),i.wrap=0,e>=i.w_size){0===s&&(RA(i.head),i.strstart=0,i.block_start=0,i.insert=0);let A=new Uint8Array(i.w_size);A.set(t.subarray(e-i.w_size,e),0),t=A,e=i.w_size}const a=A.avail_in,n=A.next_in,r=A.input;for(A.avail_in=e,A.next_in=0,A.input=t,OA(i);i.lookahead>=3;){let A=i.strstart,t=i.lookahead-2;do{i.ins_h=MA(i,i.ins_h,i.window[A+3-1]),i.prev[A&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=A,A++}while(--t);i.strstart=A,i.lookahead=2,OA(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,A.next_in=n,A.input=r,A.avail_in=a,i.wrap=s,tA},deflateInfo:"pako deflate (from Nodeca project)"};const LA=(A,t)=>Object.prototype.hasOwnProperty.call(A,t);var NA=function(A){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const e=t.shift();if(e){if("object"!=typeof e)throw new TypeError(e+"must be non-object");for(const t in e)LA(e,t)&&(A[t]=e[t])}}return A},JA=A=>{let t=0;for(let e=0,i=A.length;e=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;zA[254]=zA[254]=1;var jA=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let t,e,i,s,a,n=A.length,r=0;for(s=0;s>>6,t[a++]=128|63&e):e<65536?(t[a++]=224|e>>>12,t[a++]=128|e>>>6&63,t[a++]=128|63&e):(t[a++]=240|e>>>18,t[a++]=128|e>>>12&63,t[a++]=128|e>>>6&63,t[a++]=128|63&e);return t},WA=(A,t)=>{const e=t||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,t));let i,s;const a=new Array(2*e);for(s=0,i=0;i4)a[s++]=65533,i+=n-1;else{for(t&=2===n?31:3===n?15:7;n>1&&i1?a[s++]=65533:t<65536?a[s++]=t:(t-=65536,a[s++]=55296|t>>10&1023,a[s++]=56320|1023&t)}}return((A,t)=>{if(t<65534&&A.subarray&&vA)return String.fromCharCode.apply(null,A.length===t?A:A.subarray(0,t));let e="";for(let i=0;i{(t=t||A.length)>A.length&&(t=A.length);let e=t-1;for(;e>=0&&128==(192&A[e]);)e--;return e<0||0===e?t:e+zA[A[e]]>t?e:t};var XA=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const VA=Object.prototype.toString,{Z_NO_FLUSH:qA,Z_SYNC_FLUSH:$A,Z_FULL_FLUSH:At,Z_FINISH:tt,Z_OK:et,Z_STREAM_END:it,Z_DEFAULT_COMPRESSION:st,Z_DEFAULT_STRATEGY:at,Z_DEFLATED:nt}=J;function rt(A){this.options=NA({level:st,method:nt,chunkSize:16384,windowBits:15,memLevel:8,strategy:at},A||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new XA,this.strm.avail_out=0;let e=KA.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(e!==et)throw new Error(N[e]);if(t.header&&KA.deflateSetHeader(this.strm,t.header),t.dictionary){let A;if(A="string"==typeof t.dictionary?jA(t.dictionary):"[object ArrayBuffer]"===VA.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,e=KA.deflateSetDictionary(this.strm,A),e!==et)throw new Error(N[e]);this._dict_set=!0}}function ht(A,t){const e=new rt(t);if(e.push(A,!0),e.err)throw e.msg||N[e.err];return e.result}rt.prototype.push=function(A,t){const e=this.strm,i=this.options.chunkSize;let s,a;if(this.ended)return!1;for(a=t===~~t?t:!0===t?tt:qA,"string"==typeof A?e.input=jA(A):"[object ArrayBuffer]"===VA.call(A)?e.input=new Uint8Array(A):e.input=A,e.next_in=0,e.avail_in=e.input.length;;)if(0===e.avail_out&&(e.output=new Uint8Array(i),e.next_out=0,e.avail_out=i),(a===$A||a===At)&&e.avail_out<=6)this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;else{if(s=KA.deflate(e,a),s===it)return e.next_out>0&&this.onData(e.output.subarray(0,e.next_out)),s=KA.deflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===et;if(0!==e.avail_out){if(a>0&&e.next_out>0)this.onData(e.output.subarray(0,e.next_out)),e.avail_out=0;else if(0===e.avail_in)break}else this.onData(e.output)}return!0},rt.prototype.onData=function(A){this.chunks.push(A)},rt.prototype.onEnd=function(A){A===et&&(this.result=JA(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var Et={Deflate:rt,deflate:ht,deflateRaw:function(A,t){return(t=t||{}).raw=!0,ht(A,t)},gzip:function(A,t){return(t=t||{}).gzip=!0,ht(A,t)},constants:J};const ot=16209;var gt=function(A,t){let e,i,s,a,n,r,h,E,o,g,B,c,w,_,C,I,l,d,D,R,S,M,f,Q;const F=A.state;e=A.next_in,f=A.input,i=e+(A.avail_in-5),s=A.next_out,Q=A.output,a=s-(t-A.avail_out),n=s+(A.avail_out-257),r=F.dmax,h=F.wsize,E=F.whave,o=F.wnext,g=F.window,B=F.hold,c=F.bits,w=F.lencode,_=F.distcode,C=(1<>>24,B>>>=d,c-=d,d=l>>>16&255,0===d)Q[s++]=65535&l;else{if(!(16&d)){if(64&d){if(32&d){F.mode=16191;break A}A.msg="invalid literal/length code",F.mode=ot;break A}l=w[(65535&l)+(B&(1<>>=d,c-=d),c<15&&(B+=f[e++]<>>24,B>>>=d,c-=d,d=l>>>16&255,16&d){if(R=65535&l,d&=15,cr){A.msg="invalid distance too far back",F.mode=ot;break A}if(B>>>=d,c-=d,d=s-a,R>d){if(d=R-d,d>E&&F.sane){A.msg="invalid distance too far back",F.mode=ot;break A}if(S=0,M=g,0===o){if(S+=h-d,d2;)Q[s++]=M[S++],Q[s++]=M[S++],Q[s++]=M[S++],D-=3;D&&(Q[s++]=M[S++],D>1&&(Q[s++]=M[S++]))}else{S=s-R;do{Q[s++]=Q[S++],Q[s++]=Q[S++],Q[s++]=Q[S++],D-=3}while(D>2);D&&(Q[s++]=Q[S++],D>1&&(Q[s++]=Q[S++]))}break}if(64&d){A.msg="invalid distance code",F.mode=ot;break A}l=_[(65535&l)+(B&(1<>3,e-=D,c-=D<<3,B&=(1<{const h=r.bits;let E,o,g,B,c,w,_=0,C=0,I=0,l=0,d=0,D=0,R=0,S=0,M=0,f=0,Q=null;const F=new Uint16Array(16),u=new Uint16Array(16);let T,p,O,P=null;for(_=0;_<=Bt;_++)F[_]=0;for(C=0;C=1&&0===F[l];l--);if(d>l&&(d=l),0===l)return s[a++]=20971520,s[a++]=20971520,r.bits=1,0;for(I=1;I0&&(0===A||1!==l))return-1;for(u[1]=0,_=1;_852||2===A&&M>592)return 1;for(;;){T=_-R,n[C]+1=w?(p=P[n[C]-w],O=Q[n[C]-w]):(p=96,O=0),E=1<<_-R,o=1<>R)+o]=T<<24|p<<16|O}while(0!==o);for(E=1<<_-1;f&E;)E>>=1;if(0!==E?(f&=E-1,f+=E):f=0,C++,0==--F[_]){if(_===l)break;_=t[e+n[C]]}if(_>d&&(f&B)!==g){for(0===R&&(R=d),c+=I,D=_-R,S=1<852||2===A&&M>592)return 1;g=f&B,s[g]=d<<24|D<<16|c-a}}return 0!==f&&(s[c+f]=_-R<<24|64<<16),r.bits=d,0};const{Z_FINISH:lt,Z_BLOCK:dt,Z_TREES:Dt,Z_OK:Rt,Z_STREAM_END:St,Z_NEED_DICT:Mt,Z_STREAM_ERROR:ft,Z_DATA_ERROR:Qt,Z_MEM_ERROR:Ft,Z_BUF_ERROR:ut,Z_DEFLATED:Tt}=J,pt=16180,Ot=16190,Pt=16191,Ut=16192,yt=16194,Ht=16199,kt=16200,mt=16206,Gt=16209,Yt=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function bt(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const xt=A=>{if(!A)return 1;const t=A.state;return!t||t.strm!==A||t.mode16211?1:0},Kt=A=>{if(xt(A))return ft;const t=A.state;return A.total_in=A.total_out=t.total=0,A.msg="",t.wrap&&(A.adler=1&t.wrap),t.mode=pt,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Rt},Lt=A=>{if(xt(A))return ft;const t=A.state;return t.wsize=0,t.whave=0,t.wnext=0,Kt(A)},Nt=(A,t)=>{let e;if(xt(A))return ft;const i=A.state;return t<0?(e=0,t=-t):(e=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?ft:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=e,i.wbits=t,Lt(A))},Jt=(A,t)=>{if(!A)return ft;const e=new bt;A.state=e,e.strm=A,e.window=null,e.mode=pt;const i=Nt(A,t);return i!==Rt&&(A.state=null),i};let vt,zt,jt=!0;const Wt=A=>{if(jt){vt=new Int32Array(512),zt=new Int32Array(32);let t=0;for(;t<144;)A.lens[t++]=8;for(;t<256;)A.lens[t++]=9;for(;t<280;)A.lens[t++]=7;for(;t<288;)A.lens[t++]=8;for(It(1,A.lens,0,288,vt,0,A.work,{bits:9}),t=0;t<32;)A.lens[t++]=5;It(2,A.lens,0,32,zt,0,A.work,{bits:5}),jt=!1}A.lencode=vt,A.lenbits=9,A.distcode=zt,A.distbits=5},Zt=(A,t,e,i)=>{let s;const a=A.state;return null===a.window&&(a.wsize=1<=a.wsize?(a.window.set(t.subarray(e-a.wsize,e),0),a.wnext=0,a.whave=a.wsize):(s=a.wsize-a.wnext,s>i&&(s=i),a.window.set(t.subarray(e-i,e-i+s),a.wnext),(i-=s)?(a.window.set(t.subarray(e-i,e),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=s,a.wnext===a.wsize&&(a.wnext=0),a.whaveJt(A,15),inflateInit2:Jt,inflate:(A,t)=>{let e,i,s,a,n,r,h,E,o,g,B,c,w,_,C,I,l,d,D,R,S,M,f=0;const Q=new Uint8Array(4);let F,u;const T=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(xt(A)||!A.output||!A.input&&0!==A.avail_in)return ft;e=A.state,e.mode===Pt&&(e.mode=Ut),n=A.next_out,s=A.output,h=A.avail_out,a=A.next_in,i=A.input,r=A.avail_in,E=e.hold,o=e.bits,g=r,B=h,M=Rt;A:for(;;)switch(e.mode){case pt:if(0===e.wrap){e.mode=Ut;break}for(;o<16;){if(0===r)break A;r--,E+=i[a++]<>>8&255,e.check=L(e.check,Q,2,0),E=0,o=0,e.mode=16181;break}if(e.head&&(e.head.done=!1),!(1&e.wrap)||(((255&E)<<8)+(E>>8))%31){A.msg="incorrect header check",e.mode=Gt;break}if((15&E)!==Tt){A.msg="unknown compression method",e.mode=Gt;break}if(E>>>=4,o-=4,S=8+(15&E),0===e.wbits&&(e.wbits=S),S>15||S>e.wbits){A.msg="invalid window size",e.mode=Gt;break}e.dmax=1<>8&1),512&e.flags&&4&e.wrap&&(Q[0]=255&E,Q[1]=E>>>8&255,e.check=L(e.check,Q,2,0)),E=0,o=0,e.mode=16182;case 16182:for(;o<32;){if(0===r)break A;r--,E+=i[a++]<>>8&255,Q[2]=E>>>16&255,Q[3]=E>>>24&255,e.check=L(e.check,Q,4,0)),E=0,o=0,e.mode=16183;case 16183:for(;o<16;){if(0===r)break A;r--,E+=i[a++]<>8),512&e.flags&&4&e.wrap&&(Q[0]=255&E,Q[1]=E>>>8&255,e.check=L(e.check,Q,2,0)),E=0,o=0,e.mode=16184;case 16184:if(1024&e.flags){for(;o<16;){if(0===r)break A;r--,E+=i[a++]<>>8&255,e.check=L(e.check,Q,2,0)),E=0,o=0}else e.head&&(e.head.extra=null);e.mode=16185;case 16185:if(1024&e.flags&&(c=e.length,c>r&&(c=r),c&&(e.head&&(S=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(i.subarray(a,a+c),S)),512&e.flags&&4&e.wrap&&(e.check=L(e.check,i,c,a)),r-=c,a+=c,e.length-=c),e.length))break A;e.length=0,e.mode=16186;case 16186:if(2048&e.flags){if(0===r)break A;c=0;do{S=i[a+c++],e.head&&S&&e.length<65536&&(e.head.name+=String.fromCharCode(S))}while(S&&c>9&1,e.head.done=!0),A.adler=e.check=0,e.mode=Pt;break;case 16189:for(;o<32;){if(0===r)break A;r--,E+=i[a++]<>>=7&o,o-=7&o,e.mode=mt;break}for(;o<3;){if(0===r)break A;r--,E+=i[a++]<>>=1,o-=1,3&E){case 0:e.mode=16193;break;case 1:if(Wt(e),e.mode=Ht,t===Dt){E>>>=2,o-=2;break A}break;case 2:e.mode=16196;break;case 3:A.msg="invalid block type",e.mode=Gt}E>>>=2,o-=2;break;case 16193:for(E>>>=7&o,o-=7&o;o<32;){if(0===r)break A;r--,E+=i[a++]<>>16^65535)){A.msg="invalid stored block lengths",e.mode=Gt;break}if(e.length=65535&E,E=0,o=0,e.mode=yt,t===Dt)break A;case yt:e.mode=16195;case 16195:if(c=e.length,c){if(c>r&&(c=r),c>h&&(c=h),0===c)break A;s.set(i.subarray(a,a+c),n),r-=c,a+=c,h-=c,n+=c,e.length-=c;break}e.mode=Pt;break;case 16196:for(;o<14;){if(0===r)break A;r--,E+=i[a++]<>>=5,o-=5,e.ndist=1+(31&E),E>>>=5,o-=5,e.ncode=4+(15&E),E>>>=4,o-=4,e.nlen>286||e.ndist>30){A.msg="too many length or distance symbols",e.mode=Gt;break}e.have=0,e.mode=16197;case 16197:for(;e.have>>=3,o-=3}for(;e.have<19;)e.lens[T[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,F={bits:e.lenbits},M=It(0,e.lens,0,19,e.lencode,0,e.work,F),e.lenbits=F.bits,M){A.msg="invalid code lengths set",e.mode=Gt;break}e.have=0,e.mode=16198;case 16198:for(;e.have>>24,I=f>>>16&255,l=65535&f,!(C<=o);){if(0===r)break A;r--,E+=i[a++]<>>=C,o-=C,e.lens[e.have++]=l;else{if(16===l){for(u=C+2;o>>=C,o-=C,0===e.have){A.msg="invalid bit length repeat",e.mode=Gt;break}S=e.lens[e.have-1],c=3+(3&E),E>>>=2,o-=2}else if(17===l){for(u=C+3;o>>=C,o-=C,S=0,c=3+(7&E),E>>>=3,o-=3}else{for(u=C+7;o>>=C,o-=C,S=0,c=11+(127&E),E>>>=7,o-=7}if(e.have+c>e.nlen+e.ndist){A.msg="invalid bit length repeat",e.mode=Gt;break}for(;c--;)e.lens[e.have++]=S}}if(e.mode===Gt)break;if(0===e.lens[256]){A.msg="invalid code -- missing end-of-block",e.mode=Gt;break}if(e.lenbits=9,F={bits:e.lenbits},M=It(1,e.lens,0,e.nlen,e.lencode,0,e.work,F),e.lenbits=F.bits,M){A.msg="invalid literal/lengths set",e.mode=Gt;break}if(e.distbits=6,e.distcode=e.distdyn,F={bits:e.distbits},M=It(2,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,F),e.distbits=F.bits,M){A.msg="invalid distances set",e.mode=Gt;break}if(e.mode=Ht,t===Dt)break A;case Ht:e.mode=kt;case kt:if(r>=6&&h>=258){A.next_out=n,A.avail_out=h,A.next_in=a,A.avail_in=r,e.hold=E,e.bits=o,gt(A,B),n=A.next_out,s=A.output,h=A.avail_out,a=A.next_in,i=A.input,r=A.avail_in,E=e.hold,o=e.bits,e.mode===Pt&&(e.back=-1);break}for(e.back=0;f=e.lencode[E&(1<>>24,I=f>>>16&255,l=65535&f,!(C<=o);){if(0===r)break A;r--,E+=i[a++]<>d)],C=f>>>24,I=f>>>16&255,l=65535&f,!(d+C<=o);){if(0===r)break A;r--,E+=i[a++]<>>=d,o-=d,e.back+=d}if(E>>>=C,o-=C,e.back+=C,e.length=l,0===I){e.mode=16205;break}if(32&I){e.back=-1,e.mode=Pt;break}if(64&I){A.msg="invalid literal/length code",e.mode=Gt;break}e.extra=15&I,e.mode=16201;case 16201:if(e.extra){for(u=e.extra;o>>=e.extra,o-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=16202;case 16202:for(;f=e.distcode[E&(1<>>24,I=f>>>16&255,l=65535&f,!(C<=o);){if(0===r)break A;r--,E+=i[a++]<>d)],C=f>>>24,I=f>>>16&255,l=65535&f,!(d+C<=o);){if(0===r)break A;r--,E+=i[a++]<>>=d,o-=d,e.back+=d}if(E>>>=C,o-=C,e.back+=C,64&I){A.msg="invalid distance code",e.mode=Gt;break}e.offset=l,e.extra=15&I,e.mode=16203;case 16203:if(e.extra){for(u=e.extra;o>>=e.extra,o-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){A.msg="invalid distance too far back",e.mode=Gt;break}e.mode=16204;case 16204:if(0===h)break A;if(c=B-h,e.offset>c){if(c=e.offset-c,c>e.whave&&e.sane){A.msg="invalid distance too far back",e.mode=Gt;break}c>e.wnext?(c-=e.wnext,w=e.wsize-c):w=e.wnext-c,c>e.length&&(c=e.length),_=e.window}else _=s,w=n-e.offset,c=e.length;c>h&&(c=h),h-=c,e.length-=c;do{s[n++]=_[w++]}while(--c);0===e.length&&(e.mode=kt);break;case 16205:if(0===h)break A;s[n++]=e.length,h--,e.mode=kt;break;case mt:if(e.wrap){for(;o<32;){if(0===r)break A;r--,E|=i[a++]<{if(xt(A))return ft;let t=A.state;return t.window&&(t.window=null),A.state=null,Rt},inflateGetHeader:(A,t)=>{if(xt(A))return ft;const e=A.state;return 2&e.wrap?(e.head=t,t.done=!1,Rt):ft},inflateSetDictionary:(A,t)=>{const e=t.length;let i,s,a;return xt(A)?ft:(i=A.state,0!==i.wrap&&i.mode!==Ot?ft:i.mode===Ot&&(s=1,s=x(s,t,e,0),s!==i.check)?Qt:(a=Zt(A,t,e,e),a?(i.mode=16210,Ft):(i.havedict=1,Rt)))},inflateInfo:"pako inflate (from Nodeca project)"};var Vt=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const qt=Object.prototype.toString,{Z_NO_FLUSH:$t,Z_FINISH:Ae,Z_OK:te,Z_STREAM_END:ee,Z_NEED_DICT:ie,Z_STREAM_ERROR:se,Z_DATA_ERROR:ae,Z_MEM_ERROR:ne}=J;function re(A){this.options=NA({chunkSize:65536,windowBits:15,to:""},A||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||A&&A.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new XA,this.strm.avail_out=0;let e=Xt.inflateInit2(this.strm,t.windowBits);if(e!==te)throw new Error(N[e]);if(this.header=new Vt,Xt.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=jA(t.dictionary):"[object ArrayBuffer]"===qt.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(e=Xt.inflateSetDictionary(this.strm,t.dictionary),e!==te)))throw new Error(N[e])}function he(A,t){const e=new re(t);if(e.push(A),e.err)throw e.msg||N[e.err];return e.result}re.prototype.push=function(A,t){const e=this.strm,i=this.options.chunkSize,s=this.options.dictionary;let a,n,r;if(this.ended)return!1;for(n=t===~~t?t:!0===t?Ae:$t,"[object ArrayBuffer]"===qt.call(A)?e.input=new Uint8Array(A):e.input=A,e.next_in=0,e.avail_in=e.input.length;;){for(0===e.avail_out&&(e.output=new Uint8Array(i),e.next_out=0,e.avail_out=i),a=Xt.inflate(e,n),a===ie&&s&&(a=Xt.inflateSetDictionary(e,s),a===te?a=Xt.inflate(e,n):a===ae&&(a=ie));e.avail_in>0&&a===ee&&e.state.wrap>0&&0!==A[e.next_in];)Xt.inflateReset(e),a=Xt.inflate(e,n);switch(a){case se:case ae:case ie:case ne:return this.onEnd(a),this.ended=!0,!1}if(r=e.avail_out,e.next_out&&(0===e.avail_out||a===ee))if("string"===this.options.to){let A=ZA(e.output,e.next_out),t=e.next_out-A,s=WA(e.output,A);e.next_out=t,e.avail_out=i-t,t&&e.output.set(e.output.subarray(A,A+t),0),this.onData(s)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(a!==te||0!==r){if(a===ee)return a=Xt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(0===e.avail_in)break}}return!0},re.prototype.onData=function(A){this.chunks.push(A)},re.prototype.onEnd=function(A){A===te&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=JA(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var Ee={Inflate:re,inflate:he,inflateRaw:function(A,t){return(t=t||{}).raw=!0,he(A,t)},ungzip:he,constants:J};const{Deflate:oe,deflate:ge,deflateRaw:Be,gzip:ce}=Et,{Inflate:we,inflate:_e,inflateRaw:Ce,ungzip:Ie}=Ee;var le=ge,de=we;class De{constructor(A,t=!1,e=!0){this.device=A,this.tracing=t,this.slipReaderEnabled=!1,this.baudrate=0,this.traceLog="",this.lastTraceTime=Date.now(),this.buffer=new Uint8Array(0),this.onDeviceLostCallback=null,this.SLIP_END=192,this.SLIP_ESC=219,this.SLIP_ESC_END=220,this.SLIP_ESC_ESC=221,this._DTR_state=!1,this.slipReaderEnabled=e}setDeviceLostCallback(A){this.onDeviceLostCallback=A}updateDevice(A){this.device=A,this.trace("Device reference updated")}getInfo(){const A=this.device.getInfo();return A.usbVendorId&&A.usbProductId?`WebSerial VendorID 0x${A.usbVendorId.toString(16)} ProductID 0x${A.usbProductId.toString(16)}`:""}getPid(){return this.device.getInfo().usbProductId}trace(A){const t=`${`TRACE ${(Date.now()-this.lastTraceTime).toFixed(3)}`} ${A}`;console.log(t),this.traceLog+=t+"\n"}async returnTrace(){try{await navigator.clipboard.writeText(this.traceLog),console.log("Text copied to clipboard!")}catch(A){console.error("Failed to copy text:",A)}}hexify(A){return Array.from(A).map((A=>A.toString(16).padStart(2,"0"))).join("").padEnd(16," ")}hexConvert(A,t=!0){if(t&&A.length>16){let t="",e=A;for(;e.length>0;){const A=e.slice(0,16),i=String.fromCharCode(...A).split("").map((A=>" "===A||A>=" "&&A<="~"&&" "!==A?A:".")).join("");e=e.slice(16),t+=`\n ${this.hexify(A.slice(0,8))} ${this.hexify(A.slice(8))} | ${i}`}return t}return this.hexify(A)}slipWriter(A){const t=[];t.push(192);for(let e=0;esetTimeout((()=>e(new Error("Read timeout exceeded"))),A))),e=await Promise.race([this.reader.read(),t]);if(null===e)break;const{value:i,done:s}=e;if(s||!i)break;yield i}}catch(A){console.error("Error reading from serial port:",A)}finally{this.buffer=new Uint8Array(0)}}async newRead(A,t){if(this.buffer.length>=A){const t=this.buffer.slice(0,A);return this.buffer=this.buffer.slice(A),t}for(;this.buffer.length0?t:1,A);if(!a||0===a.length){const A=null===e?s?"Serial data stream stopped: Possible serial noise or corruption.":"No serial data received.":"Packet content transfer stopped";throw this.tracing&&this.trace(A),new Error(A)}this.tracing&&this.trace(`Read ${a.length} bytes: ${this.hexConvert(a)}`);let n=0;for(;nsetTimeout(t,A)))}async waitForUnlock(A){for(;this.device.readable&&this.device.readable.locked||this.device.writable&&this.device.writable.locked;)await this.sleep(A)}async disconnect(){var A,t;(null===(A=this.device.readable)||void 0===A?void 0:A.locked)&&await(null===(t=this.reader)||void 0===t?void 0:t.cancel()),await this.waitForUnlock(400),await this.device.close(),this.reader=void 0}}function Re(A){return new Promise((t=>setTimeout(t,A)))}class Se{constructor(A,t){this.resetDelay=t,this.transport=A}async reset(){await this.transport.setDTR(!1),await this.transport.setRTS(!0),await Re(100),await this.transport.setDTR(!0),await this.transport.setRTS(!1),await Re(this.resetDelay),await this.transport.setDTR(!1)}}class Me{constructor(A){this.transport=A}async reset(){await this.transport.setRTS(!1),await this.transport.setDTR(!1),await Re(100),await this.transport.setDTR(!0),await this.transport.setRTS(!1),await Re(100),await this.transport.setRTS(!0),await this.transport.setDTR(!1),await this.transport.setRTS(!0),await Re(100),await this.transport.setRTS(!1),await this.transport.setDTR(!1)}}class fe{constructor(A,t=!1){this.transport=A,this.usingUsbOtg=t,this.transport=A}async reset(){this.usingUsbOtg?(await Re(200),await this.transport.setRTS(!1),await Re(200)):(await Re(100),await this.transport.setRTS(!1))}}function Qe(A){const t=["D","R","W"],e=A.split("|");for(const A of e){const e=A[0],i=A.slice(1);if(!t.includes(e))return!1;if("D"===e||"R"===e){if("0"!==i&&"1"!==i)return!1}else if("W"===e){const A=parseInt(i);if(isNaN(A)||A<=0)return!1}}return!0}class Fe{constructor(A,t){this.transport=A,this.sequenceString=t,this.transport=A}async reset(){const A={D:async A=>await this.transport.setDTR(A),R:async A=>await this.transport.setRTS(A),W:async A=>await Re(A)};try{if(!Qe(this.sequenceString))return;const t=this.sequenceString.split("|");for(const e of t){const t=e[0],i=e.slice(1);"W"===t?await A.W(Number(i)):"D"!==t&&"R"!==t||await A[t]("1"===i)}}catch(A){throw new Error("Invalid custom reset sequence")}}}async function ue(A){let t;switch(A){case"ESP32":t=await Promise.resolve().then((function(){return ri}));break;case"ESP32-C2":t=await Promise.resolve().then((function(){return _i}));break;case"ESP32-C3":t=await Promise.resolve().then((function(){return Mi}));break;case"ESP32-C5":t=await Promise.resolve().then((function(){return Pi}));break;case"ESP32-C6":t=await Promise.resolve().then((function(){return bi}));break;case"ESP32-C61":t=await Promise.resolve().then((function(){return ji}));break;case"ESP32-H2":t=await Promise.resolve().then((function(){return ts}));break;case"ESP32-P4":t=await Promise.resolve().then((function(){return Es}));break;case"ESP32-S2":t=await Promise.resolve().then((function(){return Is}));break;case"ESP32-S3":t=await Promise.resolve().then((function(){return Qs}));break;case"ESP8266":t=await Promise.resolve().then((function(){return ys}))}if(t)return{bss_start:t.bss_start,data:t.data,data_start:t.data_start,entry:t.entry,text:t.text,text_start:t.text_start,decodedData:Te(t.data),decodedText:Te(t.text)}}function Te(A){const t=atob(A).split("").map((function(A){return A.charCodeAt(0)}));return new Uint8Array(t)}function pe(A,t,e=255){const i=A.length%t;if(0!==i){const s=new Uint8Array(t-i).fill(e),a=new Uint8Array(A.length+s.length);return a.set(A),a.set(s,A.length),a}return A}function Oe(A,t=239){for(let e=0;e{const t=["WiFi"];return"ESP8285"==await this.getChipDescription(A)&&t.push("Embedded Flash"),t}}async readEfuse(A,t){const e=this.EFUSE_RD_REG_BASE+4*t;return A.debug("Read efuse "+e),await A.readReg(e)}async getChipDescription(A){const t=await this.readEfuse(A,2);return!!(16&await this.readEfuse(A,0)|65536&t)?"ESP8285":"ESP8266EX"}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>33?40:26,Math.abs(i-e)>1&&A.info("WARNING: Detected crystal freq "+e+"MHz is quite different to normalized freq "+i+"MHz. Unsupported crystal in use?"),i}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async readMac(A){let t=await this.readEfuse(A,0);t>>>=0;let e=await this.readEfuse(A,1);e>>>=0;let i=await this.readEfuse(A,3);i>>>=0;const s=new Uint8Array(6);return 0!=i?(s[0]=i>>16&255,s[1]=i>>8&255,s[2]=255&i):e>>16&255?1==(e>>16&255)?(s[0]=172,s[1]=208,s[2]=116):A.error("Unknown OUI"):(s[0]=24,s[1]=254,s[2]=52),s[3]=e>>8&255,s[4]=255&e,s[5]=t>>24&255,this._d2h(s[0])+":"+this._d2h(s[1])+":"+this._d2h(s[2])+":"+this._d2h(s[3])+":"+this._d2h(s[4])+":"+this._d2h(s[5])}getEraseSize(A,t){return t}}ye.IROM_MAP_START=1075838976,ye.IROM_MAP_END=1076887552;var He=Object.freeze({__proto__:null,ESP8266ROM:ye});const ke=233;function me(A,t){return A+(t-1-A%t)}function Ge(A,t){return A[t]|A[t+1]<<8|A[t+2]<<16|A[t+3]<<24}class Ye{constructor(A,t,e=null,i=0){this.addr=A,this.data=t,this.fileOffs=e,this.flags=i,this.includeInChecksum=!0,0!==this.addr&&this.padToAlignment(4)}copyWithNewAddr(A){return new Ye(A,this.data,0)}splitImage(A){const t=new Ye(this.addr,this.data.slice(0,A),0);return this.data=this.data.slice(A),this.addr+=A,this.fileOffs=null,t}toString(){let A=`len 0x${this.data.length.toString(16).padStart(5,"0")} load 0x${this.addr.toString(16).padStart(8,"0")}`;return null!==this.fileOffs&&(A+=` file_offs 0x${this.fileOffs.toString(16).padStart(8,"0")}`),A}getMemoryType(A){return A.ROM_LOADER.MEMORY_MAP.filter((A=>A[0]<=this.addr&&this.addrA[2]))}padToAlignment(A){this.data=pe(this.data,A,0)}}class be extends Ye{constructor(A,t,e,i){super(t,e,null,i),this.name=A}toString(){return`${this.name} ${super.toString()}`}}class xe{constructor(A){this.SEG_HEADER_LEN=8,this.SHA256_DIGEST_LEN=32,this.ELF_FLAG_WRITE=1,this.ELF_FLAG_READ=2,this.ELF_FLAG_EXEC=4,this.segments=[],this.entrypoint=0,this.elfSha256=null,this.elfSha256Offset=0,this.padToSize=0,this.flashMode=0,this.flashSizeFreq=0,this.checksum=0,this.datalength=0,this.IROM_ALIGN=0,this.MMU_PAGE_SIZE_CONF=[],this.ROM_LOADER=A}loadCommonHeader(A,e,i){const s=A[e],a=A[e+1];if(this.flashMode=A[e+2],this.flashSizeFreq=A[e+3],this.entrypoint=Ge(A,e+4),s!==i)throw new t(`Invalid firmware image magic=0x${s.toString(16)}`);return a}verify(){if(this.segments.length>16)throw new t(`Invalid segment count ${this.segments.length} (max 16). Usually this indicates a linker script problem.`)}loadSegment(A,e,i=!1){const s=e,a=Ge(A,e),n=Ge(A,e+4);this.warnIfUnusualSegment(a,n,i);const r=A.slice(e+8,e+8+n);if(r.length1075838976||A<1073610752||t>65536)&&console.warn(`WARNING: Suspicious segment 0x${A.toString(16)}, length ${t}`)}maybePatchSegmentData(A,e){const i=A.length;if(this.elfSha256Offset>=e&&this.elfSha256Offseti)throw new t(`Cannot place SHA256 digest on segment boundary(elf_sha256_offset=${this.elfSha256Offset}, file_pos=${e}, segment_size=${i})`);const a=s-this.SEG_HEADER_LEN;if(!A.slice(a,a+this.SHA256_DIGEST_LEN).every((A=>0===A)))throw new t(`Contents of segment at SHA256 digest offset 0x${this.elfSha256Offset.toString(16)} are not all zero. Refusing to overwrite.`);if(!this.elfSha256||this.elfSha256.length!==this.SHA256_DIGEST_LEN)throw new t("ELF SHA256 digest is not properly initialized");const n=A.slice(0,a),r=A.slice(a+this.SHA256_DIGEST_LEN),h=n.length+this.elfSha256.length+r.length,E=new Uint8Array(h);return E.set(n,0),E.set(this.elfSha256,n.length),E.set(r,n.length+this.elfSha256.length),E}return A}saveSegment(A,t,e,i=null){const s=this.maybePatchSegmentData(e.data,t),a=new DataView(A.buffer,t);return a.setUint32(0,e.addr,!0),a.setUint32(4,s.length,!0),A.set(s,t+8),null!==i?Oe(s,i):0}saveFlashSegment(A,t,e,i=null){if("ESP32"===this.ROM_LOADER.CHIP_NAME){const A=(t+e.data.length+this.SEG_HEADER_LEN)%this.IROM_ALIGN;if(A<36){const t=new Uint8Array(e.data.length+(36-A));t.set(e.data),t.fill(0,e.data.length),e.data=t}}return this.saveSegment(A,t,e,i)}readChecksum(A,t){return A[me(t,16)]}calculateChecksum(){let A=239;for(const t of this.segments)t.includeInChecksum&&(A=Oe(t.data,A));return A}appendChecksum(A,t,e){A[me(t,16)]=e}writeCommonHeader(A,t,e){A[t]=ke,A[t+1]=e,A[t+2]=this.flashMode,A[t+3]=this.flashSizeFreq;new DataView(A.buffer,t+4).setUint32(0,this.entrypoint,!0)}isIromAddr(A){return ye.IROM_MAP_START<=A&&Athis.isIromAddr(A.addr)));if(A.length>0){if(1!==A.length)throw new t(`Found ${A.length} segments that could be irom0. Bad ELF file?`);return A[0]}return null}getNonIromSegments(){const A=this.getIromSegment();return this.segments.filter((t=>t!==A))}sortSegments(){this.segments.length&&this.segments.sort(((A,t)=>A.addr-t.addr))}mergeAdjacentSegments(){if(!this.segments.length)return;const A=[];for(let t=this.segments.length-1;t>0;t--){const e=this.segments[t-1],i=this.segments[t];if(e.getMemoryType(this).join(",")===i.getMemoryType(this).join(",")&&e.includeInChecksum===i.includeInChecksum&&i.addr===e.addr+e.data.length&&(i.flags&this.ELF_FLAG_EXEC)==(e.flags&this.ELF_FLAG_EXEC)){const A=new Uint8Array(e.data.length+i.data.length);A.set(e.data),A.set(i.data,e.data.length),e.data=A}else A.unshift(i)}A.unshift(this.segments[0]),this.segments=A}setMmuPageSize(A){if(this.MMU_PAGE_SIZE_CONF||A===this.IROM_ALIGN){if(this.MMU_PAGE_SIZE_CONF&&!this.MMU_PAGE_SIZE_CONF.includes(A)){const e=this.MMU_PAGE_SIZE_CONF.map((A=>A/1024+"KB")).join(", ");throw new t(`${A} bytes is not a valid ${this.ROM_LOADER.CHIP_NAME} page size, select from ${e}.`)}this.IROM_ALIGN=A}else console.warn(`WARNING: Changing MMU page size is not supported on ${this.ROM_LOADER.CHIP_NAME}! `+(0!==this.IROM_ALIGN?`Defaulting to ${this.IROM_ALIGN/1024}KB.`:""))}}class Ke extends xe{constructor(A,t=null,e=!0,i=!1){super(A),this.securePad=null,this.flashMode=0,this.flashSizeFreq=0,this.version=1,this.WP_PIN_DISABLED=238,this.wpPin=this.WP_PIN_DISABLED,this.clkDrv=0,this.qDrv=0,this.dDrv=0,this.csDrv=0,this.hdDrv=0,this.wpDrv=0,this.chipId=0,this.minRev=0,this.minRevFull=0,this.maxRevFull=0,this.storedDigest=null,this.calcDigest=null,this.dataLength=0,this.IROM_ALIGN=65536,this.ROM_LOADER=A,this.appendDigest=e,this.ramOnlyHeader=i,null!==t&&this.loadFromFile(t)}async loadFromFile(A){const t=Pe(A);let e=0;const i=this.loadCommonHeader(t,e,ke);e+=8,this.loadExtendedHeader(t,e),e+=16;for(let A=0;Athis.isFlashAddr(A.addr))).sort(((A,t)=>A.addr-t.addr)),n=this.segments.filter((A=>!this.isFlashAddr(A.addr))).sort(((A,t)=>A.addr-t.addr));for(let A=0;A0){let A=a[0].addr;for(const e of a.slice(1)){if(Math.floor(e.addr/this.IROM_ALIGN)===Math.floor(A/this.IROM_ALIGN))throw new t(`Segment loaded at 0x${e.addr.toString(16)} lands in same 64KB flash mapping as segment loaded at 0x${A.toString(16)}. Can't generate binary. Suggest changing linker script or ELF to merge sections.`);A=e.addr}}if(this.ramOnlyHeader){for(const t of n)s=this.saveSegment(e,i,t,s),i+=8+t.data.length,A++;this.appendChecksum(e,i,s),i=me(i,16);for(const t of a.reverse()){let a=this.getAlignmentDataNeeded(t,i);if(a>0){a0;){const t=a[0],r=this.getAlignmentDataNeeded(t,i);if(r>0){if(n.length>0&&r>this.SEG_HEADER_LEN){const A=n[0].splitImage(r);0===n[0].data.length&&n.shift(),s=this.saveSegment(e,i,A,s)}else{const A=new Ye(0,new Uint8Array(r).fill(0),i);s=this.saveSegment(e,i,A,s)}i+=8+r,A++}else{if((i+8)%this.IROM_ALIGN!=t.addr%this.IROM_ALIGN)throw new Error("Flash segment alignment mismatch");s=this.saveFlashSegment(e,i,t,s),a.shift(),i+=8+t.data.length,A++}}for(const t of n)s=this.saveSegment(e,i,t,s),i+=8+t.data.length,A++}if(this.securePad){if(!this.appendDigest)throw new Error("secure_pad only applies if a SHA-256 digest is also appended to the image");const t=(i+this.SEG_HEADER_LEN)%this.IROM_ALIGN,a=16;let n=0;"1"===this.securePad?n=112:"2"===this.securePad&&(n=32);const r=(this.IROM_ALIGN-t-a-n)%this.IROM_ALIGN,h=new Ye(0,new Uint8Array(r).fill(0),i);s=this.saveSegment(e,i,h,s),i+=8+r,A++}this.ramOnlyHeader||(this.appendChecksum(e,i,s),i=me(i,16));const r=i;if(this.ramOnlyHeader?e[1]=n.length:e[1]=A,this.appendDigest){const A=await crypto.subtle.digest("SHA-256",e.slice(0,r)),t=new Uint8Array(A);e.set(t,r),i+=32}if(this.padToSize&&i%this.padToSize!=0){const A=this.padToSize-i%this.padToSize,t=new Uint8Array(A);t.fill(255),e.set(t,i),i+=A}return e}loadExtendedHeader(A,t){const e=new DataView(A.buffer,t);this.wpPin=e.getUint8(0);const i=e.getUint8(1);[this.clkDrv,this.qDrv]=this.splitByte(i);const s=e.getUint8(2);[this.dDrv,this.csDrv]=this.splitByte(s);const a=e.getUint8(3);[this.hdDrv,this.wpDrv]=this.splitByte(a),this.chipId=e.getUint8(4),this.chipId!==this.ROM_LOADER.IMAGE_CHIP_ID&&console.warn(`Unexpected chip id in image. Expected ${this.ROM_LOADER.IMAGE_CHIP_ID} but value was ${this.chipId}. Is this image for a different chip model?`),this.minRev=e.getUint8(5),this.minRevFull=e.getUint16(6,!0),this.maxRevFull=e.getUint16(8,!0);const n=e.getUint8(15);if(0!==n&&1!==n)throw new Error(`Invalid value for append_digest field (0x${n.toString(16)}). Should be 0 or 1.`);this.appendDigest=1===n}saveExtendedHeader(A,t){const e=new ArrayBuffer(16),i=new DataView(e);i.setUint8(0,this.wpPin),i.setUint8(1,this.joinByte(this.clkDrv,this.qDrv)),i.setUint8(2,this.joinByte(this.dDrv,this.csDrv)),i.setUint8(3,this.joinByte(this.hdDrv,this.wpDrv)),i.setUint8(4,this.ROM_LOADER.IMAGE_CHIP_ID),i.setUint8(5,this.minRev),i.setUint16(6,this.minRevFull,!0),i.setUint16(8,this.maxRevFull,!0);for(let A=9;A<15;A++)i.setUint8(A,0);i.setUint8(15,this.appendDigest?1:0),A.set(new Uint8Array(e),t)}splitByte(A){return[15&A,A>>4&15]}joinByte(A,t){return 15&A|(15&t)<<4}getAlignmentDataNeeded(A,t){const e=A.addr%this.IROM_ALIGN-this.SEG_HEADER_LEN;let i=this.IROM_ALIGN-t%this.IROM_ALIGN+e;return 0===i||i===this.IROM_ALIGN?0:(i-=this.SEG_HEADER_LEN,i<0&&(i+=this.IROM_ALIGN),i)}}class Le extends xe{constructor(A,t=null){super(A),this.version=1,this.ROM_LOADER=A,this.flashMode=0,this.flashSizeFreq=0,null!==t&&this.loadFromFile(t)}loadFromFile(A){const t=Pe(A);let e=0;const i=this.loadCommonHeader(t,e,ke);e+=8;for(let A=0;A>9&7;return e+=(t>>2&1)<<3,e}async getChipRevision(A){const t=await this.readEfuse(A,3),e=await this.readEfuse(A,5),i=await A.readReg(this.DR_REG_SYSCON_BASE+124);return 0!=(t>>15&1)?0!=(e>>20&1)?0!=(i>>31&1)?3:2:1:0}async getChipDescription(A){const t=["ESP32-D0WDQ6","ESP32-D0WD","ESP32-D2WD","","ESP32-U4WDH","ESP32-PICO-D4","ESP32-PICO-V3-02"];let e="";const i=await this.getPkgVersion(A),s=await this.getChipRevision(A),a=3==s;return 0!=(1&await this.readEfuse(A,3))&&(t[0]="ESP32-S0WDQ6",t[1]="ESP32-S0WD"),a&&(t[5]="ESP32-PICO-V3"),e=i>=0&&i<=6?t[i]:"Unknown ESP32",!a||0!==i&&1!==i||(e+="-V3"),e+" (revision "+s+")"}async getChipFeatures(A){const t=["Wi-Fi"],e=await this.readEfuse(A,3);0===(2&e)&&t.push(" BT");0!==(1&e)?t.push(" Single Core"):t.push(" Dual Core");if(0!==(8192&e)){0!==(4096&e)?t.push(" 160MHz"):t.push(" 240MHz")}const i=await this.getPkgVersion(A);-1!==[2,4,5,6].indexOf(i)&&t.push(" Embedded Flash"),6===i&&t.push(" Embedded PSRAM");0!==(await this.readEfuse(A,4)>>8&31)&&t.push(" VRef calibration in efuse");0!==(e>>14&1)&&t.push(" BLK3 partially reserved");const s=3&await this.readEfuse(A,6);return t.push(" Coding Scheme "+["None","3/4","Repeat (UNSUPPORTED)","Invalid"][s]),t}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>33?40:26,Math.abs(i-e)>1&&A.info("WARNING: Unsupported crystal in use"),i}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async readMac(A){let t=await this.readEfuse(A,1);t>>>=0;let e=await this.readEfuse(A,2);e>>>=0;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}}var ks=Object.freeze({__proto__:null,ESP32ROM:Hs});class ms extends Hs{constructor(){super(...arguments),this.CHIP_NAME="ESP32-C3",this.IMAGE_CHIP_ID=5,this.EFUSE_BASE=1610647552,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1072955412,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1115684864,this.MEMORY_MAP=[[0,65536,"PADDING"],[1006632960,1015021568,"DROM"],[1070071808,1070465024,"DRAM"],[1070104576,1070596096,"BYTE_ACCESSIBLE"],[1072693248,1072824320,"DROM_MASK"],[1073741824,1074135040,"IROM_MASK"],[1107296256,1115684864,"IROM"],[1077395456,1077805056,"IRAM"],[1342177280,1342185472,"RTC_IRAM"],[1342177280,1342185472,"RTC_DRAM"],[1611653120,1611661312,"MEM_INTERNAL2"]]}async getPkgVersion(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>21&7}async getChipRevision(A){const t=this.EFUSE_BASE+68+12;return(await A.readReg(t)&7<<18)>>18}async getMinorChipVersion(A){const t=this.EFUSE_BASE+68+20,e=await A.readReg(t)>>23&1,i=this.EFUSE_BASE+68+12;return(e<<3)+(await A.readReg(i)>>18&7)}async getMajorChipVersion(A){const t=this.EFUSE_BASE+68+20;return await A.readReg(t)>>24&3}async getChipDescription(A){const t=await this.getPkgVersion(A),e=await this.getMajorChipVersion(A),i=await this.getMinorChipVersion(A);return`${{0:"ESP32-C3 (QFN32)",1:"ESP8685 (QFN28)",2:"ESP32-C3 AZ (QFN32)",3:"ESP8686 (QFN24)"}[t]||"Unknown ESP32-C3"} (revision v${e}.${i})`}async getFlashCap(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>27&7}async getFlashVendor(A){const t=this.EFUSE_BASE+68+16;return{1:"XMC",2:"GD",3:"FM",4:"TT",5:"ZBIT"}[7&await A.readReg(t)]||""}async getChipFeatures(A){const t=["Wi-Fi","BLE"],e=await this.getFlashCap(A),i=await this.getFlashVendor(A),s={0:null,1:"Embedded Flash 4MB",2:"Embedded Flash 2MB",3:"Embedded Flash 1MB",4:"Embedded Flash 8MB"}[e],a=void 0!==s?s:"Unknown Embedded Flash";return null!==s&&t.push(`${a} (${i})`),t}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}getEraseSize(A,t){return t}}var Gs=Object.freeze({__proto__:null,ESP32C3ROM:ms});var Ys=Object.freeze({__proto__:null,ESP32C2ROM:class extends ms{constructor(){super(...arguments),this.CHIP_NAME="ESP32-C2",this.IMAGE_CHIP_ID=12,this.EFUSE_BASE=1610647552,this.MAC_EFUSE_REG=this.EFUSE_BASE+64,this.UART_CLKDIV_REG=1610612756,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.XTAL_CLK_DIVIDER=1,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1111490560,this.MEMORY_MAP=[[0,65536,"PADDING"],[1006632960,1010827264,"DROM"],[1070202880,1070465024,"DRAM"],[1070104576,1070596096,"BYTE_ACCESSIBLE"],[1072693248,1073020928,"DROM_MASK"],[1073741824,1074331648,"IROM_MASK"],[1107296256,1111490560,"IROM"],[1077395456,1077673984,"IRAM"]]}async getPkgVersion(A){const t=this.EFUSE_BASE+64+4;return await A.readReg(t)>>22&7}async getChipRevision(A){const t=this.EFUSE_BASE+64+4;return(await A.readReg(t)&3<<20)>>20}async getChipDescription(A){let t;const e=await this.getPkgVersion(A);t=0===e||1===e?"ESP32-C2":"unknown ESP32-C2";return t+=" (revision "+await this.getChipRevision(A)+")",t}async getChipFeatures(A){return["Wi-Fi","BLE"]}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>33?40:26,Math.abs(i-e)>1&&A.info("WARNING: Unsupported crystal in use"),i}async changeBaudRate(A){26===await this.getCrystalFreq(A)&&A.changeBaud()}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}getEraseSize(A,t){return t}}});class bs extends ms{constructor(){super(...arguments),this.CHIP_NAME="ESP32-C6",this.IMAGE_CHIP_ID=13,this.EFUSE_BASE=1611335680,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1072955412,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1115684864,this.MEMORY_MAP=[[0,65536,"PADDING"],[1107296256,1124073472,"DROM"],[1082130432,1082654720,"DRAM"],[1082130432,1082654720,"BYTE_ACCESSIBLE"],[1074048e3,1074069504,"DROM_MASK"],[1073741824,1074048e3,"IROM_MASK"],[1107296256,1124073472,"IROM"],[1082130432,1082654720,"IRAM"],[1342177280,1342193664,"RTC_IRAM"],[1342177280,1342193664,"RTC_DRAM"],[1611653120,1611661312,"MEM_INTERNAL2"]]}async getPkgVersion(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>21&7}async getChipRevision(A){const t=this.EFUSE_BASE+68+12;return(await A.readReg(t)&7<<18)>>18}async getChipDescription(A){let t;t=0===await this.getPkgVersion(A)?"ESP32-C6":"unknown ESP32-C6";return t+=" (revision "+await this.getChipRevision(A)+")",t}async getChipFeatures(A){return["Wi-Fi 6","BT 5","IEEE802.15.4"]}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}getEraseSize(A,t){return t}}var xs=Object.freeze({__proto__:null,ESP32C6ROM:bs});var Ks=Object.freeze({__proto__:null,ESP32C61ROM:class extends bs{constructor(){super(...arguments),this.CHIP_NAME="ESP32-C61",this.IMAGE_CHIP_ID=20,this.CHIP_DETECT_MAGIC_VALUE=[871374959,606167151],this.UART_DATE_REG_ADDR=1610612860,this.EFUSE_BASE=1611352064,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.EFUSE_RD_REG_BASE=this.EFUSE_BASE+48,this.EFUSE_PURPOSE_KEY0_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY0_SHIFT=0,this.EFUSE_PURPOSE_KEY1_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY1_SHIFT=4,this.EFUSE_PURPOSE_KEY2_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY2_SHIFT=8,this.EFUSE_PURPOSE_KEY3_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY3_SHIFT=12,this.EFUSE_PURPOSE_KEY4_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY4_SHIFT=16,this.EFUSE_PURPOSE_KEY5_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY5_SHIFT=20,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG=this.EFUSE_RD_REG_BASE,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT=1<<20,this.EFUSE_SPI_BOOT_CRYPT_CNT_REG=this.EFUSE_BASE+48,this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK=7<<23,this.EFUSE_SECURE_BOOT_EN_REG=this.EFUSE_BASE+52,this.EFUSE_SECURE_BOOT_EN_MASK=1<<26,this.FLASH_FREQUENCY={"80m":15,"40m":0,"20m":2},this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1115684864,this.MEMORY_MAP=[[0,65536,"PADDING"],[1098907648,1107296256,"DROM"],[1082130432,1082523648,"DRAM"],[1082130432,1082523648,"BYTE_ACCESSIBLE"],[1074048e3,1074069504,"DROM_MASK"],[1073741824,1074048e3,"IROM_MASK"],[1090519040,1098907648,"IROM"],[1082130432,1082523648,"IRAM"],[1342177280,1342193664,"RTC_IRAM"],[1342177280,1342193664,"RTC_DRAM"],[1611653120,1611661312,"MEM_INTERNAL2"]],this.UF2_FAMILY_ID=2010665156,this.EFUSE_MAX_KEY=5,this.KEY_PURPOSES={0:"USER/EMPTY",1:"ECDSA_KEY",2:"XTS_AES_256_KEY_1",3:"XTS_AES_256_KEY_2",4:"XTS_AES_128_KEY",5:"HMAC_DOWN_ALL",6:"HMAC_DOWN_JTAG",7:"HMAC_DOWN_DIGITAL_SIGNATURE",8:"HMAC_UP",9:"SECURE_BOOT_DIGEST0",10:"SECURE_BOOT_DIGEST1",11:"SECURE_BOOT_DIGEST2",12:"KM_INIT_KEY",13:"XTS_AES_256_KEY_1_PSRAM",14:"XTS_AES_256_KEY_2_PSRAM",15:"XTS_AES_128_KEY_PSRAM"}}async getPkgVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+8)>>26&7}async getMinorChipVersion(A){return 15&await A.readReg(this.EFUSE_BLOCK1_ADDR+8)}async getMajorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+8)>>4&3}async getChipDescription(A){let t;t=0===await this.getPkgVersion(A)?"ESP32-C61":"unknown ESP32-C61";return`${t} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`}async getChipFeatures(A){return["WiFi 6","BT 5"]}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}}});var Ls=Object.freeze({__proto__:null,ESP32C5ROM:class extends bs{constructor(){super(...arguments),this.CHIP_NAME="ESP32-C5",this.IMAGE_CHIP_ID=23,this.BOOTLOADER_FLASH_OFFSET=8192,this.EFUSE_BASE=1611352064,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1610612756,this.EFUSE_RD_REG_BASE=this.EFUSE_BASE+48,this.EFUSE_PURPOSE_KEY0_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY0_SHIFT=24,this.EFUSE_PURPOSE_KEY1_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY1_SHIFT=28,this.EFUSE_PURPOSE_KEY2_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY2_SHIFT=0,this.EFUSE_PURPOSE_KEY3_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY3_SHIFT=4,this.EFUSE_PURPOSE_KEY4_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY4_SHIFT=8,this.EFUSE_PURPOSE_KEY5_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY5_SHIFT=12,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG=this.EFUSE_RD_REG_BASE,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT=1<<20,this.EFUSE_SPI_BOOT_CRYPT_CNT_REG=this.EFUSE_BASE+52,this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK=7<<18,this.EFUSE_SECURE_BOOT_EN_REG=this.EFUSE_BASE+56,this.EFUSE_SECURE_BOOT_EN_MASK=1<<20,this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1115684864,this.DROM_MAP_START=1115684864,this.DROM_MAP_END=1124073472,this.PCR_SYSCLK_CONF_REG=1611227408,this.PCR_SYSCLK_XTAL_FREQ_V=127<<24,this.PCR_SYSCLK_XTAL_FREQ_S=24,this.XTAL_CLK_DIVIDER=1,this.UARTDEV_BUF_NO=1082520852,this.CHIP_DETECT_MAGIC_VALUE=[285294703,1675706479,1607549039],this.FLASH_FREQUENCY={"80m":15,"40m":0,"20m":2},this.MEMORY_MAP=[[0,65536,"PADDING"],[1115684864,1124073472,"DROM"],[1082130432,1082523648,"DRAM"],[1082130432,1082523648,"BYTE_ACCESSIBLE"],[1073979392,1074003968,"DROM_MASK"],[1073741824,1073979392,"IROM_MASK"],[1107296256,1115684864,"IROM"],[1082130432,1082523648,"IRAM"],[1342177280,1342193664,"RTC_IRAM"],[1342177280,1342193664,"RTC_DRAM"],[1611653120,1611661312,"MEM_INTERNAL2"]],this.UF2_FAMILY_ID=4145808195,this.EFUSE_MAX_KEY=5,this.KEY_PURPOSES={0:"USER/EMPTY",1:"ECDSA_KEY",2:"XTS_AES_256_KEY_1",3:"XTS_AES_256_KEY_2",4:"XTS_AES_128_KEY",5:"HMAC_DOWN_ALL",6:"HMAC_DOWN_JTAG",7:"HMAC_DOWN_DIGITAL_SIGNATURE",8:"HMAC_UP",9:"SECURE_BOOT_DIGEST0",10:"SECURE_BOOT_DIGEST1",11:"SECURE_BOOT_DIGEST2",12:"KM_INIT_KEY"}}async getPkgVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+8)>>26&7}async getMinorChipVersion(A){return 15&await A.readReg(this.EFUSE_BLOCK1_ADDR+8)}async getMajorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+8)>>4&3}async getChipDescription(A){let t;t=0===await this.getPkgVersion(A)?"ESP32-C5":"unknown ESP32-C5";return`${t} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`}async getChipFeatures(A){return["Wi-Fi 6 (dual-band)","BT 5 (LE)"]}async getCrystalFreq(A){const t=await A.readReg(this.UART_CLKDIV_REG)&this.UART_CLKDIV_MASK,e=A.transport.baudrate*t/1e6/this.XTAL_CLK_DIVIDER;let i;return i=e>45?48:e>33?40:26,Math.abs(i-e)>1&&A.info("WARNING: Unsupported crystal in use"),i}async getCrystalFreqRomExpect(A){return(await A.readReg(this.PCR_SYSCLK_CONF_REG)&this.PCR_SYSCLK_XTAL_FREQ_V)>>this.PCR_SYSCLK_XTAL_FREQ_S}}});var Ns=Object.freeze({__proto__:null,ESP32H2ROM:class extends bs{constructor(){super(...arguments),this.CHIP_NAME="ESP32-H2",this.IMAGE_CHIP_ID=16,this.EFUSE_BASE=1611335680,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.UART_CLKDIV_REG=1072955412,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612860,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.USB_RAM_BLOCK=2048,this.UARTDEV_BUF_NO_USB=3,this.UARTDEV_BUF_NO=1070526796,this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1115684864,this.MEMORY_MAP=[[0,65536,"PADDING"],[1107296256,1124073472,"DROM"],[1082130432,1082654720,"DRAM"],[1082130432,1082654720,"BYTE_ACCESSIBLE"],[1074048e3,1074069504,"DROM_MASK"],[1073741824,1074048e3,"IROM_MASK"],[1107296256,1124073472,"IROM"],[1082130432,1082654720,"IRAM"],[1342177280,1342193664,"RTC_IRAM"],[1342177280,1342193664,"RTC_DRAM"],[1611653120,1611661312,"MEM_INTERNAL2"]]}async getPkgVersion(A){return 7&await A.readReg(this.EFUSE_BLOCK1_ADDR+16)}async getMinorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>18&7}async getMajorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>21&3}async getChipDescription(A){let t;t=0===await this.getPkgVersion(A)?"ESP32-H2":"unknown ESP32-H2";return`${t} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`}async getChipFeatures(A){return["BT 5 (LE)","IEEE802.15.4","Single Core","96MHz"]}async getCrystalFreq(A){return 32}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async postConnect(A){const t=255&await A.readReg(this.UARTDEV_BUF_NO);A.debug("In _post_connect "+t),t==this.UARTDEV_BUF_NO_USB&&(A.ESP_RAM_BLOCK=this.USB_RAM_BLOCK)}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}getEraseSize(A,t){return t}}});var Js=Object.freeze({__proto__:null,ESP32S3ROM:class extends Hs{constructor(){super(...arguments),this.CHIP_NAME="ESP32-S3",this.IMAGE_CHIP_ID=9,this.EFUSE_BASE=1610641408,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.EFUSE_BLOCK2_ADDR=this.EFUSE_BASE+92,this.UART_CLKDIV_REG=1610612756,this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612864,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=0,this.SPI_REG_BASE=1610620928,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.USB_RAM_BLOCK=2048,this.UARTDEV_BUF_NO_USB=3,this.UARTDEV_BUF_NO=1070526796,this.IROM_MAP_START=1107296256,this.IROM_MAP_END=1140850688,this.MEMORY_MAP=[[0,65536,"PADDING"],[1006632960,1023410176,"DROM"],[1023410176,1040187392,"EXTRAM_DATA"],[1611653120,1611661312,"RTC_DRAM"],[1070104576,1070596096,"BYTE_ACCESSIBLE"],[1070104576,1077813248,"MEM_INTERNAL"],[1070104576,1070596096,"DRAM"],[1073741824,1073848576,"IROM_MASK"],[1077346304,1077805056,"IRAM"],[1611653120,1611661312,"RTC_IRAM"],[1107296256,1115684864,"IROM"],[1342177280,1342185472,"RTC_DATA"]]}async getChipDescription(A){const t=await this.getMajorChipVersion(A),e=await this.getMinorChipVersion(A);return`${{0:"ESP32-S3 (QFN56)",1:"ESP32-S3-PICO-1 (LGA56)"}[await this.getPkgVersion(A)]||"unknown ESP32-S3"} (revision v${t}.${e})`}async getPkgVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>21&7}async getRawMinorChipVersion(A){return((await A.readReg(this.EFUSE_BLOCK1_ADDR+20)>>23&1)<<3)+(await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>18&7)}async getMinorChipVersion(A){const t=await this.getRawMinorChipVersion(A);return await this.isEco0(A,t)?0:this.getRawMinorChipVersion(A)}async getRawMajorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+20)>>24&3}async getMajorChipVersion(A){const t=await this.getRawMinorChipVersion(A);return await this.isEco0(A,t)?0:this.getRawMajorChipVersion(A)}async getBlkVersionMajor(A){return 3&await A.readReg(this.EFUSE_BLOCK2_ADDR+16)}async getBlkVersionMinor(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>24&7}async isEco0(A,t){return!(7&t)&&1===await this.getBlkVersionMajor(A)&&1===await this.getBlkVersionMinor(A)}async getFlashCap(A){const t=this.EFUSE_BASE+68+12;return await A.readReg(t)>>27&7}async getFlashVendor(A){const t=this.EFUSE_BASE+68+16;return{1:"XMC",2:"GD",3:"FM",4:"TT",5:"BY"}[7&await A.readReg(t)]||""}async getPsramCap(A){const t=this.EFUSE_BASE+68+16;return await A.readReg(t)>>3&3}async getPsramVendor(A){const t=this.EFUSE_BASE+68+16;return{1:"AP_3v3",2:"AP_1v8"}[await A.readReg(t)>>7&3]||""}async getChipFeatures(A){const t=["Wi-Fi","BLE"],e=await this.getFlashCap(A),i=await this.getFlashVendor(A),s={0:null,1:"Embedded Flash 8MB",2:"Embedded Flash 4MB"}[e],a=void 0!==s?s:"Unknown Embedded Flash";null!==s&&t.push(`${a} (${i})`);const n=await this.getPsramCap(A),r=await this.getPsramVendor(A),h={0:null,1:"Embedded PSRAM 8MB",2:"Embedded PSRAM 2MB"}[n],E=void 0!==h?h:"Unknown Embedded PSRAM";return null!==h&&t.push(`${E} (${r})`),t}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async postConnect(A){const t=255&await A.readReg(this.UARTDEV_BUF_NO);A.debug("In _post_connect "+t),t==this.UARTDEV_BUF_NO_USB&&(A.ESP_RAM_BLOCK=this.USB_RAM_BLOCK)}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}getEraseSize(A,t){return t}}});var vs=Object.freeze({__proto__:null,ESP32S2ROM:class extends Hs{constructor(){super(...arguments),this.CHIP_NAME="ESP32-S2",this.IMAGE_CHIP_ID=2,this.IROM_MAP_START=1074266112,this.IROM_MAP_END=1085800448,this.DROM_MAP_START=1056964608,this.DROM_MAP_END=1061093376,this.CHIP_DETECT_MAGIC_VALUE=[1990],this.SPI_REG_BASE=1061167104,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.SPI_ADDR_REG_MSB=!1,this.MAC_EFUSE_REG=1061265476,this.UART_CLKDIV_REG=1061158932,this.SUPPORTS_ENCRYPTED_FLASH=!0,this.FLASH_ENCRYPTED_WRITE_ALIGN=16,this.EFUSE_BASE=1061265408,this.EFUSE_RD_REG_BASE=this.EFUSE_BASE+48,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.EFUSE_BLOCK2_ADDR=this.EFUSE_BASE+92,this.EFUSE_PURPOSE_KEY0_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY0_SHIFT=24,this.EFUSE_PURPOSE_KEY1_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY1_SHIFT=28,this.EFUSE_PURPOSE_KEY2_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY2_SHIFT=0,this.EFUSE_PURPOSE_KEY3_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY3_SHIFT=4,this.EFUSE_PURPOSE_KEY4_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY4_SHIFT=8,this.EFUSE_PURPOSE_KEY5_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY5_SHIFT=12,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG=this.EFUSE_RD_REG_BASE,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT=1<<19,this.EFUSE_SPI_BOOT_CRYPT_CNT_REG=this.EFUSE_BASE+52,this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK=7<<18,this.EFUSE_SECURE_BOOT_EN_REG=this.EFUSE_BASE+56,this.EFUSE_SECURE_BOOT_EN_MASK=1<<20,this.EFUSE_RD_REPEAT_DATA3_REG=this.EFUSE_BASE+60,this.EFUSE_RD_REPEAT_DATA3_REG_FLASH_TYPE_MASK=512,this.PURPOSE_VAL_XTS_AES256_KEY_1=2,this.PURPOSE_VAL_XTS_AES256_KEY_2=3,this.PURPOSE_VAL_XTS_AES128_KEY=4,this.UARTDEV_BUF_NO=1073741076,this.UARTDEV_BUF_NO_USB_OTG=2,this.USB_RAM_BLOCK=2048,this.GPIO_STRAP_REG=1061175352,this.GPIO_STRAP_SPI_BOOT_MASK=8,this.GPIO_STRAP_VDDSPI_MASK=16,this.RTC_CNTL_OPTION1_REG=1061191976,this.RTC_CNTL_FORCE_DOWNLOAD_BOOT_MASK=1,this.RTCCNTL_BASE_REG=1061191680,this.RTC_CNTL_WDTCONFIG0_REG=this.RTCCNTL_BASE_REG+148,this.RTC_CNTL_WDTCONFIG1_REG=this.RTCCNTL_BASE_REG+152,this.RTC_CNTL_WDTWPROTECT_REG=this.RTCCNTL_BASE_REG+172,this.RTC_CNTL_WDT_WKEY=1356348065,this.MEMORY_MAP=[[0,65536,"PADDING"],[1056964608,1073217536,"DROM"],[1062207488,1073217536,"EXTRAM_DATA"],[1073340416,1073348608,"RTC_DRAM"],[1073340416,1073741824,"BYTE_ACCESSIBLE"],[1073340416,1074208768,"MEM_INTERNAL"],[1073414144,1073741824,"DRAM"],[1073741824,1073848576,"IROM_MASK"],[1073872896,1074200576,"IRAM"],[1074200576,1074208768,"RTC_IRAM"],[1074266112,1082130432,"IROM"],[1342177280,1342185472,"RTC_DATA"]],this.EFUSE_VDD_SPI_REG=this.EFUSE_BASE+52,this.VDD_SPI_XPD=16,this.VDD_SPI_TIEH=32,this.VDD_SPI_FORCE=64,this.UF2_FAMILY_ID=3218951918,this.EFUSE_MAX_KEY=5,this.KEY_PURPOSES={0:"USER/EMPTY",1:"RESERVED",2:"XTS_AES_256_KEY_1",3:"XTS_AES_256_KEY_2",4:"XTS_AES_128_KEY",5:"HMAC_DOWN_ALL",6:"HMAC_DOWN_JTAG",7:"HMAC_DOWN_DIGITAL_SIGNATURE",8:"HMAC_UP",9:"SECURE_BOOT_DIGEST0",10:"SECURE_BOOT_DIGEST1",11:"SECURE_BOOT_DIGEST2"},this.UART_CLKDIV_MASK=1048575,this.UART_DATE_REG_ADDR=1610612856,this.FLASH_WRITE_SIZE=1024,this.BOOTLOADER_FLASH_OFFSET=4096}async getPkgVersion(A){const t=this.EFUSE_BLOCK1_ADDR+16;return 15&await A.readReg(t)}async getMinorChipVersion(A){return((await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>20&1)<<3)+(await A.readReg(this.EFUSE_BLOCK1_ADDR+16)>>4&7)}async getMajorChipVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>18&3}async getFlashVersion(A){return await A.readReg(this.EFUSE_BLOCK1_ADDR+12)>>21&15}async getChipDescription(A){const t=await this.getFlashCap(A)+100*await this.getPsramCap(A),e=await this.getMajorChipVersion(A),i=await this.getMinorChipVersion(A);return`${{0:"ESP32-S2",1:"ESP32-S2FH2",2:"ESP32-S2FH4",102:"ESP32-S2FNR2",100:"ESP32-S2R2"}[t]||"unknown ESP32-S2"} (revision v${e}.${i})`}async getFlashCap(A){return await this.getFlashVersion(A)}async getPsramVersion(A){const t=this.EFUSE_BLOCK1_ADDR+12;return await A.readReg(t)>>28&15}async getPsramCap(A){return await this.getPsramVersion(A)}async getBlock2Version(A){const t=this.EFUSE_BLOCK2_ADDR+16;return await A.readReg(t)>>4&7}async getChipFeatures(A){const t=["Wi-Fi"],e={0:"No Embedded Flash",1:"Embedded Flash 2MB",2:"Embedded Flash 4MB"}[await this.getFlashCap(A)]||"Unknown Embedded Flash";t.push(e);const i={0:"No Embedded Flash",1:"Embedded PSRAM 2MB",2:"Embedded PSRAM 4MB"}[await this.getPsramCap(A)]||"Unknown Embedded PSRAM";t.push(i);const s={0:"No calibration in BLK2 of efuse",1:"ADC and temperature sensor calibration in BLK2 of efuse V1",2:"ADC and temperature sensor calibration in BLK2 of efuse V2"}[await this.getBlock2Version(A)]||"Unknown Calibration in BLK2";return t.push(s),t}async getCrystalFreq(A){return 40}_d2h(A){const t=(+A).toString(16);return 1===t.length?"0"+t:t}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}getEraseSize(A,t){return t}async usingUsbOtg(A){return(255&await A.readReg(this.UARTDEV_BUF_NO))===this.UARTDEV_BUF_NO_USB_OTG}async postConnect(A){const t=await this.usingUsbOtg(A);A.debug("In _post_connect using USB OTG ?"+t),t&&(A.ESP_RAM_BLOCK=this.USB_RAM_BLOCK)}}});var zs=Object.freeze({__proto__:null,ESP32P4ROM:class extends Hs{constructor(){super(...arguments),this.CHIP_NAME="ESP32-P4",this.IMAGE_CHIP_ID=18,this.IROM_MAP_START=1073741824,this.IROM_MAP_END=1275068416,this.DROM_MAP_START=1073741824,this.DROM_MAP_END=1275068416,this.BOOTLOADER_FLASH_OFFSET=8192,this.CHIP_DETECT_MAGIC_VALUE=[0,182303440],this.UART_DATE_REG_ADDR=1343004812,this.EFUSE_BASE=1343410176,this.EFUSE_BLOCK1_ADDR=this.EFUSE_BASE+68,this.MAC_EFUSE_REG=this.EFUSE_BASE+68,this.SPI_REG_BASE=1342754816,this.SPI_USR_OFFS=24,this.SPI_USR1_OFFS=28,this.SPI_USR2_OFFS=32,this.SPI_MOSI_DLEN_OFFS=36,this.SPI_MISO_DLEN_OFFS=40,this.SPI_W0_OFFS=88,this.EFUSE_RD_REG_BASE=this.EFUSE_BASE+48,this.EFUSE_PURPOSE_KEY0_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY0_SHIFT=24,this.EFUSE_PURPOSE_KEY1_REG=this.EFUSE_BASE+52,this.EFUSE_PURPOSE_KEY1_SHIFT=28,this.EFUSE_PURPOSE_KEY2_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY2_SHIFT=0,this.EFUSE_PURPOSE_KEY3_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY3_SHIFT=4,this.EFUSE_PURPOSE_KEY4_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY4_SHIFT=8,this.EFUSE_PURPOSE_KEY5_REG=this.EFUSE_BASE+56,this.EFUSE_PURPOSE_KEY5_SHIFT=12,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT_REG=this.EFUSE_RD_REG_BASE,this.EFUSE_DIS_DOWNLOAD_MANUAL_ENCRYPT=1<<20,this.EFUSE_SPI_BOOT_CRYPT_CNT_REG=this.EFUSE_BASE+52,this.EFUSE_SPI_BOOT_CRYPT_CNT_MASK=7<<18,this.EFUSE_SECURE_BOOT_EN_REG=this.EFUSE_BASE+56,this.EFUSE_SECURE_BOOT_EN_MASK=1<<20,this.PURPOSE_VAL_XTS_AES256_KEY_1=2,this.PURPOSE_VAL_XTS_AES256_KEY_2=3,this.PURPOSE_VAL_XTS_AES128_KEY=4,this.SUPPORTS_ENCRYPTED_FLASH=!0,this.FLASH_ENCRYPTED_WRITE_ALIGN=16,this.MEMORY_MAP=[[0,65536,"PADDING"],[1073741824,1275068416,"DROM"],[1341128704,1341784064,"DRAM"],[1341128704,1341784064,"BYTE_ACCESSIBLE"],[1337982976,1338114048,"DROM_MASK"],[1337982976,1338114048,"IROM_MASK"],[1073741824,1275068416,"IROM"],[1341128704,1341784064,"IRAM"],[1343258624,1343291392,"RTC_IRAM"],[1343258624,1343291392,"RTC_DRAM"],[1611653120,1611661312,"MEM_INTERNAL2"]],this.UF2_FAMILY_ID=1026592404,this.EFUSE_MAX_KEY=5,this.KEY_PURPOSES={0:"USER/EMPTY",1:"ECDSA_KEY",2:"XTS_AES_256_KEY_1",3:"XTS_AES_256_KEY_2",4:"XTS_AES_128_KEY",5:"HMAC_DOWN_ALL",6:"HMAC_DOWN_JTAG",7:"HMAC_DOWN_DIGITAL_SIGNATURE",8:"HMAC_UP",9:"SECURE_BOOT_DIGEST0",10:"SECURE_BOOT_DIGEST1",11:"SECURE_BOOT_DIGEST2",12:"KM_INIT_KEY"}}async getPkgVersion(A){const t=this.EFUSE_BLOCK1_ADDR+8;return await A.readReg(t)>>27&7}async getMinorChipVersion(A){const t=this.EFUSE_BLOCK1_ADDR+8;return 15&await A.readReg(t)}async getMajorChipVersion(A){const t=this.EFUSE_BLOCK1_ADDR+8;return await A.readReg(t)>>4&3}async getChipDescription(A){return`${0===await this.getPkgVersion(A)?"ESP32-P4":"unknown ESP32-P4"} (revision v${await this.getMajorChipVersion(A)}.${await this.getMinorChipVersion(A)})`}async getChipFeatures(A){return["High-Performance MCU"]}async getCrystalFreq(A){return 40}async getFlashVoltage(A){}async overrideVddsdio(A){A.debug("VDD_SDIO overrides are not supported for ESP32-P4")}async readMac(A){let t=await A.readReg(this.MAC_EFUSE_REG);t>>>=0;let e=await A.readReg(this.MAC_EFUSE_REG+4);e=e>>>0&65535;const i=new Uint8Array(6);return i[0]=e>>8&255,i[1]=255&e,i[2]=t>>24&255,i[3]=t>>16&255,i[4]=t>>8&255,i[5]=255&t,this._d2h(i[0])+":"+this._d2h(i[1])+":"+this._d2h(i[2])+":"+this._d2h(i[3])+":"+this._d2h(i[4])+":"+this._d2h(i[5])}async getFlashCryptConfig(A){}async getSecureBootEnabled(A){return await A.readReg(this.EFUSE_SECURE_BOOT_EN_REG)&this.EFUSE_SECURE_BOOT_EN_MASK}async getKeyBlockPurpose(A,t){if(t<0||t>this.EFUSE_MAX_KEY)return void A.debug(`Valid key block numbers must be in range 0-${this.EFUSE_MAX_KEY}`);const e=[[this.EFUSE_PURPOSE_KEY0_REG,this.EFUSE_PURPOSE_KEY0_SHIFT],[this.EFUSE_PURPOSE_KEY1_REG,this.EFUSE_PURPOSE_KEY1_SHIFT],[this.EFUSE_PURPOSE_KEY2_REG,this.EFUSE_PURPOSE_KEY2_SHIFT],[this.EFUSE_PURPOSE_KEY3_REG,this.EFUSE_PURPOSE_KEY3_SHIFT],[this.EFUSE_PURPOSE_KEY4_REG,this.EFUSE_PURPOSE_KEY4_SHIFT],[this.EFUSE_PURPOSE_KEY5_REG,this.EFUSE_PURPOSE_KEY5_SHIFT]],[i,s]=e[t];return await A.readReg(i)>>s&15}async isFlashEncryptionKeyValid(A){const t=[];for(let e=0;e<=this.EFUSE_MAX_KEY;e++){const i=await this.getKeyBlockPurpose(A,e);t.push(i)}if(void 0!==typeof t.find((A=>A===this.PURPOSE_VAL_XTS_AES128_KEY)))return!0;const e=t.find((A=>A===this.PURPOSE_VAL_XTS_AES256_KEY_1)),i=t.find((A=>A===this.PURPOSE_VAL_XTS_AES256_KEY_2));return void 0!==typeof e&&void 0!==typeof i}}});A.ClassicReset=Se,A.CustomReset=Fe,A.ESPLoader=class{constructor(A){var t,e,i,s,a,n,r,h;this.ESP_RAM_BLOCK=6144,this.ESP_FLASH_BEGIN=2,this.ESP_FLASH_DATA=3,this.ESP_FLASH_END=4,this.ESP_MEM_BEGIN=5,this.ESP_MEM_END=6,this.ESP_MEM_DATA=7,this.ESP_WRITE_REG=9,this.ESP_READ_REG=10,this.ESP_SPI_ATTACH=13,this.ESP_CHANGE_BAUDRATE=15,this.ESP_FLASH_DEFL_BEGIN=16,this.ESP_FLASH_DEFL_DATA=17,this.ESP_FLASH_DEFL_END=18,this.ESP_SPI_FLASH_MD5=19,this.ESP_ERASE_FLASH=208,this.ESP_ERASE_REGION=209,this.ESP_READ_FLASH=210,this.ESP_RUN_USER_CODE=211,this.ESP_IMAGE_MAGIC=233,this.ESP_CHECKSUM_MAGIC=239,this.ROM_INVALID_RECV_MSG=5,this.DEFAULT_TIMEOUT=3e3,this.ERASE_REGION_TIMEOUT_PER_MB=3e4,this.ERASE_WRITE_TIMEOUT_PER_MB=4e4,this.MD5_TIMEOUT_PER_MB=8e3,this.CHIP_ERASE_TIMEOUT=12e4,this.FLASH_READ_TIMEOUT=1e5,this.MAX_TIMEOUT=2*this.CHIP_ERASE_TIMEOUT,this.SPI_ADDR_REG_MSB=!0,this.CHIP_DETECT_MAGIC_REG_ADDR=1073745920,this.DETECTED_FLASH_SIZES={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB",27:"128MB",28:"256MB",32:"64MB",33:"128MB",34:"256MB",50:"256KB",51:"512KB",52:"1MB",53:"2MB",54:"4MB",55:"8MB",56:"16MB",57:"32MB",58:"64MB"},this.USB_JTAG_SERIAL_PID=4097,this.romBaudrate=115200,this.debugLogging=!1,this.syncStubDetected=!1,this.flashSize="detect",this.IS_STUB=!1,this.FLASH_WRITE_SIZE=16384,this.transport=A.transport,this.baudrate=A.baudrate,this.resetConstructors={classicReset:(A,t)=>new Se(A,t),customReset:(A,t)=>new Fe(A,t),hardReset:(A,t)=>new fe(A,t),usbJTAGSerialReset:A=>new Me(A)},A.serialOptions&&(this.serialOptions=A.serialOptions),A.terminal&&(this.terminal=A.terminal,this.terminal.clean()),void 0!==A.debugLogging&&(this.debugLogging=A.debugLogging),A.port&&(this.transport=new De(A.port)),A.flashSize&&(this.flashSize=A.flashSize),void 0!==A.enableTracing&&(this.transport.tracing=A.enableTracing),(null===(t=A.resetConstructors)||void 0===t?void 0:t.classicReset)&&(this.resetConstructors.classicReset=null===(e=A.resetConstructors)||void 0===e?void 0:e.classicReset),(null===(i=A.resetConstructors)||void 0===i?void 0:i.customReset)&&(this.resetConstructors.customReset=null===(s=A.resetConstructors)||void 0===s?void 0:s.customReset),(null===(a=A.resetConstructors)||void 0===a?void 0:a.hardReset)&&(this.resetConstructors.hardReset=null===(n=A.resetConstructors)||void 0===n?void 0:n.hardReset),(null===(r=A.resetConstructors)||void 0===r?void 0:r.usbJTAGSerialReset)&&(this.resetConstructors.usbJTAGSerialReset=null===(h=A.resetConstructors)||void 0===h?void 0:h.usbJTAGSerialReset),this.info("esptool.js"),this.info("Serial port "+this.transport.getInfo())}_sleep(A){return new Promise((t=>setTimeout(t,A)))}write(A,t=!0){this.terminal?t?this.terminal.writeLine(A):this.terminal.write(A):console.log(A)}error(A,t=!0){this.write(`Error: ${A}`,t)}info(A,t=!0){this.write(A,t)}debug(A,t=!0){this.debugLogging&&this.write(`Debug: ${A}`,t)}_shortToBytearray(A){return new Uint8Array([255&A,A>>8&255])}_intToByteArray(A){return new Uint8Array([255&A,A>>8&255,A>>16&255,A>>24&255])}_byteArrayToShort(A,t){return A|t>>8}_byteArrayToInt(A,t,e,i){return A|t<<8|e<<16|i<<24}_appendBuffer(A,t){const e=new Uint8Array(A.byteLength+t.byteLength);return e.set(new Uint8Array(A),0),e.set(new Uint8Array(t),A.byteLength),e.buffer}_appendArray(A,t){const e=new Uint8Array(A.length+t.length);return e.set(A,0),e.set(t,A.length),e}ui8ToBstr(A){let t="";for(let e=0;e0&&(a=this._appendArray(a,this._intToByteArray(this.chip.UART_DATE_REG_ADDR)),a=this._appendArray(a,this._intToByteArray(0)),a=this._appendArray(a,this._intToByteArray(0)),a=this._appendArray(a,this._intToByteArray(s))),await this.checkCommand("write target memory",this.ESP_WRITE_REG,a)}async sync(){this.debug("Sync");const A=new Uint8Array(36);let t;for(A[0]=7,A[1]=7,A[2]=18,A[3]=32,t=0;t<32;t++)A[4+t]=85;try{let t=await this.command(8,A,void 0,void 0,100);this.syncStubDetected=0===t[0];for(let A=0;A<7;A++)t=await this.command(),this.syncStubDetected=this.syncStubDetected&&0===t[0];return t}catch(A){throw this.debug("Sync err "+A),A}}async _connectAttempt(A="default_reset",t){this.debug("_connect_attempt "+A),t&&await t.reset();const e=this.transport.inWaiting(),i=await this.transport.newRead(e>0?e:1,this.DEFAULT_TIMEOUT),s=Array.from(i,(A=>String.fromCharCode(A))).join("").match(/boot:(0x[0-9a-fA-F]+)(.*waiting for download)?/);let a=!1,n="",r=!1;s&&(a=!0,n=s[1],r=!!s[2]);let h="";for(let A=0;A<5;A++)try{this.debug(`Sync connect attempt ${A}`);const t=await this.sync();return this.debug(t[0].toString()),"success"}catch(A){this.debug(`Error at sync ${A}`),h=A instanceof Error?A.message:"string"==typeof A?A:JSON.stringify(A)}return a&&(h=`Wrong boot mode detected (${n}).\n This chip needs to be in download mode.`,r&&(h="Download mode successfully detected, but getting no sync reply:\n The serial TX path seems to be down.")),h}constructResetSequence(A){if("no_reset"!==A)if("usb_reset"===A||this.transport.getPid()===this.USB_JTAG_SERIAL_PID){if(this.resetConstructors.usbJTAGSerialReset)return this.debug("using USB JTAG Serial Reset"),[this.resetConstructors.usbJTAGSerialReset(this.transport)]}else{const A=50,t=A+500;if(this.resetConstructors.classicReset)return this.debug("using Classic Serial Reset"),[this.resetConstructors.classicReset(this.transport,A),this.resetConstructors.classicReset(this.transport,t)]}return[]}async connect(A="default_reset",e=7,i=!0){let s;this.info("Connecting...",!1),await this.transport.connect(this.romBaudrate,this.serialOptions);const a=this.constructResetSequence(A);for(let t=0;t0?a[t%a.length]:null;if(s=await this._connectAttempt(A,e),"success"===s)break}if("success"!==s)throw new t("Failed to connect with the device");if(this.debug("Connect attempt successful."),this.info("\n\r",!1),i){const A=await this.readReg(this.CHIP_DETECT_MAGIC_REG_ADDR)>>>0;this.debug("Chip Magic "+A.toString(16));const e=await async function(A){switch(A){case 15736195:{const{ESP32ROM:A}=await Promise.resolve().then((function(){return ks}));return new A}case 203546735:case 1867591791:case 2084675695:{const{ESP32C2ROM:A}=await Promise.resolve().then((function(){return Ys}));return new A}case 1763790959:case 456216687:case 1216438383:case 1130455151:{const{ESP32C3ROM:A}=await Promise.resolve().then((function(){return Gs}));return new A}case 752910447:{const{ESP32C6ROM:A}=await Promise.resolve().then((function(){return xs}));return new A}case 606167151:case 871374959:case 1333878895:{const{ESP32C61ROM:A}=await Promise.resolve().then((function(){return Ks}));return new A}case 285294703:case 1675706479:case 1607549039:{const{ESP32C5ROM:A}=await Promise.resolve().then((function(){return Ls}));return new A}case 3619110528:case 2548236392:{const{ESP32H2ROM:A}=await Promise.resolve().then((function(){return Ns}));return new A}case 9:{const{ESP32S3ROM:A}=await Promise.resolve().then((function(){return Js}));return new A}case 1990:{const{ESP32S2ROM:A}=await Promise.resolve().then((function(){return vs}));return new A}case 4293968129:{const{ESP8266ROM:A}=await Promise.resolve().then((function(){return He}));return new A}case 0:case 182303440:case 117676761:{const{ESP32P4ROM:A}=await Promise.resolve().then((function(){return zs}));return new A}default:return null}}(A);if(null===typeof this.chip)throw new t(`Unexpected CHIP magic value ${A}. Failed to autodetect chip type.`);this.chip=e}}async detectChip(A="default_reset"){await this.connect(A),this.info("Detecting chip type... ",!1),null!=this.chip?this.info(this.chip.CHIP_NAME):this.info("unknown!")}async checkCommand(A="",t=null,e=new Uint8Array(0),i=0,s=this.DEFAULT_TIMEOUT){this.debug("check_command "+A);const a=await this.command(t,e,i,void 0,s);return a[1].length>4?a[1]:a[0]}async memBegin(A,e,i,s){if(this.IS_STUB){const e=s,i=s+A,a=await ue(this.chip.CHIP_NAME);if(a){const A=[[a.bss_start||a.data_start,a.data_start+a.decodedData.length],[a.text_start,a.text_start+a.decodedText.length]];for(const[s,a]of A)if(es)throw new t(`Software loader is resident at 0x${s.toString(16).padStart(8,"0")}-0x${a.toString(16).padStart(8,"0")}.\n Can't load binary at overlapping address range 0x${e.toString(16).padStart(8,"0")}-0x${i.toString(16).padStart(8,"0")}.\n Either change binary loading address, or use the no-stub option to disable the software loader.`)}}this.debug("mem_begin "+A+" "+e+" "+i+" "+s.toString(16));let a=this._appendArray(this._intToByteArray(A),this._intToByteArray(e));a=this._appendArray(a,this._intToByteArray(i)),a=this._appendArray(a,this._intToByteArray(s)),await this.checkCommand("enter RAM download mode",this.ESP_MEM_BEGIN,a)}checksum(A,t=this.ESP_CHECKSUM_MAGIC){for(let e=0;e{const e=h+this.chip.SPI_MOSI_DLEN_OFFS,i=h+this.chip.SPI_MISO_DLEN_OFFS;A>0&&await this.writeReg(e,A-1),t>0&&await this.writeReg(i,t-1);let s=0;n>0&&(s|=n-1),a>0&&(s|=a-1<{const e=B;let i=(0===t?0:t-1)<<8|(0===A?0:A-1)<<17;n>0&&(i|=n-1),a>0&&(i|=a-1<32)throw new t("Reading more than 32 bits back from a SPI flash operation is unsupported");if(e.length>64)throw new t("Writing more than 64 bytes of data with one SPI command is unsupported");const l=8*e.length,d=await this.readReg(g),D=await this.readReg(c);let R=1<<31;i>0&&(R|=268435456),l>0&&(R|=134217728),a>0&&(R|=r),n>0&&(R|=536870912),await _(l,i),await this.writeReg(g,R);let S,M=7<<28|A;if(await this.writeReg(c,M),s&&a>0&&(this.SPI_ADDR_REG_MSB&&(s<<=32-a),await this.writeReg(o,s)),0==l)await this.writeReg(w,0);else{e=pe(e,4,0);const A=[];for(let t=0;t>>0);let t=w;for(const e of A)await this.writeReg(t,e),t+=4}for(await this.writeReg(E,C),S=0;S<10&&(M=await this.readReg(E)&C,0!=M);S++);if(10===S)throw new t("SPI command did not complete in time");const f=await this.readReg(w);return await this.writeReg(g,d),await this.writeReg(c,D),f}async readFlashId(){const A=new Uint8Array(0);return await this.runSpiflashCommand(159,A,24)}async eraseFlash(){this.info("Erasing flash (this may take a while)...");let A=new Date;const t=A.getTime(),e=await this.checkCommand("erase flash",this.ESP_ERASE_FLASH,void 0,void 0,this.CHIP_ERASE_TIMEOUT);A=new Date;const i=A.getTime();return this.info("Chip erase completed successfully in "+(i-t)/1e3+"s"),e}toHex(A){return Array.prototype.map.call(A,(A=>("00"+A.toString(16)).slice(-2))).join("")}async flashMd5sum(A,t){const e=this.timeoutPerMb(this.MD5_TIMEOUT_PER_MB,t);let i=this._appendArray(this._intToByteArray(A),this._intToByteArray(t));i=this._appendArray(i,this._intToByteArray(0)),i=this._appendArray(i,this._intToByteArray(0));let s=await this.checkCommand("calculate md5sum",this.ESP_SPI_FLASH_MD5,i,void 0,e);s instanceof Uint8Array&&s.length>16&&(s=s.slice(0,16));return this.toHex(s)}async readFlash(A,e,i=null){let s=this._appendArray(this._intToByteArray(A),this._intToByteArray(e));s=this._appendArray(s,this._intToByteArray(4096)),s=this._appendArray(s,this._intToByteArray(1024));const a=await this.checkCommand("read flash",this.ESP_READ_FLASH,s);if(0!=a)throw new t("Failed to read memory: "+a);let n=new Uint8Array(0);for(;n.length0&&(n=this._appendArray(n,A),await this.transport.write(this._intToByteArray(n.length)),i&&i(A,n.length,e))}return n}async runStub(){if(this.syncStubDetected)return this.info("Stub is already running. No upload is necessary."),this.chip;this.info("Uploading stub...");const A=await ue(this.chip.CHIP_NAME);if(void 0===A)throw this.debug("Error loading Stub json"),new Error("Error loading Stub json");const e=[A.decodedText,A.decodedData];for(let t=0;te)throw new t(`File ${i+1} doesn't fit in the available flash`)}let e,i;!0===this.IS_STUB&&!0===A.eraseAll&&await this.eraseFlash();for(let s=0;s0;){this.debug("Write loop "+i+" "+h+" "+r),this.info("Writing at 0x"+(i+_).toString(16)+"... ("+Math.floor(100*(h+1)/r)+"%)");const a=this.bstrToUi8(e.slice(0,this.FLASH_WRITE_SIZE));if(!A.compress)throw new t("Yet to handle Non Compressed writes");{const A=_;w.push(a,!1);const t=_-A;let e=3e3;this.timeoutPerMb(this.ERASE_WRITE_TIMEOUT_PER_MB,t)>3e3&&(e=this.timeoutPerMb(this.ERASE_WRITE_TIMEOUT_PER_MB,t)),!1===this.IS_STUB&&(c=e),await this.flashDeflBlock(a,h,c),this.IS_STUB&&(c=e)}E+=a.length,e=e.slice(this.FLASH_WRITE_SIZE,e.length),h++,A.reportProgress&&A.reportProgress(s,E,o)}this.IS_STUB&&await this.readReg(this.CHIP_DETECT_MAGIC_REG_ADDR,c),g=new Date;const C=g.getTime()-B;if(A.compress&&this.info("Wrote "+n+" bytes ("+E+" compressed) at 0x"+i.toString(16)+" in "+C/1e3+" seconds."),a){const A=await this.flashMd5sum(i,n);if(new String(A).valueOf()!=new String(a).valueOf())throw this.info("File md5: "+a),this.info("Flash md5: "+A),new t("MD5 of file does not match data in flash!");this.info("Hash of data verified.")}}this.info("Leaving..."),this.IS_STUB&&(await this.flashBegin(0,0),A.compress?await this.flashDeflFinish():await this.flashFinish())}async flashId(){this.debug("flash_id");const A=await this.readFlashId();this.info("Manufacturer: "+(255&A).toString(16));const t=A>>16&255;this.info("Device: "+(A>>8&255).toString(16)+t.toString(16)),this.info("Detected flash size: "+this.DETECTED_FLASH_SIZES[t])}async detectFlashSize(A){this.debug("detectFlashSize");const t=await this.readFlashId()>>16&255;let e=this.DETECTED_FLASH_SIZES[t];return e?this.info("Auto-detected Flash size: "+e):(e="4MB",this.info("Could not auto-detect Flash size. defaulting "+A)),e}async softReset(A){if(this.IS_STUB){if("ESP8266"!=this.chip.CHIP_NAME)throw new t("Soft resetting is currently only supported on ESP8266");A?(await this.flashBegin(0,0),await this.flashFinish(!0)):await this.command(this.ESP_RUN_USER_CODE,void 0,void 0,!1)}else{if(A)return;await this.flashBegin(0,0),await this.flashFinish(!1)}}async after(A="hard_reset",t,e){switch(A){case"hard_reset":if(this.resetConstructors.hardReset){this.info("Hard resetting via RTS pin...");const A=this.resetConstructors.hardReset(this.transport,t);await A.reset()}break;case"soft_reset":this.info("Soft resetting..."),await this.softReset(!1);break;case"no_reset_stub":this.info("Staying in flasher stub.");break;case"custom_reset":if(e||this.info("Custom reset sequence not provided, doing nothing."),this.resetConstructors.customReset||this.info("Custom reset constructor not available, doing nothing."),this.resetConstructors.customReset&&e){this.info("Custom resetting using sequence "+e);const A=this.resetConstructors.customReset(this.transport,e);await A.reset()}break;default:this.info("Staying in bootloader."),this.IS_STUB&&this.softReset(!0)}}},A.HardReset=fe,A.ROM=Ue,A.Transport=De,A.UsbJtagSerialReset=Me,A.decodeBase64Data=Te,A.getStubJsonByChipName=ue,A.validateCustomResetStringSequence=Qe}));