tasmota-esp-web-tools 8.1.13 → 8.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,7 +28,7 @@ Example manifest:
28
28
  "chipFamily": "ESP32-C2",
29
29
  "improv": true,
30
30
  "parts": [
31
- { "path": "../firmware/tasmota32/tasmota32c2-arduino30.factory.bin", "offset": 0 }
31
+ { "path": "../firmware/tasmota32/tasmota32c2.factory.bin", "offset": 0 }
32
32
  ]
33
33
  },
34
34
  {
@@ -38,11 +38,25 @@ Example manifest:
38
38
  { "path": "../firmware/tasmota32/tasmota32c3.factory.bin", "offset": 0 }
39
39
  ]
40
40
  },
41
+ {
42
+ "chipFamily": "ESP32-C5",
43
+ "improv": true,
44
+ "parts": [
45
+ { "path": "../firmware/tasmota32/tasmota32c5.factory.bin", "offset": 0 }
46
+ ]
47
+ },
41
48
  {
42
49
  "chipFamily": "ESP32-C6",
43
50
  "improv": true,
44
51
  "parts": [
45
- { "path": "../firmware/tasmota32/tasmota32c6cdc-arduino30.factory.bin", "offset": 0 }
52
+ { "path": "../firmware/tasmota32/tasmota32c6.factory.bin", "offset": 0 }
53
+ ]
54
+ },
55
+ {
56
+ "chipFamily": "ESP32-C61",
57
+ "improv": true,
58
+ "parts": [
59
+ { "path": "../firmware/tasmota32/tasmota32c61.factory.bin", "offset": 0 }
46
60
  ]
47
61
  },
48
62
  {
package/dist/const.d.ts CHANGED
@@ -4,7 +4,7 @@ export interface Logger {
4
4
  debug(msg: string, ...args: any[]): void;
5
5
  }
6
6
  export interface Build {
7
- chipFamily: "ESP32" | "ESP8266" | "ESP32-S2" | "ESP32-S3" | "ESP32-C2" | "ESP32-C3" | "ESP32-C6" | "ESP32-H2" | "ESP32-P4";
7
+ chipFamily: "ESP32" | "ESP8266" | "ESP32-S2" | "ESP32-S3" | "ESP32-C2" | "ESP32-C3" | "ESP32-C5" | "ESP32-C6" | "ESP32-C61" | "ESP32-H2" | "ESP32-P4";
8
8
  parts: {
9
9
  path: string;
10
10
  offset: number;
@@ -1,4 +1,4 @@
1
- import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP8266, } from "tasmota-webserial-esptool";
1
+ import { CHIP_FAMILY_ESP32, CHIP_FAMILY_ESP32S2, CHIP_FAMILY_ESP32S3, CHIP_FAMILY_ESP32C2, CHIP_FAMILY_ESP32C3, CHIP_FAMILY_ESP32C5, CHIP_FAMILY_ESP32C6, CHIP_FAMILY_ESP32C61, CHIP_FAMILY_ESP32H2, CHIP_FAMILY_ESP32P4, CHIP_FAMILY_ESP8266, } from "tasmota-webserial-esptool";
2
2
  export const getChipFamilyName = (esploader) => {
3
3
  switch (esploader.chipFamily) {
4
4
  case CHIP_FAMILY_ESP32:
@@ -11,8 +11,12 @@ export const getChipFamilyName = (esploader) => {
11
11
  return "ESP32-C2";
12
12
  case CHIP_FAMILY_ESP32C3:
13
13
  return "ESP32-C3";
14
+ case CHIP_FAMILY_ESP32C5:
15
+ return "ESP32-C5";
14
16
  case CHIP_FAMILY_ESP32C6:
15
17
  return "ESP32-C6";
18
+ case CHIP_FAMILY_ESP32C61:
19
+ return "ESP32-C61";
16
20
  case CHIP_FAMILY_ESP32H2:
17
21
  return "ESP32-H2";
18
22
  case CHIP_FAMILY_ESP32P4:
@@ -1 +1 @@
1
- const e=async t=>{let n;import("./install-dialog-eu7E1Rh1.js");try{n=await navigator.serial.requestPort()}catch(n){return"NotFoundError"===n.name?void import("./index-BK6drzlv.js").then(n=>n.openNoPortPickedDialog(()=>e(t))):void alert(`Error: ${n.message}`)}if(!n)return;try{await n.open({baudRate:115200})}catch(e){return void alert(e.message)}const o=document.createElement("ewt-install-dialog");o.port=n,o.manifestPath=t.manifest||t.getAttribute("manifest"),o.overrides=t.overrides,o.firmwareFile=t.firmwareFile,o.addEventListener("closed",()=>{n.close()},{once:!0}),document.body.appendChild(o)};class t extends HTMLElement{connectedCallback(){if(this.renderRoot)return;if(this.renderRoot=this.attachShadow({mode:"open"}),!t.isSupported||!t.isAllowed)return this.toggleAttribute("install-unsupported",!0),void(this.renderRoot.innerHTML=t.isAllowed?"<slot name='unsupported'>Your browser does not support installing things on ESP devices. Use Google Chrome or Microsoft Edge.</slot>":"<slot name='not-allowed'>You can only install ESP devices on HTTPS websites or on the localhost.</slot>");this.toggleAttribute("install-supported",!0);const n=document.createElement("slot");n.addEventListener("click",async t=>{t.preventDefault(),e(this)}),n.name="activate";const o=document.createElement("button");if(o.innerText="CONNECT",n.append(o),"adoptedStyleSheets"in Document.prototype&&"replaceSync"in CSSStyleSheet.prototype){const e=new CSSStyleSheet;e.replaceSync(t.style),this.renderRoot.adoptedStyleSheets=[e]}else{const e=document.createElement("style");e.innerText=t.style,this.renderRoot.append(e)}this.renderRoot.append(n)}}t.isSupported="serial"in navigator,t.isAllowed=window.isSecureContext,t.style='\n button {\n position: relative;\n cursor: pointer;\n font-size: 14px;\n padding: 8px 28px;\n color: var(--esp-tools-button-text-color, #fff);\n background-color: var(--esp-tools-button-color, #03a9f4);\n border: none;\n border-radius: 4px;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);\n }\n button::before {\n content: " ";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0.2;\n border-radius: 4px;\n }\n button:hover {\n box-shadow: 0 4px 8px 0 rgba(0,0,0,.14), 0 1px 7px 0 rgba(0,0,0,.12), 0 3px 1px -1px rgba(0,0,0,.2);\n }\n button:hover::before {\n background-color: rgba(255,255,255,.8);\n }\n button:focus {\n outline: none;\n }\n button:focus::before {\n background-color: white;\n }\n button:active::before {\n background-color: grey;\n }\n :host([active]) button {\n color: rgba(0, 0, 0, 0.38);\n background-color: rgba(0, 0, 0, 0.12);\n box-shadow: none;\n cursor: unset;\n pointer-events: none;\n }\n improv-wifi-launch-button {\n display: block;\n margin-top: 16px;\n }\n .hidden {\n display: none;\n }',customElements.define("esp-web-install-button",t);
1
+ const e=async t=>{let n;import("./install-dialog-BZFuby8t.js");try{n=await navigator.serial.requestPort()}catch(n){return"NotFoundError"===n.name?void import("./index-BK6drzlv.js").then(n=>n.openNoPortPickedDialog(()=>e(t))):void alert(`Error: ${n.message}`)}if(!n)return;try{await n.open({baudRate:115200})}catch(e){return void alert(e.message)}const o=document.createElement("ewt-install-dialog");o.port=n,o.manifestPath=t.manifest||t.getAttribute("manifest"),o.overrides=t.overrides,o.firmwareFile=t.firmwareFile,o.addEventListener("closed",()=>{n.close()},{once:!0}),document.body.appendChild(o)};class t extends HTMLElement{connectedCallback(){if(this.renderRoot)return;if(this.renderRoot=this.attachShadow({mode:"open"}),!t.isSupported||!t.isAllowed)return this.toggleAttribute("install-unsupported",!0),void(this.renderRoot.innerHTML=t.isAllowed?"<slot name='unsupported'>Your browser does not support installing things on ESP devices. Use Google Chrome or Microsoft Edge.</slot>":"<slot name='not-allowed'>You can only install ESP devices on HTTPS websites or on the localhost.</slot>");this.toggleAttribute("install-supported",!0);const n=document.createElement("slot");n.addEventListener("click",async t=>{t.preventDefault(),e(this)}),n.name="activate";const o=document.createElement("button");if(o.innerText="CONNECT",n.append(o),"adoptedStyleSheets"in Document.prototype&&"replaceSync"in CSSStyleSheet.prototype){const e=new CSSStyleSheet;e.replaceSync(t.style),this.renderRoot.adoptedStyleSheets=[e]}else{const e=document.createElement("style");e.innerText=t.style,this.renderRoot.append(e)}this.renderRoot.append(n)}}t.isSupported="serial"in navigator,t.isAllowed=window.isSecureContext,t.style='\n button {\n position: relative;\n cursor: pointer;\n font-size: 14px;\n padding: 8px 28px;\n color: var(--esp-tools-button-text-color, #fff);\n background-color: var(--esp-tools-button-color, #03a9f4);\n border: none;\n border-radius: 4px;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);\n }\n button::before {\n content: " ";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0.2;\n border-radius: 4px;\n }\n button:hover {\n box-shadow: 0 4px 8px 0 rgba(0,0,0,.14), 0 1px 7px 0 rgba(0,0,0,.12), 0 3px 1px -1px rgba(0,0,0,.2);\n }\n button:hover::before {\n background-color: rgba(255,255,255,.8);\n }\n button:focus {\n outline: none;\n }\n button:focus::before {\n background-color: white;\n }\n button:active::before {\n background-color: grey;\n }\n :host([active]) button {\n color: rgba(0, 0, 0, 0.38);\n background-color: rgba(0, 0, 0, 0.12);\n box-shadow: none;\n cursor: unset;\n pointer-events: none;\n }\n improv-wifi-launch-button {\n display: block;\n margin-top: 16px;\n }\n .hidden {\n display: none;\n }',customElements.define("esp-web-install-button",t);
@@ -414,7 +414,7 @@ import{l as e,o as t,_ as i,n,B as o,i as r,a,t as d,e as s,b as l,R as c,x as m
414
414
  d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z"
415
415
  />
416
416
  </svg>
417
- `,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ti=e=>"["+e.map(e=>Ri(e)).join(", ")+"]",Ri=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Ai=e=>new Promise(t=>setTimeout(t,e)),Si={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Fi=33382,Li=50,zi=12882,Di=12883,Bi=12994,$i=12995,Ni=12997,Mi=12998,Pi=207969,Ui=12914,Hi=12928,Vi={4293968129:{name:"ESP8266",family:Fi},15736195:{name:"ESP32",family:Li},1990:{name:"ESP32-S2",family:zi},9:{name:"ESP32-S3",family:Di},1867591791:{name:"ESP32-C2",family:Bi},2084675695:{name:"ESP32-C2",family:Bi},203546735:{name:"ESP32-C2",family:Bi},1763790959:{name:"ESP32-C3",family:$i},456216687:{name:"ESP32-C3",family:$i},1216438383:{name:"ESP32-C3",family:$i},1130455151:{name:"ESP32-C3",family:$i},1607549039:{name:"ESP32-C5",family:Ni},285294703:{name:"ESP32-C5",family:Ni},1675706479:{name:"ESP32-C5",family:Ni},1548751960:{name:"ESP32-C5",family:Ni},3619110528:{name:"ESP32-H2",family:Ui},752910447:{name:"ESP32-C6",family:Mi},1913741423:{name:"ESP32-C61",family:Pi},182303440:{name:"ESP32-P4",family:Hi},117676761:{name:"ESP32-P4",family:Hi},0:{name:"ESP32-P4",family:Hi}},Wi=3e3,Xi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Wi?Wi:i},Yi=e=>{switch(e){case Li:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case zi:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Fi:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case Bi:case $i:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ni:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Mi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Pi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class ji extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Gi=async e=>{let t;return e==Li?t=await import("./esp32-BNIFdu1P.js"):e==zi?t=await import("./esp32s2-Bk4mqADi.js"):e==Di?t=await import("./esp32s3-Df3OUCOC.js"):e==Fi?t=await import("./esp8266-CQFcqJ_a.js"):e==Bi?t=await import("./esp32c2-BqxquOKw.js"):e==$i?t=await import("./esp32c3-BOOqe8me.js"):e==Ni?t=await import("./esp32c5-C8uE-s4t.js"):e==Mi?t=await import("./esp32c6-Cg5qYgg7.js"):e==Pi?t=await import("./esp32c61-CzCdsydk.js"):e==Ui?t=await import("./esp32h2-DZa_lpff.js"):e==Hi&&(t=await import("./esp32p4-DyGqUAeZ.js")),{...t,text:Ci(atob(t.text)),data:Ci(atob(t.data))}};function Ki(e){let t=e.length;for(;--t>=0;)e[t]=0}const Zi=256,Qi=286,Ji=30,en=15,tn=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]),nn=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]),on=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),rn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),an=new Array(576);Ki(an);const dn=new Array(60);Ki(dn);const sn=new Array(512);Ki(sn);const ln=new Array(256);Ki(ln);const cn=new Array(29);Ki(cn);const mn=new Array(Ji);function hn(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let pn,un,fn;function gn(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Ki(mn);const bn=e=>e<256?sn[e]:sn[256+(e>>>7)],_n=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},xn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,_n(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},vn=(e,t,i)=>{xn(e,i[2*t],i[2*t+1])},yn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},wn=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=en;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=yn(n[t]++,t))}},kn=e=>{let t;for(t=0;t<Qi;t++)e.dyn_ltree[2*t]=0;for(t=0;t<Ji;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},En=e=>{e.bi_valid>8?_n(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},In=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Cn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&In(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!In(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Tn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?vn(e,o,t):(r=ln[o],vn(e,r+Zi+1,t),a=tn[r],0!==a&&(o-=cn[r],xn(e,o,a)),n--,r=bn(n),vn(e,r,i),a=nn[r],0!==a&&(n-=mn[r],xn(e,n,a)))}while(d<e.sym_next);vn(e,256,t)},Rn=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Cn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Cn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Cn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=en;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),wn(i,l,e.bl_count)},An=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Sn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{vn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(vn(e,o,e.bl_tree),d--),vn(e,16,e.bl_tree),xn(e,d-3,2)):d<=10?(vn(e,17,e.bl_tree),xn(e,d-3,3)):(vn(e,18,e.bl_tree),xn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let On=!1;const Fn=(e,t,i,n)=>{xn(e,0+(n?1:0),3),En(e),_n(e,i),_n(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Ln=e=>{On||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(cn[n]=i,e=0;e<1<<tn[n];e++)ln[i++]=n;for(ln[i-1]=n,o=0,n=0;n<16;n++)for(mn[n]=o,e=0;e<1<<nn[n];e++)sn[o++]=n;for(o>>=7;n<Ji;n++)for(mn[n]=o<<7,e=0;e<1<<nn[n]-7;e++)sn[256+o++]=n;for(t=0;t<=en;t++)r[t]=0;for(e=0;e<=143;)an[2*e+1]=8,e++,r[8]++;for(;e<=255;)an[2*e+1]=9,e++,r[9]++;for(;e<=279;)an[2*e+1]=7,e++,r[7]++;for(;e<=287;)an[2*e+1]=8,e++,r[8]++;for(wn(an,287,r),e=0;e<Ji;e++)dn[2*e+1]=5,dn[2*e]=yn(e,5);pn=new hn(an,tn,257,Qi,en),un=new hn(dn,nn,0,Ji,en),fn=new hn(new Array(0),on,0,19,7)})(),On=!0),e.l_desc=new gn(e.dyn_ltree,pn),e.d_desc=new gn(e.dyn_dtree,un),e.bl_desc=new gn(e.bl_tree,fn),e.bi_buf=0,e.bi_valid=0,kn(e)},zn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Zi;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),Rn(e,e.l_desc),Rn(e,e.d_desc),a=(e=>{let t;for(An(e,e.dyn_ltree,e.l_desc.max_code),An(e,e.dyn_dtree,e.d_desc.max_code),Rn(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*rn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?Fn(e,t,i,n):4===e.strategy||r===o?(xn(e,2+(n?1:0),3),Tn(e,an,dn)):(xn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(xn(e,t-257,5),xn(e,i-1,5),xn(e,n-4,4),o=0;o<n;o++)xn(e,e.bl_tree[2*rn[o]+1],3);Sn(e,e.dyn_ltree,t-1),Sn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Tn(e,e.dyn_ltree,e.dyn_dtree)),kn(e),n&&En(e)},Dn=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(ln[i]+Zi+1)]++,e.dyn_dtree[2*bn(t)]++),e.sym_next===e.sym_end),Bn=e=>{xn(e,2,3),vn(e,256,an),(e=>{16===e.bi_valid?(_n(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},$n={_tr_init:Ln,_tr_stored_block:Fn,_tr_flush_block:zn,_tr_tally:Dn,_tr_align:Bn};var Nn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Mn=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Pn=(e,t,i,n)=>{const o=Mn,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Un={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"},Hn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Vn,_tr_stored_block:Wn,_tr_flush_block:Xn,_tr_tally:qn,_tr_align:Yn}=$n,{Z_NO_FLUSH:jn,Z_PARTIAL_FLUSH:Gn,Z_FULL_FLUSH:Kn,Z_FINISH:Zn,Z_BLOCK:Qn,Z_OK:Jn,Z_STREAM_END:eo,Z_STREAM_ERROR:to,Z_DATA_ERROR:io,Z_BUF_ERROR:no,Z_DEFAULT_COMPRESSION:oo,Z_FILTERED:ro,Z_HUFFMAN_ONLY:ao,Z_RLE:so,Z_FIXED:lo,Z_DEFAULT_STRATEGY:co,Z_UNKNOWN:mo,Z_DEFLATED:ho}=Hn,po=258,uo=262,fo=42,go=113,bo=666,_o=(e,t)=>(e.msg=Un[t],t),xo=e=>2*e-(e>4?9:0),vo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},yo=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let wo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const ko=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Eo=(e,t)=>{Xn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ko(e.strm)},Io=(e,t)=>{e.pending_buf[e.pending++]=t},Co=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},To=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Nn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Pn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ro=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-uo?e.strstart-(e.w_size-uo):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+po;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=po-(h-r),r=h-po,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Ao=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-uo)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),yo(e),n+=t),0===e.strm.avail_in)break;if(i=To(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=wo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=wo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<uo&&0!==e.strm.avail_in)},So=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Zn||t===jn||i!==n+e.strm.avail_in))break;a=t===Zn&&i===n+e.strm.avail_in?1:0,Wn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,ko(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(To(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==jn&&t!==Zn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(To(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Zn)&&t!==jn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Zn&&0===e.strm.avail_in&&i===n?1:0,Wn(e,e.block_start,i,a),e.block_start+=i,ko(e.strm)),a?3:1)},Oo=(e,t)=>{let i,n;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=wo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2},Fo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i),e.match_length<=5&&(e.strategy===ro||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Eo(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Eo(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2};function Lo(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const zo=[new Lo(0,0,0,0,So),new Lo(4,4,8,4,Oo),new Lo(4,5,16,8,Oo),new Lo(4,6,32,32,Oo),new Lo(4,4,16,16,Fo),new Lo(8,16,32,32,Fo),new Lo(8,16,128,128,Fo),new Lo(8,32,128,256,Fo),new Lo(32,128,258,1024,Fo),new Lo(32,258,258,4096,Fo)];function Do(){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=ho,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),vo(this.dyn_ltree),vo(this.dyn_dtree),vo(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),vo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),vo(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 Bo=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==fo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==go&&t.status!==bo?1:0},$o=e=>{if(Bo(e))return _o(e,to);e.total_in=e.total_out=0,e.data_type=mo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?fo:go,e.adler=2===t.wrap?0:1,t.last_flush=-2,Vn(t),Jn},No=e=>{const t=$o(e);return t===Jn&&(e=>{e.window_size=2*e.w_size,vo(e.head),e.max_lazy_match=zo[e.level].max_lazy,e.good_match=zo[e.level].good_length,e.nice_match=zo[e.level].nice_length,e.max_chain_length=zo[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})(e.state),t},Mo=(e,t,i,n,o,r)=>{if(!e)return to;let a=1;if(t===oo&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==ho||n<8||n>15||t<0||t>9||r<0||r>lo||8===n&&1!==a)return _o(e,to);8===n&&(n=9);const d=new Do;return e.state=d,d.strm=e,d.status=fo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,No(e)};var Po=(e,t)=>{if(Bo(e)||t>Qn||t<0)return e?_o(e,to):to;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===bo&&t!==Zn)return _o(e,0===e.avail_out?no:to);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(ko(e),0===e.avail_out)return i.last_flush=-1,Jn}else if(0===e.avail_in&&xo(t)<=xo(n)&&t!==Zn)return _o(e,no);if(i.status===bo&&0!==e.avail_in)return _o(e,no);if(i.status===fo&&0===i.wrap&&(i.status=go),i.status===fo){let t=ho+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=ao||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,Co(i,t),0!==i.strstart&&(Co(i,e.adler>>>16),Co(i,65535&e.adler)),e.adler=1,i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(57===i.status)if(e.adler=0,Io(i,31),Io(i,139),Io(i,8),i.gzhead)Io(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Io(i,255&i.gzhead.time),Io(i,i.gzhead.time>>8&255),Io(i,i.gzhead.time>>16&255),Io(i,i.gzhead.time>>24&255),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Io(i,255&i.gzhead.extra.length),Io(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Pn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,3),i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,ko(e),0!==i.pending)return i.last_flush=-1,Jn;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(ko(e),0!==i.pending))return i.last_flush=-1,Jn;Io(i,255&e.adler),Io(i,e.adler>>8&255),e.adler=0}if(i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(0!==e.avail_in||0!==i.lookahead||t!==jn&&i.status!==bo){let n=0===i.level?So(i,t):i.strategy===ao?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Ao(e),0===e.lookahead)){if(t===jn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===so?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=po){if(Ao(e),e.lookahead<=po&&t===jn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+po;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=po-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):zo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=bo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),Jn;if(2===n&&(t===Gn?Yn(i):t!==Qn&&(Wn(i,0,0,!1),t===Kn&&(vo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ko(e),0===e.avail_out))return i.last_flush=-1,Jn}return t!==Zn?Jn:i.wrap<=0?eo:(2===i.wrap?(Io(i,255&e.adler),Io(i,e.adler>>8&255),Io(i,e.adler>>16&255),Io(i,e.adler>>24&255),Io(i,255&e.total_in),Io(i,e.total_in>>8&255),Io(i,e.total_in>>16&255),Io(i,e.total_in>>24&255)):(Co(i,e.adler>>>16),Co(i,65535&e.adler)),ko(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?Jn:eo)},Uo=(e,t)=>{let i=t.length;if(Bo(e))return to;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==fo||n.lookahead)return to;if(1===o&&(e.adler=Nn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(vo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Ao(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=wo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Ao(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,Jn},Ho={deflateInit:(e,t)=>Mo(e,t,ho,15,8,co),deflateInit2:Mo,deflateReset:No,deflateResetKeep:$o,deflateSetHeader:(e,t)=>Bo(e)||2!==e.state.wrap?to:(e.state.gzhead=t,Jn),deflate:Po,deflateEnd:e=>{if(Bo(e))return to;const t=e.state.status;return e.state=null,t===go?_o(e,io):Jn},deflateSetDictionary:Uo,deflateInfo:"pako deflate (from Nodeca project)"};const Vo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Wo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Vo(i,t)&&(e[t]=i[t])}}return e},Xo=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const Yo=new Uint8Array(256);for(let e=0;e<256;e++)Yo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Yo[254]=Yo[254]=1;var jo=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Go=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 Ko=Object.prototype.toString,{Z_NO_FLUSH:Zo,Z_SYNC_FLUSH:Qo,Z_FULL_FLUSH:Jo,Z_FINISH:er,Z_OK:tr,Z_STREAM_END:ir,Z_DEFAULT_COMPRESSION:nr,Z_DEFAULT_STRATEGY:or,Z_DEFLATED:rr}=Hn;function ar(e){this.options=Wo({level:nr,method:rr,chunkSize:16384,windowBits:15,memLevel:8,strategy:or},e||{});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 Go,this.strm.avail_out=0;let i=Ho.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==tr)throw new Error(Un[i]);if(t.header&&Ho.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?jo(t.dictionary):"[object ArrayBuffer]"===Ko.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ho.deflateSetDictionary(this.strm,e),i!==tr)throw new Error(Un[i]);this._dict_set=!0}}ar.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?er:Zo,"string"==typeof e?i.input=jo(e):"[object ArrayBuffer]"===Ko.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===Qo||r===Jo)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Ho.deflate(i,r),o===ir)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Ho.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===tr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ar.prototype.onData=function(e){this.chunks.push(e)},ar.prototype.onEnd=function(e){e===tr&&(this.result=Xo(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var dr={deflate:function(e,t){const i=new ar(t);if(i.push(e,!0),i.err)throw i.msg||Un[i.err];return i.result}};const{deflate:sr}=dr;var lr=sr;const cr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},mr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in cr))throw"Unhandled character '"+e+"' in pack format";let i=cr[e].bytes,r=new DataView(new ArrayBuffer(i));cr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},hr=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in cr))throw"Unhandled character '"+e+"' in unpack format";let r=cr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=cr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class pr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let e=await this.readRegister(1073745920),t=Vi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ri(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family;let i=Yi(this.getChipFamily()).macFuse;for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(i+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Fi){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==Li)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ri(e,8));let t=mr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Fi?a=2:[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ri(e)):new Error("Command failure error code "+Ri(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...mr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Ai(10)}if(0==n.length){throw new ji("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ti(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid head of packet ("+Ri(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid SLIP escape (0xdb, "+Ri(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ti(t)),t;t.push(e)}}throw new ji("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=hr("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ri(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Fi)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=mr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop(),this.logger.log(`Changed baud rate to ${e}`)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Ai(100),!0;await Ai(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Oi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ri(t)}, FlashMode=${Ri(i)}, FlashSizeFreq=${Ri(n)}`)}let r,a=e.byteLength,d=0,s=Wi;n?(r=lr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ri(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Fi?this.getEraseSize(t,e):e,a=this.IS_STUB?Wi:qi(3e4,e);let s=Date.now();return o=mr("<IIII",n,d,r,t),this.chipFamily!=Li&&this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi||(o=o.concat(mr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ri(r,4)+", offset "+Ri(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Wi),o=mr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=mr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=mr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return Yi(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=mr("<IIII",e,t,i,n);o>0&&r.concat(mr("<IIII",Yi(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=Yi(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=hr("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ri(t)} to register offset ${Ri(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ri(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Si[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,mr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Wi:500,i=mr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Gi(this.chipFamily);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new ur(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class ur extends pr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Gi(this.chipFamily),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ri(e,8)+"-"+Ri(t,8)+". Can't load binary at overlapping address range "+Ri(r,8)+"-"+Ri(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Xi)}}const fr=async(e,t,i,n,o,r)=>{let a,d,s;const l=t=>e({...t,manifest:a,build:d,chipFamily:s});var c=null,m="";try{c=JSON.parse(n)}catch{m=new URL(n,location.toString()).toString(),c=fetch(m).then(e=>e.json())}const h=new pr(t,i);window.esploader=h,l({state:"initializing",message:"Initializing...",details:{done:!1}});try{await h.initialize()}catch(e){return i.error(e),l({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(h.connected&&await h.disconnect())}s=(e=>{switch(e.chipFamily){case Li:return"ESP32";case zi:return"ESP32-S2";case Di:return"ESP32-S3";case Bi:return"ESP32-C2";case $i:return"ESP32-C3";case Mi:return"ESP32-C6";case Ui:return"ESP32-H2";case Hi:return"ESP32-P4";case Fi:return"ESP8266";default:return"Unknown Chip"}})(h),l({state:"initializing",message:`Initialized. Found ${s}`,details:{done:!0}}),l({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{a=await c}catch(e){return l({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await h.disconnect()}if(d=a.builds.find(e=>e.chipFamily===s),l({state:"manifest",message:`Found manifest for ${a.name}`,details:{done:!0}}),!d)return l({state:"error",message:`Your ${s} board is not supported.`,details:{error:"not_supported",details:s}}),void await h.disconnect();l({state:"preparing",message:"Preparing installation...",details:{done:!1}});const p=d.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,m).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),u=await h.runStub(),f=[];let g=0;for(const e of p)try{const t=await e;f.push(t instanceof ArrayBuffer?new Uint8Array(t):t),g+=t.byteLength}catch(e){return l({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await h.disconnect()}l({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(l({state:"erasing",message:"Erasing device...",details:{done:!1}}),await u.eraseFlash(),l({state:"erasing",message:"Device erased",details:{done:!0}}));let b=0;l({state:"writing",message:`Writing progress: ${b}%`,details:{bytesTotal:g,bytesWritten:0,percentage:b}});let _=0;for(const e of d.parts){const t=f.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await u.flashData(i,e=>{const t=Math.floor((_+e)/g*100);t!==b&&(b=t,l({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:g,bytesWritten:_+e,percentage:t}}))},e.offset,!0)}catch(e){return l({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await h.disconnect()}_+=t.byteLength}l({state:"writing",message:"Writing complete",details:{bytesTotal:g,bytesWritten:_,percentage:100}}),await V(100),console.log("DISCONNECT"),await h.disconnect(),console.log("HARD RESET"),await h.hardReset(),l({state:"finished",message:"All done!"})},gr=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class br extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
417
+ `,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ti=e=>"["+e.map(e=>Ri(e)).join(", ")+"]",Ri=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Ai=e=>new Promise(t=>setTimeout(t,e)),Si={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Fi=33382,Li=50,zi=12882,Di=12883,Bi=12994,$i=12995,Ni=12997,Mi=12998,Pi=207969,Ui=12914,Hi=12928,Vi={4293968129:{name:"ESP8266",family:Fi},15736195:{name:"ESP32",family:Li},1990:{name:"ESP32-S2",family:zi},9:{name:"ESP32-S3",family:Di},1867591791:{name:"ESP32-C2",family:Bi},2084675695:{name:"ESP32-C2",family:Bi},203546735:{name:"ESP32-C2",family:Bi},1763790959:{name:"ESP32-C3",family:$i},456216687:{name:"ESP32-C3",family:$i},1216438383:{name:"ESP32-C3",family:$i},1130455151:{name:"ESP32-C3",family:$i},1607549039:{name:"ESP32-C5",family:Ni},285294703:{name:"ESP32-C5",family:Ni},1675706479:{name:"ESP32-C5",family:Ni},1548751960:{name:"ESP32-C5",family:Ni},3619110528:{name:"ESP32-H2",family:Ui},752910447:{name:"ESP32-C6",family:Mi},1913741423:{name:"ESP32-C61",family:Pi},182303440:{name:"ESP32-P4",family:Hi},117676761:{name:"ESP32-P4",family:Hi},0:{name:"ESP32-P4",family:Hi}},Wi=3e3,Xi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Wi?Wi:i},Yi=e=>{switch(e){case Li:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case zi:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Fi:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case Bi:case $i:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ni:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Mi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Pi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class ji extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Gi=async e=>{let t;return e==Li?t=await import("./esp32-BNIFdu1P.js"):e==zi?t=await import("./esp32s2-Bk4mqADi.js"):e==Di?t=await import("./esp32s3-Df3OUCOC.js"):e==Fi?t=await import("./esp8266-CQFcqJ_a.js"):e==Bi?t=await import("./esp32c2-BqxquOKw.js"):e==$i?t=await import("./esp32c3-BOOqe8me.js"):e==Ni?t=await import("./esp32c5-C8uE-s4t.js"):e==Mi?t=await import("./esp32c6-Cg5qYgg7.js"):e==Pi?t=await import("./esp32c61-CzCdsydk.js"):e==Ui?t=await import("./esp32h2-DZa_lpff.js"):e==Hi&&(t=await import("./esp32p4-DyGqUAeZ.js")),{...t,text:Ci(atob(t.text)),data:Ci(atob(t.data))}};function Ki(e){let t=e.length;for(;--t>=0;)e[t]=0}const Zi=256,Qi=286,Ji=30,en=15,tn=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]),nn=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]),on=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),rn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),an=new Array(576);Ki(an);const dn=new Array(60);Ki(dn);const sn=new Array(512);Ki(sn);const ln=new Array(256);Ki(ln);const cn=new Array(29);Ki(cn);const mn=new Array(Ji);function hn(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let pn,un,fn;function gn(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Ki(mn);const bn=e=>e<256?sn[e]:sn[256+(e>>>7)],_n=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},xn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,_n(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},vn=(e,t,i)=>{xn(e,i[2*t],i[2*t+1])},yn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},wn=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=en;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=yn(n[t]++,t))}},kn=e=>{let t;for(t=0;t<Qi;t++)e.dyn_ltree[2*t]=0;for(t=0;t<Ji;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},En=e=>{e.bi_valid>8?_n(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},In=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Cn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&In(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!In(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Tn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?vn(e,o,t):(r=ln[o],vn(e,r+Zi+1,t),a=tn[r],0!==a&&(o-=cn[r],xn(e,o,a)),n--,r=bn(n),vn(e,r,i),a=nn[r],0!==a&&(n-=mn[r],xn(e,n,a)))}while(d<e.sym_next);vn(e,256,t)},Rn=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Cn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Cn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Cn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=en;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),wn(i,l,e.bl_count)},An=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Sn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{vn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(vn(e,o,e.bl_tree),d--),vn(e,16,e.bl_tree),xn(e,d-3,2)):d<=10?(vn(e,17,e.bl_tree),xn(e,d-3,3)):(vn(e,18,e.bl_tree),xn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let On=!1;const Fn=(e,t,i,n)=>{xn(e,0+(n?1:0),3),En(e),_n(e,i),_n(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Ln=e=>{On||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(cn[n]=i,e=0;e<1<<tn[n];e++)ln[i++]=n;for(ln[i-1]=n,o=0,n=0;n<16;n++)for(mn[n]=o,e=0;e<1<<nn[n];e++)sn[o++]=n;for(o>>=7;n<Ji;n++)for(mn[n]=o<<7,e=0;e<1<<nn[n]-7;e++)sn[256+o++]=n;for(t=0;t<=en;t++)r[t]=0;for(e=0;e<=143;)an[2*e+1]=8,e++,r[8]++;for(;e<=255;)an[2*e+1]=9,e++,r[9]++;for(;e<=279;)an[2*e+1]=7,e++,r[7]++;for(;e<=287;)an[2*e+1]=8,e++,r[8]++;for(wn(an,287,r),e=0;e<Ji;e++)dn[2*e+1]=5,dn[2*e]=yn(e,5);pn=new hn(an,tn,257,Qi,en),un=new hn(dn,nn,0,Ji,en),fn=new hn(new Array(0),on,0,19,7)})(),On=!0),e.l_desc=new gn(e.dyn_ltree,pn),e.d_desc=new gn(e.dyn_dtree,un),e.bl_desc=new gn(e.bl_tree,fn),e.bi_buf=0,e.bi_valid=0,kn(e)},zn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Zi;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),Rn(e,e.l_desc),Rn(e,e.d_desc),a=(e=>{let t;for(An(e,e.dyn_ltree,e.l_desc.max_code),An(e,e.dyn_dtree,e.d_desc.max_code),Rn(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*rn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?Fn(e,t,i,n):4===e.strategy||r===o?(xn(e,2+(n?1:0),3),Tn(e,an,dn)):(xn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(xn(e,t-257,5),xn(e,i-1,5),xn(e,n-4,4),o=0;o<n;o++)xn(e,e.bl_tree[2*rn[o]+1],3);Sn(e,e.dyn_ltree,t-1),Sn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Tn(e,e.dyn_ltree,e.dyn_dtree)),kn(e),n&&En(e)},Dn=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(ln[i]+Zi+1)]++,e.dyn_dtree[2*bn(t)]++),e.sym_next===e.sym_end),Bn=e=>{xn(e,2,3),vn(e,256,an),(e=>{16===e.bi_valid?(_n(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},$n={_tr_init:Ln,_tr_stored_block:Fn,_tr_flush_block:zn,_tr_tally:Dn,_tr_align:Bn};var Nn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Mn=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Pn=(e,t,i,n)=>{const o=Mn,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Un={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"},Hn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Vn,_tr_stored_block:Wn,_tr_flush_block:Xn,_tr_tally:qn,_tr_align:Yn}=$n,{Z_NO_FLUSH:jn,Z_PARTIAL_FLUSH:Gn,Z_FULL_FLUSH:Kn,Z_FINISH:Zn,Z_BLOCK:Qn,Z_OK:Jn,Z_STREAM_END:eo,Z_STREAM_ERROR:to,Z_DATA_ERROR:io,Z_BUF_ERROR:no,Z_DEFAULT_COMPRESSION:oo,Z_FILTERED:ro,Z_HUFFMAN_ONLY:ao,Z_RLE:so,Z_FIXED:lo,Z_DEFAULT_STRATEGY:co,Z_UNKNOWN:mo,Z_DEFLATED:ho}=Hn,po=258,uo=262,fo=42,go=113,bo=666,_o=(e,t)=>(e.msg=Un[t],t),xo=e=>2*e-(e>4?9:0),vo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},yo=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let wo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const ko=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Eo=(e,t)=>{Xn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ko(e.strm)},Io=(e,t)=>{e.pending_buf[e.pending++]=t},Co=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},To=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Nn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Pn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ro=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-uo?e.strstart-(e.w_size-uo):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+po;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=po-(h-r),r=h-po,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Ao=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-uo)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),yo(e),n+=t),0===e.strm.avail_in)break;if(i=To(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=wo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=wo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<uo&&0!==e.strm.avail_in)},So=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Zn||t===jn||i!==n+e.strm.avail_in))break;a=t===Zn&&i===n+e.strm.avail_in?1:0,Wn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,ko(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(To(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==jn&&t!==Zn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(To(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Zn)&&t!==jn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Zn&&0===e.strm.avail_in&&i===n?1:0,Wn(e,e.block_start,i,a),e.block_start+=i,ko(e.strm)),a?3:1)},Oo=(e,t)=>{let i,n;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=wo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2},Fo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i),e.match_length<=5&&(e.strategy===ro||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Eo(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Eo(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2};function Lo(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const zo=[new Lo(0,0,0,0,So),new Lo(4,4,8,4,Oo),new Lo(4,5,16,8,Oo),new Lo(4,6,32,32,Oo),new Lo(4,4,16,16,Fo),new Lo(8,16,32,32,Fo),new Lo(8,16,128,128,Fo),new Lo(8,32,128,256,Fo),new Lo(32,128,258,1024,Fo),new Lo(32,258,258,4096,Fo)];function Do(){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=ho,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),vo(this.dyn_ltree),vo(this.dyn_dtree),vo(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),vo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),vo(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 Bo=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==fo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==go&&t.status!==bo?1:0},$o=e=>{if(Bo(e))return _o(e,to);e.total_in=e.total_out=0,e.data_type=mo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?fo:go,e.adler=2===t.wrap?0:1,t.last_flush=-2,Vn(t),Jn},No=e=>{const t=$o(e);return t===Jn&&(e=>{e.window_size=2*e.w_size,vo(e.head),e.max_lazy_match=zo[e.level].max_lazy,e.good_match=zo[e.level].good_length,e.nice_match=zo[e.level].nice_length,e.max_chain_length=zo[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})(e.state),t},Mo=(e,t,i,n,o,r)=>{if(!e)return to;let a=1;if(t===oo&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==ho||n<8||n>15||t<0||t>9||r<0||r>lo||8===n&&1!==a)return _o(e,to);8===n&&(n=9);const d=new Do;return e.state=d,d.strm=e,d.status=fo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,No(e)};var Po=(e,t)=>{if(Bo(e)||t>Qn||t<0)return e?_o(e,to):to;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===bo&&t!==Zn)return _o(e,0===e.avail_out?no:to);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(ko(e),0===e.avail_out)return i.last_flush=-1,Jn}else if(0===e.avail_in&&xo(t)<=xo(n)&&t!==Zn)return _o(e,no);if(i.status===bo&&0!==e.avail_in)return _o(e,no);if(i.status===fo&&0===i.wrap&&(i.status=go),i.status===fo){let t=ho+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=ao||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,Co(i,t),0!==i.strstart&&(Co(i,e.adler>>>16),Co(i,65535&e.adler)),e.adler=1,i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(57===i.status)if(e.adler=0,Io(i,31),Io(i,139),Io(i,8),i.gzhead)Io(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Io(i,255&i.gzhead.time),Io(i,i.gzhead.time>>8&255),Io(i,i.gzhead.time>>16&255),Io(i,i.gzhead.time>>24&255),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Io(i,255&i.gzhead.extra.length),Io(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Pn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,3),i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,ko(e),0!==i.pending)return i.last_flush=-1,Jn;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(ko(e),0!==i.pending))return i.last_flush=-1,Jn;Io(i,255&e.adler),Io(i,e.adler>>8&255),e.adler=0}if(i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(0!==e.avail_in||0!==i.lookahead||t!==jn&&i.status!==bo){let n=0===i.level?So(i,t):i.strategy===ao?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Ao(e),0===e.lookahead)){if(t===jn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===so?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=po){if(Ao(e),e.lookahead<=po&&t===jn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+po;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=po-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):zo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=bo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),Jn;if(2===n&&(t===Gn?Yn(i):t!==Qn&&(Wn(i,0,0,!1),t===Kn&&(vo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ko(e),0===e.avail_out))return i.last_flush=-1,Jn}return t!==Zn?Jn:i.wrap<=0?eo:(2===i.wrap?(Io(i,255&e.adler),Io(i,e.adler>>8&255),Io(i,e.adler>>16&255),Io(i,e.adler>>24&255),Io(i,255&e.total_in),Io(i,e.total_in>>8&255),Io(i,e.total_in>>16&255),Io(i,e.total_in>>24&255)):(Co(i,e.adler>>>16),Co(i,65535&e.adler)),ko(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?Jn:eo)},Uo=(e,t)=>{let i=t.length;if(Bo(e))return to;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==fo||n.lookahead)return to;if(1===o&&(e.adler=Nn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(vo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Ao(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=wo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Ao(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,Jn},Ho={deflateInit:(e,t)=>Mo(e,t,ho,15,8,co),deflateInit2:Mo,deflateReset:No,deflateResetKeep:$o,deflateSetHeader:(e,t)=>Bo(e)||2!==e.state.wrap?to:(e.state.gzhead=t,Jn),deflate:Po,deflateEnd:e=>{if(Bo(e))return to;const t=e.state.status;return e.state=null,t===go?_o(e,io):Jn},deflateSetDictionary:Uo,deflateInfo:"pako deflate (from Nodeca project)"};const Vo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Wo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Vo(i,t)&&(e[t]=i[t])}}return e},Xo=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const Yo=new Uint8Array(256);for(let e=0;e<256;e++)Yo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Yo[254]=Yo[254]=1;var jo=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Go=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 Ko=Object.prototype.toString,{Z_NO_FLUSH:Zo,Z_SYNC_FLUSH:Qo,Z_FULL_FLUSH:Jo,Z_FINISH:er,Z_OK:tr,Z_STREAM_END:ir,Z_DEFAULT_COMPRESSION:nr,Z_DEFAULT_STRATEGY:or,Z_DEFLATED:rr}=Hn;function ar(e){this.options=Wo({level:nr,method:rr,chunkSize:16384,windowBits:15,memLevel:8,strategy:or},e||{});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 Go,this.strm.avail_out=0;let i=Ho.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==tr)throw new Error(Un[i]);if(t.header&&Ho.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?jo(t.dictionary):"[object ArrayBuffer]"===Ko.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ho.deflateSetDictionary(this.strm,e),i!==tr)throw new Error(Un[i]);this._dict_set=!0}}ar.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?er:Zo,"string"==typeof e?i.input=jo(e):"[object ArrayBuffer]"===Ko.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===Qo||r===Jo)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Ho.deflate(i,r),o===ir)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Ho.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===tr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ar.prototype.onData=function(e){this.chunks.push(e)},ar.prototype.onEnd=function(e){e===tr&&(this.result=Xo(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var dr={deflate:function(e,t){const i=new ar(t);if(i.push(e,!0),i.err)throw i.msg||Un[i.err];return i.result}};const{deflate:sr}=dr;var lr=sr;const cr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},mr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in cr))throw"Unhandled character '"+e+"' in pack format";let i=cr[e].bytes,r=new DataView(new ArrayBuffer(i));cr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},hr=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in cr))throw"Unhandled character '"+e+"' in unpack format";let r=cr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=cr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class pr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let e=await this.readRegister(1073745920),t=Vi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ri(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family;let i=Yi(this.getChipFamily()).macFuse;for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(i+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Fi){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==Li)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ri(e,8));let t=mr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Fi?a=2:[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ri(e)):new Error("Command failure error code "+Ri(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...mr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Ai(10)}if(0==n.length){throw new ji("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ti(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid head of packet ("+Ri(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid SLIP escape (0xdb, "+Ri(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ti(t)),t;t.push(e)}}throw new ji("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=hr("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ri(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Fi)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=mr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop(),this.logger.log(`Changed baud rate to ${e}`)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Ai(100),!0;await Ai(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Oi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ri(t)}, FlashMode=${Ri(i)}, FlashSizeFreq=${Ri(n)}`)}let r,a=e.byteLength,d=0,s=Wi;n?(r=lr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ri(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Fi?this.getEraseSize(t,e):e,a=this.IS_STUB?Wi:qi(3e4,e);let s=Date.now();return o=mr("<IIII",n,d,r,t),this.chipFamily!=Li&&this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi||(o=o.concat(mr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ri(r,4)+", offset "+Ri(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Wi),o=mr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=mr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=mr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return Yi(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=mr("<IIII",e,t,i,n);o>0&&r.concat(mr("<IIII",Yi(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=Yi(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=hr("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ri(t)} to register offset ${Ri(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ri(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Si[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,mr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Wi:500,i=mr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Gi(this.chipFamily);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new ur(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class ur extends pr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Gi(this.chipFamily),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ri(e,8)+"-"+Ri(t,8)+". Can't load binary at overlapping address range "+Ri(r,8)+"-"+Ri(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Xi)}}const fr=async(e,t,i,n,o,r)=>{let a,d,s;const l=t=>e({...t,manifest:a,build:d,chipFamily:s});var c=null,m="";try{c=JSON.parse(n)}catch{m=new URL(n,location.toString()).toString(),c=fetch(m).then(e=>e.json())}const h=new pr(t,i);window.esploader=h,l({state:"initializing",message:"Initializing...",details:{done:!1}});try{await h.initialize()}catch(e){return i.error(e),l({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(h.connected&&await h.disconnect())}s=(e=>{switch(e.chipFamily){case Li:return"ESP32";case zi:return"ESP32-S2";case Di:return"ESP32-S3";case Bi:return"ESP32-C2";case $i:return"ESP32-C3";case Ni:return"ESP32-C5";case Mi:return"ESP32-C6";case Pi:return"ESP32-C61";case Ui:return"ESP32-H2";case Hi:return"ESP32-P4";case Fi:return"ESP8266";default:return"Unknown Chip"}})(h),l({state:"initializing",message:`Initialized. Found ${s}`,details:{done:!0}}),l({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{a=await c}catch(e){return l({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await h.disconnect()}if(d=a.builds.find(e=>e.chipFamily===s),l({state:"manifest",message:`Found manifest for ${a.name}`,details:{done:!0}}),!d)return l({state:"error",message:`Your ${s} board is not supported.`,details:{error:"not_supported",details:s}}),void await h.disconnect();l({state:"preparing",message:"Preparing installation...",details:{done:!1}});const p=d.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,m).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),u=await h.runStub(),f=[];let g=0;for(const e of p)try{const t=await e;f.push(t instanceof ArrayBuffer?new Uint8Array(t):t),g+=t.byteLength}catch(e){return l({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await h.disconnect()}l({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(l({state:"erasing",message:"Erasing device...",details:{done:!1}}),await u.eraseFlash(),l({state:"erasing",message:"Device erased",details:{done:!0}}));let b=0;l({state:"writing",message:`Writing progress: ${b}%`,details:{bytesTotal:g,bytesWritten:0,percentage:b}});let _=0;for(const e of d.parts){const t=f.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await u.flashData(i,e=>{const t=Math.floor((_+e)/g*100);t!==b&&(b=t,l({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:g,bytesWritten:_+e,percentage:t}}))},e.offset,!0)}catch(e){return l({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await h.disconnect()}_+=t.byteLength}l({state:"writing",message:"Writing complete",details:{bytesTotal:g,bytesWritten:_,percentage:100}}),await V(100),console.log("DISCONNECT"),await h.disconnect(),console.log("HARD RESET"),await h.hardReset(),l({state:"finished",message:"All done!"})},gr=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class br extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
418
418
  <ewt-dialog
419
419
  open
420
420
  .heading=${e}
@@ -1 +1 @@
1
- const e=async t=>{let n;import("./install-dialog-eu7E1Rh1.js");try{n=await navigator.serial.requestPort()}catch(n){return"NotFoundError"===n.name?void import("./index-BK6drzlv.js").then(n=>n.openNoPortPickedDialog(()=>e(t))):void alert(`Error: ${n.message}`)}if(!n)return;try{await n.open({baudRate:115200})}catch(e){return void alert(e.message)}const o=document.createElement("ewt-install-dialog");o.port=n,o.manifestPath=t.manifest||t.getAttribute("manifest"),o.overrides=t.overrides,o.firmwareFile=t.firmwareFile,o.addEventListener("closed",()=>{n.close()},{once:!0}),document.body.appendChild(o)};class t extends HTMLElement{connectedCallback(){if(this.renderRoot)return;if(this.renderRoot=this.attachShadow({mode:"open"}),!t.isSupported||!t.isAllowed)return this.toggleAttribute("install-unsupported",!0),void(this.renderRoot.innerHTML=t.isAllowed?"<slot name='unsupported'>Your browser does not support installing things on ESP devices. Use Google Chrome or Microsoft Edge.</slot>":"<slot name='not-allowed'>You can only install ESP devices on HTTPS websites or on the localhost.</slot>");this.toggleAttribute("install-supported",!0);const n=document.createElement("slot");n.addEventListener("click",async t=>{t.preventDefault(),e(this)}),n.name="activate";const o=document.createElement("button");if(o.innerText="CONNECT",n.append(o),"adoptedStyleSheets"in Document.prototype&&"replaceSync"in CSSStyleSheet.prototype){const e=new CSSStyleSheet;e.replaceSync(t.style),this.renderRoot.adoptedStyleSheets=[e]}else{const e=document.createElement("style");e.innerText=t.style,this.renderRoot.append(e)}this.renderRoot.append(n)}}t.isSupported="serial"in navigator,t.isAllowed=window.isSecureContext,t.style='\n button {\n position: relative;\n cursor: pointer;\n font-size: 14px;\n padding: 8px 28px;\n color: var(--esp-tools-button-text-color, #fff);\n background-color: var(--esp-tools-button-color, #03a9f4);\n border: none;\n border-radius: 4px;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);\n }\n button::before {\n content: " ";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0.2;\n border-radius: 4px;\n }\n button:hover {\n box-shadow: 0 4px 8px 0 rgba(0,0,0,.14), 0 1px 7px 0 rgba(0,0,0,.12), 0 3px 1px -1px rgba(0,0,0,.2);\n }\n button:hover::before {\n background-color: rgba(255,255,255,.8);\n }\n button:focus {\n outline: none;\n }\n button:focus::before {\n background-color: white;\n }\n button:active::before {\n background-color: grey;\n }\n :host([active]) button {\n color: rgba(0, 0, 0, 0.38);\n background-color: rgba(0, 0, 0, 0.12);\n box-shadow: none;\n cursor: unset;\n pointer-events: none;\n }\n improv-wifi-launch-button {\n display: block;\n margin-top: 16px;\n }\n .hidden {\n display: none;\n }',customElements.define("esp-web-install-button",t);
1
+ const e=async t=>{let n;import("./install-dialog-BZFuby8t.js");try{n=await navigator.serial.requestPort()}catch(n){return"NotFoundError"===n.name?void import("./index-BK6drzlv.js").then(n=>n.openNoPortPickedDialog(()=>e(t))):void alert(`Error: ${n.message}`)}if(!n)return;try{await n.open({baudRate:115200})}catch(e){return void alert(e.message)}const o=document.createElement("ewt-install-dialog");o.port=n,o.manifestPath=t.manifest||t.getAttribute("manifest"),o.overrides=t.overrides,o.firmwareFile=t.firmwareFile,o.addEventListener("closed",()=>{n.close()},{once:!0}),document.body.appendChild(o)};class t extends HTMLElement{connectedCallback(){if(this.renderRoot)return;if(this.renderRoot=this.attachShadow({mode:"open"}),!t.isSupported||!t.isAllowed)return this.toggleAttribute("install-unsupported",!0),void(this.renderRoot.innerHTML=t.isAllowed?"<slot name='unsupported'>Your browser does not support installing things on ESP devices. Use Google Chrome or Microsoft Edge.</slot>":"<slot name='not-allowed'>You can only install ESP devices on HTTPS websites or on the localhost.</slot>");this.toggleAttribute("install-supported",!0);const n=document.createElement("slot");n.addEventListener("click",async t=>{t.preventDefault(),e(this)}),n.name="activate";const o=document.createElement("button");if(o.innerText="CONNECT",n.append(o),"adoptedStyleSheets"in Document.prototype&&"replaceSync"in CSSStyleSheet.prototype){const e=new CSSStyleSheet;e.replaceSync(t.style),this.renderRoot.adoptedStyleSheets=[e]}else{const e=document.createElement("style");e.innerText=t.style,this.renderRoot.append(e)}this.renderRoot.append(n)}}t.isSupported="serial"in navigator,t.isAllowed=window.isSecureContext,t.style='\n button {\n position: relative;\n cursor: pointer;\n font-size: 14px;\n padding: 8px 28px;\n color: var(--esp-tools-button-text-color, #fff);\n background-color: var(--esp-tools-button-color, #03a9f4);\n border: none;\n border-radius: 4px;\n box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2);\n }\n button::before {\n content: " ";\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n opacity: 0.2;\n border-radius: 4px;\n }\n button:hover {\n box-shadow: 0 4px 8px 0 rgba(0,0,0,.14), 0 1px 7px 0 rgba(0,0,0,.12), 0 3px 1px -1px rgba(0,0,0,.2);\n }\n button:hover::before {\n background-color: rgba(255,255,255,.8);\n }\n button:focus {\n outline: none;\n }\n button:focus::before {\n background-color: white;\n }\n button:active::before {\n background-color: grey;\n }\n :host([active]) button {\n color: rgba(0, 0, 0, 0.38);\n background-color: rgba(0, 0, 0, 0.12);\n box-shadow: none;\n cursor: unset;\n pointer-events: none;\n }\n improv-wifi-launch-button {\n display: block;\n margin-top: 16px;\n }\n .hidden {\n display: none;\n }',customElements.define("esp-web-install-button",t);
@@ -414,7 +414,7 @@ import{l as e,o as t,_ as i,n,B as o,i as r,a,t as d,e as s,b as l,R as c,x as m
414
414
  d="M6,4H18V5H21V7H18V9H21V11H18V13H21V15H18V17H21V19H18V20H6V19H3V17H6V15H3V13H6V11H3V9H6V7H3V5H6V4M11,15V18H12V15H11M13,15V18H14V15H13M15,15V18H16V15H15Z"
415
415
  />
416
416
  </svg>
417
- `,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ti=e=>"["+e.map(e=>Ri(e)).join(", ")+"]",Ri=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Ai=e=>new Promise(t=>setTimeout(t,e)),Si={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Fi=33382,Li=50,zi=12882,Di=12883,Bi=12994,$i=12995,Ni=12997,Mi=12998,Pi=207969,Ui=12914,Hi=12928,Vi={4293968129:{name:"ESP8266",family:Fi},15736195:{name:"ESP32",family:Li},1990:{name:"ESP32-S2",family:zi},9:{name:"ESP32-S3",family:Di},1867591791:{name:"ESP32-C2",family:Bi},2084675695:{name:"ESP32-C2",family:Bi},203546735:{name:"ESP32-C2",family:Bi},1763790959:{name:"ESP32-C3",family:$i},456216687:{name:"ESP32-C3",family:$i},1216438383:{name:"ESP32-C3",family:$i},1130455151:{name:"ESP32-C3",family:$i},1607549039:{name:"ESP32-C5",family:Ni},285294703:{name:"ESP32-C5",family:Ni},1675706479:{name:"ESP32-C5",family:Ni},1548751960:{name:"ESP32-C5",family:Ni},3619110528:{name:"ESP32-H2",family:Ui},752910447:{name:"ESP32-C6",family:Mi},1913741423:{name:"ESP32-C61",family:Pi},182303440:{name:"ESP32-P4",family:Hi},117676761:{name:"ESP32-P4",family:Hi},0:{name:"ESP32-P4",family:Hi}},Wi=3e3,Xi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Wi?Wi:i},Yi=e=>{switch(e){case Li:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case zi:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Fi:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case Bi:case $i:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ni:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Mi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Pi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class ji extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Gi=async e=>{let t;return e==Li?t=await import("./esp32-BNIFdu1P.js"):e==zi?t=await import("./esp32s2-Bk4mqADi.js"):e==Di?t=await import("./esp32s3-Df3OUCOC.js"):e==Fi?t=await import("./esp8266-CQFcqJ_a.js"):e==Bi?t=await import("./esp32c2-BqxquOKw.js"):e==$i?t=await import("./esp32c3-BOOqe8me.js"):e==Ni?t=await import("./esp32c5-C8uE-s4t.js"):e==Mi?t=await import("./esp32c6-Cg5qYgg7.js"):e==Pi?t=await import("./esp32c61-CzCdsydk.js"):e==Ui?t=await import("./esp32h2-DZa_lpff.js"):e==Hi&&(t=await import("./esp32p4-DyGqUAeZ.js")),{...t,text:Ci(atob(t.text)),data:Ci(atob(t.data))}};function Ki(e){let t=e.length;for(;--t>=0;)e[t]=0}const Zi=256,Qi=286,Ji=30,en=15,tn=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]),nn=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]),on=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),rn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),an=new Array(576);Ki(an);const dn=new Array(60);Ki(dn);const sn=new Array(512);Ki(sn);const ln=new Array(256);Ki(ln);const cn=new Array(29);Ki(cn);const mn=new Array(Ji);function hn(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let pn,un,fn;function gn(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Ki(mn);const bn=e=>e<256?sn[e]:sn[256+(e>>>7)],_n=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},xn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,_n(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},vn=(e,t,i)=>{xn(e,i[2*t],i[2*t+1])},yn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},wn=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=en;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=yn(n[t]++,t))}},kn=e=>{let t;for(t=0;t<Qi;t++)e.dyn_ltree[2*t]=0;for(t=0;t<Ji;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},En=e=>{e.bi_valid>8?_n(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},In=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Cn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&In(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!In(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Tn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?vn(e,o,t):(r=ln[o],vn(e,r+Zi+1,t),a=tn[r],0!==a&&(o-=cn[r],xn(e,o,a)),n--,r=bn(n),vn(e,r,i),a=nn[r],0!==a&&(n-=mn[r],xn(e,n,a)))}while(d<e.sym_next);vn(e,256,t)},Rn=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Cn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Cn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Cn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=en;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),wn(i,l,e.bl_count)},An=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Sn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{vn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(vn(e,o,e.bl_tree),d--),vn(e,16,e.bl_tree),xn(e,d-3,2)):d<=10?(vn(e,17,e.bl_tree),xn(e,d-3,3)):(vn(e,18,e.bl_tree),xn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let On=!1;const Fn=(e,t,i,n)=>{xn(e,0+(n?1:0),3),En(e),_n(e,i),_n(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Ln=e=>{On||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(cn[n]=i,e=0;e<1<<tn[n];e++)ln[i++]=n;for(ln[i-1]=n,o=0,n=0;n<16;n++)for(mn[n]=o,e=0;e<1<<nn[n];e++)sn[o++]=n;for(o>>=7;n<Ji;n++)for(mn[n]=o<<7,e=0;e<1<<nn[n]-7;e++)sn[256+o++]=n;for(t=0;t<=en;t++)r[t]=0;for(e=0;e<=143;)an[2*e+1]=8,e++,r[8]++;for(;e<=255;)an[2*e+1]=9,e++,r[9]++;for(;e<=279;)an[2*e+1]=7,e++,r[7]++;for(;e<=287;)an[2*e+1]=8,e++,r[8]++;for(wn(an,287,r),e=0;e<Ji;e++)dn[2*e+1]=5,dn[2*e]=yn(e,5);pn=new hn(an,tn,257,Qi,en),un=new hn(dn,nn,0,Ji,en),fn=new hn(new Array(0),on,0,19,7)})(),On=!0),e.l_desc=new gn(e.dyn_ltree,pn),e.d_desc=new gn(e.dyn_dtree,un),e.bl_desc=new gn(e.bl_tree,fn),e.bi_buf=0,e.bi_valid=0,kn(e)},zn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Zi;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),Rn(e,e.l_desc),Rn(e,e.d_desc),a=(e=>{let t;for(An(e,e.dyn_ltree,e.l_desc.max_code),An(e,e.dyn_dtree,e.d_desc.max_code),Rn(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*rn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?Fn(e,t,i,n):4===e.strategy||r===o?(xn(e,2+(n?1:0),3),Tn(e,an,dn)):(xn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(xn(e,t-257,5),xn(e,i-1,5),xn(e,n-4,4),o=0;o<n;o++)xn(e,e.bl_tree[2*rn[o]+1],3);Sn(e,e.dyn_ltree,t-1),Sn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Tn(e,e.dyn_ltree,e.dyn_dtree)),kn(e),n&&En(e)},Dn=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(ln[i]+Zi+1)]++,e.dyn_dtree[2*bn(t)]++),e.sym_next===e.sym_end),Bn=e=>{xn(e,2,3),vn(e,256,an),(e=>{16===e.bi_valid?(_n(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},$n={_tr_init:Ln,_tr_stored_block:Fn,_tr_flush_block:zn,_tr_tally:Dn,_tr_align:Bn};var Nn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Mn=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Pn=(e,t,i,n)=>{const o=Mn,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Un={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"},Hn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Vn,_tr_stored_block:Wn,_tr_flush_block:Xn,_tr_tally:qn,_tr_align:Yn}=$n,{Z_NO_FLUSH:jn,Z_PARTIAL_FLUSH:Gn,Z_FULL_FLUSH:Kn,Z_FINISH:Zn,Z_BLOCK:Qn,Z_OK:Jn,Z_STREAM_END:eo,Z_STREAM_ERROR:to,Z_DATA_ERROR:io,Z_BUF_ERROR:no,Z_DEFAULT_COMPRESSION:oo,Z_FILTERED:ro,Z_HUFFMAN_ONLY:ao,Z_RLE:so,Z_FIXED:lo,Z_DEFAULT_STRATEGY:co,Z_UNKNOWN:mo,Z_DEFLATED:ho}=Hn,po=258,uo=262,fo=42,go=113,bo=666,_o=(e,t)=>(e.msg=Un[t],t),xo=e=>2*e-(e>4?9:0),vo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},yo=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let wo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const ko=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Eo=(e,t)=>{Xn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ko(e.strm)},Io=(e,t)=>{e.pending_buf[e.pending++]=t},Co=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},To=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Nn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Pn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ro=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-uo?e.strstart-(e.w_size-uo):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+po;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=po-(h-r),r=h-po,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Ao=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-uo)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),yo(e),n+=t),0===e.strm.avail_in)break;if(i=To(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=wo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=wo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<uo&&0!==e.strm.avail_in)},So=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Zn||t===jn||i!==n+e.strm.avail_in))break;a=t===Zn&&i===n+e.strm.avail_in?1:0,Wn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,ko(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(To(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==jn&&t!==Zn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(To(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Zn)&&t!==jn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Zn&&0===e.strm.avail_in&&i===n?1:0,Wn(e,e.block_start,i,a),e.block_start+=i,ko(e.strm)),a?3:1)},Oo=(e,t)=>{let i,n;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=wo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2},Fo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i),e.match_length<=5&&(e.strategy===ro||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Eo(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Eo(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2};function Lo(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const zo=[new Lo(0,0,0,0,So),new Lo(4,4,8,4,Oo),new Lo(4,5,16,8,Oo),new Lo(4,6,32,32,Oo),new Lo(4,4,16,16,Fo),new Lo(8,16,32,32,Fo),new Lo(8,16,128,128,Fo),new Lo(8,32,128,256,Fo),new Lo(32,128,258,1024,Fo),new Lo(32,258,258,4096,Fo)];function Do(){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=ho,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),vo(this.dyn_ltree),vo(this.dyn_dtree),vo(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),vo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),vo(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 Bo=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==fo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==go&&t.status!==bo?1:0},$o=e=>{if(Bo(e))return _o(e,to);e.total_in=e.total_out=0,e.data_type=mo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?fo:go,e.adler=2===t.wrap?0:1,t.last_flush=-2,Vn(t),Jn},No=e=>{const t=$o(e);return t===Jn&&(e=>{e.window_size=2*e.w_size,vo(e.head),e.max_lazy_match=zo[e.level].max_lazy,e.good_match=zo[e.level].good_length,e.nice_match=zo[e.level].nice_length,e.max_chain_length=zo[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})(e.state),t},Mo=(e,t,i,n,o,r)=>{if(!e)return to;let a=1;if(t===oo&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==ho||n<8||n>15||t<0||t>9||r<0||r>lo||8===n&&1!==a)return _o(e,to);8===n&&(n=9);const d=new Do;return e.state=d,d.strm=e,d.status=fo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,No(e)};var Po=(e,t)=>{if(Bo(e)||t>Qn||t<0)return e?_o(e,to):to;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===bo&&t!==Zn)return _o(e,0===e.avail_out?no:to);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(ko(e),0===e.avail_out)return i.last_flush=-1,Jn}else if(0===e.avail_in&&xo(t)<=xo(n)&&t!==Zn)return _o(e,no);if(i.status===bo&&0!==e.avail_in)return _o(e,no);if(i.status===fo&&0===i.wrap&&(i.status=go),i.status===fo){let t=ho+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=ao||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,Co(i,t),0!==i.strstart&&(Co(i,e.adler>>>16),Co(i,65535&e.adler)),e.adler=1,i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(57===i.status)if(e.adler=0,Io(i,31),Io(i,139),Io(i,8),i.gzhead)Io(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Io(i,255&i.gzhead.time),Io(i,i.gzhead.time>>8&255),Io(i,i.gzhead.time>>16&255),Io(i,i.gzhead.time>>24&255),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Io(i,255&i.gzhead.extra.length),Io(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Pn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,3),i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,ko(e),0!==i.pending)return i.last_flush=-1,Jn;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(ko(e),0!==i.pending))return i.last_flush=-1,Jn;Io(i,255&e.adler),Io(i,e.adler>>8&255),e.adler=0}if(i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(0!==e.avail_in||0!==i.lookahead||t!==jn&&i.status!==bo){let n=0===i.level?So(i,t):i.strategy===ao?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Ao(e),0===e.lookahead)){if(t===jn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===so?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=po){if(Ao(e),e.lookahead<=po&&t===jn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+po;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=po-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):zo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=bo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),Jn;if(2===n&&(t===Gn?Yn(i):t!==Qn&&(Wn(i,0,0,!1),t===Kn&&(vo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ko(e),0===e.avail_out))return i.last_flush=-1,Jn}return t!==Zn?Jn:i.wrap<=0?eo:(2===i.wrap?(Io(i,255&e.adler),Io(i,e.adler>>8&255),Io(i,e.adler>>16&255),Io(i,e.adler>>24&255),Io(i,255&e.total_in),Io(i,e.total_in>>8&255),Io(i,e.total_in>>16&255),Io(i,e.total_in>>24&255)):(Co(i,e.adler>>>16),Co(i,65535&e.adler)),ko(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?Jn:eo)},Uo=(e,t)=>{let i=t.length;if(Bo(e))return to;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==fo||n.lookahead)return to;if(1===o&&(e.adler=Nn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(vo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Ao(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=wo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Ao(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,Jn},Ho={deflateInit:(e,t)=>Mo(e,t,ho,15,8,co),deflateInit2:Mo,deflateReset:No,deflateResetKeep:$o,deflateSetHeader:(e,t)=>Bo(e)||2!==e.state.wrap?to:(e.state.gzhead=t,Jn),deflate:Po,deflateEnd:e=>{if(Bo(e))return to;const t=e.state.status;return e.state=null,t===go?_o(e,io):Jn},deflateSetDictionary:Uo,deflateInfo:"pako deflate (from Nodeca project)"};const Vo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Wo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Vo(i,t)&&(e[t]=i[t])}}return e},Xo=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const Yo=new Uint8Array(256);for(let e=0;e<256;e++)Yo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Yo[254]=Yo[254]=1;var jo=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Go=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 Ko=Object.prototype.toString,{Z_NO_FLUSH:Zo,Z_SYNC_FLUSH:Qo,Z_FULL_FLUSH:Jo,Z_FINISH:er,Z_OK:tr,Z_STREAM_END:ir,Z_DEFAULT_COMPRESSION:nr,Z_DEFAULT_STRATEGY:or,Z_DEFLATED:rr}=Hn;function ar(e){this.options=Wo({level:nr,method:rr,chunkSize:16384,windowBits:15,memLevel:8,strategy:or},e||{});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 Go,this.strm.avail_out=0;let i=Ho.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==tr)throw new Error(Un[i]);if(t.header&&Ho.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?jo(t.dictionary):"[object ArrayBuffer]"===Ko.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ho.deflateSetDictionary(this.strm,e),i!==tr)throw new Error(Un[i]);this._dict_set=!0}}ar.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?er:Zo,"string"==typeof e?i.input=jo(e):"[object ArrayBuffer]"===Ko.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===Qo||r===Jo)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Ho.deflate(i,r),o===ir)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Ho.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===tr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ar.prototype.onData=function(e){this.chunks.push(e)},ar.prototype.onEnd=function(e){e===tr&&(this.result=Xo(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var dr={deflate:function(e,t){const i=new ar(t);if(i.push(e,!0),i.err)throw i.msg||Un[i.err];return i.result}};const{deflate:sr}=dr;var lr=sr;const cr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},mr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in cr))throw"Unhandled character '"+e+"' in pack format";let i=cr[e].bytes,r=new DataView(new ArrayBuffer(i));cr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},hr=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in cr))throw"Unhandled character '"+e+"' in unpack format";let r=cr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=cr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class pr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let e=await this.readRegister(1073745920),t=Vi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ri(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family;let i=Yi(this.getChipFamily()).macFuse;for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(i+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Fi){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==Li)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ri(e,8));let t=mr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Fi?a=2:[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ri(e)):new Error("Command failure error code "+Ri(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...mr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Ai(10)}if(0==n.length){throw new ji("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ti(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid head of packet ("+Ri(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid SLIP escape (0xdb, "+Ri(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ti(t)),t;t.push(e)}}throw new ji("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=hr("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ri(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Fi)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=mr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop(),this.logger.log(`Changed baud rate to ${e}`)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Ai(100),!0;await Ai(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Oi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ri(t)}, FlashMode=${Ri(i)}, FlashSizeFreq=${Ri(n)}`)}let r,a=e.byteLength,d=0,s=Wi;n?(r=lr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ri(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Fi?this.getEraseSize(t,e):e,a=this.IS_STUB?Wi:qi(3e4,e);let s=Date.now();return o=mr("<IIII",n,d,r,t),this.chipFamily!=Li&&this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi||(o=o.concat(mr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ri(r,4)+", offset "+Ri(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Wi),o=mr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=mr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=mr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return Yi(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=mr("<IIII",e,t,i,n);o>0&&r.concat(mr("<IIII",Yi(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=Yi(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=hr("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ri(t)} to register offset ${Ri(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ri(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Si[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,mr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Wi:500,i=mr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Gi(this.chipFamily);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new ur(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class ur extends pr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Gi(this.chipFamily),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ri(e,8)+"-"+Ri(t,8)+". Can't load binary at overlapping address range "+Ri(r,8)+"-"+Ri(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Xi)}}const fr=async(e,t,i,n,o,r)=>{let a,d,s;const l=t=>e({...t,manifest:a,build:d,chipFamily:s});var c=null,m="";try{c=JSON.parse(n)}catch{m=new URL(n,location.toString()).toString(),c=fetch(m).then(e=>e.json())}const h=new pr(t,i);window.esploader=h,l({state:"initializing",message:"Initializing...",details:{done:!1}});try{await h.initialize()}catch(e){return i.error(e),l({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(h.connected&&await h.disconnect())}s=(e=>{switch(e.chipFamily){case Li:return"ESP32";case zi:return"ESP32-S2";case Di:return"ESP32-S3";case Bi:return"ESP32-C2";case $i:return"ESP32-C3";case Mi:return"ESP32-C6";case Ui:return"ESP32-H2";case Hi:return"ESP32-P4";case Fi:return"ESP8266";default:return"Unknown Chip"}})(h),l({state:"initializing",message:`Initialized. Found ${s}`,details:{done:!0}}),l({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{a=await c}catch(e){return l({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await h.disconnect()}if(d=a.builds.find(e=>e.chipFamily===s),l({state:"manifest",message:`Found manifest for ${a.name}`,details:{done:!0}}),!d)return l({state:"error",message:`Your ${s} board is not supported.`,details:{error:"not_supported",details:s}}),void await h.disconnect();l({state:"preparing",message:"Preparing installation...",details:{done:!1}});const p=d.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,m).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),u=await h.runStub(),f=[];let g=0;for(const e of p)try{const t=await e;f.push(t instanceof ArrayBuffer?new Uint8Array(t):t),g+=t.byteLength}catch(e){return l({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await h.disconnect()}l({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(l({state:"erasing",message:"Erasing device...",details:{done:!1}}),await u.eraseFlash(),l({state:"erasing",message:"Device erased",details:{done:!0}}));let b=0;l({state:"writing",message:`Writing progress: ${b}%`,details:{bytesTotal:g,bytesWritten:0,percentage:b}});let _=0;for(const e of d.parts){const t=f.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await u.flashData(i,e=>{const t=Math.floor((_+e)/g*100);t!==b&&(b=t,l({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:g,bytesWritten:_+e,percentage:t}}))},e.offset,!0)}catch(e){return l({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await h.disconnect()}_+=t.byteLength}l({state:"writing",message:"Writing complete",details:{bytesTotal:g,bytesWritten:_,percentage:100}}),await V(100),console.log("DISCONNECT"),await h.disconnect(),console.log("HARD RESET"),await h.hardReset(),l({state:"finished",message:"All done!"})},gr=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class br extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
417
+ `,xi=["I".charCodeAt(0),"M".charCodeAt(0),"P".charCodeAt(0),"R".charCodeAt(0),"O".charCodeAt(0),"V".charCodeAt(0),1];var vi,yi;!function(e){e[e.CURRENT_STATE=1]="CURRENT_STATE",e[e.ERROR_STATE=2]="ERROR_STATE",e[e.RPC=3]="RPC",e[e.RPC_RESULT=4]="RPC_RESULT"}(vi||(vi={})),function(e){e[e.READY=2]="READY",e[e.PROVISIONING=3]="PROVISIONING",e[e.PROVISIONED=4]="PROVISIONED"}(yi||(yi={}));const wi={0:"NO_ERROR",1:"INVALID_RPC_PACKET",2:"UNKNOWN_RPC_COMMAND",3:"UNABLE_TO_CONNECT",254:"TIMEOUT",255:"UNKNOWN_ERROR"};class ki extends Error{constructor(){super("Port is not ready")}}const Ei=e=>"["+e.map(e=>((e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")})(e)).join(", ")+"]";class Ii extends EventTarget{constructor(e,t){if(super(),this.port=e,this.logger=t,this.error=0,null===e.readable)throw new Error("Port is not readable");if(null===e.writable)throw new Error("Port is not writable")}async initialize(e=1e3){var t;if(this.logger.log("Initializing Improv Serial"),this._processInput(),await(t=1e3,new Promise(e=>setTimeout(e,t))),void 0===this._reader)throw new ki;try{await new Promise(async(t,i)=>{setTimeout(()=>i(new Error("Improv Wi-Fi Serial not detected")),e),await this.requestCurrentState(),t(void 0)}),await this.requestInfo()}catch(e){throw await this.close(),e}return this.info}async close(){this._reader&&await new Promise(e=>{this._reader.cancel(),this.addEventListener("disconnect",e,{once:!0})})}async requestCurrentState(){let e;try{await new Promise(async(t,i)=>{this.addEventListener("state-changed",t,{once:!0});e=this._sendRPCWithResponse(2,[]),e.catch(e=>{this.removeEventListener("state-changed",t),i(e)})})}catch(e){throw this._rpcFeedback=void 0,new Error(`Error fetching current state: ${e}`)}if(this.state!==yi.PROVISIONED)return void(this._rpcFeedback=void 0);const t=await e;this.nextUrl=t[0]}async requestInfo(e){const t=await this._sendRPCWithResponse(3,[],e);this.info={firmware:t[0],version:t[1],name:t[3],chipFamily:t[2]}}async provision(e,t,i){const n=new TextEncoder,o=n.encode(e),r=n.encode(t),a=[o.length,...o,r.length,...r],d=await this._sendRPCWithResponse(1,a,i);this.nextUrl=d[0]}async scan(){const e=(await this._sendRPCWithMultipleResponses(4,[])).map(([e,t,i])=>({name:e,rssi:parseInt(t),secured:"YES"===i}));return e.sort((e,t)=>e.name.toLocaleLowerCase().localeCompare(t.name.toLocaleLowerCase())),e}_sendRPC(e,t){this.writePacketToStream(vi.RPC,[e,t.length,...t])}async _sendRPCWithResponse(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n},this._sendRPC(e,t)}),i)}async _sendRPCWithMultipleResponses(e,t,i){if(this._rpcFeedback)throw new Error("Only 1 RPC command that requires feedback can be active");return await this._awaitRPCResultWithTimeout(new Promise((i,n)=>{this._rpcFeedback={command:e,resolve:i,reject:n,receivedData:[]},this._sendRPC(e,t)}),i)}async _awaitRPCResultWithTimeout(e,t){return t?await new Promise((i,n)=>{const o=setTimeout(()=>this._setError(254),t);e.finally(()=>clearTimeout(o)),e.then(i,n)}):await e}async _processInput(){this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{let e,t=[],i=0;for(;;){const{value:n,done:o}=await this._reader.read();if(o)break;if(n&&0!==n.length)for(const o of n){if(!1===e){10===o&&(e=void 0);continue}if(!0===e){t.push(o),t.length===i&&(this._handleIncomingPacket(t),e=void 0,t=[]);continue}if(10===o){t=[];continue}if(t.push(o),9!==t.length)continue;if(e="IMPROV"===String.fromCharCode(...t.slice(0,6)),!e){t=[];continue}i=9+t[8]+1}}}catch(e){this.logger.error("Error while reading serial port",e)}finally{this._reader.releaseLock(),this._reader=void 0}this.logger.debug("Finished read loop"),this.dispatchEvent(new Event("disconnect"))}_handleIncomingPacket(e){const t=e.slice(6),i=t[0],n=t[1],o=t[2],r=t.slice(3,3+o);if(this.logger.debug("PROCESS",{version:i,packetType:n,packetLength:o,data:Ei(r)}),1!==i)return void this.logger.error("Received unsupported version",i);let a=t[3+o],d=0;for(let t=0;t<e.length-1;t++)d+=e[t];if(d&=255,d===a)if(n===vi.CURRENT_STATE)this.state=r[0],this.dispatchEvent(new CustomEvent("state-changed",{detail:this.state}));else if(n===vi.ERROR_STATE)this._setError(r[0]);else if(n===vi.RPC_RESULT){if(!this._rpcFeedback)return void this.logger.error("Received result while not waiting for one");const e=r[0];if(e!==this._rpcFeedback.command)return void this.logger.error(`Received result for command ${e} but expected ${this._rpcFeedback.command}`);const t=[],i=r[1];let n=2;for(;n<2+i;)t.push(String.fromCodePoint(...r.slice(n+1,n+r[n]+1))),n+=r[n]+1;"receivedData"in this._rpcFeedback?t.length>0?this._rpcFeedback.receivedData.push(t):(this._rpcFeedback.resolve(this._rpcFeedback.receivedData),this._rpcFeedback=void 0):(this._rpcFeedback.resolve(t),this._rpcFeedback=void 0)}else this.logger.error("Unable to handle packet",t);else this.logger.error(`Received invalid checksum ${a}. Expected ${d}`)}async writePacketToStream(e,t){const i=new Uint8Array([...xi,e,t.length,...t,0,0]);i[i.length-2]=255&i.reduce((e,t)=>e+t,0),i[i.length-1]=10,this.logger.debug("Writing to stream:",Ei(new Array(...i)));const n=this.port.writable.getWriter();await n.write(i);try{n.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}_setError(e){this.error=e,e>0&&this._rpcFeedback&&(this._rpcFeedback.reject(wi[e]||`UNKNOWN_ERROR (${e})`),this._rpcFeedback=void 0),this.dispatchEvent(new CustomEvent("error-changed",{detail:this.error}))}}const Ci=e=>{let t=[];for(let i=0;i<e.length;i++){let n=e.charCodeAt(i);n<=255&&t.push(n)}return t},Ti=e=>"["+e.map(e=>Ri(e)).join(", ")+"]",Ri=(e,t=2)=>{let i=e.toString(16).toUpperCase();return i.startsWith("-")?"-0x"+i.substring(1).padStart(t,"0"):"0x"+i.padStart(t,"0")},Ai=e=>new Promise(t=>setTimeout(t,e)),Si={18:"256KB",19:"512KB",20:"1MB",21:"2MB",22:"4MB",23:"8MB",24:"16MB",25:"32MB",26:"64MB"},Oi=Ci(" UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"),Fi=33382,Li=50,zi=12882,Di=12883,Bi=12994,$i=12995,Ni=12997,Mi=12998,Pi=207969,Ui=12914,Hi=12928,Vi={4293968129:{name:"ESP8266",family:Fi},15736195:{name:"ESP32",family:Li},1990:{name:"ESP32-S2",family:zi},9:{name:"ESP32-S3",family:Di},1867591791:{name:"ESP32-C2",family:Bi},2084675695:{name:"ESP32-C2",family:Bi},203546735:{name:"ESP32-C2",family:Bi},1763790959:{name:"ESP32-C3",family:$i},456216687:{name:"ESP32-C3",family:$i},1216438383:{name:"ESP32-C3",family:$i},1130455151:{name:"ESP32-C3",family:$i},1607549039:{name:"ESP32-C5",family:Ni},285294703:{name:"ESP32-C5",family:Ni},1675706479:{name:"ESP32-C5",family:Ni},1548751960:{name:"ESP32-C5",family:Ni},3619110528:{name:"ESP32-H2",family:Ui},752910447:{name:"ESP32-C6",family:Mi},1913741423:{name:"ESP32-C61",family:Pi},182303440:{name:"ESP32-P4",family:Hi},117676761:{name:"ESP32-P4",family:Hi},0:{name:"ESP32-P4",family:Hi}},Wi=3e3,Xi=6e5,qi=(e,t)=>{let i=Math.floor(e*(t/486));return i<Wi?Wi:i},Yi=e=>{switch(e){case Li:return{regBase:1072963584,baseFuse:1073061888,macFuse:1073061888,usrOffs:28,usr1Offs:32,usr2Offs:36,mosiDlenOffs:40,misoDlenOffs:44,w0Offs:128,uartDateReg:1610612856,flashOffs:4096};case zi:return{regBase:1061167104,baseFuse:1061265408,macFuse:1061265476,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612856,flashOffs:4096};case Di:return{regBase:1610620928,usrOffs:24,baseFuse:1610641408,macFuse:1610641476,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612864,flashOffs:0};case Fi:return{regBase:1610613248,usrOffs:28,baseFuse:1072693328,macFuse:1072693328,usr1Offs:32,usr2Offs:36,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:64,uartDateReg:1610612856,flashOffs:0};case Bi:case $i:return{regBase:1610620928,baseFuse:1610647552,macFuse:1610647620,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ni:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:8192};case Mi:return{regBase:1610625024,baseFuse:1611335680,macFuse:1611335748,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Pi:return{regBase:1610625024,baseFuse:1611352064,macFuse:1611352132,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Ui:return{regBase:1610625024,baseFuse:1610719232,macFuse:1610719300,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1610612860,flashOffs:0};case Hi:return{regBase:1342754816,baseFuse:1343410176,macFuse:1343410244,usrOffs:24,usr1Offs:28,usr2Offs:32,mosiDlenOffs:36,misoDlenOffs:40,w0Offs:88,uartDateReg:1343004812,flashOffs:8192};default:return{regBase:-1,baseFuse:-1,macFuse:-1,usrOffs:-1,usr1Offs:-1,usr2Offs:-1,mosiDlenOffs:-1,misoDlenOffs:-1,w0Offs:-1,uartDateReg:-1,flashOffs:-1}}};class ji extends Error{constructor(e){super(e),this.name="SlipReadError"}}const Gi=async e=>{let t;return e==Li?t=await import("./esp32-BNIFdu1P.js"):e==zi?t=await import("./esp32s2-Bk4mqADi.js"):e==Di?t=await import("./esp32s3-Df3OUCOC.js"):e==Fi?t=await import("./esp8266-CQFcqJ_a.js"):e==Bi?t=await import("./esp32c2-BqxquOKw.js"):e==$i?t=await import("./esp32c3-BOOqe8me.js"):e==Ni?t=await import("./esp32c5-C8uE-s4t.js"):e==Mi?t=await import("./esp32c6-Cg5qYgg7.js"):e==Pi?t=await import("./esp32c61-CzCdsydk.js"):e==Ui?t=await import("./esp32h2-DZa_lpff.js"):e==Hi&&(t=await import("./esp32p4-DyGqUAeZ.js")),{...t,text:Ci(atob(t.text)),data:Ci(atob(t.data))}};function Ki(e){let t=e.length;for(;--t>=0;)e[t]=0}const Zi=256,Qi=286,Ji=30,en=15,tn=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]),nn=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]),on=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),rn=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),an=new Array(576);Ki(an);const dn=new Array(60);Ki(dn);const sn=new Array(512);Ki(sn);const ln=new Array(256);Ki(ln);const cn=new Array(29);Ki(cn);const mn=new Array(Ji);function hn(e,t,i,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}let pn,un,fn;function gn(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}Ki(mn);const bn=e=>e<256?sn[e]:sn[256+(e>>>7)],_n=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},xn=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,_n(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},vn=(e,t,i)=>{xn(e,i[2*t],i[2*t+1])},yn=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},wn=(e,t,i)=>{const n=new Array(16);let o,r,a=0;for(o=1;o<=en;o++)a=a+i[o-1]<<1,n[o]=a;for(r=0;r<=t;r++){let t=e[2*r+1];0!==t&&(e[2*r]=yn(n[t]++,t))}},kn=e=>{let t;for(t=0;t<Qi;t++)e.dyn_ltree[2*t]=0;for(t=0;t<Ji;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},En=e=>{e.bi_valid>8?_n(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},In=(e,t,i,n)=>{const o=2*t,r=2*i;return e[o]<e[r]||e[o]===e[r]&&n[t]<=n[i]},Cn=(e,t,i)=>{const n=e.heap[i];let o=i<<1;for(;o<=e.heap_len&&(o<e.heap_len&&In(t,e.heap[o+1],e.heap[o],e.depth)&&o++,!In(t,n,e.heap[o],e.depth));)e.heap[i]=e.heap[o],i=o,o<<=1;e.heap[i]=n},Tn=(e,t,i)=>{let n,o,r,a,d=0;if(0!==e.sym_next)do{n=255&e.pending_buf[e.sym_buf+d++],n+=(255&e.pending_buf[e.sym_buf+d++])<<8,o=e.pending_buf[e.sym_buf+d++],0===n?vn(e,o,t):(r=ln[o],vn(e,r+Zi+1,t),a=tn[r],0!==a&&(o-=cn[r],xn(e,o,a)),n--,r=bn(n),vn(e,r,i),a=nn[r],0!==a&&(n-=mn[r],xn(e,n,a)))}while(d<e.sym_next);vn(e,256,t)},Rn=(e,t)=>{const i=t.dyn_tree,n=t.stat_desc.static_tree,o=t.stat_desc.has_stree,r=t.stat_desc.elems;let a,d,s,l=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<r;a++)0!==i[2*a]?(e.heap[++e.heap_len]=l=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)s=e.heap[++e.heap_len]=l<2?++l:0,i[2*s]=1,e.depth[s]=0,e.opt_len--,o&&(e.static_len-=n[2*s+1]);for(t.max_code=l,a=e.heap_len>>1;a>=1;a--)Cn(e,i,a);s=r;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Cn(e,i,1),d=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=d,i[2*s]=i[2*a]+i[2*d],e.depth[s]=(e.depth[a]>=e.depth[d]?e.depth[a]:e.depth[d])+1,i[2*a+1]=i[2*d+1]=s,e.heap[1]=s++,Cn(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,n=t.max_code,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,s=t.stat_desc.max_length;let l,c,m,h,p,u,f=0;for(h=0;h<=en;h++)e.bl_count[h]=0;for(i[2*e.heap[e.heap_max]+1]=0,l=e.heap_max+1;l<573;l++)c=e.heap[l],h=i[2*i[2*c+1]+1]+1,h>s&&(h=s,f++),i[2*c+1]=h,c>n||(e.bl_count[h]++,p=0,c>=d&&(p=a[c-d]),u=i[2*c],e.opt_len+=u*(h+p),r&&(e.static_len+=u*(o[2*c+1]+p)));if(0!==f){do{for(h=s-1;0===e.bl_count[h];)h--;e.bl_count[h]--,e.bl_count[h+1]+=2,e.bl_count[s]--,f-=2}while(f>0);for(h=s;0!==h;h--)for(c=e.bl_count[h];0!==c;)m=e.heap[--l],m>n||(i[2*m+1]!==h&&(e.opt_len+=(h-i[2*m+1])*i[2*m],i[2*m+1]=h),c--)}})(e,t),wn(i,l,e.bl_count)},An=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),t[2*(i+1)+1]=65535,n=0;n<=i;n++)o=a,a=t[2*(n+1)+1],++d<s&&o===a||(d<l?e.bl_tree[2*o]+=d:0!==o?(o!==r&&e.bl_tree[2*o]++,e.bl_tree[32]++):d<=10?e.bl_tree[34]++:e.bl_tree[36]++,d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4))},Sn=(e,t,i)=>{let n,o,r=-1,a=t[1],d=0,s=7,l=4;for(0===a&&(s=138,l=3),n=0;n<=i;n++)if(o=a,a=t[2*(n+1)+1],!(++d<s&&o===a)){if(d<l)do{vn(e,o,e.bl_tree)}while(0!==--d);else 0!==o?(o!==r&&(vn(e,o,e.bl_tree),d--),vn(e,16,e.bl_tree),xn(e,d-3,2)):d<=10?(vn(e,17,e.bl_tree),xn(e,d-3,3)):(vn(e,18,e.bl_tree),xn(e,d-11,7));d=0,r=o,0===a?(s=138,l=3):o===a?(s=6,l=3):(s=7,l=4)}};let On=!1;const Fn=(e,t,i,n)=>{xn(e,0+(n?1:0),3),En(e),_n(e,i),_n(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var Ln=e=>{On||((()=>{let e,t,i,n,o;const r=new Array(16);for(i=0,n=0;n<28;n++)for(cn[n]=i,e=0;e<1<<tn[n];e++)ln[i++]=n;for(ln[i-1]=n,o=0,n=0;n<16;n++)for(mn[n]=o,e=0;e<1<<nn[n];e++)sn[o++]=n;for(o>>=7;n<Ji;n++)for(mn[n]=o<<7,e=0;e<1<<nn[n]-7;e++)sn[256+o++]=n;for(t=0;t<=en;t++)r[t]=0;for(e=0;e<=143;)an[2*e+1]=8,e++,r[8]++;for(;e<=255;)an[2*e+1]=9,e++,r[9]++;for(;e<=279;)an[2*e+1]=7,e++,r[7]++;for(;e<=287;)an[2*e+1]=8,e++,r[8]++;for(wn(an,287,r),e=0;e<Ji;e++)dn[2*e+1]=5,dn[2*e]=yn(e,5);pn=new hn(an,tn,257,Qi,en),un=new hn(dn,nn,0,Ji,en),fn=new hn(new Array(0),on,0,19,7)})(),On=!0),e.l_desc=new gn(e.dyn_ltree,pn),e.d_desc=new gn(e.dyn_dtree,un),e.bl_desc=new gn(e.bl_tree,fn),e.bi_buf=0,e.bi_valid=0,kn(e)},zn=(e,t,i,n)=>{let o,r,a=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<Zi;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),Rn(e,e.l_desc),Rn(e,e.d_desc),a=(e=>{let t;for(An(e,e.dyn_ltree,e.l_desc.max_code),An(e,e.dyn_dtree,e.d_desc.max_code),Rn(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*rn[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),o=e.opt_len+3+7>>>3,r=e.static_len+3+7>>>3,r<=o&&(o=r)):o=r=i+5,i+4<=o&&-1!==t?Fn(e,t,i,n):4===e.strategy||r===o?(xn(e,2+(n?1:0),3),Tn(e,an,dn)):(xn(e,4+(n?1:0),3),((e,t,i,n)=>{let o;for(xn(e,t-257,5),xn(e,i-1,5),xn(e,n-4,4),o=0;o<n;o++)xn(e,e.bl_tree[2*rn[o]+1],3);Sn(e,e.dyn_ltree,t-1),Sn(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,a+1),Tn(e,e.dyn_ltree,e.dyn_dtree)),kn(e),n&&En(e)},Dn=(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(ln[i]+Zi+1)]++,e.dyn_dtree[2*bn(t)]++),e.sym_next===e.sym_end),Bn=e=>{xn(e,2,3),vn(e,256,an),(e=>{16===e.bi_valid?(_n(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)},$n={_tr_init:Ln,_tr_stored_block:Fn,_tr_flush_block:zn,_tr_tally:Dn,_tr_align:Bn};var Nn=(e,t,i,n)=>{let o=65535&e,r=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{o=o+t[n++]|0,r=r+o|0}while(--a);o%=65521,r%=65521}return o|r<<16};const Mn=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var Pn=(e,t,i,n)=>{const o=Mn,r=n+i;e^=-1;for(let i=n;i<r;i++)e=e>>>8^o[255&(e^t[i])];return-1^e},Un={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"},Hn={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_OK:0,Z_STREAM_END:1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Vn,_tr_stored_block:Wn,_tr_flush_block:Xn,_tr_tally:qn,_tr_align:Yn}=$n,{Z_NO_FLUSH:jn,Z_PARTIAL_FLUSH:Gn,Z_FULL_FLUSH:Kn,Z_FINISH:Zn,Z_BLOCK:Qn,Z_OK:Jn,Z_STREAM_END:eo,Z_STREAM_ERROR:to,Z_DATA_ERROR:io,Z_BUF_ERROR:no,Z_DEFAULT_COMPRESSION:oo,Z_FILTERED:ro,Z_HUFFMAN_ONLY:ao,Z_RLE:so,Z_FIXED:lo,Z_DEFAULT_STRATEGY:co,Z_UNKNOWN:mo,Z_DEFLATED:ho}=Hn,po=258,uo=262,fo=42,go=113,bo=666,_o=(e,t)=>(e.msg=Un[t],t),xo=e=>2*e-(e>4?9:0),vo=e=>{let t=e.length;for(;--t>=0;)e[t]=0},yo=e=>{let t,i,n,o=e.w_size;t=e.hash_size,n=t;do{i=e.head[--n],e.head[n]=i>=o?i-o:0}while(--t);t=o,n=t;do{i=e.prev[--n],e.prev[n]=i>=o?i-o:0}while(--t)};let wo=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const ko=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+i),e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))},Eo=(e,t)=>{Xn(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ko(e.strm)},Io=(e,t)=>{e.pending_buf[e.pending++]=t},Co=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},To=(e,t,i,n)=>{let o=e.avail_in;return o>n&&(o=n),0===o?0:(e.avail_in-=o,t.set(e.input.subarray(e.next_in,e.next_in+o),i),1===e.state.wrap?e.adler=Nn(e.adler,t,o,i):2===e.state.wrap&&(e.adler=Pn(e.adler,t,o,i)),e.next_in+=o,e.total_in+=o,o)},Ro=(e,t)=>{let i,n,o=e.max_chain_length,r=e.strstart,a=e.prev_length,d=e.nice_match;const s=e.strstart>e.w_size-uo?e.strstart-(e.w_size-uo):0,l=e.window,c=e.w_mask,m=e.prev,h=e.strstart+po;let p=l[r+a-1],u=l[r+a];e.prev_length>=e.good_match&&(o>>=2),d>e.lookahead&&(d=e.lookahead);do{if(i=t,l[i+a]===u&&l[i+a-1]===p&&l[i]===l[r]&&l[++i]===l[r+1]){r+=2,i++;do{}while(l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&l[++r]===l[++i]&&r<h);if(n=po-(h-r),r=h-po,n>a){if(e.match_start=t,a=n,n>=d)break;p=l[r+a-1],u=l[r+a]}}}while((t=m[t&c])>s&&0!==--o);return a<=e.lookahead?a:e.lookahead},Ao=e=>{const t=e.w_size;let i,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-uo)&&(e.window.set(e.window.subarray(t,t+t-n),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),yo(e),n+=t),0===e.strm.avail_in)break;if(i=To(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=3)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=wo(e,e.ins_h,e.window[o+1]);e.insert&&(e.ins_h=wo(e,e.ins_h,e.window[o+3-1]),e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<uo&&0!==e.strm.avail_in)},So=(e,t)=>{let i,n,o,r=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,d=e.strm.avail_in;do{if(i=65535,o=e.bi_valid+42>>3,e.strm.avail_out<o)break;if(o=e.strm.avail_out-o,n=e.strstart-e.block_start,i>n+e.strm.avail_in&&(i=n+e.strm.avail_in),i>o&&(i=o),i<r&&(0===i&&t!==Zn||t===jn||i!==n+e.strm.avail_in))break;a=t===Zn&&i===n+e.strm.avail_in?1:0,Wn(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,ko(e.strm),n&&(n>i&&(n=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+n),e.strm.next_out),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n,e.block_start+=n,i-=n),i&&(To(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return d-=e.strm.avail_in,d&&(d>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=d&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-d,e.strm.next_in),e.strstart),e.strstart+=d,e.insert+=d>e.w_size-e.insert?e.w_size-e.insert:d),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==jn&&t!==Zn&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(o=e.window_size-e.strstart,e.strm.avail_in>o&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,o+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),o>e.strm.avail_in&&(o=e.strm.avail_in),o&&(To(e.strm,e.window,e.strstart,o),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.high_water<e.strstart&&(e.high_water=e.strstart),o=e.bi_valid+42>>3,o=e.pending_buf_size-o>65535?65535:e.pending_buf_size-o,r=o>e.w_size?e.w_size:o,n=e.strstart-e.block_start,(n>=r||(n||t===Zn)&&t!==jn&&0===e.strm.avail_in&&n<=o)&&(i=n>o?o:n,a=t===Zn&&0===e.strm.avail_in&&i===n?1:0,Wn(e,e.block_start,i,a),e.block_start+=i,ko(e.strm)),a?3:1)},Oo=(e,t)=>{let i,n;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i)),e.match_length>=3)if(n=qn(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=wo(e,e.ins_h,e.window[e.strstart+1]);else n=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(n&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2},Fo=(e,t)=>{let i,n,o;for(;;){if(e.lookahead<uo){if(Ao(e),e.lookahead<uo&&t===jn)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-uo&&(e.match_length=Ro(e,i),e.match_length<=5&&(e.strategy===ro||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=qn(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=wo(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,n&&(Eo(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(n=qn(e,0,e.window[e.strstart-1]),n&&Eo(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(n=qn(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2};function Lo(e,t,i,n,o){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=n,this.func=o}const zo=[new Lo(0,0,0,0,So),new Lo(4,4,8,4,Oo),new Lo(4,5,16,8,Oo),new Lo(4,6,32,32,Oo),new Lo(4,4,16,16,Fo),new Lo(8,16,32,32,Fo),new Lo(8,16,128,128,Fo),new Lo(8,32,128,256,Fo),new Lo(32,128,258,1024,Fo),new Lo(32,258,258,4096,Fo)];function Do(){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=ho,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),vo(this.dyn_ltree),vo(this.dyn_dtree),vo(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),vo(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),vo(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 Bo=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==fo&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==go&&t.status!==bo?1:0},$o=e=>{if(Bo(e))return _o(e,to);e.total_in=e.total_out=0,e.data_type=mo;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?fo:go,e.adler=2===t.wrap?0:1,t.last_flush=-2,Vn(t),Jn},No=e=>{const t=$o(e);return t===Jn&&(e=>{e.window_size=2*e.w_size,vo(e.head),e.max_lazy_match=zo[e.level].max_lazy,e.good_match=zo[e.level].good_length,e.nice_match=zo[e.level].nice_length,e.max_chain_length=zo[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})(e.state),t},Mo=(e,t,i,n,o,r)=>{if(!e)return to;let a=1;if(t===oo&&(t=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),o<1||o>9||i!==ho||n<8||n>15||t<0||t>9||r<0||r>lo||8===n&&1!==a)return _o(e,to);8===n&&(n=9);const d=new Do;return e.state=d,d.strm=e,d.status=fo,d.wrap=a,d.gzhead=null,d.w_bits=n,d.w_size=1<<d.w_bits,d.w_mask=d.w_size-1,d.hash_bits=o+7,d.hash_size=1<<d.hash_bits,d.hash_mask=d.hash_size-1,d.hash_shift=~~((d.hash_bits+3-1)/3),d.window=new Uint8Array(2*d.w_size),d.head=new Uint16Array(d.hash_size),d.prev=new Uint16Array(d.w_size),d.lit_bufsize=1<<o+6,d.pending_buf_size=4*d.lit_bufsize,d.pending_buf=new Uint8Array(d.pending_buf_size),d.sym_buf=d.lit_bufsize,d.sym_end=3*(d.lit_bufsize-1),d.level=t,d.strategy=r,d.method=i,No(e)};var Po=(e,t)=>{if(Bo(e)||t>Qn||t<0)return e?_o(e,to):to;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===bo&&t!==Zn)return _o(e,0===e.avail_out?no:to);const n=i.last_flush;if(i.last_flush=t,0!==i.pending){if(ko(e),0===e.avail_out)return i.last_flush=-1,Jn}else if(0===e.avail_in&&xo(t)<=xo(n)&&t!==Zn)return _o(e,no);if(i.status===bo&&0!==e.avail_in)return _o(e,no);if(i.status===fo&&0===i.wrap&&(i.status=go),i.status===fo){let t=ho+(i.w_bits-8<<4)<<8,n=-1;if(n=i.strategy>=ao||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=n<<6,0!==i.strstart&&(t|=32),t+=31-t%31,Co(i,t),0!==i.strstart&&(Co(i,e.adler>>>16),Co(i,65535&e.adler)),e.adler=1,i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(57===i.status)if(e.adler=0,Io(i,31),Io(i,139),Io(i,8),i.gzhead)Io(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Io(i,255&i.gzhead.time),Io(i,i.gzhead.time>>8&255),Io(i,i.gzhead.time>>16&255),Io(i,i.gzhead.time>>24&255),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Io(i,255&i.gzhead.extra.length),Io(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=Pn(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,0),Io(i,9===i.level?2:i.strategy>=ao||i.level<2?4:0),Io(i,3),i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn;if(69===i.status){if(i.gzhead.extra){let t=i.pending,n=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+n>i.pending_buf_size;){let o=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+o),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=o,ko(e),0!==i.pending)return i.last_flush=-1,Jn;t=0,n-=o}let o=new Uint8Array(i.gzhead.extra);i.pending_buf.set(o.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending+=n,i.gzhead.hcrc&&i.pending>t&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,n=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n)),ko(e),0!==i.pending)return i.last_flush=-1,Jn;n=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Io(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>n&&(e.adler=Pn(e.adler,i.pending_buf,i.pending-n,n))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(ko(e),0!==i.pending))return i.last_flush=-1,Jn;Io(i,255&e.adler),Io(i,e.adler>>8&255),e.adler=0}if(i.status=go,ko(e),0!==i.pending)return i.last_flush=-1,Jn}if(0!==e.avail_in||0!==i.lookahead||t!==jn&&i.status!==bo){let n=0===i.level?So(i,t):i.strategy===ao?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Ao(e),0===e.lookahead)){if(t===jn)return 1;break}if(e.match_length=0,i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===so?((e,t)=>{let i,n,o,r;const a=e.window;for(;;){if(e.lookahead<=po){if(Ao(e),e.lookahead<=po&&t===jn)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(o=e.strstart-1,n=a[o],n===a[++o]&&n===a[++o]&&n===a[++o])){r=e.strstart+po;do{}while(n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&n===a[++o]&&o<r);e.match_length=po-(r-o),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=qn(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=qn(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(Eo(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===Zn?(Eo(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Eo(e,!1),0===e.strm.avail_out)?1:2})(i,t):zo[i.level].func(i,t);if(3!==n&&4!==n||(i.status=bo),1===n||3===n)return 0===e.avail_out&&(i.last_flush=-1),Jn;if(2===n&&(t===Gn?Yn(i):t!==Qn&&(Wn(i,0,0,!1),t===Kn&&(vo(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ko(e),0===e.avail_out))return i.last_flush=-1,Jn}return t!==Zn?Jn:i.wrap<=0?eo:(2===i.wrap?(Io(i,255&e.adler),Io(i,e.adler>>8&255),Io(i,e.adler>>16&255),Io(i,e.adler>>24&255),Io(i,255&e.total_in),Io(i,e.total_in>>8&255),Io(i,e.total_in>>16&255),Io(i,e.total_in>>24&255)):(Co(i,e.adler>>>16),Co(i,65535&e.adler)),ko(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?Jn:eo)},Uo=(e,t)=>{let i=t.length;if(Bo(e))return to;const n=e.state,o=n.wrap;if(2===o||1===o&&n.status!==fo||n.lookahead)return to;if(1===o&&(e.adler=Nn(e.adler,t,i,0)),n.wrap=0,i>=n.w_size){0===o&&(vo(n.head),n.strstart=0,n.block_start=0,n.insert=0);let e=new Uint8Array(n.w_size);e.set(t.subarray(i-n.w_size,i),0),t=e,i=n.w_size}const r=e.avail_in,a=e.next_in,d=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Ao(n);n.lookahead>=3;){let e=n.strstart,t=n.lookahead-2;do{n.ins_h=wo(n,n.ins_h,n.window[e+3-1]),n.prev[e&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=e,e++}while(--t);n.strstart=e,n.lookahead=2,Ao(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,e.next_in=a,e.input=d,e.avail_in=r,n.wrap=o,Jn},Ho={deflateInit:(e,t)=>Mo(e,t,ho,15,8,co),deflateInit2:Mo,deflateReset:No,deflateResetKeep:$o,deflateSetHeader:(e,t)=>Bo(e)||2!==e.state.wrap?to:(e.state.gzhead=t,Jn),deflate:Po,deflateEnd:e=>{if(Bo(e))return to;const t=e.state.status;return e.state=null,t===go?_o(e,io):Jn},deflateSetDictionary:Uo,deflateInfo:"pako deflate (from Nodeca project)"};const Vo=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Wo=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)Vo(i,t)&&(e[t]=i[t])}}return e},Xo=e=>{let t=0;for(let i=0,n=e.length;i<n;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,n=0,o=e.length;t<o;t++){let o=e[t];i.set(o,n),n+=o.length}return i};let qo=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qo=!1}const Yo=new Uint8Array(256);for(let e=0;e<256;e++)Yo[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Yo[254]=Yo[254]=1;var jo=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,n,o,r,a=e.length,d=0;for(o=0;o<a;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),d+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(d),r=0,o=0;r<d;o++)i=e.charCodeAt(o),55296==(64512&i)&&o+1<a&&(n=e.charCodeAt(o+1),56320==(64512&n)&&(i=65536+(i-55296<<10)+(n-56320),o++)),i<128?t[r++]=i:i<2048?(t[r++]=192|i>>>6,t[r++]=128|63&i):i<65536?(t[r++]=224|i>>>12,t[r++]=128|i>>>6&63,t[r++]=128|63&i):(t[r++]=240|i>>>18,t[r++]=128|i>>>12&63,t[r++]=128|i>>>6&63,t[r++]=128|63&i);return t};var Go=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 Ko=Object.prototype.toString,{Z_NO_FLUSH:Zo,Z_SYNC_FLUSH:Qo,Z_FULL_FLUSH:Jo,Z_FINISH:er,Z_OK:tr,Z_STREAM_END:ir,Z_DEFAULT_COMPRESSION:nr,Z_DEFAULT_STRATEGY:or,Z_DEFLATED:rr}=Hn;function ar(e){this.options=Wo({level:nr,method:rr,chunkSize:16384,windowBits:15,memLevel:8,strategy:or},e||{});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 Go,this.strm.avail_out=0;let i=Ho.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==tr)throw new Error(Un[i]);if(t.header&&Ho.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?jo(t.dictionary):"[object ArrayBuffer]"===Ko.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ho.deflateSetDictionary(this.strm,e),i!==tr)throw new Error(Un[i]);this._dict_set=!0}}ar.prototype.push=function(e,t){const i=this.strm,n=this.options.chunkSize;let o,r;if(this.ended)return!1;for(r=t===~~t?t:!0===t?er:Zo,"string"==typeof e?i.input=jo(e):"[object ArrayBuffer]"===Ko.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(n),i.next_out=0,i.avail_out=n),(r===Qo||r===Jo)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(o=Ho.deflate(i,r),o===ir)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),o=Ho.deflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===tr;if(0!==i.avail_out){if(r>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},ar.prototype.onData=function(e){this.chunks.push(e)},ar.prototype.onEnd=function(e){e===tr&&(this.result=Xo(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var dr={deflate:function(e,t){const i=new ar(t);if(i.push(e,!0),i.err)throw i.msg||Un[i.err];return i.result}};const{deflate:sr}=dr;var lr=sr;const cr={b:{u:DataView.prototype.getInt8,p:DataView.prototype.setInt8,bytes:1},B:{u:DataView.prototype.getUint8,p:DataView.prototype.setUint8,bytes:1},h:{u:DataView.prototype.getInt16,p:DataView.prototype.setInt16,bytes:2},H:{u:DataView.prototype.getUint16,p:DataView.prototype.setUint16,bytes:2},i:{u:DataView.prototype.getInt32,p:DataView.prototype.setInt32,bytes:4},I:{u:DataView.prototype.getUint32,p:DataView.prototype.setUint32,bytes:4},q:{u:DataView.prototype.getInt64,p:DataView.prototype.setInt64,bytes:8},Q:{u:DataView.prototype.getUint64,p:DataView.prototype.setUint64,bytes:8}},mr=(e,...t)=>{let i=0;if(e.replace(/[<>]/,"").length!=t.length)throw"Pack format to Argument count mismatch";let n=[],o=!0;for(let n=0;n<e.length;n++)"<"==e[n]?o=!0:">"==e[n]?o=!1:(r(e[n],t[i]),i++);function r(e,t){if(!(e in cr))throw"Unhandled character '"+e+"' in pack format";let i=cr[e].bytes,r=new DataView(new ArrayBuffer(i));cr[e].p.bind(r)(0,t,o);for(let e=0;e<i;e++)n.push(r.getUint8(e))}return n},hr=(e,t)=>{let i=0,n=[],o=!0;for(let t of e)"<"==t?o=!0:">"==t?o=!1:r(t);function r(e){if(!(e in cr))throw"Unhandled character '"+e+"' in unpack format";let r=cr[e].bytes,a=new DataView(new ArrayBuffer(r));for(let e=0;e<r;e++)a.setUint8(e,255&t[i+e]);let d=cr[e].u.bind(a);n.push(d(0,o)),i+=r}return n};class pr extends EventTarget{constructor(e,t,i){super(),this.port=e,this.logger=t,this._parent=i,this.chipName=null,this._efuses=new Array(4).fill(0),this._flashsize=4194304,this.debug=!1,this.IS_STUB=!1,this.connected=!0,this.flashSize=null,this.state_DTR=!1}get _inputBuffer(){return this._parent?this._parent._inputBuffer:this.__inputBuffer}async initialize(){await this.hardReset(!0),this._parent||(this.__inputBuffer=[],this.readLoop()),await this.sync();let e=await this.readRegister(1073745920),t=Vi[e>>>0];if(void 0===t)throw new Error(`Unknown Chip: Hex: ${Ri(e>>>0,8).toLowerCase()} Number: ${e}`);this.chipName=t.name,this.chipFamily=t.family;let i=Yi(this.getChipFamily()).macFuse;for(let e=0;e<4;e++)this._efuses[e]=await this.readRegister(i+4*e);this.logger.log(`Chip type ${this.chipName}`)}async readLoop(){this.debug&&this.logger.debug("Starting read loop"),this._reader=this.port.readable.getReader();try{for(;;){const{value:e,done:t}=await this._reader.read();if(t){this._reader.releaseLock();break}e&&0!==e.length&&this._inputBuffer.push(...Array.from(e))}}catch(e){console.error("Read loop got disconnected")}this.connected=!1,this.dispatchEvent(new Event("disconnect")),this.logger.debug("Finished read loop")}sleep(e=100){return new Promise(t=>setTimeout(t,e))}async setRTS(e){await this.port.setSignals({requestToSend:e}),await this.setDTR(this.state_DTR)}async setDTR(e){this.state_DTR=e,await this.port.setSignals({dataTerminalReady:e})}async hardReset(e=!1){this.logger.log("Try hard reset."),e?4097===this.port.getInfo().usbProductId?(await this.setDTR(!1),await this.setRTS(!1),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(100),await this.setRTS(!0),await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!1),await this.setRTS(!1)):(await this.setDTR(!1),await this.setRTS(!0),await this.sleep(100),await this.setDTR(!0),await this.setRTS(!1),await this.sleep(50),await this.setDTR(!1)):(await this.setRTS(!0),await this.sleep(100),await this.setRTS(!1)),await new Promise(e=>setTimeout(e,1e3))}macAddr(){let e,t=new Array(6).fill(0),i=this._efuses[0],n=this._efuses[1],o=this._efuses[2],r=this._efuses[3];if(this.chipFamily==Fi){if(0!=r)e=[r>>16&255,r>>8&255,255&r];else if(n>>16&255){if(1!=(n>>16&255))throw new Error("Couldnt determine OUI");e=[172,208,116]}else e=[24,254,52];t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=n>>8&255,t[4]=255&n,t[5]=i>>24&255}else if(this.chipFamily==Li)t[0]=o>>8&255,t[1]=255&o,t[2]=n>>24&255,t[3]=n>>16&255,t[4]=n>>8&255,t[5]=255&n;else{if(this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi)throw new Error("Unknown chip family");t[0]=n>>8&255,t[1]=255&n,t[2]=i>>24&255,t[3]=i>>16&255,t[4]=i>>8&255,t[5]=255&i}return t}async readRegister(e){this.debug&&this.logger.debug("Reading from Register "+Ri(e,8));let t=mr("<I",e);await this.sendCommand(10,t);let[i,n]=await this.getResponse(10);return i}async checkCommand(e,t,i=0,n=3e3){n=Math.min(n,12e5),await this.sendCommand(e,t,i);let[o,r]=await this.getResponse(e,n);if(null===r)throw new Error("Didn't get enough status bytes");let a=0;if(this.IS_STUB||this.chipFamily==Fi?a=2:[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)?a=4:[2,4].includes(r.length)&&(a=r.length),r.length<a)throw new Error("Didn't get enough status bytes");let d=r.slice(-a,r.length);if(r=r.slice(0,-a),this.debug&&(this.logger.debug("status",d),this.logger.debug("value",o),this.logger.debug("data",r)),1==d[0])throw 5==d[1]?new Error("Invalid (unsupported) command "+Ri(e)):new Error("Command failure error code "+Ri(d[1]));return[o,r]}async sendCommand(e,t,i=0){let n=(e=>{let t=[192];for(let i of e)219==i?t=t.concat([219,221]):192==i?t=t.concat([219,220]):t.push(i);return t.push(192),t})([...mr("<BBHI",0,e,t.length,i),...t]);this.debug&&this.logger.debug(`Writing ${n.length} byte${1==n.length?"":"s"}:`,n),await this.writeToStream(n)}async readPacket(e){let t=null,i=!1,n=[];for(;;){let o=Date.now();for(n=[];Date.now()-o<e;){if(this._inputBuffer.length>0){n.push(this._inputBuffer.shift());break}await Ai(10)}if(0==n.length){throw new ji("Timed out waiting for packet "+(null===t?"header":"content"))}this.debug&&this.logger.debug("Read "+n.length+" bytes: "+Ti(n));for(let e of n)if(null===t){if(192!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid head of packet ("+Ri(e)+")");t=[]}else if(i)if(i=!1,220==e)t.push(192);else{if(221!=e)throw this.debug&&(this.logger.debug("Read invalid data: "+Ti(n)),this.logger.debug("Remaining data in serial buffer: "+Ti(this._inputBuffer))),new ji("Invalid SLIP escape (0xdb, "+Ri(e)+")");t.push(219)}else if(219==e)i=!0;else{if(192==e)return this.debug&&this.logger.debug("Received full packet: "+Ti(t)),t;t.push(e)}}throw new ji("Invalid state")}async getResponse(e,t=3e3){for(let i=0;i<100;i++){const i=await this.readPacket(t);if(i.length<8)continue;const[n,o,r,a]=hr("<BBHI",i.slice(0,8));if(1!=n)continue;const d=i.slice(8);if(null==e||o==e)return[a,d];if(0!=d[0]&&5==d[1])throw this._inputBuffer.length=0,new Error(`Invalid (unsupported) command ${Ri(e)}`)}throw"Response doesn't match request"}checksum(e,t=239){for(let i of e)t^=i;return t}async setBaudrate(e){if(this.chipFamily==Fi)throw new Error("Changing baud rate is not supported on the ESP8266");this.logger.log("Attempting to change baud rate to "+e+"...");try{let t=mr("<II",e,this.IS_STUB?115200:0);await this.checkCommand(15,t)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: No response from set baud rate command.`)}this._parent?await this._parent.reconfigurePort(e):await this.reconfigurePort(e)}async reconfigurePort(e){var t;try{await(null===(t=this._reader)||void 0===t?void 0:t.cancel()),await this.port.close(),await this.port.open({baudRate:e}),this.readLoop(),this.logger.log(`Changed baud rate to ${e}`)}catch(t){throw console.error(t),new Error(`Unable to change the baud rate to ${e}: ${t}`)}}async sync(){for(let e=0;e<5;e++){if(this._inputBuffer.length=0,await this._sync())return await Ai(100),!0;await Ai(100)}throw new Error("Couldn't sync to ESP. Try resetting.")}async _sync(){await this.sendCommand(8,Oi);for(let e=0;e<8;e++)try{let[e,t]=await this.getResponse(8,100);if(t.length>1&&0==t[0]&&0==t[1])return!0}catch(e){}return!1}getFlashWriteSize(){return this.IS_STUB?16384:1024}async flashData(e,t,i=0,n=!1){if(e.byteLength>=8){var o=Array.from(new Uint8Array(e,0,4));let t=o[0],i=o[2],n=o[3];this.logger.log(`Image header, Magic=${Ri(t)}, FlashMode=${Ri(i)}, FlashSizeFreq=${Ri(n)}`)}let r,a=e.byteLength,d=0,s=Wi;n?(r=lr(new Uint8Array(e),{level:9}).buffer,d=r.byteLength,this.logger.log(`Writing data with filesize: ${a}. Compressed Size: ${d}`),s=await this.flashDeflBegin(a,d,i)):(this.logger.log(`Writing data with filesize: ${a}`),r=e,await this.flashBegin(a,i));let l=[],c=0,m=0,h=0,p=Date.now(),u=this.getFlashWriteSize(),f=n?d:a;for(;f-h>0;)this.debug&&this.logger.log(`Writing at ${Ri(i+c*u,8)} `),f-h>=u?l=Array.from(new Uint8Array(r,h,u)):(l=Array.from(new Uint8Array(r,h,f-h)),n||(l=l.concat(new Array(u-l.length).fill(255)))),n?await this.flashDeflBlock(l,c,s):await this.flashBlock(l,c),c+=1,m+=n?Math.round(l.length*a/d):l.length,h+=u,t(Math.min(m,a),a);this.logger.log("Took "+(Date.now()-p)+"ms to write "+f+" bytes"),this.IS_STUB&&(await this.flashBegin(0,0),n?await this.flashDeflFinish():await this.flashFinish())}async flashBlock(e,t,i=3e3){await this.checkCommand(3,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashDeflBlock(e,t,i=3e3){await this.checkCommand(17,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e),i)}async flashBegin(e=0,t=0,i=!1){let n,o,r=this.getFlashWriteSize();!this.IS_STUB&&[Li,zi,Di,Bi,$i,Ni,Mi,Pi,Ui,Hi].includes(this.chipFamily)&&await this.checkCommand(13,new Array(8).fill(0));let a,d=Math.floor((e+r-1)/r);n=this.chipFamily==Fi?this.getEraseSize(t,e):e,a=this.IS_STUB?Wi:qi(3e4,e);let s=Date.now();return o=mr("<IIII",n,d,r,t),this.chipFamily!=Li&&this.chipFamily!=zi&&this.chipFamily!=Di&&this.chipFamily!=Bi&&this.chipFamily!=$i&&this.chipFamily!=Ni&&this.chipFamily!=Mi&&this.chipFamily!=Pi&&this.chipFamily!=Ui&&this.chipFamily!=Hi||(o=o.concat(mr("<I",i?1:0))),this.logger.log("Erase size "+n+", blocks "+d+", block size "+Ri(r,4)+", offset "+Ri(t,4)+", encrypted "+(i?"yes":"no")),await this.checkCommand(2,o,0,a),0==e||this.IS_STUB||this.logger.log("Took "+(Date.now()-s)+"ms to erase "+d+" bytes"),d}async flashDeflBegin(e=0,t=0,i=0,n=!1){let o,r=this.getFlashWriteSize(),a=Math.floor((t+r-1)/r),d=Math.floor((e+r-1)/r),s=0,l=0;return this.IS_STUB?(s=e,l=qi(3e4,s)):(s=d*r,l=Wi),o=mr("<IIII",s,a,r,i),await this.checkCommand(16,o,0,l),l}async flashFinish(){let e=mr("<I",1);await this.checkCommand(4,e)}async flashDeflFinish(){let e=mr("<I",1);await this.checkCommand(18,e)}getBootloaderOffset(){return Yi(this.getChipFamily()).flashOffs}async flashId(){return await this.runSpiFlashCommand(159,[],24)}getChipFamily(){return this._parent?this._parent.chipFamily:this.chipFamily}async writeRegister(e,t,i=4294967295,n=0,o=0){let r=mr("<IIII",e,t,i,n);o>0&&r.concat(mr("<IIII",Yi(this.getChipFamily()).uartDateReg,0,0,o)),await this.checkCommand(9,r)}async setDataLengths(e,t,i){if(-1!=e.mosiDlenOffs){let n=e.regBase+e.mosiDlenOffs,o=e.regBase+e.misoDlenOffs;t>0&&await this.writeRegister(n,t-1),i>0&&await this.writeRegister(o,i-1)}else{let n=e.regBase+e.usr1Offs,o=(0==i?0:i-1)<<8|(0==t?0:t-1)<<17;await this.writeRegister(n,o)}}async waitDone(e,t){for(let i=0;i<10;i++){if(0==(await this.readRegister(e)&t))return}throw Error("SPI command did not complete in time")}async runSpiFlashCommand(e,t,i=0){let n=Yi(this.getChipFamily()),o=n.regBase,r=o,a=o+n.usrOffs,d=o+n.usr2Offs,s=o+n.w0Offs,l=1<<18;if(i>32)throw new Error("Reading more than 32 bits back from a SPI flash operation is unsupported");if(t.length>64)throw new Error("Writing more than 64 bytes of data with one SPI command is unsupported");let c=8*t.length,m=await this.readRegister(a),h=await this.readRegister(d),p=1<<31;if(i>0&&(p|=268435456),c>0&&(p|=134217728),await this.setDataLengths(n,c,i),await this.writeRegister(a,p),await this.writeRegister(d,7<<28|e),0==c)await this.writeRegister(s,0);else{t.concat(new Array(t.length%4).fill(0));let e=hr("I".repeat(Math.floor(t.length/4)),t),i=s;this.logger.debug(`Words Length: ${e.length}`);for(const t of e)this.logger.debug(`Writing word ${Ri(t)} to register offset ${Ri(i)}`),await this.writeRegister(i,t),i+=4}await this.writeRegister(r,l),await this.waitDone(r,l);let u=await this.readRegister(s);return await this.writeRegister(a,m),await this.writeRegister(d,h),u}async detectFlashSize(){this.logger.log("Detecting Flash Size");let e=await this.flashId(),t=255&e,i=e>>16&255;this.logger.log(`FlashId: ${Ri(e)}`),this.logger.log(`Flash Manufacturer: ${t.toString(16)}`),this.logger.log(`Flash Device: ${(e>>8&255).toString(16)}${i.toString(16)}`),this.flashSize=Si[i],this.logger.log(`Auto-detected Flash size: ${this.flashSize}`)}getEraseSize(e,t){let i=4096,n=Math.floor((t+i-1)/i),o=16-Math.floor(e/i)%16;return n<o&&(o=n),n<2*o?Math.floor((n+1)/2*i):(n-o)*i}async memBegin(e,t,i,n){return await this.checkCommand(5,mr("<IIII",e,t,i,n))}async memBlock(e,t){return await this.checkCommand(7,mr("<IIII",e.length,t,0,0).concat(e),this.checksum(e))}async memFinish(e=0){let t=this.IS_STUB?Wi:500,i=mr("<II",0==e?1:0,e);return await this.checkCommand(6,i,0,t)}async runStub(){const e=await Gi(this.chipFamily);let t,i=2048;this.logger.log("Uploading stub...");for(let t of["text","data"])if(Object.keys(e).includes(t)){let n=e[t+"_start"],o=e[t].length,r=Math.floor((o+i-1)/i);await this.memBegin(o,r,i,n);for(let n of Array(r).keys()){let r=n*i,a=r+i;a>o&&(a=o),await this.memBlock(e[t].slice(r,a),n)}}this.logger.log("Running stub..."),await this.memFinish(e.entry);const n=await this.readPacket(500);if(t=String.fromCharCode(...n),"OHAI"!=t)throw new Error("Failed to start stub. Unexpected response: "+t);this.logger.log("Stub is now running...");const o=new ur(this.port,this.logger,this);return await o.detectFlashSize(),o}async writeToStream(e){const t=this.port.writable.getWriter();await t.write(new Uint8Array(e));try{t.releaseLock()}catch(e){console.error("Ignoring release lock error",e)}}async disconnect(){this._parent?await this._parent.disconnect():(await this.port.writable.getWriter().close(),await new Promise(e=>{this._reader||e(void 0),this.addEventListener("disconnect",e,{once:!0}),this._reader.cancel()}),this.connected=!1)}}class ur extends pr{constructor(){super(...arguments),this.IS_STUB=!0}async memBegin(e,t,i,n){let o=await Gi(this.chipFamily),r=n,a=n+e;console.log(r,a),console.log(o.data_start,o.data.length,o.text_start,o.text.length);for(let[e,t]of[[o.data_start,o.data_start+o.data.length],[o.text_start,o.text_start+o.text.length]])if(r<t&&a>e)throw new Error("Software loader is resident at "+Ri(e,8)+"-"+Ri(t,8)+". Can't load binary at overlapping address range "+Ri(r,8)+"-"+Ri(a,8)+". Try changing the binary loading address.")}async eraseFlash(){await this.checkCommand(208,[],0,Xi)}}const fr=async(e,t,i,n,o,r)=>{let a,d,s;const l=t=>e({...t,manifest:a,build:d,chipFamily:s});var c=null,m="";try{c=JSON.parse(n)}catch{m=new URL(n,location.toString()).toString(),c=fetch(m).then(e=>e.json())}const h=new pr(t,i);window.esploader=h,l({state:"initializing",message:"Initializing...",details:{done:!1}});try{await h.initialize()}catch(e){return i.error(e),l({state:"error",message:"Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.",details:{error:"failed_initialize",details:e}}),void(h.connected&&await h.disconnect())}s=(e=>{switch(e.chipFamily){case Li:return"ESP32";case zi:return"ESP32-S2";case Di:return"ESP32-S3";case Bi:return"ESP32-C2";case $i:return"ESP32-C3";case Ni:return"ESP32-C5";case Mi:return"ESP32-C6";case Pi:return"ESP32-C61";case Ui:return"ESP32-H2";case Hi:return"ESP32-P4";case Fi:return"ESP8266";default:return"Unknown Chip"}})(h),l({state:"initializing",message:`Initialized. Found ${s}`,details:{done:!0}}),l({state:"manifest",message:"Fetching manifest...",details:{done:!1}});try{a=await c}catch(e){return l({state:"error",message:`Unable to fetch manifest: ${e}`,details:{error:"fetch_manifest_failed",details:e}}),void await h.disconnect()}if(d=a.builds.find(e=>e.chipFamily===s),l({state:"manifest",message:`Found manifest for ${a.name}`,details:{done:!0}}),!d)return l({state:"error",message:`Your ${s} board is not supported.`,details:{error:"not_supported",details:s}}),void await h.disconnect();l({state:"preparing",message:"Preparing installation...",details:{done:!1}});const p=d.parts.map(async e=>{if(0==r.length){const t=new URL(e.path,m).toString(),i=await fetch(t);if(!i.ok)throw new Error(`Downlading firmware ${e.path} failed: ${i.status}`);return i.arrayBuffer()}return r}),u=await h.runStub(),f=[];let g=0;for(const e of p)try{const t=await e;f.push(t instanceof ArrayBuffer?new Uint8Array(t):t),g+=t.byteLength}catch(e){return l({state:"error",message:e.message,details:{error:"failed_firmware_download",details:e.message}}),void await h.disconnect()}l({state:"preparing",message:"Installation prepared",details:{done:!0}}),o&&(l({state:"erasing",message:"Erasing device...",details:{done:!1}}),await u.eraseFlash(),l({state:"erasing",message:"Device erased",details:{done:!0}}));let b=0;l({state:"writing",message:`Writing progress: ${b}%`,details:{bytesTotal:g,bytesWritten:0,percentage:b}});let _=0;for(const e of d.parts){const t=f.shift(),i=t instanceof Uint8Array?new Uint8Array(t).buffer:t;try{await u.flashData(i,e=>{const t=Math.floor((_+e)/g*100);t!==b&&(b=t,l({state:"writing",message:`Writing progress: ${t}%`,details:{bytesTotal:g,bytesWritten:_+e,percentage:t}}))},e.offset,!0)}catch(e){return l({state:"error",message:e.message,details:{error:"write_failed",details:e}}),void await h.disconnect()}_+=t.byteLength}l({state:"writing",message:"Writing complete",details:{bytesTotal:g,bytesWritten:_,percentage:100}}),await V(100),console.log("DISCONNECT"),await h.disconnect(),console.log("HARD RESET"),await h.hardReset(),l({state:"finished",message:"All done!"})},gr=(e,t="")=>{const i=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(i);((e,t="")=>{const i=document.createElement("a");i.target="_blank",i.href=e,i.download=t,document.body.appendChild(i),i.dispatchEvent(new MouseEvent("click")),document.body.removeChild(i)})(n,t),setTimeout(()=>URL.revokeObjectURL(n),0)};class br extends x{constructor(){super(...arguments),this.logger=console,this._state="DASHBOARD",this._installErase=!1,this._installConfirmed=!1,this._provisionForce=!1,this._wasProvisioned=!1,this._busy=!1,this._selectedSsid=-1,this._handleDisconnect=()=>{this._state="ERROR",this._error="Disconnected"}}render(){if(!this.port)return m``;let e,t,i=!1,n=!1;return void 0===this._client&&"INSTALL"!==this._state&&"LOGS"!==this._state?this._error?[e,t,i]=this._renderError(this._error):(t=this._renderProgress("Connecting"),i=!0):"INSTALL"===this._state?[e,t,i,n]=this._renderInstall():"ASK_ERASE"===this._state?[e,t]=this._renderAskErase():"ERROR"===this._state?[e,t,i]=this._renderError(this._error):"DASHBOARD"===this._state?[e,t,i,n]=this._client?this._renderDashboard():this._renderDashboardNoImprov():"PROVISION"===this._state?[e,t,i]=this._renderProvision():"LOGS"===this._state&&([e,t,i]=this._renderLogs()),m`
418
418
  <ewt-dialog
419
419
  open
420
420
  .heading=${e}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tasmota-esp-web-tools",
3
- "version": "8.1.13",
3
+ "version": "8.1.14",
4
4
  "description": "Web tools for ESP devices",
5
5
  "main": "dist/install-button.js",
6
6
  "repository": "https://github.com/Jason2866/esp-web-tools",
package/src/const.ts CHANGED
@@ -12,7 +12,9 @@ export interface Build {
12
12
  | "ESP32-S3"
13
13
  | "ESP32-C2"
14
14
  | "ESP32-C3"
15
+ | "ESP32-C5"
15
16
  | "ESP32-C6"
17
+ | "ESP32-C61"
16
18
  | "ESP32-H2"
17
19
  | "ESP32-P4";
18
20
  parts: {
@@ -4,7 +4,9 @@ import {
4
4
  CHIP_FAMILY_ESP32S3,
5
5
  CHIP_FAMILY_ESP32C2,
6
6
  CHIP_FAMILY_ESP32C3,
7
+ CHIP_FAMILY_ESP32C5,
7
8
  CHIP_FAMILY_ESP32C6,
9
+ CHIP_FAMILY_ESP32C61,
8
10
  CHIP_FAMILY_ESP32H2,
9
11
  CHIP_FAMILY_ESP32P4,
10
12
  CHIP_FAMILY_ESP8266,
@@ -26,8 +28,12 @@ export const getChipFamilyName = (
26
28
  return "ESP32-C2";
27
29
  case CHIP_FAMILY_ESP32C3:
28
30
  return "ESP32-C3";
31
+ case CHIP_FAMILY_ESP32C5:
32
+ return "ESP32-C5";
29
33
  case CHIP_FAMILY_ESP32C6:
30
34
  return "ESP32-C6";
35
+ case CHIP_FAMILY_ESP32C61:
36
+ return "ESP32-C61";
31
37
  case CHIP_FAMILY_ESP32H2:
32
38
  return "ESP32-H2";
33
39
  case CHIP_FAMILY_ESP32P4: