@aztec/simulator 0.65.2 → 0.67.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.
Files changed (136) hide show
  1. package/dest/acvm/acvm.js +3 -3
  2. package/dest/acvm/oracle/oracle.d.ts +1 -4
  3. package/dest/acvm/oracle/oracle.d.ts.map +1 -1
  4. package/dest/acvm/oracle/oracle.js +3 -19
  5. package/dest/acvm/oracle/typed_oracle.d.ts +2 -7
  6. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  7. package/dest/acvm/oracle/typed_oracle.js +3 -12
  8. package/dest/acvm/serialize.js +2 -2
  9. package/dest/avm/avm_context.d.ts +2 -2
  10. package/dest/avm/avm_context.d.ts.map +1 -1
  11. package/dest/avm/avm_context.js +3 -4
  12. package/dest/avm/avm_execution_environment.d.ts +4 -6
  13. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  14. package/dest/avm/avm_execution_environment.js +8 -13
  15. package/dest/avm/avm_memory_types.d.ts +2 -2
  16. package/dest/avm/avm_memory_types.d.ts.map +1 -1
  17. package/dest/avm/avm_memory_types.js +7 -7
  18. package/dest/avm/avm_simulator.d.ts +3 -3
  19. package/dest/avm/avm_simulator.d.ts.map +1 -1
  20. package/dest/avm/avm_simulator.js +26 -16
  21. package/dest/avm/avm_tree.d.ts +31 -14
  22. package/dest/avm/avm_tree.d.ts.map +1 -1
  23. package/dest/avm/avm_tree.js +34 -40
  24. package/dest/avm/errors.d.ts +3 -3
  25. package/dest/avm/errors.d.ts.map +1 -1
  26. package/dest/avm/errors.js +8 -15
  27. package/dest/avm/fixtures/index.d.ts.map +1 -1
  28. package/dest/avm/fixtures/index.js +4 -4
  29. package/dest/avm/journal/journal.d.ts +15 -4
  30. package/dest/avm/journal/journal.d.ts.map +1 -1
  31. package/dest/avm/journal/journal.js +121 -36
  32. package/dest/avm/opcodes/environment_getters.d.ts +10 -11
  33. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  34. package/dest/avm/opcodes/environment_getters.js +12 -15
  35. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  36. package/dest/avm/opcodes/external_calls.js +4 -11
  37. package/dest/avm/opcodes/misc.d.ts.map +1 -1
  38. package/dest/avm/opcodes/misc.js +3 -3
  39. package/dest/client/client_execution_context.d.ts +6 -33
  40. package/dest/client/client_execution_context.d.ts.map +1 -1
  41. package/dest/client/client_execution_context.js +18 -54
  42. package/dest/client/db_oracle.d.ts +2 -2
  43. package/dest/client/db_oracle.d.ts.map +1 -1
  44. package/dest/client/execution_note_cache.d.ts +9 -1
  45. package/dest/client/execution_note_cache.d.ts.map +1 -1
  46. package/dest/client/execution_note_cache.js +10 -3
  47. package/dest/client/private_execution.d.ts.map +1 -1
  48. package/dest/client/private_execution.js +5 -7
  49. package/dest/client/simulator.d.ts.map +1 -1
  50. package/dest/client/simulator.js +4 -4
  51. package/dest/client/unconstrained_execution.d.ts.map +1 -1
  52. package/dest/client/unconstrained_execution.js +3 -3
  53. package/dest/client/view_data_oracle.d.ts +2 -2
  54. package/dest/client/view_data_oracle.d.ts.map +1 -1
  55. package/dest/client/view_data_oracle.js +5 -6
  56. package/dest/common/debug_fn_name.d.ts +2 -2
  57. package/dest/common/debug_fn_name.d.ts.map +1 -1
  58. package/dest/common/debug_fn_name.js +8 -14
  59. package/dest/providers/acvm_native.js +4 -4
  60. package/dest/providers/factory.d.ts +2 -2
  61. package/dest/providers/factory.d.ts.map +1 -1
  62. package/dest/providers/factory.js +4 -4
  63. package/dest/public/enqueued_call_side_effect_trace.d.ts +11 -23
  64. package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -1
  65. package/dest/public/enqueued_call_side_effect_trace.js +51 -72
  66. package/dest/public/executor_metrics.d.ts.map +1 -1
  67. package/dest/public/executor_metrics.js +2 -5
  68. package/dest/public/fixtures/index.d.ts +25 -7
  69. package/dest/public/fixtures/index.d.ts.map +1 -1
  70. package/dest/public/fixtures/index.js +20 -17
  71. package/dest/public/index.d.ts +0 -1
  72. package/dest/public/index.d.ts.map +1 -1
  73. package/dest/public/index.js +1 -2
  74. package/dest/public/public_db_sources.d.ts.map +1 -1
  75. package/dest/public/public_db_sources.js +30 -16
  76. package/dest/public/public_processor.d.ts +7 -8
  77. package/dest/public/public_processor.d.ts.map +1 -1
  78. package/dest/public/public_processor.js +37 -26
  79. package/dest/public/public_processor_metrics.d.ts +1 -1
  80. package/dest/public/public_processor_metrics.d.ts.map +1 -1
  81. package/dest/public/public_tx_context.d.ts +13 -14
  82. package/dest/public/public_tx_context.d.ts.map +1 -1
  83. package/dest/public/public_tx_context.js +63 -54
  84. package/dest/public/public_tx_simulator.d.ts +2 -2
  85. package/dest/public/public_tx_simulator.d.ts.map +1 -1
  86. package/dest/public/public_tx_simulator.js +43 -25
  87. package/dest/public/side_effect_trace_interface.d.ts +4 -17
  88. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  89. package/dest/public/transitional_adapters.d.ts +2 -6
  90. package/dest/public/transitional_adapters.d.ts.map +1 -1
  91. package/dest/public/transitional_adapters.js +29 -88
  92. package/package.json +16 -9
  93. package/src/acvm/acvm.ts +2 -2
  94. package/src/acvm/oracle/oracle.ts +2 -32
  95. package/src/acvm/oracle/typed_oracle.ts +3 -20
  96. package/src/acvm/serialize.ts +1 -1
  97. package/src/avm/avm_context.ts +2 -3
  98. package/src/avm/avm_execution_environment.ts +6 -31
  99. package/src/avm/avm_memory_types.ts +6 -6
  100. package/src/avm/avm_simulator.ts +28 -23
  101. package/src/avm/avm_tree.ts +67 -53
  102. package/src/avm/errors.ts +12 -14
  103. package/src/avm/fixtures/index.ts +2 -3
  104. package/src/avm/journal/journal.ts +206 -68
  105. package/src/avm/opcodes/environment_getters.ts +1 -4
  106. package/src/avm/opcodes/external_calls.ts +3 -19
  107. package/src/avm/opcodes/misc.ts +2 -2
  108. package/src/client/client_execution_context.ts +22 -68
  109. package/src/client/db_oracle.ts +2 -2
  110. package/src/client/execution_note_cache.ts +13 -3
  111. package/src/client/private_execution.ts +3 -7
  112. package/src/client/simulator.ts +4 -4
  113. package/src/client/unconstrained_execution.ts +2 -2
  114. package/src/client/view_data_oracle.ts +5 -6
  115. package/src/common/debug_fn_name.ts +7 -13
  116. package/src/providers/acvm_native.ts +3 -3
  117. package/src/providers/factory.ts +3 -3
  118. package/src/public/enqueued_call_side_effect_trace.ts +68 -90
  119. package/src/public/executor_metrics.ts +0 -4
  120. package/src/public/fixtures/index.ts +28 -17
  121. package/src/public/index.ts +0 -1
  122. package/src/public/public_db_sources.ts +32 -19
  123. package/src/public/public_processor.ts +52 -55
  124. package/src/public/public_processor_metrics.ts +1 -1
  125. package/src/public/public_tx_context.ts +89 -76
  126. package/src/public/public_tx_simulator.ts +58 -49
  127. package/src/public/side_effect_trace_interface.ts +8 -15
  128. package/src/public/transitional_adapters.ts +43 -215
  129. package/dest/public/dual_side_effect_trace.d.ts +0 -77
  130. package/dest/public/dual_side_effect_trace.d.ts.map +0 -1
  131. package/dest/public/dual_side_effect_trace.js +0 -119
  132. package/dest/public/side_effect_trace.d.ts +0 -96
  133. package/dest/public/side_effect_trace.d.ts.map +0 -1
  134. package/dest/public/side_effect_trace.js +0 -309
  135. package/src/public/dual_side_effect_trace.ts +0 -242
  136. package/src/public/side_effect_trace.ts +0 -536
@@ -2,7 +2,7 @@ import { MEM_TAG_FF, MEM_TAG_U1, MEM_TAG_U8, MEM_TAG_U16, MEM_TAG_U32, MEM_TAG_U
2
2
  import { AztecAddress } from '@aztec/foundation/aztec-address';
3
3
  import { toBufferBE } from '@aztec/foundation/bigint-buffer';
4
4
  import { Fr } from '@aztec/foundation/fields';
5
- import { createDebugLogger } from '@aztec/foundation/log';
5
+ import { createLogger } from '@aztec/foundation/log';
6
6
  import { strict as assert } from 'assert';
7
7
  import { InstructionExecutionError, InvalidTagValueError, TagCheckError } from './errors.js';
8
8
  import { Addressing, AddressingMode } from './opcodes/addressing_mode.js';
@@ -179,7 +179,7 @@ export class TaggedMemory {
179
179
  getAs(offset) {
180
180
  assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
181
181
  const word = this._mem[offset];
182
- TaggedMemory.log.debug(`get(${offset}) = ${word}`);
182
+ TaggedMemory.log.trace(`get(${offset}) = ${word}`);
183
183
  if (word === undefined) {
184
184
  TaggedMemory.log.debug(`WARNING: Memory at offset ${offset} is undefined!`);
185
185
  return new Field(0);
@@ -189,7 +189,7 @@ export class TaggedMemory {
189
189
  getSlice(offset, size) {
190
190
  assert(offset + size <= TaggedMemory.MAX_MEMORY_SIZE);
191
191
  const value = this._mem.slice(offset, offset + size);
192
- TaggedMemory.log.debug(`getSlice(${offset}, ${size}) = ${value}`);
192
+ TaggedMemory.log.trace(`getSlice(${offset}, ${size}) = ${value}`);
193
193
  for (let i = 0; i < value.length; i++) {
194
194
  if (value[i] === undefined) {
195
195
  value[i] = new Field(0);
@@ -209,7 +209,7 @@ export class TaggedMemory {
209
209
  set(offset, v) {
210
210
  assert(offset < TaggedMemory.MAX_MEMORY_SIZE);
211
211
  this._mem[offset] = v;
212
- TaggedMemory.log.debug(`set(${offset}, ${v})`);
212
+ TaggedMemory.log.trace(`set(${offset}, ${v})`);
213
213
  }
214
214
  setSlice(offset, vs) {
215
215
  assert(offset + vs.length <= TaggedMemory.MAX_MEMORY_SIZE);
@@ -218,7 +218,7 @@ export class TaggedMemory {
218
218
  this._mem.length = offset + vs.length;
219
219
  }
220
220
  this._mem.splice(offset, vs.length, ...vs);
221
- TaggedMemory.log.debug(`setSlice(${offset}, ${vs})`);
221
+ TaggedMemory.log.trace(`setSlice(${offset}, ${vs})`);
222
222
  }
223
223
  getTag(offset) {
224
224
  return TaggedMemory.getTag(this._mem[offset]);
@@ -332,7 +332,7 @@ export class TaggedMemory {
332
332
  /** No-op. Implemented here for compatibility with the MeteredTaggedMemory. */
333
333
  assert(_operations) { }
334
334
  }
335
- TaggedMemory.log = createDebugLogger('aztec:avm_simulator:memory');
335
+ TaggedMemory.log = createLogger('simulator:avm:memory');
336
336
  // Whether to track and validate memory accesses for each instruction.
337
337
  TaggedMemory.TRACK_MEMORY_ACCESSES = process.env.NODE_ENV === 'test';
338
338
  // FIXME: memory should be 2^32, but TS max array size is: 2^32 - 1
@@ -419,4 +419,4 @@ export class MeteredTaggedMemory {
419
419
  this.wrapped.checkTagsRange(tag, startOffset, size);
420
420
  }
421
421
  }
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21lbW9yeV90eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX21lbW9yeV90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzVFLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxzRUFBc0U7QUFDdEUsTUFBTSxPQUFnQixXQUFXO0lBa0IvQixXQUFXO0lBQ0osSUFBSTtRQUNULE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsNkNBQTZDO0lBQ3RDLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxD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
422
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX21lbW9yeV90eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX21lbW9yeV90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTFDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUxRSxzRUFBc0U7QUFDdEUsTUFBTSxPQUFnQixXQUFXO0lBa0IvQixXQUFXO0lBQ0osSUFBSTtRQUNULE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsNkNBQTZDO0lBQ3RDLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFD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
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
- import { type AztecAddress, Fr, type FunctionSelector, type GlobalVariables } from '@aztec/circuits.js';
3
+ import { type AztecAddress, Fr, type GlobalVariables } from '@aztec/circuits.js';
4
4
  import { AvmContext } from './avm_context.js';
5
5
  import { AvmContractCallResult } from './avm_contract_call_result.js';
6
6
  import { type Gas } from './avm_gas.js';
@@ -16,8 +16,8 @@ export declare class AvmSimulator {
16
16
  private tallyPrintFunction;
17
17
  private tallyInstructionFunction;
18
18
  constructor(context: AvmContext, instructionSet?: InstructionSet);
19
- static create(stateManager: AvmPersistableStateManager, address: AztecAddress, sender: AztecAddress, functionSelector: FunctionSelector, // may be temporary (#7224)
20
- transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: Fr[], allocatedGas: Gas): AvmSimulator;
19
+ static build(context: AvmContext): Promise<AvmSimulator>;
20
+ static create(stateManager: AvmPersistableStateManager, address: AztecAddress, sender: AztecAddress, transactionFee: Fr, globals: GlobalVariables, isStaticCall: boolean, calldata: Fr[], allocatedGas: Gas): Promise<AvmSimulator>;
21
21
  /**
22
22
  * Fetch the bytecode and execute it in the current context.
23
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../src/avm/avm_simulator.ts"],"names":[],"mappings":";;AAAA,OAAO,EACL,KAAK,YAAY,EACjB,EAAE,EACF,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAUxC,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2CAA2C,CAAC;AAYnD,qBAAa,YAAY;IASX,OAAO,CAAC,OAAO;IAAc,OAAO,CAAC,cAAc;IAR/D,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,wBAAwB,CAA2C;gBAEvD,OAAO,EAAE,UAAU,EAAU,cAAc,GAAE,cAAkC;WAYrF,MAAM,CAClB,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,gBAAgB,EAAE,2BAA2B;IAC/D,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,YAAY,EAAE,GAAG;IAmBnB;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAyBtD;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwE9E,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,kBAAkB;CAoB3B"}
1
+ {"version":3,"file":"avm_simulator.d.ts","sourceRoot":"","sources":["../../src/avm/avm_simulator.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,EAAE,EAAE,KAAK,eAAe,EAAoC,MAAM,oBAAoB,CAAC;AAMnH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,cAAc,CAAC;AAUxC,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,2CAA2C,CAAC;AAYnD,qBAAa,YAAY;IAWX,OAAO,CAAC,OAAO;IAAc,OAAO,CAAC,cAAc;IAV/D,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,kBAAkB,CAAY;IACtC,OAAO,CAAC,wBAAwB,CAA2C;gBAIvD,OAAO,EAAE,UAAU,EAAU,cAAc,GAAE,cAAkC;WAe/E,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;WAQjD,MAAM,CACxB,YAAY,EAAE,0BAA0B,EACxC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,EAAE,EAClB,OAAO,EAAE,eAAe,EACxB,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,EAAE,EAAE,EACd,YAAY,EAAE,GAAG;IAiBnB;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC;IA0BtD;;OAEG;IACI,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;;OAGG;IACU,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwE9E,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,kBAAkB;CAoB3B"}
@@ -1,5 +1,5 @@
1
- import { Fr, MAX_L2_GAS_PER_ENQUEUED_CALL, } from '@aztec/circuits.js';
2
- import { createDebugLogger } from '@aztec/foundation/log';
1
+ import { Fr, MAX_L2_GAS_PER_TX_PUBLIC_PORTION } from '@aztec/circuits.js';
2
+ import { createLogger } from '@aztec/foundation/log';
3
3
  import { strict as assert } from 'assert';
4
4
  import { SideEffectLimitReachedError } from '../public/side_effect_errors.js';
5
5
  import { AvmContext } from './avm_context.js';
@@ -10,6 +10,8 @@ import { isAvmBytecode } from './bytecode_utils.js';
10
10
  import { AvmExecutionError, AvmRevertReason, InvalidProgramCounterError, revertReasonFromExceptionalHalt, revertReasonFromExplicitRevert, } from './errors.js';
11
11
  import { INSTRUCTION_SET, decodeInstructionFromBytecode, } from './serialization/bytecode_serialization.js';
12
12
  export class AvmSimulator {
13
+ // Test Purposes only: Logger will not have the proper function name. Use this constructor for testing purposes
14
+ // only. Otherwise, use build() below.
13
15
  constructor(context, instructionSet = INSTRUCTION_SET()) {
14
16
  this.context = context;
15
17
  this.instructionSet = instructionSet;
@@ -17,21 +19,28 @@ export class AvmSimulator {
17
19
  this.pcTallies = new Map();
18
20
  this.tallyPrintFunction = () => { };
19
21
  this.tallyInstructionFunction = (_a, _b, _c) => { };
20
- assert(context.machineState.gasLeft.l2Gas <= MAX_L2_GAS_PER_ENQUEUED_CALL, `Cannot allocate more than ${MAX_L2_GAS_PER_ENQUEUED_CALL} to the AVM for execution of an enqueued call`);
21
- this.log = createDebugLogger(`aztec:avm_simulator:core(f:${context.environment.functionSelector.toString()})`);
22
- if (process.env.LOG_LEVEL === 'debug') {
22
+ assert(context.machineState.gasLeft.l2Gas <= MAX_L2_GAS_PER_TX_PUBLIC_PORTION, `Cannot allocate more than ${MAX_L2_GAS_PER_TX_PUBLIC_PORTION} to the AVM for execution.`);
23
+ this.log = createLogger(`simulator:avm(calldata[0]: ${context.environment.calldata[0]})`);
24
+ // TODO(palla/log): Should tallies be printed on debug, or only on trace?
25
+ if (this.log.isLevelEnabled('debug')) {
23
26
  this.tallyPrintFunction = this.printOpcodeTallies;
24
27
  this.tallyInstructionFunction = this.tallyInstruction;
25
28
  }
26
29
  }
27
- static create(stateManager, address, sender, functionSelector, // may be temporary (#7224)
28
- transactionFee, globals, isStaticCall, calldata, allocatedGas) {
29
- const avmExecutionEnv = new AvmExecutionEnvironment(address, sender, functionSelector,
30
+ // Factory to have a proper function name in the logger. Retrieving the name is asynchronous and
31
+ // cannot be done as part of the constructor.
32
+ static async build(context) {
33
+ const simulator = new AvmSimulator(context);
34
+ const fnName = await context.persistableState.getPublicFunctionDebugName(context.environment);
35
+ simulator.log = createLogger(`simulator:avm(f:${fnName})`);
36
+ return simulator;
37
+ }
38
+ static async create(stateManager, address, sender, transactionFee, globals, isStaticCall, calldata, allocatedGas) {
39
+ const avmExecutionEnv = new AvmExecutionEnvironment(address, sender,
30
40
  /*contractCallDepth=*/ Fr.zero(), transactionFee, globals, isStaticCall, calldata);
31
41
  const avmMachineState = new AvmMachineState(allocatedGas);
32
42
  const avmContext = new AvmContext(stateManager, avmExecutionEnv, avmMachineState);
33
- const instructionSet = INSTRUCTION_SET();
34
- return new AvmSimulator(avmContext, instructionSet);
43
+ return await AvmSimulator.build(avmContext);
35
44
  }
36
45
  /**
37
46
  * Fetch the bytecode and execute it in the current context.
@@ -41,10 +50,11 @@ export class AvmSimulator {
41
50
  if (!bytecode) {
42
51
  // revert, consuming all gas
43
52
  const message = `No bytecode found at: ${this.context.environment.address}. Reverting...`;
53
+ const fnName = await this.context.persistableState.getPublicFunctionDebugName(this.context.environment);
44
54
  const revertReason = new AvmRevertReason(message,
45
55
  /*failingFunction=*/ {
46
56
  contractAddress: this.context.environment.address,
47
- functionSelector: this.context.environment.functionSelector,
57
+ functionName: fnName,
48
58
  },
49
59
  /*noirCallStack=*/ []);
50
60
  this.log.warn(message);
@@ -78,7 +88,7 @@ export class AvmSimulator {
78
88
  const [instruction, bytesRead] = decodeInstructionFromBytecode(bytecode, machineState.pc, this.instructionSet);
79
89
  const instrStartGas = machineState.gasLeft; // Save gas before executing instruction (for profiling)
80
90
  const instrPc = machineState.pc; // Save PC before executing instruction (for profiling)
81
- this.log.debug(`[PC:${machineState.pc}] [IC:${instrCounter++}] ${instruction.toString()} (gasLeft l2=${machineState.l2GasLeft} da=${machineState.daGasLeft})`);
91
+ this.log.trace(`[PC:${machineState.pc}] [IC:${instrCounter++}] ${instruction.toString()} (gasLeft l2=${machineState.l2GasLeft} da=${machineState.daGasLeft})`);
82
92
  // Execute the instruction.
83
93
  // Normal returns and reverts will return normally here.
84
94
  // "Exceptional halts" will throw.
@@ -101,7 +111,7 @@ export class AvmSimulator {
101
111
  }
102
112
  const output = machineState.getOutput();
103
113
  const reverted = machineState.getReverted();
104
- const revertReason = reverted ? revertReasonFromExplicitRevert(output, this.context) : undefined;
114
+ const revertReason = reverted ? await revertReasonFromExplicitRevert(output, this.context) : undefined;
105
115
  const results = new AvmContractCallResult(reverted, output, machineState.gasLeft, revertReason);
106
116
  this.log.debug(`Context execution results: ${results.toString()}`);
107
117
  this.tallyPrintFunction();
@@ -111,10 +121,10 @@ export class AvmSimulator {
111
121
  catch (err) {
112
122
  this.log.verbose('Exceptional halt (revert by something other than REVERT opcode)');
113
123
  if (!(err instanceof AvmExecutionError || err instanceof SideEffectLimitReachedError)) {
114
- this.log.verbose(`Unknown error thrown by AVM: ${err}`);
124
+ this.log.error(`Unknown error thrown by AVM: ${err}`);
115
125
  throw err;
116
126
  }
117
- const revertReason = revertReasonFromExceptionalHalt(err, this.context);
127
+ const revertReason = await revertReasonFromExceptionalHalt(err, this.context);
118
128
  // Note: "exceptional halts" cannot return data, hence [].
119
129
  const results = new AvmContractCallResult(/*reverted=*/ true, /*output=*/ [], machineState.gasLeft, revertReason);
120
130
  this.log.debug(`Context execution results: ${results.toString()}`);
@@ -153,4 +163,4 @@ export class AvmSimulator {
153
163
  }
154
164
  }
155
165
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsRUFBRSxFQUdGLDRCQUE0QixHQUM3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsK0JBQStCLEVBQy9CLDhCQUE4QixHQUMvQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsZUFBZSxFQUVmLDZCQUE2QixHQUM5QixNQUFNLDJDQUEyQyxDQUFDO0FBWW5ELE1BQU0sT0FBTyxZQUFZO0lBU3ZCLFlBQW9CLE9BQW1CLEVBQVUsaUJBQWlDLGVBQWUsRUFBRTtRQUEvRSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQW9DO1FBTjNGLGtCQUFhLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEQsY0FBUyxHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTVDLHVCQUFrQixHQUFHLEdBQUcs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
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdm0vYXZtX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLEVBQUUsRUFBd0IsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuSCxPQUFPLEVBQWUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFbEUsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLCtCQUErQixFQUMvQiw4QkFBOEIsR0FDL0IsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNMLGVBQWUsRUFFZiw2QkFBNkIsR0FDOUIsTUFBTSwyQ0FBMkMsQ0FBQztBQVluRCxNQUFNLE9BQU8sWUFBWTtJQVN2QiwrR0FBK0c7SUFDL0csc0NBQXNDO0lBQ3RDLFlBQW9CLE9BQW1CLEVBQVUsaUJBQWlDLGVBQWUsRUFBRTtRQUEvRSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQVUsbUJBQWMsR0FBZCxjQUFjLENBQW9DO1FBUjNGLGtCQUFhLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDcEQsY0FBUyxHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFD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
@@ -11,7 +11,13 @@ import { type IndexedTreeLeafPreimage, type TreeLeafPreimage } from '@aztec/foun
11
11
  type PreimageWitness<T extends IndexedTreeLeafPreimage> = {
12
12
  preimage: T;
13
13
  index: bigint;
14
- update: boolean;
14
+ };
15
+ /**
16
+ * The result of fetching a leaf from an indexed tree. Contains the preimage and wether the leaf was already present
17
+ * or it's a low leaf.
18
+ */
19
+ type GetLeafResult<T extends IndexedTreeLeafPreimage> = PreimageWitness<T> & {
20
+ alreadyPresent: boolean;
15
21
  };
16
22
  /**
17
23
  * Contains the low sibling path and a boolean if the next index pointed to
@@ -21,18 +27,29 @@ type LeafWitness<T extends IndexedTreeLeafPreimage> = PreimageWitness<T> & {
21
27
  siblingPath: Fr[];
22
28
  };
23
29
  /**
24
- * The result of an indexed insertion in an indexed merkle tree.
30
+ * The result of an update in an indexed merkle tree (no new leaf inserted)
31
+ */
32
+ type IndexedUpdateResult<T extends IndexedTreeLeafPreimage> = {
33
+ element: T;
34
+ lowWitness: LeafWitness<T>;
35
+ };
36
+ /**
37
+ * The result of an insertion in an indexed merkle tree.
25
38
  * This will be used to hint the circuit
26
39
  */
27
- export type IndexedInsertionResult<T extends IndexedTreeLeafPreimage> = {
40
+ export type IndexedInsertResult<T extends IndexedTreeLeafPreimage> = IndexedUpdateResult<T> & {
28
41
  leafIndex: bigint;
29
42
  insertionPath: Fr[];
30
- newOrElementToUpdate: {
31
- update: boolean;
32
- element: T;
33
- };
34
- lowWitness: LeafWitness<T>;
35
43
  };
44
+ /**
45
+ * The result of an indexed upsert in an indexed merkle tree.
46
+ * This will be used to hint the circuit
47
+ */
48
+ export type IndexedUpsertResult<T extends IndexedTreeLeafPreimage> = (IndexedUpdateResult<T> & {
49
+ update: true;
50
+ }) | (IndexedInsertResult<T> & {
51
+ update: false;
52
+ });
36
53
  /****************************************************/
37
54
  /****** The AvmEphemeralForest Class ****************/
38
55
  /****************************************************/
@@ -71,14 +88,14 @@ export declare class AvmEphemeralForest {
71
88
  * @param newValue - The value to be written or updated to
72
89
  * @returns The insertion result which contains the insertion path, low leaf and the new leaf index
73
90
  */
74
- writePublicStorage(slot: Fr, newValue: Fr): Promise<IndexedInsertionResult<PublicDataTreeLeafPreimage>>;
91
+ writePublicStorage(slot: Fr, newValue: Fr): Promise<IndexedUpsertResult<PublicDataTreeLeafPreimage>>;
75
92
  private _updateSortedKeys;
76
93
  /**
77
94
  * This appends a nullifier to the nullifier tree, and throws if the nullifier already exists
78
95
  * @param value - The nullifier to be appended
79
96
  * @returns The insertion result which contains the insertion path, low leaf and the new leaf index
80
97
  */
81
- appendNullifier(nullifier: Fr): Promise<IndexedInsertionResult<NullifierLeafPreimage>>;
98
+ appendNullifier(nullifier: Fr): Promise<IndexedInsertResult<NullifierLeafPreimage>>;
82
99
  /**
83
100
  * This appends a note hash to the note hash tree
84
101
  * @param value - The note hash to be appended
@@ -106,7 +123,7 @@ export declare class AvmEphemeralForest {
106
123
  * @param T - The type of the preimage (PublicData or Nullifier)
107
124
  * @returns The leaf or low leaf info (preimage & leaf index).
108
125
  */
109
- getLeafOrLowLeafInfo<ID extends IndexedTreeId, T extends IndexedTreeLeafPreimage>(treeId: ID, key: Fr): Promise<PreimageWitness<T>>;
126
+ getLeafOrLowLeafInfo<ID extends IndexedTreeId, T extends IndexedTreeLeafPreimage>(treeId: ID, key: Fr): Promise<GetLeafResult<T>>;
110
127
  /**
111
128
  * Internal helper to get the leaf or low leaf preimage and its index in the indexed tree given a key (slot or nullifier value).
112
129
  * If the key is not found in the tree, it does an external lookup to the underlying merkle DB.
@@ -115,11 +132,11 @@ export declare class AvmEphemeralForest {
115
132
  * @param key - The key for which we are look up the leaf or low leaf for.
116
133
  * @param T - The type of the preimage (PublicData or Nullifier)
117
134
  * @returns [
118
- * preimageWitness - The leaf or low leaf info (preimage & leaf index),
135
+ * getLeafResult - The leaf or low leaf info (preimage & leaf index),
119
136
  * pathAbsentInEphemeralTree - whether its sibling path is absent in the ephemeral tree (useful during insertions)
120
137
  * ]
121
138
  */
122
- _getLeafOrLowLeafInfo<ID extends IndexedTreeId, T extends IndexedTreeLeafPreimage>(treeId: ID, key: Fr): Promise<[PreimageWitness<T>, /*pathAbsentInEphemeralTree=*/ boolean]>;
139
+ _getLeafOrLowLeafInfo<ID extends IndexedTreeId, T extends IndexedTreeLeafPreimage>(treeId: ID, key: Fr): Promise<[GetLeafResult<T>, /*pathAbsentInEphemeralTree=*/ boolean]>;
123
140
  /**
124
141
  * Helper to search for the leaf with the specified key in the indexedUpdates
125
142
  * and return its leafIndex.
@@ -144,7 +161,7 @@ export declare class AvmEphemeralForest {
144
161
  * @param minIndex - The index of the leaf with the largest key <= the specified key.
145
162
  * @param T - The type of the preimage (PublicData or Nullifier)
146
163
  * @returns [
147
- * preimageWitness | undefined - The leaf or low leaf info (preimage & leaf index),
164
+ * GetLeafResult | undefined - The leaf or low leaf info (preimage & leaf index),
148
165
  * pathAbsentInEphemeralTree - whether its sibling path is absent in the ephemeral tree (useful during insertions)
149
166
  * ]
150
167
  *
@@ -1 +1 @@
1
- {"version":3,"file":"avm_tree.d.ts","sourceRoot":"","sources":["../../src/avm/avm_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,KAAK,wBAAwB,EAAiB,MAAM,sBAAsB,CAAC;AACtH,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEvF,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,uBAAuB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK9F,sDAAsD;AACtD,sDAAsD;AACtD,sDAAsD;AAEtD;;GAEG;AACH,KAAK,eAAe,CAAC,CAAC,SAAS,uBAAuB,IAAI;IACxD,QAAQ,EAAE,CAAC,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;GAGG;AACH,KAAK,WAAW,CAAC,CAAC,SAAS,uBAAuB,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG;IACzE,WAAW,EAAE,EAAE,EAAE,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,uBAAuB,IAAI;IACtE,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,EAAE,EAAE,CAAC;IACpB,oBAAoB,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC;IACtD,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC5B,CAAC;AAEF,sDAAsD;AACtD,sDAAsD;AACtD,sDAAsD;AAEtD;;;;GAIG;AACH,qBAAa,kBAAkB;IAEpB,MAAM,EAAE,wBAAwB;IAChC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC;IAG5C,cAAc,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACxE,iBAAiB,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;gBALrD,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAG5C,cAAc,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,EACxE,iBAAiB,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC;WAGjD,MAAM,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAalF,IAAI,IAAI,kBAAkB;IAS1B;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAuBxE;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC,SAAS,uBAAuB,EAC3E,MAAM,EAAE,EAAE,EACV,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,CAAC,EAClB,eAAe,EAAE,CAAC,GACjB,EAAE,EAAE;IAgBP;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,CAAC;IA6E7G,OAAO,CAAC,iBAAiB;IAqBzB;;;;OAIG;IACG,eAAe,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;IA+C5F;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;IAQlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;;;;;;OAOG;IACG,oBAAoB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC,SAAS,uBAAuB,EACpF,MAAM,EAAE,EAAE,EACV,GAAG,EAAE,EAAE,GACN,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAK9B;;;;;;;;;;;OAWG;IACG,qBAAqB,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC,SAAS,uBAAuB,EACrF,MAAM,EAAE,EAAE,EACV,GAAG,EAAE,EAAE,GACN,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAyCxE;;;;;;;;OAQG;IACH,OAAO,CAAC,yCAAyC;IAiBjD;;OAEG;YACW,oCAAoC;IAqBlD;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,uBAAuB;IA0CrC;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,gBAAgB,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE;CAI1D;AAED,sDAAsD;AACtD,qDAAqD;AACrD,sDAAsD;AACtD,aAAK,QAAQ;IACX,IAAI,IAAA;IACJ,IAAI,IAAA;CACL;AAED,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC;IACnB,KAAK,EAAE,EAAE,CAAC;CACX,CAAC;AACF,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC;IACnB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAaxB,sDAAsD;AACtD,sDAAsD;AACtD,sDAAsD;AACtD,QAAA,MAAM,IAAI,SAAU,IAAI,SAAS,IAAI,KAAG,IAItC,CAAC;AAEH,QAAA,MAAM,IAAI,UAAW,EAAE,KAAG,IAGxB,CAAC;AAEH,sDAAsD;AACtD,qDAAqD;AACrD,sDAAsD;AAEtD;;;;GAIG;AACH,qBAAa,gBAAgB;IAKA,SAAS,EAAE,MAAM;IAAS,KAAK,EAAE,MAAM;IAJlE,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;IAC3B,QAAQ,EAAE,EAAE,EAAE,CAAC;IAEtB,OAAO;WAaM,MAAM,CACjB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,wBAAwB,EAChC,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,gBAAgB,CAAC;IAM5B;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI;IAM3B;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,IAAI;IAK9D;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,GAAG,SAAS;IAU/C;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,IAAI;IASzD;;;;OAIG;IAEH,MAAM,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAgB9D;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCjG;;OAEG;IACI,OAAO,IAAI,EAAE;IAIpB;;;;OAIG;IACI,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE;IAW9C;;;;;OAKG;IACI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAW9D;;OAEG;IACH,OAAO,CAAC,QAAQ;IAahB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,eAAe;CAkCxB"}
1
+ {"version":3,"file":"avm_tree.d.ts","sourceRoot":"","sources":["../../src/avm/avm_tree.ts"],"names":[],"mappings":"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"}