ac6502 1.14.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,7 +33,7 @@ This emulator provides a complete software implementation of a 65C02-based compu
33
33
  - **I/O Peripherals**
34
34
  - **Serial Card (ACIA)**: 6551 UART communication with configurable baud rate, parity, data/stop bits
35
35
  - **Storage Card**: Compact Flash 8-bit IDE mode persistent storage emulation
36
- - **RTC Card**: DS1511Y+ real-time clock emulation with IRQ/NMI support
36
+ - **RTC Card**: DS1511Y+ real-time clock emulation with IRQ/NMI support and persistent NVRAM
37
37
  - **GPIO Card (VIA)**: 6522 VIA (Versatile Interface Adapter) emulation
38
38
  - Two 8-bit bidirectional I/O ports
39
39
  - Two 16-bit timers with interrupts
@@ -120,6 +120,7 @@ ac6502 [options]
120
120
  - `-a, --parity <type>` - Serial parity: none, even, odd (default: none)
121
121
  - `-d, --databits <bits>` - Serial data bits: 5, 6, 7, 8 (default: 8)
122
122
  - `-t, --stopbits <bits>` - Serial stop bits: 1, 1.5, 2 (default: 1)
123
+ - `-n, --nvram <path>` - Set NVRAM file path for DS1511Y+ RTC persistence
123
124
  - `-S, --storage <path>` - Set storage file path for Compact Flash card persistence
124
125
  - `-v, --version` - Output the current emulator version
125
126
  - `-h, --help` - Output help / options
@@ -150,6 +151,12 @@ Set custom CPU frequency and storage:
150
151
  ac6502 --freq 2000000 --storage ./disk.img --rom /path/to/rom.bin --cart /path/to/cart.bin
151
152
  ```
152
153
 
154
+ Enable persistent NVRAM for the RTC:
155
+
156
+ ```bash
157
+ ac6502 --rom /path/to/rom.bin --nvram ./nvram.bin
158
+ ```
159
+
153
160
  ## Architecture
154
161
 
155
162
  ### System Configuration
@@ -101,4 +101,12 @@ export declare class RTC implements IO {
101
101
  write(address: number, data: number): void;
102
102
  tick(frequency: number): number;
103
103
  reset(coldStart: boolean): void;
104
+ /**
105
+ * Load NVRAM data from a Uint8Array (256 bytes extended RAM)
106
+ */
107
+ loadNVRAM(data: Uint8Array | ArrayBuffer | number[] | null): void;
108
+ /**
109
+ * Get NVRAM data as Uint8Array for saving
110
+ */
111
+ getNVRAM(): Uint8Array;
104
112
  }
@@ -474,6 +474,34 @@ class RTC {
474
474
  this.userSyncNeeded = false;
475
475
  }
476
476
  }
477
+ /**
478
+ * Load NVRAM data from a Uint8Array (256 bytes extended RAM)
479
+ */
480
+ loadNVRAM(data) {
481
+ if (!data)
482
+ return;
483
+ let uint8Data;
484
+ if (data instanceof ArrayBuffer) {
485
+ uint8Data = new Uint8Array(data);
486
+ }
487
+ else if (data instanceof Uint8Array) {
488
+ uint8Data = data;
489
+ }
490
+ else {
491
+ uint8Data = new Uint8Array(data);
492
+ }
493
+ if (uint8Data.length !== 256) {
494
+ console.warn(`Warning: NVRAM data size (${uint8Data.length} bytes) does not match expected 256 bytes. NVRAM will remain empty.`);
495
+ return;
496
+ }
497
+ this.ramData.set(uint8Data);
498
+ }
499
+ /**
500
+ * Get NVRAM data as Uint8Array for saving
501
+ */
502
+ getNVRAM() {
503
+ return new Uint8Array(this.ramData);
504
+ }
477
505
  }
478
506
  exports.RTC = RTC;
479
507
  //# sourceMappingURL=RTC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RTC.js","sourceRoot":"","sources":["../../../src/components/IO/RTC.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,GAAG;IAkDd;QAhDA,+BAA+B;QACvB,gBAAW,GAAW,CAAC,CAAA,CAAQ,OAAO;QACtC,gBAAW,GAAW,CAAC,CAAA,CAAQ,OAAO;QACtC,cAAS,GAAW,CAAC,CAAA,CAAU,OAAO;QACtC,kBAAa,GAAW,CAAC,CAAA,CAAM,kBAAkB;QACjD,aAAQ,GAAW,CAAC,CAAA,CAAW,OAAO;QACtC,cAAS,GAAW,CAAC,CAAA,CAAU,kBAAkB;QACjD,iBAAY,GAAW,CAAC,CAAA,CAAO,8BAA8B;QAC7D,aAAQ,GAAW,CAAC,CAAA,CAAW,eAAe;QAC9C,gBAAW,GAAW,EAAE,CAAA,CAAO,eAAe;QAEtD,iCAAiC;QACzB,oBAAe,GAAW,CAAC,CAAA;QAC3B,oBAAe,GAAW,CAAC,CAAA;QAC3B,kBAAa,GAAW,CAAC,CAAA;QACzB,sBAAiB,GAAW,CAAC,CAAA;QAC7B,iBAAY,GAAW,CAAC,CAAA;QACxB,kBAAa,GAAW,CAAC,CAAA;QACzB,iBAAY,GAAW,CAAC,CAAA;QACxB,oBAAe,GAAW,EAAE,CAAA;QAEpC,kBAAkB;QACV,iBAAY,GAAW,CAAC,CAAA,CAAG,+BAA+B;QAC1D,iBAAY,GAAW,CAAC,CAAA,CAAG,+BAA+B;QAC1D,eAAU,GAAW,CAAC,CAAA,CAAK,+BAA+B;QAC1D,iBAAY,GAAW,CAAC,CAAA,CAAG,8CAA8C;QAEjF,WAAW;QACH,cAAS,GAAW,CAAC,CAAA,CAAM,oCAAoC;QAC/D,cAAS,GAAW,CAAC,CAAA,CAAM,+BAA+B;QAC1D,0BAAqB,GAAW,CAAC,CAAA;QACjC,yBAAoB,GAAW,CAAC,CAAA;QAChC,eAAU,GAAY,KAAK,CAAA;QAEnC,oBAAoB;QACZ,aAAQ,GAAW,CAAC,CAAA,CAAO,OAAO;QAClC,aAAQ,GAAW,CAAC,CAAA,CAAO,OAAO;QAE1C,eAAe;QACP,eAAU,GAAW,CAAC,CAAA,CAAK,OAAO;QAClC,YAAO,GAAe,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA,CAAC,4BAA4B;QAE9E,iCAAiC;QACzB,qBAAgB,GAAW,CAAC,CAAA,CAAI,4CAA4C;QAC5E,iBAAY,GAAW,OAAO,CAAA,CAAC,mCAAmC;QAClE,0BAAqB,GAAY,KAAK,CAAA;QACtC,mBAAc,GAAY,KAAK,CAAA;QAGrC,IAAI,CAAC,yBAAyB,EAAE,CAAA;IAClC,CAAC;IAED;;OAEG;IACK,yBAAyB;QAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA,CAAC,WAAW;QAC1E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAA;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;QAC7E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,CAAC,gDAAgD;QACzE,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;QAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;IAClE,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAW;QAC9B,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAClD,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe;QACjE,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAA;QAEvC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QACtD,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAE5C,WAAW;QACX,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,UAAkB;QACzC,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAA;IAC9C,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAA;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAA;IACzC,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAA;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;QACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAA;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAA;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAA;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAA;IACzC,CAAC;IAEO,yBAAyB;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAA;IAClE,CAAC;IAEO,iBAAiB;QACvB,2EAA2E;QAC3E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAA;IACnC,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACjD,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEvD,GAAG,EAAE,CAAA;QACL,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;YACd,GAAG,GAAG,CAAC,CAAA;YACP,GAAG,EAAE,CAAA;YACL,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;gBACd,GAAG,GAAG,CAAC,CAAA;gBACP,IAAI,EAAE,CAAA;gBACN,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;oBACf,IAAI,GAAG,CAAC,CAAA;oBACR,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;oBACtE,IAAI,EAAE,CAAA;oBAEN,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;oBAC7D,IAAI,IAAI,GAAG,WAAW,EAAE,CAAC;wBACvB,IAAI,GAAG,CAAC,CAAA;wBACR,KAAK,EAAE,CAAA;wBACP,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;4BACf,KAAK,GAAG,CAAC,CAAA;4BACT,IAAI,EAAE,CAAA;4BACN,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gCACd,IAAI,GAAG,CAAC,CAAA;gCACR,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gCAClD,IAAI,EAAE,CAAA;gCACN,IAAI,IAAI,GAAG,EAAE;oCAAE,IAAI,GAAG,CAAC,CAAA;gCACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;4BAChD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAE5C,4CAA4C;QAC5C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;YAAE,OAAM;QAEpC,kCAAkC;QAClC,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAA;QACjF,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAA;QACjF,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAA;QAE3E,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YAE3C,IAAI,IAAI,EAAE,CAAC;gBACT,oBAAoB;gBACpB,YAAY,GAAG,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAA;YACtD,CAAC;iBAAM,CAAC;gBACN,aAAa;gBACb,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,UAAU,CAAA;YACjD,CAAC;QACH,CAAC;QAED,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;YAC/D,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uBAAuB;YAC7C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,QAAgB,EAAE,UAAkB;QAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;YAAE,OAAM;QAC9C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,wBAAwB;IAChD,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uBAAuB;QAC7C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEO,oBAAoB;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACxC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QAEhD,MAAM,YAAY,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,OAAO,CAAA;QACjD,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU,CAAA;QAC9C,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,WAAW,CAAA;IAC3C,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACxD,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,OAAM,CAAC,eAAe;QACxD,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC;YAAE,OAAM;QAE3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAA;QAC7E,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;YAAE,OAAM;QAE5D,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAA;QAC/B,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC;YAAE,OAAM;QAE1C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uBAAuB;QAE7C,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,IAAI,CAAA;QAEf,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,WAAW,CAAA;YACzB,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAA;YAClC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAA;YAChC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YAC3C,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAA;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAA;YACpD,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAA;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAA;YAClC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAA;YACnC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAA;YACnC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAA;YACjC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAA;YACnC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAA;YAChC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAA;YAChC,KAAK,IAAI;gBACP,oEAAoE;gBACpE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC5B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uCAAuC;gBAC7D,OAAO,MAAM,CAAA;YACf,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAA;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAA;YACjC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,WAAW;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,WAAW;YAC/B,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;gBAChD,CAAC;gBACD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAY;QACjC,IAAI,IAAI,IAAI,CAAA;QACZ,OAAO,IAAI,IAAI,CAAA;QAEf,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAA;gBAChC,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAA;gBACrB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAA;gBACrB,MAAK;YACP,KAAK,IAAI;gBACP,oFAAoF;gBACpF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA;gBACzE,MAAK;YACP,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC9C,4EAA4E;gBAC5E,IAAI,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC7B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAA;wBACzB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;oBACpC,CAAC;oBACD,6DAA6D;oBAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAA;oBACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;oBAC3B,kEAAkE;oBAClE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;gBAC3B,CAAC;gBACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,cAAc,EAAE,CAAA;gBACvB,CAAC;gBACD,MAAK;YACP,CAAC;YACD,KAAK,IAAI;gBACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA,CAAC,0BAA0B;gBACjD,MAAK;YACP,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,0BAA0B;gBAC1B,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA,CAAC,kCAAkC;gBACvE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;gBAChD,CAAC;gBACD,MAAK;QACT,CAAC;IACH,CAAC;IAID,IAAI,CAAC,SAAiB;QACpB,IAAI,CAAC,YAAY,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;QAEvD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,2DAA2D;YAC3D,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,IAAI,CAAA;gBACd,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACzB,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,4CAA4C;QAC5C,6CAA6C;QAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAClD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,CAAA;YAC1C,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,IAAI,CAAC,UAAU,EAAE,CAAA;YAEjB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,kBAAkB,EAAE,CAAA;gBACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC7B,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,oDAAoD;QACpD,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,IAAI,CAAA;YACd,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACzB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,SAAkB;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,2CAA2C;YAC3C,IAAI,CAAC,yBAAyB,EAAE,CAAA;YAChC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;YAC9B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;YAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,wBAAwB;YAC9C,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;YAC9B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;YAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC7B,CAAC;IACH,CAAC;CACF;AAxeD,kBAweC"}
1
+ {"version":3,"file":"RTC.js","sourceRoot":"","sources":["../../../src/components/IO/RTC.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,GAAG;IAkDd;QAhDA,+BAA+B;QACvB,gBAAW,GAAW,CAAC,CAAA,CAAQ,OAAO;QACtC,gBAAW,GAAW,CAAC,CAAA,CAAQ,OAAO;QACtC,cAAS,GAAW,CAAC,CAAA,CAAU,OAAO;QACtC,kBAAa,GAAW,CAAC,CAAA,CAAM,kBAAkB;QACjD,aAAQ,GAAW,CAAC,CAAA,CAAW,OAAO;QACtC,cAAS,GAAW,CAAC,CAAA,CAAU,kBAAkB;QACjD,iBAAY,GAAW,CAAC,CAAA,CAAO,8BAA8B;QAC7D,aAAQ,GAAW,CAAC,CAAA,CAAW,eAAe;QAC9C,gBAAW,GAAW,EAAE,CAAA,CAAO,eAAe;QAEtD,iCAAiC;QACzB,oBAAe,GAAW,CAAC,CAAA;QAC3B,oBAAe,GAAW,CAAC,CAAA;QAC3B,kBAAa,GAAW,CAAC,CAAA;QACzB,sBAAiB,GAAW,CAAC,CAAA;QAC7B,iBAAY,GAAW,CAAC,CAAA;QACxB,kBAAa,GAAW,CAAC,CAAA;QACzB,iBAAY,GAAW,CAAC,CAAA;QACxB,oBAAe,GAAW,EAAE,CAAA;QAEpC,kBAAkB;QACV,iBAAY,GAAW,CAAC,CAAA,CAAG,+BAA+B;QAC1D,iBAAY,GAAW,CAAC,CAAA,CAAG,+BAA+B;QAC1D,eAAU,GAAW,CAAC,CAAA,CAAK,+BAA+B;QAC1D,iBAAY,GAAW,CAAC,CAAA,CAAG,8CAA8C;QAEjF,WAAW;QACH,cAAS,GAAW,CAAC,CAAA,CAAM,oCAAoC;QAC/D,cAAS,GAAW,CAAC,CAAA,CAAM,+BAA+B;QAC1D,0BAAqB,GAAW,CAAC,CAAA;QACjC,yBAAoB,GAAW,CAAC,CAAA;QAChC,eAAU,GAAY,KAAK,CAAA;QAEnC,oBAAoB;QACZ,aAAQ,GAAW,CAAC,CAAA,CAAO,OAAO;QAClC,aAAQ,GAAW,CAAC,CAAA,CAAO,OAAO;QAE1C,eAAe;QACP,eAAU,GAAW,CAAC,CAAA,CAAK,OAAO;QAClC,YAAO,GAAe,IAAI,UAAU,CAAC,GAAG,CAAC,CAAA,CAAC,4BAA4B;QAE9E,iCAAiC;QACzB,qBAAgB,GAAW,CAAC,CAAA,CAAI,4CAA4C;QAC5E,iBAAY,GAAW,OAAO,CAAA,CAAC,mCAAmC;QAClE,0BAAqB,GAAY,KAAK,CAAA;QACtC,mBAAc,GAAY,KAAK,CAAA;QAGrC,IAAI,CAAC,yBAAyB,EAAE,CAAA;IAClC,CAAC;IAED;;OAEG;IACK,yBAAyB;QAC/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAA,CAAC,WAAW;QAC1E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAA;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;QAC7E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA,CAAC,gDAAgD;QACzE,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;QAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC3B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe;QAClC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAA;IAClE,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAW;QAC9B,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;IAClD,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAAa,EAAE,IAAY,EAAE,OAAe;QACjE,MAAM,QAAQ,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAA;QAEvC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QACtD,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAA;QAE5C,WAAW;QACX,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,UAAkB;QACzC,OAAO,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAA;IAC9C,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAA;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAA;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAA;IACzC,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAA;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;QACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAA;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAA;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAA;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAA;IACzC,CAAC;IAEO,yBAAyB;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,CAAA;IAClE,CAAC;IAEO,iBAAiB;QACvB,2EAA2E;QAC3E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAA;IACnC,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACjD,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEvD,GAAG,EAAE,CAAA;QACL,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;YACd,GAAG,GAAG,CAAC,CAAA;YACP,GAAG,EAAE,CAAA;YACL,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;gBACd,GAAG,GAAG,CAAC,CAAA;gBACP,IAAI,EAAE,CAAA;gBACN,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;oBACf,IAAI,GAAG,CAAC,CAAA;oBACR,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;oBACtE,IAAI,EAAE,CAAA;oBAEN,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;oBAC7D,IAAI,IAAI,GAAG,WAAW,EAAE,CAAC;wBACvB,IAAI,GAAG,CAAC,CAAA;wBACR,KAAK,EAAE,CAAA;wBACP,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;4BACf,KAAK,GAAG,CAAC,CAAA;4BACT,IAAI,EAAE,CAAA;4BACN,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;gCACd,IAAI,GAAG,CAAC,CAAA;gCACR,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;gCAClD,IAAI,EAAE,CAAA;gCACN,IAAI,IAAI,GAAG,EAAE;oCAAE,IAAI,GAAG,CAAC,CAAA;gCACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;4BAChD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC;IAED;;OAEG;IACK,UAAU;QAChB,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAE5C,4CAA4C;QAC5C,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG;YAAE,OAAM;QAEpC,kCAAkC;QAClC,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAA;QACjF,MAAM,YAAY,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAA;QACjF,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAA;QAE3E,IAAI,YAAY,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YAE3C,IAAI,IAAI,EAAE,CAAC;gBACT,oBAAoB;gBACpB,YAAY,GAAG,IAAI,CAAC,iBAAiB,KAAK,UAAU,CAAA;YACtD,CAAC;iBAAM,CAAC;gBACN,aAAa;gBACb,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,UAAU,CAAA;YACjD,CAAC;QACH,CAAC;QAED,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;YAC/D,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uBAAuB;YAC7C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAEO,uBAAuB,CAAC,QAAgB,EAAE,UAAkB;QAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;YAAE,OAAM;QAC9C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,wBAAwB;IAChD,CAAC;IAEO,gBAAgB;QACtB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uBAAuB;QAC7C,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEO,oBAAoB;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACxC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrC,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAA;QAEhD,MAAM,YAAY,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,OAAO,CAAA;QACjD,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU,CAAA;QAC9C,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,WAAW,CAAA;IAC3C,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;QACxD,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;IAC/B,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;YAAE,OAAM,CAAC,eAAe;QACxD,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC;YAAE,OAAM;QAE3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAA;QAC7E,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,IAAI,IAAI,CAAC,oBAAoB,GAAG,oBAAoB;YAAE,OAAM;QAE5D,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAA;QAC/B,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC;YAAE,OAAM;QAE1C,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uBAAuB;QAE7C,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAA;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,IAAI,CAAA;QAEf,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,WAAW,CAAA;YACzB,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAA;YAClC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAA;YAChC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YAC3C,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAA;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAA;YACpD,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAA;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAA;YAClC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAA;YACnC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAA;YACnC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAA;YACjC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,CAAA;YACnC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAA;YAChC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAA;YAChC,KAAK,IAAI;gBACP,oEAAoE;gBACpE,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC5B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,uCAAuC;gBAC7D,OAAO,MAAM,CAAA;YACf,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAA;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,CAAA;YACjC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,WAAW;YAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,WAAW;YAC/B,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;gBAChD,CAAC;gBACD,OAAO,KAAK,CAAA;YACd,CAAC;YACD,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAY;QACjC,IAAI,IAAI,IAAI,CAAA;QACZ,OAAO,IAAI,IAAI,CAAA;QAEf,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAA;gBAChC,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;gBAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;gBACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;gBACtB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;gBACxB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAA;gBACrB,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACrB,IAAI,CAAC,cAAc,EAAE,CAAA;gBACrB,MAAK;YACP,KAAK,IAAI;gBACP,oFAAoF;gBACpF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAA;gBACzE,MAAK;YACP,KAAK,IAAI,CAAC,CAAC,CAAC;gBACV,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;gBACpB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC9C,4EAA4E;gBAC5E,IAAI,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC7B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAA;wBACzB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;oBACpC,CAAC;oBACD,6DAA6D;oBAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAA;oBACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;oBAC3B,kEAAkE;oBAClE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAA;gBAC3B,CAAC;gBACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,cAAc,EAAE,CAAA;gBACvB,CAAC;gBACD,MAAK;YACP,CAAC;YACD,KAAK,IAAI;gBACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA,CAAC,0BAA0B;gBACjD,MAAK;YACP,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,0BAA0B;gBAC1B,MAAK;YACP,KAAK,IAAI;gBACP,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA,CAAC,kCAAkC;gBACvE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAAA;gBAChD,CAAC;gBACD,MAAK;QACT,CAAC;IACH,CAAC;IAID,IAAI,CAAC,SAAiB;QACpB,IAAI,CAAC,YAAY,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;QAEvD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAE9C,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,2DAA2D;YAC3D,IAAI,CAAC,YAAY,EAAE,CAAA;YACnB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,IAAI,IAAI,CAAA;gBACd,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;YACzB,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,4CAA4C;QAC5C,6CAA6C;QAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAClD,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,CAAA;YAC1C,IAAI,CAAC,aAAa,EAAE,CAAA;YACpB,IAAI,CAAC,UAAU,EAAE,CAAA;YAEjB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,kBAAkB,EAAE,CAAA;gBACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC7B,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,oDAAoD;QACpD,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,IAAI,CAAA;YACd,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QACzB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,SAAkB;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,2CAA2C;YAC3C,IAAI,CAAC,yBAAyB,EAAE,CAAA;YAChC,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;YAC9B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;YAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;YAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,wEAAwE;YACxE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAA,CAAC,wBAAwB;YAC9C,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAA;YAC9B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAA;YAC7B,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAA;YAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAgD;QACxD,IAAI,CAAC,IAAI;YAAE,OAAM;QAEjB,IAAI,SAAqB,CAAA;QACzB,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;YAChC,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;aAAM,IAAI,IAAI,YAAY,UAAU,EAAE,CAAC;YACtC,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7B,OAAO,CAAC,IAAI,CAAC,6BAA6B,SAAS,CAAC,MAAM,qEAAqE,CAAC,CAAA;YAChI,OAAM;QACR,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC;CACF;AAtgBD,kBAsgBC"}
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ const serialport_1 = require("serialport");
20
20
  const sdl_1 = __importDefault(require("@kmamal/sdl"));
21
21
  const promises_1 = require("fs/promises");
22
22
  const fs_1 = require("fs");
23
- const VERSION = '1.14.0';
23
+ const VERSION = '1.15.0';
24
24
  const WIDTH = 320;
25
25
  const HEIGHT = 240;
26
26
  // Audio constants
@@ -126,6 +126,20 @@ class Emulator {
126
126
  console.log(`Storage file created: ${this.options.storage}`);
127
127
  }
128
128
  }
129
+ if (this.options.nvram) {
130
+ if ((0, fs_1.existsSync)(this.options.nvram)) {
131
+ const nvramData = yield (0, promises_1.readFile)(this.options.nvram);
132
+ this.machine.io3.loadNVRAM(new Uint8Array(nvramData));
133
+ console.log(`Loaded NVRAM: ${this.options.nvram}`);
134
+ }
135
+ else {
136
+ console.log(`NVRAM file not found: ${this.options.nvram}`);
137
+ console.log('Initializing new NVRAM file...');
138
+ const emptyNVRAM = this.machine.io3.getNVRAM();
139
+ yield (0, promises_1.writeFile)(this.options.nvram, emptyNVRAM);
140
+ console.log(`NVRAM file created: ${this.options.nvram}`);
141
+ }
142
+ }
129
143
  });
130
144
  }
131
145
  configureEncoder() {
@@ -481,13 +495,24 @@ class Emulator {
481
495
  'Avg FPS': parseFloat((this.machine.frames / (uptime / 1000)).toFixed(2))
482
496
  });
483
497
  // Save storage data if path was provided
498
+ const savePromises = [];
484
499
  if (this.options.storage) {
485
500
  const storageData = this.machine.io4.getData();
486
- (0, promises_1.writeFile)(this.options.storage, storageData).then(() => {
501
+ savePromises.push((0, promises_1.writeFile)(this.options.storage, storageData).then(() => {
487
502
  console.log(`Storage saved to: ${this.options.storage}`);
503
+ }));
504
+ }
505
+ if (this.options.nvram) {
506
+ const nvramData = this.machine.io3.getNVRAM();
507
+ savePromises.push((0, promises_1.writeFile)(this.options.nvram, nvramData).then(() => {
508
+ console.log(`NVRAM saved to: ${this.options.nvram}`);
509
+ }));
510
+ }
511
+ if (savePromises.length > 0) {
512
+ Promise.all(savePromises).then(() => {
488
513
  process.exit(0);
489
514
  }).catch((error) => {
490
- console.error('Error saving storage file:', error);
515
+ console.error('Error saving data:', error);
491
516
  process.exit(1);
492
517
  });
493
518
  }
@@ -515,6 +540,7 @@ program
515
540
  .addOption(new commander_1.Option('-p, --port <port>', 'Path to the serial port (e.g., /dev/ttyUSB0)'))
516
541
  .addOption(new commander_1.Option('-r, --rom <path>', 'Path to 32K ROM binary file'))
517
542
  .addOption(new commander_1.Option('-s, --scale <scale>', 'Set the emulator scale').default('2'))
543
+ .addOption(new commander_1.Option('-n, --nvram <path>', 'Path to NVRAM data file for DS1511Y+ RTC persistence'))
518
544
  .addOption(new commander_1.Option('-S, --storage <path>', 'Path to storage data file for Compact Flash card persistence'))
519
545
  .addOption(new commander_1.Option('-t, --stopbits <stopbits>', 'Stop Bits (1 | 1.5 | 2)').default('1'))
520
546
  .addOption(new commander_1.Option('-e, --encoder <mode>', 'Keyboard encoder active port (ps2 = Port A / CA1, matrix = Port B / CB1)').choices(['ps2', 'matrix', 'both']).default('matrix'))
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -161,5 +161,63 @@ describe('RTC', () => {
161
161
  expect(rtc.read(0x0f) & 0x02).toBe(0);
162
162
  });
163
163
  });
164
+ describe('NVRAM Persistence', () => {
165
+ it('should export NVRAM data via getNVRAM', () => {
166
+ rtc.write(0x10, 0x00);
167
+ rtc.write(0x0f, 0x20); // Enable auto-increment
168
+ for (let i = 0; i < 256; i++) {
169
+ rtc.write(0x13, i & 0xFF);
170
+ }
171
+ const data = rtc.getNVRAM();
172
+ expect(data).toBeInstanceOf(Uint8Array);
173
+ expect(data.length).toBe(256);
174
+ for (let i = 0; i < 256; i++) {
175
+ expect(data[i]).toBe(i & 0xFF);
176
+ }
177
+ });
178
+ it('should restore NVRAM data via loadNVRAM', () => {
179
+ const nvram = new Uint8Array(256);
180
+ for (let i = 0; i < 256; i++) {
181
+ nvram[i] = (255 - i) & 0xFF;
182
+ }
183
+ rtc.loadNVRAM(nvram);
184
+ rtc.write(0x10, 0x00);
185
+ rtc.write(0x0f, 0x20); // Enable auto-increment
186
+ for (let i = 0; i < 256; i++) {
187
+ expect(rtc.read(0x13)).toBe((255 - i) & 0xFF);
188
+ }
189
+ });
190
+ it('should return a copy from getNVRAM, not a reference', () => {
191
+ rtc.write(0x10, 0x00);
192
+ rtc.write(0x13, 0xAB);
193
+ const data = rtc.getNVRAM();
194
+ data[0] = 0x00; // Mutate the copy
195
+ rtc.write(0x10, 0x00);
196
+ expect(rtc.read(0x13)).toBe(0xAB); // Original unchanged
197
+ });
198
+ it('should reject NVRAM data of wrong size', () => {
199
+ const warnSpy = jest.spyOn(console, 'warn').mockImplementation();
200
+ rtc.write(0x10, 0x00);
201
+ rtc.write(0x13, 0x42);
202
+ rtc.loadNVRAM(new Uint8Array(128));
203
+ rtc.write(0x10, 0x00);
204
+ expect(rtc.read(0x13)).toBe(0x42); // Unchanged
205
+ warnSpy.mockRestore();
206
+ });
207
+ it('should ignore null input to loadNVRAM', () => {
208
+ rtc.write(0x10, 0x05);
209
+ rtc.write(0x13, 0x99);
210
+ rtc.loadNVRAM(null);
211
+ rtc.write(0x10, 0x05);
212
+ expect(rtc.read(0x13)).toBe(0x99);
213
+ });
214
+ it('should preserve NVRAM across warm reset', () => {
215
+ rtc.write(0x10, 0x00);
216
+ rtc.write(0x13, 0xDE);
217
+ rtc.reset(false);
218
+ rtc.write(0x10, 0x00);
219
+ expect(rtc.read(0x13)).toBe(0xDE);
220
+ });
221
+ });
164
222
  });
165
223
  //# sourceMappingURL=RTC.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RTC.test.js","sourceRoot":"","sources":["../../../src/tests/IO/RTC.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RTC.test.js","sourceRoot":"","sources":["../../../src/tests/IO/RTC.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ac6502",
3
- "version": "1.14.0",
3
+ "version": "1.15.0",
4
4
  "description": "Emulator for the A.C. Wright 6502 project",
5
5
  "main": "dist/lib.js",
6
6
  "types": "dist/lib.d.ts",
@@ -513,4 +513,34 @@ export class RTC implements IO {
513
513
  this.userSyncNeeded = false
514
514
  }
515
515
  }
516
+
517
+ /**
518
+ * Load NVRAM data from a Uint8Array (256 bytes extended RAM)
519
+ */
520
+ loadNVRAM(data: Uint8Array | ArrayBuffer | number[] | null): void {
521
+ if (!data) return
522
+
523
+ let uint8Data: Uint8Array
524
+ if (data instanceof ArrayBuffer) {
525
+ uint8Data = new Uint8Array(data)
526
+ } else if (data instanceof Uint8Array) {
527
+ uint8Data = data
528
+ } else {
529
+ uint8Data = new Uint8Array(data)
530
+ }
531
+
532
+ if (uint8Data.length !== 256) {
533
+ console.warn(`Warning: NVRAM data size (${uint8Data.length} bytes) does not match expected 256 bytes. NVRAM will remain empty.`)
534
+ return
535
+ }
536
+
537
+ this.ramData.set(uint8Data)
538
+ }
539
+
540
+ /**
541
+ * Get NVRAM data as Uint8Array for saving
542
+ */
543
+ getNVRAM(): Uint8Array {
544
+ return new Uint8Array(this.ramData)
545
+ }
516
546
  }
package/src/index.ts CHANGED
@@ -6,12 +6,13 @@ import { Command, Option } from 'commander'
6
6
  import { SerialPort } from 'serialport'
7
7
  import { Video } from './components/IO/Video'
8
8
  import { Storage } from './components/IO/Storage'
9
+ import { RTC } from './components/IO/RTC'
9
10
  import { Sound } from './components/IO/Sound'
10
11
  import sdl from '@kmamal/sdl'
11
12
  import { readFile, writeFile } from 'fs/promises'
12
13
  import { existsSync } from 'fs'
13
14
 
14
- const VERSION = '1.14.0'
15
+ const VERSION = '1.15.0'
15
16
  const WIDTH = 320
16
17
  const HEIGHT = 240
17
18
 
@@ -46,6 +47,7 @@ interface EmulatorOptions {
46
47
  stopbits?: string
47
48
  port?: string
48
49
  storage?: string
50
+ nvram?: string
49
51
  encoder?: string
50
52
  }
51
53
 
@@ -143,6 +145,20 @@ class Emulator {
143
145
  console.log(`Storage file created: ${this.options.storage}`)
144
146
  }
145
147
  }
148
+
149
+ if (this.options.nvram) {
150
+ if (existsSync(this.options.nvram)) {
151
+ const nvramData = await readFile(this.options.nvram)
152
+ ;(this.machine.io3 as RTC).loadNVRAM(new Uint8Array(nvramData))
153
+ console.log(`Loaded NVRAM: ${this.options.nvram}`)
154
+ } else {
155
+ console.log(`NVRAM file not found: ${this.options.nvram}`)
156
+ console.log('Initializing new NVRAM file...')
157
+ const emptyNVRAM = (this.machine.io3 as RTC).getNVRAM()
158
+ await writeFile(this.options.nvram, emptyNVRAM)
159
+ console.log(`NVRAM file created: ${this.options.nvram}`)
160
+ }
161
+ }
146
162
  }
147
163
 
148
164
  private configureEncoder(): void {
@@ -480,13 +496,31 @@ class Emulator {
480
496
  })
481
497
 
482
498
  // Save storage data if path was provided
499
+ const savePromises: Promise<void>[] = []
500
+
483
501
  if (this.options.storage) {
484
502
  const storageData = (this.machine.io4 as Storage).getData()
485
- writeFile(this.options.storage, storageData).then(() => {
486
- console.log(`Storage saved to: ${this.options.storage}`)
503
+ savePromises.push(
504
+ writeFile(this.options.storage, storageData).then(() => {
505
+ console.log(`Storage saved to: ${this.options.storage}`)
506
+ })
507
+ )
508
+ }
509
+
510
+ if (this.options.nvram) {
511
+ const nvramData = (this.machine.io3 as RTC).getNVRAM()
512
+ savePromises.push(
513
+ writeFile(this.options.nvram, nvramData).then(() => {
514
+ console.log(`NVRAM saved to: ${this.options.nvram}`)
515
+ })
516
+ )
517
+ }
518
+
519
+ if (savePromises.length > 0) {
520
+ Promise.all(savePromises).then(() => {
487
521
  process.exit(0)
488
522
  }).catch((error) => {
489
- console.error('Error saving storage file:', error)
523
+ console.error('Error saving data:', error)
490
524
  process.exit(1)
491
525
  })
492
526
  } else {
@@ -515,6 +549,7 @@ program
515
549
  .addOption(new Option('-p, --port <port>', 'Path to the serial port (e.g., /dev/ttyUSB0)'))
516
550
  .addOption(new Option('-r, --rom <path>', 'Path to 32K ROM binary file'))
517
551
  .addOption(new Option('-s, --scale <scale>', 'Set the emulator scale').default('2'))
552
+ .addOption(new Option('-n, --nvram <path>', 'Path to NVRAM data file for DS1511Y+ RTC persistence'))
518
553
  .addOption(new Option('-S, --storage <path>', 'Path to storage data file for Compact Flash card persistence'))
519
554
  .addOption(new Option('-t, --stopbits <stopbits>', 'Stop Bits (1 | 1.5 | 2)').default('1'))
520
555
  .addOption(new Option('-e, --encoder <mode>', 'Keyboard encoder active port (ps2 = Port A / CA1, matrix = Port B / CB1)').choices(['ps2', 'matrix', 'both']).default('matrix'))
@@ -202,4 +202,81 @@ describe('RTC', () => {
202
202
  expect(rtc.read(0x0f) & 0x02).toBe(0)
203
203
  })
204
204
  })
205
+
206
+ describe('NVRAM Persistence', () => {
207
+ it('should export NVRAM data via getNVRAM', () => {
208
+ rtc.write(0x10, 0x00)
209
+ rtc.write(0x0f, 0x20) // Enable auto-increment
210
+ for (let i = 0; i < 256; i++) {
211
+ rtc.write(0x13, i & 0xFF)
212
+ }
213
+
214
+ const data = rtc.getNVRAM()
215
+ expect(data).toBeInstanceOf(Uint8Array)
216
+ expect(data.length).toBe(256)
217
+ for (let i = 0; i < 256; i++) {
218
+ expect(data[i]).toBe(i & 0xFF)
219
+ }
220
+ })
221
+
222
+ it('should restore NVRAM data via loadNVRAM', () => {
223
+ const nvram = new Uint8Array(256)
224
+ for (let i = 0; i < 256; i++) {
225
+ nvram[i] = (255 - i) & 0xFF
226
+ }
227
+
228
+ rtc.loadNVRAM(nvram)
229
+
230
+ rtc.write(0x10, 0x00)
231
+ rtc.write(0x0f, 0x20) // Enable auto-increment
232
+ for (let i = 0; i < 256; i++) {
233
+ expect(rtc.read(0x13)).toBe((255 - i) & 0xFF)
234
+ }
235
+ })
236
+
237
+ it('should return a copy from getNVRAM, not a reference', () => {
238
+ rtc.write(0x10, 0x00)
239
+ rtc.write(0x13, 0xAB)
240
+
241
+ const data = rtc.getNVRAM()
242
+ data[0] = 0x00 // Mutate the copy
243
+
244
+ rtc.write(0x10, 0x00)
245
+ expect(rtc.read(0x13)).toBe(0xAB) // Original unchanged
246
+ })
247
+
248
+ it('should reject NVRAM data of wrong size', () => {
249
+ const warnSpy = jest.spyOn(console, 'warn').mockImplementation()
250
+
251
+ rtc.write(0x10, 0x00)
252
+ rtc.write(0x13, 0x42)
253
+
254
+ rtc.loadNVRAM(new Uint8Array(128))
255
+
256
+ rtc.write(0x10, 0x00)
257
+ expect(rtc.read(0x13)).toBe(0x42) // Unchanged
258
+
259
+ warnSpy.mockRestore()
260
+ })
261
+
262
+ it('should ignore null input to loadNVRAM', () => {
263
+ rtc.write(0x10, 0x05)
264
+ rtc.write(0x13, 0x99)
265
+
266
+ rtc.loadNVRAM(null)
267
+
268
+ rtc.write(0x10, 0x05)
269
+ expect(rtc.read(0x13)).toBe(0x99)
270
+ })
271
+
272
+ it('should preserve NVRAM across warm reset', () => {
273
+ rtc.write(0x10, 0x00)
274
+ rtc.write(0x13, 0xDE)
275
+
276
+ rtc.reset(false)
277
+
278
+ rtc.write(0x10, 0x00)
279
+ expect(rtc.read(0x13)).toBe(0xDE)
280
+ })
281
+ })
205
282
  })