From 74730e9f5fb6c0df637343733f11079dac59ae45 Mon Sep 17 00:00:00 2001 From: igaray Date: Wed, 28 Aug 2024 12:38:45 +0000 Subject: [PATCH] deploy: 354ef2b8088785e859a618418c62bfb8c995faff --- cairo_native/docs/index.html | 1 + cairo_native/docs/section01/index.html | 407 ++++++++++++++++++ cairo_native/docs/section01/sidebar-items.js | 1 + cairo_native/docs/section02/index.html | 239 ++++++++++ cairo_native/docs/section02/sidebar-items.js | 1 + cairo_native/docs/section03/index.html | 257 +++++++++++ cairo_native/docs/section03/sidebar-items.js | 1 + cairo_native/docs/section04/index.html | 201 +++++++++ cairo_native/docs/section04/sidebar-items.js | 1 + cairo_native/docs/section05/index.html | 136 ++++++ cairo_native/docs/section05/sidebar-items.js | 1 + cairo_native/docs/section06/index.html | 262 +++++++++++ cairo_native/docs/section06/sidebar-items.js | 1 + cairo_native/docs/section07/index.html | 12 + cairo_native/docs/section07/sidebar-items.js | 1 + cairo_native/docs/section08/index.html | 86 ++++ cairo_native/docs/section08/sidebar-items.js | 1 + cairo_native/docs/sidebar-items.js | 1 + cairo_native/enum.OptLevel.html | 2 +- cairo_native/error/enum.CompilerError.html | 2 +- cairo_native/error/enum.Error.html | 2 +- .../error/enum.SierraAssertError.html | 2 +- .../struct.ContractExecutionResult.html | 2 +- .../executor/struct.JitNativeExecutor.html | 12 +- cairo_native/index.html | 368 ++++++++++++---- .../metadata/gas/enum.GasMetadataError.html | 2 +- cairo_native/sidebar-items.js | 2 +- cairo_native/values/enum.JitValue.html | 2 +- help.html | 2 +- search-index.js | 12 +- .../cairo_native/cairo_native-desc-0-.js | 2 +- settings.html | 2 +- src-files.js | 2 +- src/cairo_native/docs.rs.html | 69 +++ src/cairo_native/execution_result.rs.html | 2 +- src/cairo_native/executor/jit.rs.html | 8 - src/cairo_native/lib.rs.html | 188 +------- 37 files changed, 2002 insertions(+), 291 deletions(-) create mode 100644 cairo_native/docs/index.html create mode 100644 cairo_native/docs/section01/index.html create mode 100644 cairo_native/docs/section01/sidebar-items.js create mode 100644 cairo_native/docs/section02/index.html create mode 100644 cairo_native/docs/section02/sidebar-items.js create mode 100644 cairo_native/docs/section03/index.html create mode 100644 cairo_native/docs/section03/sidebar-items.js create mode 100644 cairo_native/docs/section04/index.html create mode 100644 cairo_native/docs/section04/sidebar-items.js create mode 100644 cairo_native/docs/section05/index.html create mode 100644 cairo_native/docs/section05/sidebar-items.js create mode 100644 cairo_native/docs/section06/index.html create mode 100644 cairo_native/docs/section06/sidebar-items.js create mode 100644 cairo_native/docs/section07/index.html create mode 100644 cairo_native/docs/section07/sidebar-items.js create mode 100644 cairo_native/docs/section08/index.html create mode 100644 cairo_native/docs/section08/sidebar-items.js create mode 100644 cairo_native/docs/sidebar-items.js create mode 100644 src/cairo_native/docs.rs.html diff --git a/cairo_native/docs/index.html b/cairo_native/docs/index.html new file mode 100644 index 000000000..026e66cc5 --- /dev/null +++ b/cairo_native/docs/index.html @@ -0,0 +1 @@ +cairo_native::docs - Rust

Module cairo_native::docs

source ·
Expand description

§Cairo Native Compiler and Execution Engine

Modules§

\ No newline at end of file diff --git a/cairo_native/docs/section01/index.html b/cairo_native/docs/section01/index.html new file mode 100644 index 000000000..378f09ac2 --- /dev/null +++ b/cairo_native/docs/section01/index.html @@ -0,0 +1,407 @@ +cairo_native::docs::section01 - Rust

Module cairo_native::docs::section01

source ·
Expand description

§Overview

+

This crate is a compiler and JIT engine that transforms Sierra (or Cairo) +sources into MLIR, which can be +JIT-executed or further +compiled into a binary +ahead of time.

+

§Getting started as a developer

+

First make sure you have a working environment and are able to compile the +project without issues. Make sure to follow the setup guide +on steps on how to do this.

+

It is generally recommended to use the optimized-dev cargo profile when +testing or running programs, the make target make build-dev will be useful for +this.

+

§Other tools

+

In addition to the tools included in Cairo Native, it is also recommended you +have cairo-compile and cairo-run installed to check how the generated sierra +code looks like, and to compare results manually (when required) which will help +greatly when implementing functionality into Cairo Native.

+

You can check the cairo repository +for more info on how to get those tools.

+

§Basic Workflow

+

After having implemented your desired feature or bug fix, you should check it +passes all tests and lints, also make sure to add any needed test cases for the +added code.

+
# Check it passes all lints
+make check
+
+# Check it passes all tests
+make test
+
+

Then you are free to go and make a PR!

+

§High level project overview

+

This will explain how the project is structured, without going into much details +yet:

+

§Project dependencies

+

The major dependencies of the project are the following:

+
    +
  • Melior: This is the crate that abstracts away most of the interfacing with +MLIR, our compilation target, it uses mlir-sys and tries to safely +abstract MLIR in Rust.
  • +
  • Cairo: We use the cairo crates to keep a close tie to the API contracts +of the language, they provide a really nice way to know what features the +language has and aids with codegen. For example, most library functions +are under enumerations, and thanks to Rust exhaustive pattern matching we +can’t miss any.
  • +
  • Runtime: The JIT runner and compiler depend on a “runtime” that lives on +this repository too, it aids with more complex stuff like pedersen, +keccak and dictionaries that would be quite complex to implement from +the ground up in MLIR (Basically would be like coding a complex hash +function in pseudo assembly).
  • +
+

§Common definitions

+

Within this project there are lots of functions with the same signature. +As their arguments have all the same meaning, they are documented here:

+
    +
  • context: NativeContext: The MLIR context.
  • +
  • module: &NativeModule: The compiled MLIR program, with other relevant +information such as program registry and metadata.
  • +
  • program: &Program: The Sierra input program.
  • +
  • registry: &ProgramRegistry<TType, TLibfunc>: The registry extracted +from the program.
  • +
  • metadata: &mut MetadataStorage: Current compiler metadata.
  • +
+

§Project layout

+

The code is laid out in the following sections:

+
 src
+ ├─ arch.rs             Trampoline assembly for calling functions with dynamic signatures.
+ ├─ arch/               Architecture-specific code for the trampoline.
+ ├─ bin/                Binary programs
+ ├─ block_ext.rs        A melior (MLIR) block trait extension to write less code.
+ ├─ cache.rs            Types and implementations of compiled program caches. 
+ ├─ compiler.rs         The glue code of the compiler, has the codegen for
+                        the function signatures and calls the libfunc
+                        codegen implementations.
+ ├─ context.rs          The MLIR context wrapper, provides the compile method.
+ ├─ debug.rs            
+ ├─ docs.rs             Documentation modules.
+ ├─ error.rs            Error handling,
+ ├─ execution_result.rs Program result parsing.
+ ├─ executor.rs         The executor & related code,
+ ├─ ffi.cpp             Missing FFI C wrappers,
+ ├─ ffi.rs              Missing FFI C wrappers, rust side.
+ ├─ lib.rs              The main lib file.
+ ├─ libfuncs.rs         Cairo Sierra libfunc glue code & implementations,
+ ├─ metadata.rs         Metadata injector to use within the compilation process.
+ ├─ module.rs           The MLIR module wrapper.
+ ├─ starknet.rs         Starknet syscall handler glue code.
+ ├─ starknet_stub.rs    
+ ├─ types.rs            Cairo to MLIR type information,
+ ├─ utils.rs            Internal utilities.
+ └─ values.rs           JIT serialization.
+

§Library functions

+

Path: src/libfuncs

+

Here are stored all the library function implementations in MLIR, this +contains the majority of the code.

+

To store information about the different types of library functions sierra +has, we divide them into the following using the enum SierraLibFunc:

+
    +
  • Branching: These functions are implemented inline, adding blocks and +jumping as necessary based on given conditions.
  • +
  • Constant: A constant value, this isn’t represented as a function and +is inserted inline.
  • +
  • Function: Any other function.
  • +
  • InlineDataFlow: Functions that can be implemented inline without much +problem. For example: dup, store_temp
  • +
+

§Statements

+

Path: src/statements

+

Here is the code that processes the statements of non-library functions. +It handles dataflow, branching, function calls, variable storage and also +has implementations for the inline library functions.

+

§User functions

+

These are extra utility functions unrelated to sierra that aid in the +development, such as wrapping return values and printing them.

+

§Basic API usage example

+

The API contains two structs, NativeContext and NativeExecutor. +The main purpose of NativeContext is MLIR initialization, compilation and +lowering to LLVM. +NativeExecutor in the other hand is responsible of executing MLIR +compiled sierra programs from an entrypoint. Programs and JIT states can be +cached in contexts where their execution will be done multiple times.

+ +
use starknet_types_core::felt::Felt;
+use cairo_native::context::NativeContext;
+use cairo_native::executor::JitNativeExecutor;
+use cairo_native::values::JitValue;
+use std::path::Path;
+
+let program_path = Path::new("programs/examples/hello.cairo");
+// Compile the cairo program to sierra.
+let sierra_program = cairo_native::utils::cairo_to_sierra(program_path);
+
+// Instantiate a Cairo Native MLIR context. This data structure is responsible for the MLIR
+// initialization and compilation of sierra programs into a MLIR module.
+let native_context = NativeContext::new();
+
+// Compile the sierra program into a MLIR module.
+let native_program = native_context.compile(&sierra_program, None).unwrap();
+
+// The parameters of the entry point.
+let params = &[JitValue::Felt252(Felt::from_bytes_be_slice(b"user"))];
+
+// Find the entry point id by its name.
+let entry_point = "hello::hello::greet";
+let entry_point_id = cairo_native::utils::find_function_id(&sierra_program, entry_point);
+
+// Instantiate the executor.
+let native_executor = JitNativeExecutor::from_native_module(native_program, Default::default());
+
+// Execute the program.
+let result = native_executor
+    .invoke_dynamic(entry_point_id, params, None)
+    .unwrap();
+
+println!("Cairo program was compiled and executed successfully.");
+println!("{:?}", result);
+

§Running a Cairo program

+

This is a usage example using the API for an easy Cairo program that +requires the least setup to get running. It allows you to compile and +execute a program using the JIT.

+

Example code to run a program:

+ +
use starknet_types_core::felt::Felt;
+use cairo_native::context::NativeContext;
+use cairo_native::executor::NativeExecutor;
+use cairo_native::values::JitValue;
+use std::path::Path;
+
+fn main() {
+    let program_path = Path::new("programs/examples/hello.cairo");
+    // Compile the cairo program to sierra.
+    let sierra_program = cairo_native::utils::cairo_to_sierra(program_path);
+
+    // Instantiate a Cairo Native MLIR context. This data structure is responsible for the MLIR
+    // initialization and compilation of sierra programs into a MLIR module.
+    let native_context = NativeContext::new();
+
+    // Compile the sierra program into a MLIR module.
+    let native_program = native_context.compile(&sierra_program).unwrap();
+
+    // The parameters of the entry point.
+    let params = &[JitValue::Felt252(Felt::from_bytes_be_slice(b"user"))];
+
+    // Find the entry point id by its name.
+    let entry_point = "hello::hello::greet";
+    let entry_point_id = cairo_native::utils::find_function_id(&sierra_program, entry_point);
+
+    // Instantiate the executor.
+    let native_executor = NativeExecutor::new(native_program);
+
+    // Execute the program.
+    let result = native_executor
+        .execute(entry_point_id, params, None)
+        .unwrap();
+
+    println!("Cairo program was compiled and executed successfully.");
+    println!("{:?}", result);
+}
+

§Running a Starknet contract

+

Example code to run a Starknet contract:

+ +
use starknet_types_core::felt::Felt;
+use cairo_lang_compiler::CompilerConfig;
+use cairo_lang_starknet::contract_class::compile_path;
+use cairo_native::context::NativeContext;
+use cairo_native::executor::NativeExecutor;
+use cairo_native::utils::find_entry_point_by_idx;
+use cairo_native::values::JitValue;
+use cairo_native::{
+    metadata::syscall_handler::SyscallHandlerMeta,
+    starknet::{BlockInfo, ExecutionInfo, StarkNetSyscallHandler, SyscallResult, TxInfo, U256},
+};
+use std::path::Path;
+
+/// To run a starknet contract, we need to use a syscall handler, here we show how to implement one (at the end).
+#[derive(Debug)]
+struct SyscallHandler;
+
+fn main() {
+    let path = Path::new("programs/examples/hello_starknet.cairo");
+
+    let contract = compile_path(
+        path,
+        None,
+        CompilerConfig {
+            replace_ids: true,
+            ..Default::default()
+        },
+    )
+    .unwrap();
+
+    let entry_point = contract.entry_points_by_type.constructor.get(0).unwrap();
+    let sierra_program = contract.extract_sierra_program().unwrap();
+
+    let native_context = NativeContext::new();
+
+    let mut native_program = native_context.compile(&sierra_program).unwrap();
+    native_program
+        .insert_metadata(SyscallHandlerMeta::new(&mut SyscallHandler))
+        .unwrap();
+
+    // Call the echo function from the contract using the generated wrapper.
+    let entry_point_fn =
+        find_entry_point_by_idx(&sierra_program, entry_point.function_idx).unwrap();
+
+    let fn_id = &entry_point_fn.id;
+
+    let native_executor = NativeExecutor::new(native_program);
+
+    let result = native_executor
+        .execute_contract(
+            fn_id,
+            // The calldata
+            &[JitValue::Felt252(Felt::ONE)],
+            u64::MAX.into(),
+        )
+        .expect("failed to execute the given contract");
+
+    println!();
+    println!("Cairo program was compiled and executed successfully.");
+    println!("{result:#?}");
+}
+
+// Implement an example syscall handler.
+impl StarkNetSyscallHandler for SyscallHandler {
+    fn get_block_hash(
+        &mut self,
+        block_number: u64,
+        _gas: &mut u128,
+    ) -> SyscallResult<Felt> {
+        println!("Called `get_block_hash({block_number})` from MLIR.");
+        Ok(Felt::from_bytes_be_slice(b"get_block_hash ok"))
+    }
+
+    fn get_execution_info(
+        &mut self,
+        _gas: &mut u128,
+    ) -> SyscallResult<cairo_native::starknet::ExecutionInfo> {
+        println!("Called `get_execution_info()` from MLIR.");
+        Ok(ExecutionInfo {
+            block_info: BlockInfo {
+                block_number: 1234,
+                block_timestamp: 2345,
+                sequencer_address: 3456.into(),
+            },
+            tx_info: TxInfo {
+                version: 4567.into(),
+                account_contract_address: 5678.into(),
+                max_fee: 6789,
+                signature: vec![1248.into(), 2486.into()],
+                transaction_hash: 9876.into(),
+                chain_id: 8765.into(),
+                nonce: 7654.into(),
+            },
+            caller_address: 6543.into(),
+            contract_address: 5432.into(),
+            entry_point_selector: 4321.into(),
+        })
+    }
+
+    fn deploy(
+        &mut self,
+        class_hash: Felt,
+        contract_address_salt: Felt,
+        calldata: &[Felt],
+        deploy_from_zero: bool,
+        _gas: &mut u128,
+    ) -> SyscallResult<(Felt, Vec<Felt>)> {
+        println!("Called `deploy({class_hash}, {contract_address_salt}, {calldata:?}, {deploy_from_zero})` from MLIR.");
+        Ok((
+            class_hash + contract_address_salt,
+            calldata.iter().map(|x| x + &Felt::ONE).collect(),
+        ))
+    }
+
+    fn replace_class(
+        &mut self,
+        class_hash: Felt,
+        _gas: &mut u128,
+    ) -> SyscallResult<()> {
+        println!("Called `replace_class({class_hash})` from MLIR.");
+        Ok(())
+    }
+
+    fn library_call(
+        &mut self,
+        class_hash: Felt,
+        function_selector: Felt,
+        calldata: &[Felt],
+        _gas: &mut u128,
+    ) -> SyscallResult<Vec<Felt>> {
+        println!(
+            "Called `library_call({class_hash}, {function_selector}, {calldata:?})` from MLIR."
+        );
+        Ok(calldata.iter().map(|x| x * Felt::from(3)).collect())
+    }
+
+    fn call_contract(
+        &mut self,
+        address: Felt,
+        entry_point_selector: Felt,
+        calldata: &[Felt],
+        _gas: &mut u128,
+    ) -> SyscallResult<Vec<Felt>> {
+        println!(
+            "Called `call_contract({address}, {entry_point_selector}, {calldata:?})` from MLIR."
+        );
+        Ok(calldata.iter().map(|x| x * Felt::from(3)).collect())
+    }
+
+    fn storage_read(
+        &mut self,
+        address_domain: u32,
+        address: Felt,
+        _gas: &mut u128,
+    ) -> SyscallResult<Felt> {
+        println!("Called `storage_read({address_domain}, {address})` from MLIR.");
+        Ok(address * Felt::from(3))
+    }
+
+    fn storage_write(
+        &mut self,
+        address_domain: u32,
+        address: Felt,
+        value: Felt,
+        _gas: &mut u128,
+    ) -> SyscallResult<()> {
+        println!("Called `storage_write({address_domain}, {address}, {value})` from MLIR.");
+        Ok(())
+    }
+
+    fn emit_event(
+        &mut self,
+        keys: &[Felt],
+        data: &[Felt],
+        _gas: &mut u128,
+    ) -> SyscallResult<()> {
+        println!("Called `emit_event({keys:?}, {data:?})` from MLIR.");
+        Ok(())
+    }
+
+    fn send_message_to_l1(
+        &mut self,
+        to_address: Felt,
+        payload: &[Felt],
+        _gas: &mut u128,
+    ) -> SyscallResult<()> {
+        println!("Called `send_message_to_l1({to_address}, {payload:?})` from MLIR.");
+        Ok(())
+    }
+
+    fn keccak(
+        &mut self,
+        input: &[u64],
+        _gas: &mut u128,
+    ) -> SyscallResult<cairo_native::starknet::U256> {
+        println!("Called `keccak({input:?})` from MLIR.");
+        Ok(U256(Felt::from(1234567890).to_le_bytes()))
+    }
+
+    /*
+    ... more code here, check out the full example in examples/starknet.rs
+    */
+}
+
+

For more examples, check out the examples/ directory.

+
\ No newline at end of file diff --git a/cairo_native/docs/section01/sidebar-items.js b/cairo_native/docs/section01/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section01/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/section02/index.html b/cairo_native/docs/section02/index.html new file mode 100644 index 000000000..8b48bef07 --- /dev/null +++ b/cairo_native/docs/section02/index.html @@ -0,0 +1,239 @@ +cairo_native::docs::section02 - Rust

Module cairo_native::docs::section02

source ·
Expand description

§Compilation Walkthrough

+

This section describes the entire process Cairo Native goes through to +compile a Cairo program to either a shared library (and how to use it) or a +MLIR module for use in the JIT engine.

+

§General flow

+

If you check lib.rs you will see the high level modules of the project.

+

The compiler module is what glues together everything. +You should read its module level documentation. +But the basic flow is like this:

+
    +
  • We take a sierra Program and iterate over its functions.
  • +
  • On each function, we create a MLIR region and a block for each statement +(a.k.a library function call), taking into account possible branches.
  • +
  • On each statement we call the library function implementation, which +appends MLIR code to the given block, and with helper methods, it handles +possible branches and input/output variables.
  • +
+
stateDiagram-v2
+    state "Load sierra program" as sierra
+    state "Initialize compiler" as init
+    state "Initialize execution engine" as engine
+    state if_skip_jit <<choice>>
+    state "Load MLIR dialects" as dialects
+    state "Create builtin module" as module
+    state "Create libc wrappers" as libc
+    state "Process Types" as types
+    state "Process Library functions" as libfuncs
+    state "Save non-flow function info" as func_info
+    state "Process functions" as funcs
+    state "Calculate block ranges per function" as blocks
+    state "Process statements" as statements
+    state "Apply MLIR passes" as passes
+    [*] --> Initialize
+    state Initialize {
+        sierra --> init
+        init --> if_skip_jit
+        if_skip_jit --> engine: if JIT
+        if_skip_jit --> dialects: if Compile
+        engine --> dialects
+    }
+    Initialize --> Compile
+    state Compile {
+        module --> libc
+        libc --> types
+        types --> libfuncs
+        types --> func_info
+        func_info --> libfuncs
+        libfuncs --> funcs
+        funcs --> blocks
+        blocks --> statements
+    }
+    Compile --> passes
+    passes --> Output
+    Output --> [*]
+

§Loading a Cairo Program

+

The first step is to get the sierra code from the given cairo program, this +is done using the relevant methods from the cairo_lang_compiler crate.

+

This gives us a cairo_lang_sierra::program::Program which has the following +structure:

+ +
pub struct Program {
+    pub type_declarations: Vec<TypeDeclaration, Global>,
+    pub libfunc_declarations: Vec<LibfuncDeclaration, Global>,
+    pub statements: Vec<GenStatement<StatementIdx>, Global>,
+    pub funcs: Vec<GenFunction<StatementIdx>, Global>,
+}
+

The compilation process consists in parsing these fields to produce the +relevant MLIR IR code.

+

To do all this we will need a MLIR Context and a module created with that +context, the module describes a compilation unit, in this case, the cairo +program.

+

§Initialization

+

In Cairo Native we provide a API around initializing the context, namely +NativeContext which does the following when +created:

+
    +
  • Create the context
  • +
  • Register all relevant MLIR dialects into the context
  • +
  • Load the dialects
  • +
  • Register all passes into the context
  • +
  • Register all translations to LLVM IR into the context.
  • +
+ +

§Compiling a Sierra Program to MLIR

+

The NativeContext has a method called +compile, +which does the heavy lifting and returns a NativeModule. +This module contains the generated MLIR IR code.

+

The compile method does the following:

+
    +
  • Create a Module
  • +
  • Create the Metadata storage (check the relevant section for more information).
  • +
  • Check if the Sierra program has a gas builtin in it, if it has it will +insert the gas metadata into the storage.
  • +
  • Create the Sierra program registry, which allows type and function lookups.
  • +
  • Call a internal compile method.
  • +
+

This internal compile method then loops on the program function +declarations calling the compile_func method on each of them.

+

§Compiling a function (compile_func)

+

This method generates the structure of the function in MLIR, meaning it will +create the region the body of the function will live on, and then a block +for each statement, each with it’s relevant arguments and return values. It +will also check each statement whether it is branching, and store the +predecessors of each block, to handle jumps.

+

While handling each statement on the function, it will build the types it +finds from the arguments and return values as it encounters them, this is +done using the trait TypeBuilder.

+

After having the function structure created, we proceed to creating the +initial state, which is a Hash map holding the local variables we currently +have, the parameters.

+

Using this initial state, it builds the entry block, which is the first +block the function enters when it’s called, it has the function arguments +as parameters.

+

Then it loops on the statements of the function, on each statement it does +the following:

+
    +
  • Check if there is a gas metadata, and if the statement has a gas cost, +insert the gas cost metadata that lives on only during this statement.
  • +
  • Get the block and possible landing block of this statement.
  • +
  • If there is a landing block, create it. A landing block is the target +block of a previous jump that simply forwards to the current block.
  • +
+

§Metadata Storage

+

This storage is shared everywhere in the compilation process and allows to +easily share data to the relevant places, for example the Gas Metadata +allows getting the gas cost for a given statement, or the enum snapshot +metadata to get the relevant variants in the libfunc builder.

+

§Compiling to native code

+

We part from the point where the program has been compiled into MLIR IR, +and we hold the MLIR Context and Module.

+

From this point, we convert all the dialects within this IR into the LLVM +MLIR Dialect, which is a needed precondition to transform the MLIR IR into +LLVM IR. This is done through passes which are the basis of how LLVM works.

+ +

Given a MLIR Module with only the LLVM dialect, we can translate it, +currently the LLVM MLIR API for this is only available in C++, so we had +to make our temporary C API wrapper (which we contributed to upstream LLVM. +After that we also need to use the llvm-sys crate which provides the C +API bindings in Rust.

+

The required method is mlirTranslateModuleToLLVMIR which takes a MLIR +Module and a LLVM Context (not a MLIR one!). The LLVM Context will be used +to create a LLVM Module, which we can then compile to machine code.

+

The process is a bit verbose but interesting, LLVM itself is a target +independent code generator, but to compile down we need an actual target, +to do so we initialize the required target and utilities (in this case we +initialize all targets the current compiled LLVM supports):

+ +
LLVM_InitializeAllTargets();
+LLVM_InitializeAllTargetInfos();
+LLVM_InitializeAllTargetMCs();
+LLVM_InitializeAllAsmPrinters();
+LLVM_InitializeAllAsmParsers();
+

After that we create a LLVM context, and pass it along the module to the +mlirTranslateModuleToLLVMIR method:

+ +
let llvm_module = mlirTranslateModuleToLLVMIR(mlir_module_op, llvm_context);
+

Then we need to create the target machine, which needs a target triple, the +CPU name and CPU features. After creating the target machine, we can emit +the object file either to a memory buffer or a file.

+ +
let machine = LLVMCreateTargetMachine(
+            target,
+            target_triple.cast(),
+            target_cpu.cast(),
+            target_cpu_features.cast(),
+            LLVMCodeGenOptLevel::LLVMCodeGenLevelNone, // opt level
+            LLVMRelocMode::LLVMRelocDynamicNoPic,
+            LLVMCodeModel::LLVMCodeModelDefault,
+);
+
+let mut out_buf: MaybeUninit<LLVMMemoryBufferRef> = MaybeUninit::uninit();
+
+LLVMTargetMachineEmitToMemoryBuffer(
+            machine,
+            llvm_module,
+            LLVMCodeGenFileType::LLVMObjectFile,
+            error_buffer,
+            out_buf.as_mut_ptr(),
+);
+

After emitting the object file, we need to pass it to a linker to get our +shared library. This is currently done by executing ld, with the proper +flags to create a shared library on each platform, as a process using a +temporary file, because it can’t be piped.

+
graph TD
+    A[MLIR Module using all available dialects]
+    --> |Passes| B[Canonicalized MLIR module using only the LLVM dialect]
+    B --> BB[mlirTranslateModuleToLLVMIR]
+    BB --> C[LLVM IR Module]
+    D[Create LLVM Context] --> BB
+    C --> E[Emit Binary Object]
+    F[Create Target LLVM Machine] --> E
+    E --> |Link the object file| G[Shared Library]
+

§Loading the native library and using it

+

To load the library, we use the crate libloading, passing it the path to +our shared library.

+

Then we initialize the AotNativeExecutor with the loaded library and the +program registry.

+

This initialization internally does the following:

+
    +
  • Constructs the symbol of the function to be called, which is always the +function name but wrapped with a prefix to instead target the C API +wrapper, it looks like the following:
  • +
+ +
let function_name = format!("_mlir_ciface_{function_name}");
+
    +
  • Using the registry we get the function signature, although libloading +allows us to have a function signature at compile time to make sure we +call it properly, but we need to ignore this as we want to call any +function given the library and the registry.
  • +
+ +
graph TD
+    A[Load library with libloading] --> B[Get the function pointer]
+    C[Generate the target symbol's name] --> B
+    D[Extract the function signature from the program's registry] --> E[Setup the arguments]
+    E --> F[Call the trampoline function]
+    B --> F
+    F --> G[Interpret the results]
+    G --> H[Cleanup and deallocate]
+

§Addendum

§About canonicalization in MLIR:

+

MLIR has a single canonicalization pass, which iteratively applies the +canonicalization patterns of all loaded dialects in a greedy way. +Canonicalization is best-effort and not guaranteed to bring the entire IR in +a canonical form. It applies patterns until either fix point is reached or +the maximum number of iterations/rewrites (as specified via pass options) is +exhausted. This is for efficiency reasons and to ensure that faulty patterns +cannot cause infinite looping.

+

Good read about this: https://sunfishcode.github.io/blog/2018/10/22/Canonicalization.html

+
\ No newline at end of file diff --git a/cairo_native/docs/section02/sidebar-items.js b/cairo_native/docs/section02/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section02/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/section03/index.html b/cairo_native/docs/section03/index.html new file mode 100644 index 000000000..2041b6d1d --- /dev/null +++ b/cairo_native/docs/section03/index.html @@ -0,0 +1,257 @@ +cairo_native::docs::section03 - Rust

Module cairo_native::docs::section03

source ·
Expand description

§Execution Walkthrough

+

Given the following Cairo program:

+ +
// This is the cairo program. It just adds two numbers together and returns the
+// result in an enum whose variant is selected using the result's parity.
+enum Parity<T> {
+  Even: T,
+  Odd: T, 
+}
+/// Add `lhs` and `rhs` together and return the result in `Parity::Even` if it's
+/// even or `Parity::Odd` otherwise.
+fn run(lhs: u128, rhs: u128) -> Parity<u128> {
+  let res = lhs + rhs;
+  if (res & 1) == 0 {
+    Parity::Even(res)
+  } else {
+    Parity::Odd(res)
+} }
+

Let’s see how it is executed. We start with the following Rust code:

+ +
let program = get_sierra_program();       // The result of the `cairo-compile` program.
+let module = get_native_module(&program); // This compiles the Sierra program to
+                                          // MLIR (not covered here).
+

§Execution engine preparation

+

Given a compiled Cairo program in an MLIR module, once it is lowered to the LLVM dialect we have two options to execute it: AOT and JIT.

+

§Using the JIT executor

+

If we decide to use the JIT executor we just create the jit runner and we’re done.

+ +
let program = get_sierra_program();
+let module = get_native_module(&program);
+
+// The optimization level can be `None`, `Less`, `Default` or `Aggressive`. They
+// are equivalent to compiling a C program using `-O0`, `-O1`, `-O2` and `-O3`
+// respectively.
+let engine = JitNativeExecutor::from_native_module(module, OptLevel::Default);
+

§Using the AOT executor

+

Preparing the AOT executor is more complicated since we need to compile it into a shared library and load it from disk.

+ +
let program = get_sierra_program();
+let module = get_native_module(&program);
+
+// Internally, this method will run all the steps mentioned before internally into
+// temporary files and return a working `AotNativeExecutor`.
+let engine = AotNativeExecutor::from_native_module(module, OptLevel::Default);
+

§Using caches

+

You can use caches to keep the compiled programs in memory or disk and reuse them between runs. You may use the ProgramCache type, or alternatively just AotProgramCache or JitProgramCache directly.

+

Adding programs to the program cache involves steps not covered here, but once they’re inserted you can get executors like this:

+ +
let engine = program_cache.get(key).expect("program not found");
+

§Invoking the program

+

Regardless of whether we decided to go with AOT or JIT, the program invocation involves the exact same steps. We need to know the entrypoint that we’ll be calling and its arguments.

+

In a future we may be able to implement compile-time trampolines for known program signatures, but for now we need to call the invoke_dynamic or invoke_dynamic_with_syscall_handler methods which works with any signature.

+
+

Note: A trampoline is a function that invokes an compiled MLIR function from Rust code.],

+
+

Now we need to find the function id:

+ +
let program = get_sierra_program();
+
+// The utility function needs the symbol of the entry point, which is built as
+// follows:
+//   <module-name>::<module-name>::<function-name>(<function-idx>)
+//
+// The `<function-idx>` comes from the Sierra program. It's the index of the
+// function in the function declaration section.
+let function_id = find_function_id(&program, "program::program::main(f0)");
+

The arguments must be placed in a list of JitValue instances. The builtins should be ignored since they are filled in automatically. The only builtins required are the GasBuiltin and System (aka. the syscall handler). They are only mandatory when required by the program itself.

+ +
let engine = get_execution_engine(); // This creates the execution engine (covered before).
+
+let args = [
+  JitValue::Uint128(1234),
+  JitValue::Uint128(4321),
+];
+
+

Note: Although it’s called JitValue for now, it’s not tied in any way to the JIT engine. JitValues are used for both the AOT and JIT engines.],

+
+

Finally we can invoke the program like this:

+ +
let engine = get_execution_engine();
+
+let function_id = find_function_id(&program, "program::program::main(f0)");
+let args = [
+  JitValue::Uint128(1234),
+  JitValue::Uint128(4321),
+];
+
+let execution_result = engine.invoke_dynamic(
+  function_id, // The entry point function id.
+  args,        // The slice of `JitValue`s.
+  None,        // The available gas (if any).
+)?;
+
+// The return value has some useful information about the execution, like:
+//   - The remaining gas, if any was supplied.
+//   - The program's return value.
+//   - The builtin usage statistics. These contain the number of times each builtin has been used.
+println!("Remaining gas: {:?}",  execution_result.remaining_gas);
+println!("Return value:  {:#?}", execution_result.return_value);
+println!("Builtin stats: {:?}",  execution_result.builtin_stats);
+

Running the code above should print the following:

+ +
Remaining gas: None
+Return value:  Enum {
+  tag: 0,
+  value: Struct {
+    fields: [
+      Enum {
+        tag: 1,
+        value: Uint128(
+          5555,
+        ),
+        debug_name: Some(
+          "sample::sample::Parity::<core::integer::u128>",
+        ),
+      },
+    ],
+    debug_name: Some(
+      "Tuple<sample::sample::Parity::<core::integer::u128>>",
+    ),
+  },
+  debug_name: Some(
+    "core::panics::PanicResult::<(sample::sample::Parity::<core::integer::u128>,)>",
+  ),
+}
+Builtin stats: BuiltinStats { bitwise: 1, ec_op: 0, range_check: 1, pedersen: 0, poseidon: 0, segment_arena: 0 }
+

§Contracts

+

Contracts always have the same interface, therefore they have an alternative to invoke_dynamic called invoke_contract_dynamic.

+ +
fn(Span<felt252>) -> PanicResult<Span<felt252>>;
+

This wrapper will attempt to deserialize the real contract arguments from the span of felts, invoke the contracts, and finally serialize and return the result. When this deserialization fails, the contract will panic with the mythical Failed to deserialize param #N error.

+

If the example program had the same interface as a contract (a span of felts) then it’d be invoked like this:

+ +
let engine = get_execution_engine();
+
+let function_id = find_function_id(&program, "program::program::main(f0)");
+let args = [
+  Felt::from(1234),
+  Felt::from(4321),
+];
+
+let execution_result = engine.invoke_dynamic(
+  function_id, // The entry point function id.
+  args,        // The slice of `JitValue`s.
+  None,        // The available gas (if any).
+)?;
+
+// The return value has some useful information about the execution, like:
+//   - The remaining gas, if any was supplied.
+//   - Whether the contract execution panicked.
+//   - The contract's return values.
+//   - The builtin usage statistics. These contain the number of times each builtin has been used.
+println!("Remaining gas: {:?}", execution_result.remaining_gas);
+println!("Failure flag:  {:?}", execution_result.failure_flag);
+println!("Return value:  {:?}", execution_result.return_value);
+println!("Builtin stats: {:?}", execution_result.builtin_stats);
+

Running the code above should print the following:

+
Remaining gas: None
+Failure flag:  false
+Return value:  [
+  JitValue::Felt252(1),
+  JitValue::Felt252(5555),
+]
+Builtin stats: BuiltinStats { bitwise: 1, ec_op: 0, range_check: 1, pedersen: 0, poseidon: 0, segment_arena: 0 }
+

§The Cairo Native runtime

+

Sometimes we need to use stuff that would be too complicated or error-prone to implement in MLIR, but that we have readily available from Rust. That’s when we use the runtime library.

+

When using the JIT it’ll be automatically linked (if compiled with support for it, which is enabled by default). If using the AOT, the CAIRO_NATIVE_RUNTIME_LIBDIR environment variable will have to be modified to point to the directory that contains libcairo_native_runtime.a, which is built and placed in said folder by make build.

+

Although it’s implemented in Rust, its functions use the C ABI and have Rust’s name mangling disabled. This means that to the extern observer it’s technically indistinguishible from a library written in C. By doing this we’re making the functions callable from MLIR.

+

§Syscall handlers

+

The syscall handler is similar to the runtime in the sense that we have C-compatible functions called from MLIR, but it’s different in that they’re built into Cairo Native itself rather than an external library, and that their implementation is user-dependent.

+

To allow for user-provided syscall handler implementations we pass a pointer to a vtable every time we detect a System builtin. We need a vtable and cannot use function names because the methods themselves are generic over the syscall handler implementation.

+
+

Note: The System is used only for syscalls; every syscall has it, therefore it’s a perfect candidate for this use.

+
+

Those wrappers then receive a mutable reference to the syscall handler implementation. They are responsible of converting the MLIR-compatible inputs to the Rust representations, calling the implementation, and then converting the results back into MLIR-compatible formats.

+

This means that as far as the user is concerned, writing a syscall handler is equivalent to implementing the trait StarknetSyscallHandler for a custom type.

+

§Appendix: The C ABI and the trampoline

+

Normally, calling FFI functions in Rust is as easy as defining an extern function using C-compatible types. We can’t do this here because we don’t know the function’s signature.

+

It all boils down to the SystemV ABI in x86_64 or its equivalent for ARM. Both of them are really similar:

+
    +
  • The stack must be aligned to 16 bytes before calling.
  • +
  • Function arguments are spread between some registers and the stack.
  • +
  • Return values use either a few registers or require a pointer.
  • +
+

There’s a few other quirks, like which registers are caller vs callee-saved, but they’re not that relevant in this case.

+

§Arguments

+

Argument location in x86_64: +| # | Reg. | Description | +|––|—––|————————| +| 1 | rdi | A single 64-bit value. | +| 2 | rsi | A single 64-bit value. | +| 3 | rdx | A single 64-bit value. | +| 4 | rcx | A single 64-bit value. | +| 5 | r8 | A single 64-bit value. | +| 6 | r9 | A single 64-bit value. | +| 7+ | Stack | Everything else. |

+

Argument location in aarch64:

+
+ + + + + + + + + +
#Reg.Description
1x0A single 64-bit value.
2x1A single 64-bit value.
3x2A single 64-bit value.
4x3A single 64-bit value.
5x4A single 64-bit value.
6x5A single 64-bit value.
7x6A single 64-bit value.
8x7A single 64-bit value.
9+StackEverything else.
+
+

Usually function calls have arguments of types other than just 64-bit integers. In those cases, for values smaller than 64 bits the smaller register variants are written. For values larger than 64 bits the value is split into multiple registers, but there’s a catch: if when splitting the value only one value would remain in registers then that register is padded and the entire value goes into the stack. For example, an u128 that would be split between registers and the stack is always padded and written entirely in the stack.

+

For complex values like structs, the types are flattened into a list of values when written into registers, or just written into the stack the same way they would be written into memory (aka. with the correct alignment, etc).

+

§Return values

+

As mentioned before, return values may be either returned in registers or memory (most likely the stack, but not necessarily).

+

Argument location in x86_64:

+
+ + +
#RegDescription
1raxA single 64-bit value.
2rdxThe “continuation” of rax
+
+

Argument location in aarch64:

+
+ + + + +
#RegDescription
1x0A single 64-bit value
2x1The “continuation” of x0
3x2The “continuation” of x1
4x3The “continuation” of x2
+
+

Values are different that arguments in that only a single value is returned. If more than a single value needs to be returned then it’ll use a pointer.

+

When a pointer is involved we need to pass it as the first argument. This means that every actual argument has to be shifted down one slot, pushing more stuff into the stack in the process.

+

§The trampoline

+

We cannot really influence what values are in the register or the stack from Rust, therefore we need something written in assembler to put everything into place and invoke the function pointer.

+

This is where the trampoline comes in. It’s a simple assembler function that does three things:

+
    +
  1. Fill in the 6 or 8 argument registers with the first values in the data pointer and copy the rest into the stack as-is (no stack alignment or anything, we guarantee from the Rust side that the stack will end up properly aligned).
  2. +
  3. Invoke the function pointer.
  4. +
  5. Write the return values (in registers only) into the return pointer.
  6. +
+

This function always has the same signature, which is C-compatible, and therefore can be used with Rust’s FFI facilities without problems.

+
§AOT calling convention:
§Arguments
+
    +
  • Written on registers, then the stack.
  • +
  • Structs’ fields are treated as individual arguments (flattened).
  • +
  • Enums are structs internally, therefore they are also flattened (including the padding). +
      +
    • The default payload works as expected since it has the correct signature.
    • +
    • All other payloads require breaking it down into bytes and scattering it through the padding +and default payload’s space.
    • +
    +
  • +
+
§Return values
+
    +
  • Indivisible values that do not fit within a single register (ex. felt252) use multiple registers (x0-x3 for felt252).
  • +
  • Struct arguments, etc… use the stack.
  • +
+

In other words, complex values require a return pointer while simple values do not but may still use multiple registers if they don’t fit within one.

+
\ No newline at end of file diff --git a/cairo_native/docs/section03/sidebar-items.js b/cairo_native/docs/section03/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section03/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/section04/index.html b/cairo_native/docs/section04/index.html new file mode 100644 index 000000000..2bd81fdbb --- /dev/null +++ b/cairo_native/docs/section04/index.html @@ -0,0 +1,201 @@ +cairo_native::docs::section04 - Rust

Module cairo_native::docs::section04

source ·
Expand description

§Gas and Builtins Accounting

+

This section documents how programs generated by Cairo Native keep track of +gas and builtins during execution.

+

§Gas

§Introduction

+

Gas management in a blockchain environment involves accounting for the amount +of computation performed during the execution of a transaction. This is used +to accurately charge the user at the end of the execution or to revert early +if the transaction consumes more gas than provided by the sender.

+

This documentation assumes prior knowledge about Sierra and about the way +gas accounting is performed in Sierra. For those seeking to deepen their +understanding, refer to Enitrat’s Medium post about +Sierra +and greged’s about +gas accounting in Sierra.

+

§Gas builtin

+

The gas builtin is used in Sierra in order to perform gas accounting. It is +passed as an input to all function calls and holds the current remaining +gas. It is represented in MLIR by a simple u128.

+

§Gas metadata

+

The process of calculating gas begins at the very outset of the compilation +process. During the initial setup of the Sierra program, metadata about the +program, including gas information, is extracted. Using gas helper functions +from the Cairo compiler, +the consumed cost (steps, memory holes, builtins usage) for each statement +in the Sierra code is stored in a HashMap.

+

§Withdrawing gas

+

The action of withdrawing gas can be split in two steps:

+
    +
  • Calculating Total Gas Cost: Using the previously constructed HashMap, +we iterate over the various cost tokens (including steps, built-in usage, +and memory holes) for the statement, convert them into a +common gas unit, +and sum them up to get the total gas cost for the statement.
  • +
  • Executing Gas Withdrawal: The previously calculated gas cost is used +when the current statement is a withdraw_gas libfunc call.
  • +
+

The withdraw_gas libfunc takes the current leftover gas as input and uses +the calculated gas cost for the statement to deduct the appropriate amount +from the gas builtin. In the compiled IR, gas withdrawal appears as the +total gas being reduced by a predefined constant. Additionally, the libfunc +branches based on whether the remaining gas is greater than or equal to the +amount being withdrawn.

+

§Example

+

Let’s illustrate this with a simple example using the following Cairo 1 code:

+ +
fn run_test() {
+    let mut i: u8 = 0;
+    let mut val = 0;
+    while i < 5 {
+        val = val + i;
+        i = i + 1;
+    }
+}
+

As noted earlier, gas usage is initially computed by the Cairo compiler for +each state. A snippet of the resulting HashMap shows the cost for each +statement:

+
...
+(
+    StatementIdx(26),
+    Const,
+): 2680,
+(
+    StatementIdx(26),
+    Pedersen,
+): 0,
+(
+    StatementIdx(26),
+    Poseidon,
+): 0,
+...
+
+

For statement 26, the cost of the Const token type (a combination of step, +memory hole, and range check costs) is 2680, while other costs are 0. +Let’s see which libfunc is called at statement 26:

+
...
+disable_ap_tracking() -> (); // 25
+withdraw_gas([0], [1]) { fallthrough([4], [5]) 84([6], [7]) }; // 26
+branch_align() -> (); // 27
+const_as_immediate<Const<u8, 5>>() -> ([8]); // 28
+...
+
+

When the Cairo native compiler reaches statement 26, it combines all costs +into gas using the Cairo compiler code. In this example, the total cost is +2680 gas. This value is used in the withdraw_gas libfunc and the compiled +corresponding IR to withdraw the gas and determine whether execution should +revert or continue. This can be observed in the following MLIR dump:

+
llvm.func @"test::test::run_test[expr16](f0)"(%arg0: i64 loc(unknown), %arg1: i128 loc(unknown), %arg2: i8 loc(unknown), %arg3: i8 loc(unknown)) -> !llvm.struct<(i64, i128, struct<(i64, array<24 x i8>)>)> attributes {llvm.emit_c_interface} {
+  ...
+  %12 = llvm.mlir.constant(5 : i8) : i8 loc(#loc1)
+  %13 = llvm.mlir.constant(2680 : i128) : i128 loc(#loc1)
+  %14 = llvm.mlir.constant(1 : i64) : i64 loc(#loc1)
+  ...
+  ^bb1(%27: i64 loc(unknown), %28: i128 loc(unknown), %29: i8 loc(unknown), %30: i8 loc(unknown)):  // 2 preds: ^bb0, ^bb6
+    %31 = llvm.add %27, %14  : i64 loc(#loc13)
+    %32 = llvm.icmp "uge" %28, %13 : i128 loc(#loc13)
+    %33 = llvm.intr.usub.sat(%28, %13)  : (i128, i128) -> i128 loc(#loc13)
+    llvm.cond_br %32, ^bb2(%29 : i8), ^bb7(%5, %23, %23, %31 : i252, !llvm.ptr, !llvm.ptr, i64) loc(#loc13)
+    ...
+
+

Here, we see the constant 2680 defined at the begining of the function. +In basic block 1, the withdraw_gas operations are performed: by comparing +%28 (remaining gas) and %13 (gas cost), the result stored in %32 +determines the conditional branching. A saturating subtraction between the +remaining gas and the gas cost is then performed, updating the remaining gas +in the IR.

+

§Final gas usage

+

The final gas usage can be easily retrieved from the gas builtin value +returned by the function. This is accomplished when +parsing the return values +from the function call:

+ +
...
+for type_id in &function_signature.ret_types {
+    let type_info = registry.get_type(type_id).unwrap();
+    match type_info {
+        CoreTypeConcrete::GasBuiltin(_) => {
+            remaining_gas = Some(match &mut return_ptr {
+                Some(return_ptr) => unsafe { *read_value::<u128>(return_ptr) },
+                None => {
+                    // If there's no return ptr then the function only returned the gas. We don't
+                    // need to bother with the syscall handler builtin.
+                    ((ret_registers[1] as u128) << 64) | ret_registers[0] as u128
+                }
+            });
+        }
+        ...
+    }
+    ...
+}
+...
+

This code snippet extracts the remaining gas from the return pointer based +on the function’s signature. If the function only returns the gas value, +the absence of a return pointer is handled appropriately, ensuring accurate +gas accounting.

+

§Builtins Counter

§Introduction

+

The Cairo Native compiler records the usage of each builtins in order to +provide information about the program’s builtins consumption. +This information is NOT used for the gas calculation, as the gas cost of +builtins is already taken into account during the gas accounting process. +The builtins counter types can each be found in the types folder. +Taking the Pedersen hash as an example, we see +that the counters will be represented as i64 integers in MLIR. +Counters are then simply incremented by one each time the builtins are +called from within the program.

+

§Example

+

Let us consider the following Cairo program which uses the pedersen builtin:

+ +
use core::integer::bitwise;
+use core::pedersen::pedersen;
+
+fn run_test() {
+    let mut hash = pedersen(1.into(), 2.into());
+    hash += 1;
+}
+

We expect Native to increment the pedersen counter by 1 given the above code. +Let’s first check how this compiles to Sierra:

+
const_as_immediate<Const<felt252, 1>>() -> ([1]); // 0
+const_as_immediate<Const<felt252, 2>>() -> ([2]); // 1
+store_temp<felt252>([1]) -> ([1]); // 2
+store_temp<felt252>([2]) -> ([2]); // 3
+pedersen([0], [1], [2]) -> ([3], [4]); // 4
+drop<felt252>([4]) -> (); // 5
+store_temp<Pedersen>([3]) -> ([3]); // 6
+return([3]); // 7
+
+contracts::run_test@0([0]: Pedersen) -> (Pedersen);
+
+

In the compiled Sierra, we can see that the pedersen builtin is passed +with the call to the run_test which starts at statement 0. It is then +used in the call to the pedersen libfunc. We would expect to see the +pedersen counter incremented by 1 in the Native compiler. Below is the +compiled MLIR dump for the same program:

+
...
+llvm.func @"test::test::run_test(f0)"(%arg0: i64 loc(unknown)) -> i64 attributes {llvm.emit_c_interface} {
+    %0 = llvm.mlir.constant(2 : i256) : i256 loc(#loc1)
+    %1 = llvm.mlir.constant(1 : i256) : i256 loc(#loc1)
+    %2 = llvm.mlir.constant(1 : i64) : i64 loc(#loc1)
+    %3 = llvm.alloca %2 x i256 {alignment = 16 : i64} : (i64) -> !llvm.ptr loc(#loc2)
+    %4 = llvm.alloca %2 x i256 {alignment = 16 : i64} : (i64) -> !llvm.ptr loc(#loc2)
+    %5 = llvm.alloca %2 x i256 {alignment = 16 : i64} : (i64) -> !llvm.ptr loc(#loc2)
+    %6 = llvm.add %arg0, %2  : i64 loc(#loc2)
+    %7 = llvm.intr.bswap(%1)  : (i256) -> i256 loc(#loc2)
+    %8 = llvm.intr.bswap(%0)  : (i256) -> i256 loc(#loc2)
+    llvm.store %7, %3 {alignment = 16 : i64} : i256, !llvm.ptr loc(#loc2)
+    llvm.store %8, %4 {alignment = 16 : i64} : i256, !llvm.ptr loc(#loc2)
+    llvm.call @cairo_native__libfunc__pedersen(%5, %3, %4) : (!llvm.ptr, !llvm.ptr, !llvm.ptr) -> () loc(#loc2)
+    llvm.return %6 : i64 loc(#loc3)
+  } loc(#loc1)
+  ...
+
+

The compiled MLIR function run_test takes a single argument as input, the +pedersen counter and returns the incremented counter at the end of the call. +The counter is incremented by 1 in the MLIR code, in the statement +%6 = llvm.add %arg0, %2 : i64 loc(#loc2), which takes the %arg0 input +and adds %2 to it. We can see from statement +%2 = llvm.mlir.constant(1 : i64) : i64 loc(#loc1) that %2 holds the +constant 1. +When this compiled MLIR code is called, the initial value of all builtin +counters is set to 0 as can be seen in the +invoke_dynamic function.

+
\ No newline at end of file diff --git a/cairo_native/docs/section04/sidebar-items.js b/cairo_native/docs/section04/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section04/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/section05/index.html b/cairo_native/docs/section05/index.html new file mode 100644 index 000000000..3ae89614e --- /dev/null +++ b/cairo_native/docs/section05/index.html @@ -0,0 +1,136 @@ +cairo_native::docs::section05 - Rust

Module cairo_native::docs::section05

source ·
Expand description

§Implementing Libfuncs

+

🚧 WIP

+

§A libfunc implementation.

+

A libfunc usually works with a type, such as felt252. The compiler +needs to have information on this type, such as its layout and size. +This is defined in src/types.rs and src/types/{typename}.rs.

+

On each src/types/{typename}.rs such as src/types/felt252.rs you will +find a build function, this has all the necessary arguments to generate +the proper type and return a MLIR type, such as +IntegerType::new(context, 252) (a 252 bit integer).

+

In src/types.rs we need to declare the type layout, for example the +felt252 would have the layout returned by get_integer_layout(252). +A type that doesn’t have size would be Layout::new::<()>(), or if the +type is a pointer like box: Layout::new::<*mut ()>()

+

When adding a type, we also need to add the serialization and +deserialization functionality, so we can use it with the JIT runner.

+

You can find this functionality under src/values.rs and +src/values/{typename}.rs. As you can see, the project is quite organized +if you have a feel of its layout.

+

Serialization is done using Serde, and each type provides a deserialize +and serialize function. The inner workings of such functions can be a bit +complex due to how the JIT runner works. You need to work with pointers and +unsafe rust.

+

In values.rs we should also declare whether the type is complex under +is_complex in the ValueBuilder trait implementation.

+
+

Complex types are always passed by pointer (both as params and return +values) and require a stack allocation. Examples of complex values include +structs and enums, but not felts since LLVM considers them integers.

+
+

§Deserializing a type

+

When deserializing (a.k.a converting the inputs so the JIT runner +accepts them), you are passed a bump allocator arena from Bumpalo, the +general idea is to get the layout and size of the type, allocate it under +the arena, get a pointer, and return it. Which will later be passed to the +MLIR JIT runner. It is important the pointers passed are allocated by the +arena and not Rust itself.

+

Then we need to hookup de deserialize method in values.rs deserialize +method.

+

§Serializing a type

+

When serializing a type, you will get a ptr: NonNull<()> (non null +pointer), which you will have to cast, dereference and then deserialize.

+

For a simple type to learn how it works, we recommend checking +src/values/uint8.rs, for more complex types, check src/values/felt252.rs. +The hardest types to understand are the enums, dictionaries and arrays, +since they are complex types.

+

Then we need to hookup de serialize method in values.rs serialize method.

+

§Implementing the library function

+

Libfuncs are implemented under src/libfuncs.rs and +src/libfuncs/{libfunc_name}.rs. Just like types.

+

Using the src/libfuncs/felt252.rs libfuncs as a aid:

+ +
/// Select and call the correct libfunc builder function from the selector.
+pub fn build<'ctx, 'this, TType, TLibfunc>(
+    context: &'ctx Context,
+    registry: &ProgramRegistry<TType, TLibfunc>,
+    entry: &'this Block<'ctx>,
+    location: Location<'ctx>,
+    helper: &LibfuncHelper<'ctx, 'this>,
+    metadata: &mut MetadataStorage,
+    selector: &Felt252Concrete,
+) -> Result<()>
+where
+    TType: GenericType,
+    TLibfunc: GenericLibfunc,
+    <TType as GenericType>::Concrete: TypeBuilder<TType, TLibfunc, Error = CoreTypeBuilderError>,
+    <TLibfunc as GenericLibfunc>::Concrete: LibfuncBuilder<TType, TLibfunc, Error = Error>,
+{
+    match selector {
+        Felt252Concrete::BinaryOperation(info) => {
+            build_binary_operation(context, registry, entry, location, helper, metadata, info)
+        }
+        Felt252Concrete::Const(info) => {
+            build_const(context, registry, entry, location, helper, metadata, info)
+        }
+        Felt252Concrete::IsZero(info) => {
+            build_is_zero(context, registry, entry, location, helper, metadata, info)
+        }
+    }
+}
+

You can see it also defines a build function, in this case the last method +is a selector, this means in this case we have a group of related libfuncs, +which we will implement in this same file. This is where calls to melior +(MLIR) and most MLIR code is located, where one gets their hands dirty.

+

After implementing the libfuncs, we need to hookup the build method in +the src/libfuncs.rs match statement.

+

§Example libfunc implementation: u8_to_felt252

+

An example libfunc, converting a u8 to a felt252, extensively commented:

+ +
/// Generate MLIR operations for the `u8_to_felt252` libfunc.
+pub fn build_to_felt252<'ctx, 'this, TType, TLibfunc>(
+    // The Context from MLIR, this is like the heart of the MLIR API, its required to create most stuff like types.
+    context: &'ctx Context,
+    // This is the sierra program registry, it aids us at finding types, functions, etc.
+    registry: &ProgramRegistry<TType, TLibfunc>,
+    // This is the MLIR entry block for this libfunc. Remember we append operations to blocks.
+    entry: &'this Block<'ctx>,
+    // The already created MLIR location for this libfunc, we need to pass this to all the MLIR operations.
+    location: Location<'ctx>,
+    // A helper, which also works as a MLIR Module, it has useful functions for stuff like branching to other libfuncs.
+    helper: &LibfuncHelper<'ctx, 'this>,
+    // The metadata storage, contains extra information needed on some libfuncs. Check out `src/metadata.rs` to learn how it works.
+    metadata: &mut MetadataStorage,
+    // The sierra information for this specific library function. This libfunc only contains signature information, but
+    // others which are generic over a type will contain information about that type, for example array related libfuncs.
+    info: &SignatureOnlyConcreteLibfunc,
+) -> Result<()>
+where
+    TType: GenericType,
+    TLibfunc: GenericLibfunc,
+    <TType as GenericType>::Concrete: TypeBuilder<TType, TLibfunc, Error = CoreTypeBuilderError>,
+    <TLibfunc as GenericLibfunc>::Concrete: LibfuncBuilder<TType, TLibfunc, Error = Error>,
+{
+    // We retrieve the felt252 type from the registry and call the "build" method to create the MLIR type.
+    // We could also just call get_type() to hold on to the sierra type, and then `.layout(registry)` to get the type layout,
+    // which is needed in some libfuncs doing more complex stuff.
+    let felt252_ty = registry
+        .get_type(&info.branch_signatures()[0].vars[0].ty)?
+        .build(context, helper, registry, metadata)?;
+
+    // Retrieve the first argument passed to this library function, in this case its the u8 value we need to convert.
+    let value: Value = entry.argument(0)?.into();
+
+    // We create a "extui" operation from the "arith" dialect, which basically zero extends the value to have the same bits as the given type.
+    let op = entry.append_operation(arith::extui(value, felt252_ty, location));
+
+    // Get  the result from the operation, in this case it's the extended value
+    let result = op.result(0)?.into();
+
+    // Using the helper argument, append the branching operation to the next statement, passing result as our output variable.
+    entry.append_operation(helper.br(0, &[result], location));
+
+    Ok(())
+}
+

More info on the extui operation: https://mlir.llvm.org/docs/Dialects/ArithOps/#arithextui-arithextuiop

+
\ No newline at end of file diff --git a/cairo_native/docs/section05/sidebar-items.js b/cairo_native/docs/section05/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section05/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/section06/index.html b/cairo_native/docs/section06/index.html new file mode 100644 index 000000000..f77c1a198 --- /dev/null +++ b/cairo_native/docs/section06/index.html @@ -0,0 +1,262 @@ +cairo_native::docs::section06 - Rust

Module cairo_native::docs::section06

source ·
Expand description

§Debugging

§Useful environment variables

+

These 2 env vars will dump the generated MLIR code from any compilation on the current working directory as:

+
    +
  • dump.mlir: The MLIR code after passes without locations.
  • +
  • dump-debug.mlir: The MLIR code after passes with locations.
  • +
  • dump-prepass.mlir: The MLIR code before without locations.
  • +
  • dump-prepass-debug.mlir: The MLIR code before passes with locations.
  • +
+

Do note that the MLIR with locations is in pretty form and thus not suitable to pass to mlir-opt.

+
export NATIVE_DEBUG_DUMP_PREPASS=1
+export NATIVE_DEBUG_DUMP=1
+

§Debugging with LLDB

+

To debug with LLDB (or another debugger), we must compile the binary with the with-debug-utils feature.

+
cargo build --bin cairo-native-run --features with-debug-utils
+
+

Then, we can add the a debugger breakpoint trap. To add it at a given sierra statement, we can set the following env var:

+
export NATIVE_DEBUG_TRAP_AT_STMT=10
+
+

The trap instruction may not end up exactly where the statement is.

+

If we want to manually set the breakpoint (for example, when executing a particular libfunc), then we can use the DebugUtils metadata in the code.

+ +
#[cfg(feature = "with-debug-utils")]
+{
+    metadata.get_mut::<DebugUtils>()
+        .unwrap()
+        .debug_breakpoint_trap(block, location)?;
+}
+

Now, we need to execute cairo-native-run from our debugger (LLDB). If we want to see the source locations, we also need to set the NATIVE_DEBUG_DUMP env var and execute the program with AOT.

+
lldb -- target/debug/cairo-native-run -s programs/recursion.cairo --available-gas 99999999 --run-mode aot
+
+

Some usefull lldb commands:

+
    +
  • process launch: starts the program
  • +
  • frame select: shows the current line information
  • +
  • thread step-in: makes a source level single step
  • +
  • thread continue: continues execution of the current process
  • +
  • disassemble --frame --mixed: shows assembly instructions mixed with source level code
  • +
+

§Logging

+

Enable logging to see the compilation process:

+
export RUST_LOG="cairo_native=trace"
+

§Other tips:

+
    +
  • Try to find the minimal program to reproduce an issue, the more isolated the easier to test.
  • +
  • Use the debug_utils print utilities, more info here:
  • +
+ +
#[cfg(feature = "with-debug-utils")]
+{
+    metadata.get_mut::<DebugUtils>()
+        .unwrap()
+        .print_pointer(context, helper, entry, ptr, location)?;
+}
+

§Debugging Contracts

+

Contracts are difficult to debug for various reasons, including:

+
    +
  • They are external to the project.
  • +
  • We don’t have their source code.
  • +
  • They run autogenerated code (the wrapper).
  • +
  • They have a limited number of allowed libfuncs (ex. cannot use the print libfunc).
  • +
  • Usually it’s not a single contract but multiple that
  • +
+

Some of them have workarounds:

+

§Obtaining the contract

+

There are various options for obtaining the contract, which include:

+
    +
  • Manually invoking the a Starknet API using curl with the contract class.
  • +
+

Example:

+
curl --location --request POST 'https://mainnet.juno.internal.lambdaclass.com' \
+--header 'Content-Type: application/json' \
+--data-raw '{
+  "jsonrpc": "2.0",
+  "method": "starknet_getClass",
+  "id": 0,
+  "params": {
+    "class_hash": "0x036078334509b514626504edc9fb252328d1a240e4e948bef8d0c08dff45927f",
+    "block_id": 657887
+}
+}'
+
+
    +
  • Running the replay with some code to write all the executed contracts on disk.
  • +
+

Both should provide us with the contract, but if we’re manually invoking the API we’ll need to process the JSON a bit to:

+
    +
  • Remove the JsonRPC overhead, and
  • +
  • Convert the ABI from a string of JSON into a JSON object.
  • +
+

§Interpreting the contract

+

The contract JSON contains the Sierra program in a useless form (in the sense +that we cannot understand anything), as well as some information about the +entry points and some ABI types. We’ll need the Sierra program (in Sierra +format, not the JSON) to be able to understand what should be happening.

+

We can use the starknet-sierra-extract-code binary, which can be found in +the cairo project when compiled from source (not in the binary distribution). +That binary will extract the Sierra program without any debug information, +which is still not very useful.

+

Once we have the Sierra we can run the +Sierra mapper to autogenerate +some type, libfunc and function names so that we know what we’re looking at +without losing our mind. The Sierra mapper can be run multiple times, adding +more names manually as the user sees fit.

+

§How to actually debug

+

First of all we need to know which contract is actually failing. Most +of the time the contract where it crashes isn’t the transaction’s class +hash, but a chain of contract/library calls.

+

To know which contract is being called we can add some debugging prints in +the replay that logs contract executions. For example:

+ +
impl StarknetSyscallHandler for ReplaySyscallHandler {
+    // ...
+
+    fn library_call(
+        &mut self,
+        class_hash: Felt,
+        function_selector: Felt,
+        calldata: &[Felt],
+        remaining_gas: &mut u128,
+    ) -> SyscallResult<Vec<Felt>> {
+        // ...
+
+        println!("Starting execution of contract {class_hash} on selector {function_selector} with calldata {calldata:?}.");
+        let result = executor.invoke_contract_dynamic(...);
+        println!("Finished execution of contract {class_hash}.");
+        if result.failure_flag {
+            println!("Execution of contract {class_hash} failed.");
+        }
+
+        // ...
+    }
+
+    fn call_contract(
+        &mut self,
+        address: Felt,
+        entry_point_selector: Felt,
+        calldata: &[Felt],
+        remaining_gas: &mut u128,
+    ) -> SyscallResult<Vec<Felt>> {
+			  // ...
+
+			  println!("Starting execution of contract {class_hash} on selector {function_selector} with calldata {calldata:?}.");
+			  let result = executor.invoke_contract_dynamic(...);
+			  println!("Finished execution of contract {class_hash}.");
+			  if result.failure_flag {
+					  println!("Execution of contract {class_hash} failed.");
+				}
+
+				// ...
+		}
+}
+

If we run something like the above then the +replay should start +printing the log of what’s actually being executed and where it crashes. +It may print multiple times the error message, but only the first one is +the relevant one (the others should be the contract call chain in reverse +order). Once we know which contract is being called and its calldata we can +download and extract its Sierra as detailed above.

+

We then need to know where it fails within the contract. To do that we +can look at the error message and deduce where it’s used based on the Sierra +program. For example, the error message u256_mul overflow is felt-encoded +as 0x753235365f6d756c206f766572666c6f77, or +39879774624083218221774975706286902767479 in decimal. If we look for +usages of that specific value we’ll most likely find all the places where +that error can be thrown. Now we just need to narrow them down to a single +one and we’ll be able to actually start debugging.

+

An idea on how to do that is modifying Cairo native so that it adds a +breakpoint every time a constant with that error message is generated. +For example:

+ +
/// Generate MLIR operations for the `felt252_const` libfunc.
+pub fn build_const<'ctx, 'this>(
+    context: &'ctx Context,
+    registry: &ProgramRegistry<CoreType, CoreLibfunc>,
+    entry: &'this Block<'ctx>,
+    location: Location<'ctx>,
+    helper: &LibfuncHelper<'ctx, 'this>,
+    metadata: &mut MetadataStorage,
+    info: &Felt252ConstConcreteLibfunc,
+) -> Result<()> {
+    let value = match info.c.sign() {
+        Sign::Minus => {
+            let prime = metadata
+                .get::<PrimeModuloMeta<Felt>>()
+                .ok_or(Error::MissingMetadata)?
+                .prime();
+            (&info.c + prime.to_bigint().expect("always is Some"))
+                .to_biguint()
+                .expect("always is positive")
+        }
+        _ => info.c.to_biguint().expect("sign already checked"),
+    };
+    let felt252_ty = registry.build_type(
+        context,
+        helper,
+        registry,
+        metadata,
+        &info.branch_signatures()[0].vars[0].ty,
+    )?;
+    if value == "39879774624083218221774975706286902767479".parse().unwrap() {
+        // If using the debugger:
+        metadata
+            .get_mut::<crate::metadata::debug_utils::DebugUtils>()
+            .unwrap()
+            .debug_breakpoint_trap(entry, location)
+            .unwrap();
+        // If not using the debugger (not tested, may not provide useful information).
+        metadata
+            .get_mut::<crate::metadata::debug_utils::DebugUtils>()
+            .unwrap()
+            .debug_print(
+                context,
+                helper,
+                entry,
+                &format!("Invoked felt252_const<error_msg> at {location}."),
+                location,
+            )
+            .unwrap();
+    }
+    let value = entry.const_int_from_type(context, location, value, felt252_ty)?;
+    entry.append_operation(helper.br(0, &[value], location));
+    Ok(())
+}
+

Using the debugger will also provide the internal call backtrace (of the +contract) and register values, so it’s the recommended way, but depending on +the contract it may not be feasible (ex. the contract is too big and running +the debugger is not practical due to the amount of time it takes to get to +the crash).

+

Once we know exactly where it crashes we can follow the control flow of the +Sierra program backwards and discover how it reached that point.

+

In some cases the problem may be somewhere completely different from where +the error is thrown. In other words, the error we’re seeing may be a side +effect of a completely different bug. For example, in a u256_mul overflow, +the bug may be found in the mul operation implementation, or alternatively it +may just be that the values passed to it are not what they should be. That’s +why it’s important to check for those cases and keep following the control +flow backwards as required.

+

§Fixing the bug

+

Before fixing the bug it’s really important to know:

+
    +
  • Where it happens (in our compiler, not so much in the contract at this point)
  • +
  • Why it happens (as in, what caused this bug to be in our codebase in the first place)
  • +
  • How to fix it properly (not the actual code but to know what steps to take to fix it).
  • +
  • Could the same bug happen in different places? (for example, if it was the implementation of u64_sqrt, could the same bug happen in u32_sqrt and others?)
  • +
  • What side-effects will the bug fix trigger? (for example, if the fix implies changing the layout of some type, will the new layout make something completely unrelated fail later on?)
  • +
+

The last one is really important since we don’t want to cause more bugs +fixing the ones we already have. To understand the side effects we need to +have a full understanding of the bug, which implies having an answer to (at +least) all the other things to know before fixing it.

+

Once we know all that we can:

+
    +
  1. Add tests that reproduce the bug (including all the variants that we may discover).
  2. +
  3. Implement the fix in code.
  4. +
+
+

Note: Those steps must be done in that order. Otherwise we risk +unconsciously avoiding bugs in our tests for our bug fix implementation by +building our tests from our implementation instead of the correct +behaviour.

+
+
\ No newline at end of file diff --git a/cairo_native/docs/section06/sidebar-items.js b/cairo_native/docs/section06/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section06/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/section07/index.html b/cairo_native/docs/section07/index.html new file mode 100644 index 000000000..bdc127f37 --- /dev/null +++ b/cairo_native/docs/section07/index.html @@ -0,0 +1,12 @@ +cairo_native::docs::section07 - Rust

Module cairo_native::docs::section07

source ·
Expand description

§Sierra Resources

+

🚧 TODO

+

§What is a library function

+

Sierra uses a list of builtin functions that implement the language +functionality, those are called library functions, short: libfuncs. +Basically every statement in a sierra program is a call to a libfunc, thus +they are the core of Cairo Native.

+

Each libfunc takes input variables and outputs some other variables. Note +that in cairo a function that has 2 arguments may have more in sierra, due +to “implicits” / “builtins”, which are arguments passed hidden from the +user, such as the GasBuiltin.

+
\ No newline at end of file diff --git a/cairo_native/docs/section07/sidebar-items.js b/cairo_native/docs/section07/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section07/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/section08/index.html b/cairo_native/docs/section08/index.html new file mode 100644 index 000000000..1eaf54197 --- /dev/null +++ b/cairo_native/docs/section08/index.html @@ -0,0 +1,86 @@ +cairo_native::docs::section08 - Rust

Module cairo_native::docs::section08

source ·
Expand description

§MLIR Resources

§How MLIR Works

+

MLIR is composed of dialects, which is like a IR of it’s own, and this +IR can be converted to another dialect IR (if the functionality exists). +This is what makes MLIR shine.

+

Some commonly used dialects in this project:

+
    +
  • The arith dialect: It contains arithmetic operations, such as addi, subi for addition and subtraction.
  • +
  • The cf dialect: It contains basic control flow operations, such as the br and cond_br, which are unconditional and conditional jumps.
  • +
+

§The IR

+

The MLIR IR is composed recursively like this: Operation -> Region -> Block -> Operations

+

Each operation has 1 or more region, each region has 1 or more blocks, each +block has 1 or more operations.

+

This way a MLIR program can be composed.

+

§Transformations and passes

+

MLIR provides a set of transformations that can optimize the IR. +Such as canonicalize.

+

Check out https://mlir.llvm.org/docs/Canonicalization/ and https://mlir.llvm.org/docs/Passes/.

+

§Translating

+

In our case, llvm is our target, so we end up translating all dialects down +to the LLVM dialect, which then gets converted to LLVM IR.

+

§Learning Resources

+

Resources marked with are best.

+ +

§Talks, Presentations, & Videos

+ +

§Useful code

+ +
\ No newline at end of file diff --git a/cairo_native/docs/section08/sidebar-items.js b/cairo_native/docs/section08/sidebar-items.js new file mode 100644 index 000000000..5244ce01c --- /dev/null +++ b/cairo_native/docs/section08/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {}; \ No newline at end of file diff --git a/cairo_native/docs/sidebar-items.js b/cairo_native/docs/sidebar-items.js new file mode 100644 index 000000000..5a7e87d86 --- /dev/null +++ b/cairo_native/docs/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"mod":["section01","section02","section03","section04","section05","section06","section07","section08"]}; \ No newline at end of file diff --git a/cairo_native/enum.OptLevel.html b/cairo_native/enum.OptLevel.html index 3618f90bc..4dc4d7cc4 100644 --- a/cairo_native/enum.OptLevel.html +++ b/cairo_native/enum.OptLevel.html @@ -4,7 +4,7 @@ Default, Aggressive, }
Expand description

Optimization levels.

-

Variants§

§

None

§

Less

§

Default

§

Aggressive

Trait Implementations§

source§

impl Clone for OptLevel

source§

fn clone(&self) -> OptLevel

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for OptLevel

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for OptLevel

source§

fn default() -> OptLevel

Returns the “default value” for a type. Read more
source§

impl From<OptLevel> for usize

source§

fn from(val: OptLevel) -> Self

Converts to this type from the input type.
source§

impl From<u8> for OptLevel

source§

fn from(value: u8) -> Self

Converts to this type from the input type.
source§

impl From<usize> for OptLevel

source§

fn from(value: usize) -> Self

Converts to this type from the input type.
source§

impl Hash for OptLevel

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Variants§

§

None

§

Less

§

Default

§

Aggressive

Trait Implementations§

source§

impl Clone for OptLevel

source§

fn clone(&self) -> OptLevel

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for OptLevel

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for OptLevel

source§

fn default() -> OptLevel

Returns the “default value” for a type. Read more
source§

impl From<OptLevel> for usize

source§

fn from(val: OptLevel) -> Self

Converts to this type from the input type.
source§

impl From<u8> for OptLevel

source§

fn from(value: u8) -> Self

Converts to this type from the input type.
source§

impl From<usize> for OptLevel

source§

fn from(value: usize) -> Self

Converts to this type from the input type.
source§

impl Hash for OptLevel

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for OptLevel

source§

fn cmp(&self, other: &OptLevel) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where diff --git a/cairo_native/error/enum.CompilerError.html b/cairo_native/error/enum.CompilerError.html index 12e809de3..25f28c752 100644 --- a/cairo_native/error/enum.CompilerError.html +++ b/cairo_native/error/enum.CompilerError.html @@ -3,7 +3,7 @@ value: Box<BigInt>, range: Box<(BigInt, BigInt)>, }, -}

Variants§

§

BoundedIntOutOfRange

Fields

§value: Box<BigInt>
§range: Box<(BigInt, BigInt)>

Trait Implementations§

source§

impl Debug for CompilerError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CompilerError

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CompilerError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<CompilerError> for Error

source§

fn from(source: CompilerError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

BoundedIntOutOfRange

Fields

§value: Box<BigInt>
§range: Box<(BigInt, BigInt)>

Trait Implementations§

source§

impl Debug for CompilerError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CompilerError

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CompilerError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<CompilerError> for Error

source§

fn from(source: CompilerError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/cairo_native/error/enum.Error.html b/cairo_native/error/enum.Error.html index 428889c42..a99eb9b94 100644 --- a/cairo_native/error/enum.Error.html +++ b/cairo_native/error/enum.Error.html @@ -15,7 +15,7 @@ GasMetadataError(GasMetadataError), LLVMCompileError(String), ConstDataMismatch, -

}

Variants§

§

LayoutError(LayoutError)

§

MlirError(Error)

§

MissingParameter(String)

§

UnexpectedValue(String)

§

MissingSyscallHandler

§

LayoutErrorPolyfill(LayoutError)

§

ProgramRegistryErrorBoxed(Box<ProgramRegistryError>)

§

TryFromIntError(TryFromIntError)

§

ParseAttributeError

§

MissingMetadata

§

SierraAssert(SierraAssertError)

§

Compiler(CompilerError)

§

EditStateError(EditStateError)

§

GasMetadataError(GasMetadataError)

§

LLVMCompileError(String)

§

ConstDataMismatch

Implementations§

source§

impl Error

source

pub fn make_missing_parameter(ty: &ConcreteTypeId) -> Self

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Box<ProgramRegistryError>> for Error

source§

fn from(source: Box<ProgramRegistryError>) -> Self

Converts to this type from the input type.
source§

impl From<CompilerError> for Error

source§

fn from(source: CompilerError) -> Self

Converts to this type from the input type.
source§

impl From<EditStateError> for Error

source§

fn from(source: EditStateError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(source: Error) -> Self

Converts to this type from the input type.
source§

impl From<GasMetadataError> for Error

source§

fn from(source: GasMetadataError) -> Self

Converts to this type from the input type.
source§

impl From<LayoutError> for Error

source§

fn from(source: LayoutError) -> Self

Converts to this type from the input type.
source§

impl From<LayoutError> for Error

source§

fn from(source: LayoutError) -> Self

Converts to this type from the input type.
source§

impl From<SierraAssertError> for Error

source§

fn from(source: SierraAssertError) -> Self

Converts to this type from the input type.
source§

impl From<TryFromIntError> for Error

source§

fn from(source: TryFromIntError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where +

}

Variants§

§

LayoutError(LayoutError)

§

MlirError(Error)

§

MissingParameter(String)

§

UnexpectedValue(String)

§

MissingSyscallHandler

§

LayoutErrorPolyfill(LayoutError)

§

ProgramRegistryErrorBoxed(Box<ProgramRegistryError>)

§

TryFromIntError(TryFromIntError)

§

ParseAttributeError

§

MissingMetadata

§

SierraAssert(SierraAssertError)

§

Compiler(CompilerError)

§

EditStateError(EditStateError)

§

GasMetadataError(GasMetadataError)

§

LLVMCompileError(String)

§

ConstDataMismatch

Implementations§

source§

impl Error

source

pub fn make_missing_parameter(ty: &ConcreteTypeId) -> Self

Trait Implementations§

source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Box<ProgramRegistryError>> for Error

source§

fn from(source: Box<ProgramRegistryError>) -> Self

Converts to this type from the input type.
source§

impl From<CompilerError> for Error

source§

fn from(source: CompilerError) -> Self

Converts to this type from the input type.
source§

impl From<EditStateError> for Error

source§

fn from(source: EditStateError) -> Self

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(source: Error) -> Self

Converts to this type from the input type.
source§

impl From<GasMetadataError> for Error

source§

fn from(source: GasMetadataError) -> Self

Converts to this type from the input type.
source§

impl From<LayoutError> for Error

source§

fn from(source: LayoutError) -> Self

Converts to this type from the input type.
source§

impl From<LayoutError> for Error

source§

fn from(source: LayoutError) -> Self

Converts to this type from the input type.
source§

impl From<SierraAssertError> for Error

source§

fn from(source: SierraAssertError) -> Self

Converts to this type from the input type.
source§

impl From<TryFromIntError> for Error

source§

fn from(source: TryFromIntError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/cairo_native/error/enum.SierraAssertError.html b/cairo_native/error/enum.SierraAssertError.html index 26c6194be..07de50c70 100644 --- a/cairo_native/error/enum.SierraAssertError.html +++ b/cairo_native/error/enum.SierraAssertError.html @@ -6,7 +6,7 @@ BadTypeInit(ConcreteTypeId), BadTypeInfo, ImpossibleCircuit, -}

Variants§

§

Cast

§

Range

Fields

§ranges: Box<(Range, Range)>
§

BadTypeInit(ConcreteTypeId)

§

BadTypeInfo

§

ImpossibleCircuit

Trait Implementations§

source§

impl Debug for SierraAssertError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for SierraAssertError

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for SierraAssertError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<SierraAssertError> for Error

source§

fn from(source: SierraAssertError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +}

Variants§

§

Cast

§

Range

Fields

§ranges: Box<(Range, Range)>
§

BadTypeInit(ConcreteTypeId)

§

BadTypeInfo

§

ImpossibleCircuit

Trait Implementations§

source§

impl Debug for SierraAssertError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for SierraAssertError

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for SierraAssertError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<SierraAssertError> for Error

source§

fn from(source: SierraAssertError) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/cairo_native/execution_result/struct.ContractExecutionResult.html b/cairo_native/execution_result/struct.ContractExecutionResult.html index 80bead9e8..8269a868c 100644 --- a/cairo_native/execution_result/struct.ContractExecutionResult.html +++ b/cairo_native/execution_result/struct.ContractExecutionResult.html @@ -4,7 +4,7 @@ pub return_values: Vec<Felt>, pub error_msg: Option<String>, }
Expand description

Starknet contract execution result.

-

Fields§

§remaining_gas: u128§failure_flag: bool§return_values: Vec<Felt>§error_msg: Option<String>

Implementations§

source§

impl ContractExecutionResult

source

pub fn from_execution_result(result: ExecutionResult) -> Result<Self, Error>

Convert a [ExecuteResult] to a [NativeExecutionResult]

+

Fields§

§remaining_gas: u128§failure_flag: bool§return_values: Vec<Felt>§error_msg: Option<String>

Implementations§

Trait Implementations§

source§

impl Clone for ContractExecutionResult

source§

fn clone(&self) -> ContractExecutionResult

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ContractExecutionResult

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ContractExecutionResult

source§

fn default() -> ContractExecutionResult

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for ContractExecutionResult

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for ContractExecutionResult

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, diff --git a/cairo_native/executor/struct.JitNativeExecutor.html b/cairo_native/executor/struct.JitNativeExecutor.html index 203407b54..fbfe76a50 100644 --- a/cairo_native/executor/struct.JitNativeExecutor.html +++ b/cairo_native/executor/struct.JitNativeExecutor.html @@ -1,29 +1,27 @@ JitNativeExecutor in cairo_native::executor - Rust

Struct cairo_native::executor::JitNativeExecutor

source ·
pub struct JitNativeExecutor<'m> { /* private fields */ }
Expand description

A MLIR JIT execution engine in the context of Cairo Native.

-

Implementations§

source§

impl<'m> JitNativeExecutor<'m>

Implementations§

source§

impl<'m> JitNativeExecutor<'m>

source

pub fn from_native_module( native_module: NativeModule<'m>, opt_level: OptLevel, -) -> Self

source

pub fn program_registry(&self) -> &ProgramRegistry<CoreType, CoreLibfunc>

source

pub fn module(&self) -> &Module<'m>

source

pub fn invoke_dynamic( +) -> Self

source

pub fn program_registry(&self) -> &ProgramRegistry<CoreType, CoreLibfunc>

source

pub fn module(&self) -> &Module<'m>

source

pub fn invoke_dynamic( &self, function_id: &FunctionId, args: &[JitValue], gas: Option<u128>, ) -> Result<ExecutionResult, Error>

Execute a program with the given params.

-

See [cairo_native::jit_runner::execute]

-
source

pub fn invoke_dynamic_with_syscall_handler( +

source

pub fn invoke_dynamic_with_syscall_handler( &self, function_id: &FunctionId, args: &[JitValue], gas: Option<u128>, syscall_handler: impl StarknetSyscallHandler, ) -> Result<ExecutionResult, Error>

Execute a program with the given params.

-

See [cairo_native::jit_runner::execute]

-
source

pub fn invoke_contract_dynamic( +

source

pub fn invoke_contract_dynamic( &self, function_id: &FunctionId, args: &[Felt], gas: Option<u128>, syscall_handler: impl StarknetSyscallHandler, -) -> Result<ContractExecutionResult, Error>

source

pub fn find_function_ptr(&self, function_id: &FunctionId) -> *mut c_void

Trait Implementations§

source§

impl Debug for JitNativeExecutor<'_>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'m> From<JitNativeExecutor<'m>> for NativeExecutor<'m>

source§

fn from(value: JitNativeExecutor<'m>) -> Self

Converts to this type from the input type.
source§

impl<'a> Send for JitNativeExecutor<'a>

source§

impl<'a> Sync for JitNativeExecutor<'a>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T

source

pub fn find_function_ptr(&self, function_id: &FunctionId) -> *mut c_void

Trait Implementations§

source§

impl Debug for JitNativeExecutor<'_>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'m> From<JitNativeExecutor<'m>> for NativeExecutor<'m>

source§

fn from(value: JitNativeExecutor<'m>) -> Self

Converts to this type from the input type.
source§

impl<'a> Send for JitNativeExecutor<'a>

source§

impl<'a> Sync for JitNativeExecutor<'a>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where diff --git a/cairo_native/index.html b/cairo_native/index.html index 6955eb2a8..3efae2216 100644 --- a/cairo_native/index.html +++ b/cairo_native/index.html @@ -1,81 +1,291 @@ -cairo_native - Rust

Crate cairo_native

source ·
Expand description

§Cairo Sierra to MLIR compiler and JIT engine

-

This crate is a compiler and JIT engine that transforms Sierra (or Cairo) sources into MLIR, -which can be JIT-executed or further -compiled into a binary -ahead of time.

-

§Usage

-

The API contains two structs, NativeContext and NativeExecutor. -The main purpose of NativeContext is MLIR initialization, compilation and lowering to LLVM. -NativeExecutor in the other hand is responsible of executing MLIR compiled sierra programs -from an entrypoint. -Programs and JIT states can be cached in contexts where their execution will be done multiple -times.

- -
use starknet_types_core::felt::Felt;
-use cairo_native::context::NativeContext;
-use cairo_native::executor::JitNativeExecutor;
-use cairo_native::values::JitValue;
-use std::path::Path;
-
-let program_path = Path::new("programs/examples/hello.cairo");
-// Compile the cairo program to sierra.
-let sierra_program = cairo_native::utils::cairo_to_sierra(program_path);
-
-// Instantiate a Cairo Native MLIR context. This data structure is responsible for the MLIR
-// initialization and compilation of sierra programs into a MLIR module.
-let native_context = NativeContext::new();
-
-// Compile the sierra program into a MLIR module.
-let native_program = native_context.compile(&sierra_program).unwrap();
-
-// The parameters of the entry point.
-let params = &[JitValue::Felt252(Felt::from_bytes_be_slice(b"user"))];
-
-// Find the entry point id by its name.
-let entry_point = "hello::hello::greet";
-let entry_point_id = cairo_native::utils::find_function_id(&sierra_program, entry_point);
-
-// Instantiate the executor.
-let native_executor = JitNativeExecutor::from_native_module(native_program, Default::default());
-
-// Execute the program.
-let result = native_executor
-    .invoke_dynamic(entry_point_id, params, None)
-    .unwrap();
-
-println!("Cairo program was compiled and executed successfully.");
-println!("{:?}", result);
-

§Common definitions

-

Within this project there are lots of functions with the same signature. As their arguments have -all the same meaning, they are documented here:

+cairo_native - Rust

Crate cairo_native

source ·
Expand description
+

§⚡ Cairo Native ⚡

+

A compiler to convert Cairo’s intermediate representation “Sierra” code
+to machine code via MLIR and LLVM.

+

Report Bug · Request Feature

+

Telegram Chat +rust +codecov +license +pr-welcome

+
+

For in-depth documentation, see the developer documentation.

+

§Disclaimer

+

🚧 Cairo Native is still being built therefore API breaking changes might happen +often so use it at your own risk. 🚧

+

For versions under 1.0 cargo doesn’t comply with +semver, so we advise to pin the version the version you +use. This can be done by adding cairo-native = "0.1.0" to your Cargo.toml

+

§Getting Started

§Dependencies

+
    +
  • Linux or macOS (aarch64 included) only for now
  • +
  • LLVM 18 with MLIR: On debian you can use apt.llvm.org, +on macOS you can use brew
  • +
  • Rust 1.78.0 or later, since we make use of the u128 +abi change.
  • +
  • Git
  • +
+

§Setup

+
+

This step applies to all operating systems.

+
+

Run the following make target to install the dependencies (both Linux and macOS):

+
make deps
+
§Linux
+

Since Linux distributions change widely, you need to install LLVM 18 via your +package manager, compile it or check if the current release has a Linux binary.

+

If you are on Debian/Ubuntu, check out the repository https://apt.llvm.org/ +Then you can install with:

+
sudo apt-get install llvm-18 llvm-18-dev llvm-18-runtime clang-18 clang-tools-18 lld-18 libpolly-18-dev libmlir-18-dev mlir-18-tools
+
+

If you decide to build from source, here are some indications:

+
Install LLVM from source instructions +
# Go to https://github.com/llvm/llvm-project/releases
+# Download the latest LLVM 18 release:
+# The blob to download is called llvm-project-18.x.x.src.tar.xz
+
+# For example
+wget https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.7/llvm-project-18.1.7.src.tar.xz
+tar xf llvm-project-18.1.7.src.tar.xz
+
+cd llvm-project-18.1.7.src.tar
+mkdir build
+cd build
+
+# The following cmake command configures the build to be installed to /opt/llvm-18
+cmake -G Ninja ../llvm \
+   -DLLVM_ENABLE_PROJECTS="mlir;clang;clang-tools-extra;lld;polly" \
+   -DLLVM_BUILD_EXAMPLES=OFF \
+   -DLLVM_TARGETS_TO_BUILD="Native" \
+   -DCMAKE_INSTALL_PREFIX=/opt/llvm-18 \
+   -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+   -DLLVM_PARALLEL_LINK_JOBS=4 \
+   -DLLVM_ENABLE_BINDINGS=OFF \
+   -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_LLD=ON \
+   -DLLVM_ENABLE_ASSERTIONS=OFF
+
+ninja install
+
+

Setup a environment variable called MLIR_SYS_180_PREFIX, LLVM_SYS_181_PREFIX +and TABLEGEN_180_PREFIX pointing to the llvm directory:

+
# For Debian/Ubuntu using the repository, the path will be /usr/lib/llvm-18
+export MLIR_SYS_180_PREFIX=/usr/lib/llvm-18
+export LLVM_SYS_181_PREFIX=/usr/lib/llvm-18
+export TABLEGEN_180_PREFIX=/usr/lib/llvm-18
+
+

Alternatively, if installed from Debian/Ubuntu repository, then you can use +env.sh to automatically setup the environment variables.

+
source env.sh
+
§MacOS
+

The makefile deps target (which you should have ran before) installs LLVM 18 +with brew for you, afterwards you need to execute the env.sh script to setup +the needed environment variables.

+
source env.sh
+

§Make targets:

+

Running make by itself will check whether the required LLVM installation and +corelib is found, and then list available targets.

+
% make
+LLVM is correctly set at /opt/homebrew/opt/llvm.
+./scripts/check-corelib-version.sh 2.6.4
+Usage:
+    deps:         Installs the necesary dependencies.
+    build:        Builds the cairo-native library and binaries in release mode.
+    build-native: Builds cairo-native with the target-cpu=native rust flag.
+    build-dev:    Builds cairo-native under a development-optimized profile.
+    runtime:      Builds the runtime library required for AOT compilation.
+    check:        Checks format and lints.
+    test:         Runs all tests.
+    proptest:     Runs property tests.
+    coverage:     Runs all tests and computes test coverage.
+    doc:          Builds documentation.
+    doc-open:     Builds and opens documentation in browser.
+    bench:        Runs the hyperfine benchmark script.
+    bench-ci:     Runs the criterion benchmarks for CI.
+    install:      Invokes cargo to install the cairo-native tools.
+    clean:        Cleans the built artifacts.
+    stress-test   Runs a command which runs stress tests.
+    stress-plot   Plots the results of the stress test command.
+    stress-clean  Clean the cache of AOT compiled code of the stress test command.
+

§Included Tools

+

Aside from the compilation and execution engine library, Cairo Native includes +a few command-line tools to aid development, and some useful scripts.

+

These are:

+
    +
  • The contents of the /scripts/ folder
  • +
  • cairo-native-compile
  • +
  • cairo-native-dump
  • +
  • cairo-native-run
  • +
  • cairo-native-test
  • +
  • cairo-native-stress
  • +
  • scarb-native-dump
  • +
  • scarb-native-test
  • +
+

§cairo-native-compile

Compiles a Cairo project outputting the generated MLIR and the shared library.
+Exits with 1 if the compilation or run fails, otherwise 0.
+
+Usage: cairo-native-compile [OPTIONS] <PATH> [OUTPUT_MLIR] [OUTPUT_LIBRARY]
+
+Arguments:
+  <PATH>            The Cairo project path to compile and run its tests
+  [OUTPUT_MLIR]     The output path for the mlir, if none is passed, out.mlir will be the default
+  [OUTPUT_LIBRARY]  If a path is passed, a dynamic library will be compiled and saved at that path
+
+Options:
+  -s, --single-file            Whether path is a single file
+      --allow-warnings         Allows the compilation to succeed with warnings
+  -r, --replace-ids            Replaces sierra ids with human-readable ones
+  -O, --opt-level <OPT_LEVEL>  Optimization level, Valid: 0, 1, 2, 3. Values higher than 3 are considered as 3 [default: 0]
+  -h, --help                   Print help
+  -V, --version                Print version
+

§cairo-native-dump

Usage: cairo-native-dump [OPTIONS] <INPUT>
+
+Arguments:
+  <INPUT>
+
+Options:
+  -o, --output <OUTPUT>  [default: -]
+      --starknet         Compile a starknet contract
+  -h, --help             Print help
+

§cairo-native-run

+

This tool allows to run programs using the JIT engine, like the cairo-run +tool, the parameters can only be felt values.

+

Example: echo '1' | cairo-native-run 'program.cairo' 'program::program::main' --inputs - --outputs -

+
Exits with 1 if the compilation or run fails, otherwise 0.
+
+Usage: cairo-native-run [OPTIONS] <PATH>
+
+Arguments:
+  <PATH>  The Cairo project path to compile and run its tests
+
+Options:
+  -s, --single-file                    Whether path is a single file
+      --allow-warnings                 Allows the compilation to succeed with warnings
+      --available-gas <AVAILABLE_GAS>  In cases where gas is available, the amount of provided gas
+      --run-mode <RUN_MODE>            Run with JIT or AOT (compiled) [default: jit] [possible values: aot, jit]
+  -O, --opt-level <OPT_LEVEL>          Optimization level, Valid: 0, 1, 2, 3. Values higher than 3 are considered as 3 [default: 0]
+  -h, --help                           Print help
+  -V, --version                        Print version
+

§cairo-native-test

+

This tool mimics the cairo-test +tool +and is identical to it in interface, the only feature it doesn’t have is the profiler.

+
Compiles a Cairo project and runs all the functions marked as `#[test]`.
+Exits with 1 if the compilation or run fails, otherwise 0.
+
+Usage: cairo-native-test [OPTIONS] <PATH>
+
+Arguments:
+  <PATH>  The Cairo project path to compile and run its tests
+
+Options:
+  -s, --single-file            Whether path is a single file
+      --allow-warnings         Allows the compilation to succeed with warnings
+  -f, --filter <FILTER>        The filter for the tests, running only tests containing the filter string [default: ]
+      --include-ignored        Should we run ignored tests as well
+      --ignored                Should we run only the ignored tests
+      --starknet               Should we add the starknet plugin to run the tests
+      --run-mode <RUN_MODE>    Run with JIT or AOT (compiled) [default: jit] [possible values: aot, jit]
+  -O, --opt-level <OPT_LEVEL>  Optimization level, Valid: 0, 1, 2, 3. Values higher than 3 are considered as 3 [default: 0]
+  -h, --help                   Print help
+  -V, --version                Print version
+
+

For single files, you can use the -s, --single-file option.

+

For a project, it needs to have a cairo_project.toml specifying the +crate_roots. You can find an example under the cairo-tests/ folder, which +is a cairo project that works with this tool.

+
cairo-native-test -s myfile.cairo
+
+cairo-native-test ./cairo-tests/
+
+

This will run all the tests (functions marked with the #[test] attribute).

+

§cairo-native-stress

+

This tool runs a stress test on Cairo Native.

+
A stress tester for Cairo Native
+
+It compiles Sierra programs with Cairo Native, caches, and executes them with AOT runner. The compiled dynamic libraries are stored in `AOT_CACHE_DIR` relative to the current working directory.
+
+Usage: cairo-native-stress [OPTIONS] <ROUNDS>
+
+Arguments:
+  <ROUNDS>
+          Amount of rounds to execute
+
+Options:
+  -o, --output <OUTPUT>
+          Output file for JSON formatted logs
+
+  -h, --help
+          Print help (see a summary with '-h')
+
+

To quickly run a stress test and save logs as json, run:

+
make stress-test
+
+

This takes a lot of time to finish (it will probably crash first), you can kill +the program at any time.

+

To plot the results, run:

+
make stress-plot
+
+

To clear the cache directory, run:

+
make stress-clean
+

§scarb-native-dump

+

This tool mimics the scarb build command. +You can download it on our releases page.

+

This tool should be run at the directory where a Scarb.toml file is and it will +behave like scarb build, leaving the MLIR files under the target/ folder +besides the generated JSON sierra files.

+

§scarb-native-test

+

This tool mimics the scarb test command. +You can download it on our releases page.

+
Compiles all packages from a Scarb project matching `packages_filter` and
+runs all functions marked with `#[test]`. Exits with 1 if the compilation
+or run fails, otherwise 0.
+
+Usage: scarb-native-test [OPTIONS]
+
+Options:
+  -p, --package <SPEC>         Packages to run this command on, can be a concrete package name (`foobar`) or a prefix glob (`foo*`) [env: SCARB_PACKAGES_FILTER=] [default: *]
+  -w, --workspace              Run for all packages in the workspace
+  -f, --filter <FILTER>        Run only tests whose name contain FILTER [default: ]
+      --include-ignored        Run ignored and not ignored tests
+      --ignored                Run only ignored tests
+      --run-mode <RUN_MODE>    Run with JIT or AOT (compiled) [default: jit] [possible values: aot, jit]
+  -O, --opt-level <OPT_LEVEL>  Optimization level, Valid: 0, 1, 2, 3. Values higher than 3 are considered as 3 [default: 0]
+  -h, --help                   Print help
+  -V, --version                Print version
+

§Benchmarking

§Requirements

+ -

§Project layout

 src
- ├─ context.rs - The MLIR context wrapper, provides the compile method.
- ├─ utils.rs - Internal utilities.
- ├─ metadata/ - Metadata injector to use within the compilation process
- ├─ executor/ - Code related to the executor of programs.
- ├─ module.rs - The MLIR module wrapper.
- ├─ arch/ - Trampoline assembly for calling functions with dynamic signatures.
- ├─ executor.rs - The executor code.
- ├─ ffi.cpp - Missing FFI C wrappers
- ├─ libfuncs - Cairo Sierra libfunc implementations
- ├─ libfuncs.rs - Cairo Sierra libfunc glue code
- ├─ starknet.rs - Starknet syscall handler glue code.
- ├─ ffi.rs - Missing FFI C wrappers, rust side.
- ├─ block_ext.rs - A melior (MLIR) block trait extension to write less code.
- ├─ lib.rs - The main lib file.
- ├─ execution_result.rs - Program result parsing.
- ├─ values.rs - JIT serialization.
- ├─ metadata.rs - Metadata injector to use within the compilation process.
- ├─ compiler.rs - The glue code of the compiler, has the codegen for the function signatures
- and calls the libfunc codegen implementations.
- ├─ error.rs - Error handling
- ├─ bin - Binary programs
- ├─ types - Cairo to MLIR type information
-

Modules§

Structs§

Enums§

Functions§

  • Run the compiler on a program. The compiled program is stored in the MLIR module.
  • Converts a MLIR module to a compile object, that can be linked with a linker.
  • Links the passed object into a shared library, stored on the given path.
\ No newline at end of file +

You need to setup some environment variables:

+
$MLIR_SYS_180_PREFIX=/path/to/llvm18  # Required for non-standard LLVM install locations.
+$LLVM_SYS_181_PREFIX=/path/to/llvm18  # Required for non-standard LLVM install locations.
+$TABLEGEN_180_PREFIX=/path/to/llvm18  # Required for non-standard LLVM install locations.
+
+

You can then run the bench makefile target:

+
make bench
+
+

The bench target will run the ./scripts/bench-hyperfine.sh script. +This script runs hyperfine commands to compare the execution time of programs in the ./programs/benches/ folder. +Each program is compiled and executed via the execution engine with the cairo-native-run command and via the cairo-vm with the cairo-run command provided by the cairo codebase. +The cairo-run command should be available in the $PATH and ideally compiled with cargo build --release. +If you want the benchmarks to run using a specific build, or the cairo-run commands conflicts with something (e.g. the cairo-svg package binaries in macos) then the command to run cairo-run with a full path can be specified with the $CAIRO_RUN environment variable.

+

Modules§

Structs§

Enums§

Functions§

  • Run the compiler on a program. The compiled program is stored in the MLIR module.
  • Converts a MLIR module to a compile object, that can be linked with a linker.
  • Links the passed object into a shared library, stored on the given path.
\ No newline at end of file diff --git a/cairo_native/metadata/gas/enum.GasMetadataError.html b/cairo_native/metadata/gas/enum.GasMetadataError.html index 66ae765e6..b0e0d1677 100644 --- a/cairo_native/metadata/gas/enum.GasMetadataError.html +++ b/cairo_native/metadata/gas/enum.GasMetadataError.html @@ -5,7 +5,7 @@ gas: Box<(u128, u128)>, }, }
Expand description

Error for metadata calculations.

-

Variants§

§

ApChangeError(ApChangeError)

§

CostError(CostError)

§

NotEnoughGas

Fields

§gas: Box<(u128, u128)>

Trait Implementations§

source§

impl Debug for GasMetadataError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for GasMetadataError

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for GasMetadataError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<ApChangeError> for GasMetadataError

source§

fn from(source: ApChangeError) -> Self

Converts to this type from the input type.
source§

impl From<CostError> for GasMetadataError

source§

fn from(source: CostError) -> Self

Converts to this type from the input type.
source§

impl From<GasMetadataError> for Error

source§

fn from(source: GasMetadataError) -> Self

Converts to this type from the input type.
source§

impl PartialEq for GasMetadataError

source§

fn eq(&self, other: &GasMetadataError) -> bool

This method tests for self and other values to be equal, and is used +

Variants§

§

ApChangeError(ApChangeError)

§

CostError(CostError)

§

NotEnoughGas

Fields

§gas: Box<(u128, u128)>

Trait Implementations§

source§

impl Debug for GasMetadataError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for GasMetadataError

source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for GasMetadataError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<ApChangeError> for GasMetadataError

source§

fn from(source: ApChangeError) -> Self

Converts to this type from the input type.
source§

impl From<CostError> for GasMetadataError

source§

fn from(source: CostError) -> Self

Converts to this type from the input type.
source§

impl From<GasMetadataError> for Error

source§

fn from(source: GasMetadataError) -> Self

Converts to this type from the input type.
source§

impl PartialEq for GasMetadataError

source§

fn eq(&self, other: &GasMetadataError) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for GasMetadataError

source§

impl StructuralPartialEq for GasMetadataError

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/cairo_native/sidebar-items.js b/cairo_native/sidebar-items.js index 1cef025e7..7f45e58e8 100644 --- a/cairo_native/sidebar-items.js +++ b/cairo_native/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["OptLevel"],"fn":["compile","module_to_object","object_to_shared_lib"],"mod":["cache","context","debug","error","execution_result","executor","libfuncs","metadata","module","starknet","starknet_stub","types","utils","values"],"struct":["LLVMCompileError"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["OptLevel"],"fn":["compile","module_to_object","object_to_shared_lib"],"mod":["cache","context","debug","docs","error","execution_result","executor","libfuncs","metadata","module","starknet","starknet_stub","types","utils","values"],"struct":["LLVMCompileError"]}; \ No newline at end of file diff --git a/cairo_native/values/enum.JitValue.html b/cairo_native/values/enum.JitValue.html index 2c7330023..26a428fe7 100644 --- a/cairo_native/values/enum.JitValue.html +++ b/cairo_native/values/enum.JitValue.html @@ -48,7 +48,7 @@
§

Struct

Fields

§fields: Vec<Self>
§debug_name: Option<String>
§

Enum

Fields

§tag: usize
§value: Box<Self>
§debug_name: Option<String>
§

Felt252Dict

Fields

§value: HashMap<Felt, Self>
§debug_name: Option<String>
§

Uint8(u8)

§

Uint16(u16)

§

Uint32(u32)

§

Uint64(u64)

§

Uint128(u128)

§

Sint8(i8)

§

Sint16(i16)

§

Sint32(i32)

§

Sint64(i64)

§

Sint128(i128)

§

EcPoint(Felt, Felt)

§

EcState(Felt, Felt, Felt, Felt)

§

Secp256K1Point

Fields

§x: (u128, u128)
§y: (u128, u128)
§

Secp256R1Point

Fields

§x: (u128, u128)
§y: (u128, u128)
§

BoundedInt

Fields

§value: Felt
§range: Range
§

Null

Used as return value for Nullables that are null.

Implementations§

source§

impl JitValue

source

pub fn felt_str(value: &str) -> Self

String to felt

Trait Implementations§

source§

impl Clone for JitValue

source§

fn clone(&self) -> JitValue

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for JitValue

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for JitValue

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<T: Into<JitValue> + Clone> From<&[T]> for JitValue

source§

fn from(value: &[T]) -> Self

Converts to this type from the input type.
source§

impl<T: Into<JitValue>, const N: usize> From<[T; N]> for JitValue

source§

fn from(value: [T; N]) -> Self

Converts to this type from the input type.
source§

impl From<Felt> for JitValue

source§

fn from(value: Felt) -> Self

Converts to this type from the input type.
source§

impl<T: Into<JitValue>> From<Vec<T>> for JitValue

source§

fn from(value: Vec<T>) -> Self

Converts to this type from the input type.
source§

impl From<i128> for JitValue

source§

fn from(value: i128) -> Self

Converts to this type from the input type.
source§

impl From<i16> for JitValue

source§

fn from(value: i16) -> Self

Converts to this type from the input type.
source§

impl From<i32> for JitValue

source§

fn from(value: i32) -> Self

Converts to this type from the input type.
source§

impl From<i64> for JitValue

source§

fn from(value: i64) -> Self

Converts to this type from the input type.
source§

impl From<i8> for JitValue

source§

fn from(value: i8) -> Self

Converts to this type from the input type.
source§

impl From<u128> for JitValue

source§

fn from(value: u128) -> Self

Converts to this type from the input type.
source§

impl From<u16> for JitValue

source§

fn from(value: u16) -> Self

Converts to this type from the input type.
source§

impl From<u32> for JitValue

source§

fn from(value: u32) -> Self

Converts to this type from the input type.
source§

impl From<u64> for JitValue

source§

fn from(value: u64) -> Self

Converts to this type from the input type.
source§

impl From<u8> for JitValue

source§

fn from(value: u8) -> Self

Converts to this type from the input type.
source§

impl PartialEq for JitValue

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<T: Into<JitValue> + Clone> From<&[T]> for JitValue

source§

fn from(value: &[T]) -> Self

Converts to this type from the input type.
source§

impl<T: Into<JitValue>, const N: usize> From<[T; N]> for JitValue

source§

fn from(value: [T; N]) -> Self

Converts to this type from the input type.
source§

impl From<Felt> for JitValue

source§

fn from(value: Felt) -> Self

Converts to this type from the input type.
source§

impl<T: Into<JitValue>> From<Vec<T>> for JitValue

source§

fn from(value: Vec<T>) -> Self

Converts to this type from the input type.
source§

impl From<i128> for JitValue

source§

fn from(value: i128) -> Self

Converts to this type from the input type.
source§

impl From<i16> for JitValue

source§

fn from(value: i16) -> Self

Converts to this type from the input type.
source§

impl From<i32> for JitValue

source§

fn from(value: i32) -> Self

Converts to this type from the input type.
source§

impl From<i64> for JitValue

source§

fn from(value: i64) -> Self

Converts to this type from the input type.
source§

impl From<i8> for JitValue

source§

fn from(value: i8) -> Self

Converts to this type from the input type.
source§

impl From<u128> for JitValue

source§

fn from(value: u128) -> Self

Converts to this type from the input type.
source§

impl From<u16> for JitValue

source§

fn from(value: u16) -> Self

Converts to this type from the input type.
source§

impl From<u32> for JitValue

source§

fn from(value: u32) -> Self

Converts to this type from the input type.
source§

impl From<u64> for JitValue

source§

fn from(value: u64) -> Self

Converts to this type from the input type.
source§

impl From<u8> for JitValue

source§

fn from(value: u8) -> Self

Converts to this type from the input type.
source§

impl PartialEq for JitValue

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for JitValue

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for JitValue

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/help.html b/help.html index 2d4009e27..e0db98d1a 100644 --- a/help.html +++ b/help.html @@ -1 +1 @@ -Help

Rustdoc help

Back
\ No newline at end of file +Help

Rustdoc help

Back
\ No newline at end of file diff --git a/search-index.js b/search-index.js index 5c634fbb2..ffc64c186 100644 --- a/search-index.js +++ b/search-index.js @@ -1,13 +1,13 @@ var searchIndex = new Map(JSON.parse('[\ -["cairo_native",{"t":"PPFPPGNNNNNNCNNNNNNHCCNNNNNNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNCCCHHNCCNNNNNNNNNNCNNNNCCNNPEPEGCNNNNNNNNNNNNNNNNNCNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNHPPPPPGPPPGPPPPPPPPPPPPPIPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFFFNNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNPFPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGRPKFPNCNCCCNNNNCCNCMCCCNNNCCCNNNNNCNNCCCCCCNNNCCHHNNNNNNNNNNNNNNNNNMCCCCCCCCCCCCNNNNNNNNCCCCCCCCCNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFCNNCNNNNCNNCNNNNNNNNNNNNNCCNCCCNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNMNMNMNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNOOOOOOOONNNNNNNOOMNOOMNMNMNMNMNMNMNMNMNMNMNONNNNNNNMNOOOMNMNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOOOOFFFNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNRKFNCNCNNCCMMMCCCNNCNNNNCCCCNNNNNNCCCMNNCNNMNNNNNNNMMMMMMMNCCCCCCNCCCCNNNNCCCCCCCNNMNHHHHHHSHHHHHHHHHHHIHHHFFNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHFKKSNNNMMHNNHHNNNNNNNNNHHHHHHNNNHHNNNNNNNNHHHMHHHNNNNNNNNNMPPPPPPPPGPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOO","n":["Aggressive","Default","LLVMCompileError","Less","None","OptLevel","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","cache","clone","clone","clone_into","clone_into","cmp","compare","compile","context","debug","default","deref","deref","deref_mut","deref_mut","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","error","execution_result","executor","fmt","fmt","fmt","from","from","from","from","hash","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","libfuncs","metadata","module","module_to_object","object_to_shared_lib","partial_cmp","starknet","starknet_stub","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_into","try_into","type_id","type_id","types","upcast","upcast","upcast_mut","upcast_mut","utils","values","vzip","vzip","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","from","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","jit","try_from","try_into","type_id","upcast","upcast_mut","vzip","AotProgramCache","borrow","borrow_mut","compile_and_insert","deref","deref_mut","drop","fmt","from","get","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","try_from","try_into","type_id","upcast","upcast_mut","vzip","JitProgramCache","borrow","borrow_mut","compile_and_insert","context","deref","deref_mut","drop","fmt","from","get","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeContext","borrow","borrow_mut","compile","context","default","deref","deref_mut","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","from","init","initialize_mlir","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","try_from","try_into","type_id","upcast","upcast_mut","vzip","libfunc_to_name","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","LLVMCompileError","LayoutError","LayoutErrorPolyfill","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","make_missing_parameter","source","to_smolstr","to_smolstr","to_smolstr","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","range","value","ranges","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","__clone_box","__clone_box","bitwise","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builtin_stats","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","ec_op","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_msg","failure_flag","fmt","fmt","fmt","from","from","from","from_execution_result","hash","hash","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","partial_cmp","partial_cmp","pedersen","poseidon","range_check","remaining_gas","remaining_gas","return_value","return_values","segment_arena","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","Aot","AotNativeExecutor","Jit","JitNativeExecutor","NativeExecutor","__clone_box","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","find_function_ptr","find_function_ptr","fmt","fmt","fmt","from","from","from","from","from","from_native_module","from_native_module","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","invoke_contract_dynamic","invoke_contract_dynamic","invoke_contract_dynamic","invoke_dynamic","invoke_dynamic","invoke_dynamic","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","module","new","program_registry","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","BranchTarget","Error","Jump","LibfuncBuilder","LibfuncHelper","Return","__clone_box","ap_tracking","append_block","array","bitwise","bool","borrow","borrow","borrow_mut","borrow_mut","bounded_int","box","br","branch_align","build","bytes31","cast","circuit","clone","clone_into","cond_br","const","coupon","debug","deref","deref","deref","deref_mut","deref_mut","drop","drop","drop","dup","ec","enum","felt252","felt252_dict","felt252_dict_entry","fmt","from","from","function_call","gas","increment_builtin_counter","increment_builtin_counter_by","init","init","init_block","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","is_function_call","mem","nullable","pedersen","poseidon","sint128","sint16","sint32","sint64","sint8","snapshot_take","starknet","struct","switch","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uint128","uint16","uint256","uint32","uint512","uint64","uint8","unconditional_jump","unwrap_non_zero","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build_disable","build_enable","build_revoke","build","build_append","build_get","build_len","build_new","build_pop_front","build_pop_front_consume","build_slice","build_snapshot_multi_pop_back","build_snapshot_multi_pop_front","build_snapshot_pop_back","build_snapshot_pop_front","build_span_from_tuple","build_tuple_from_span","build","build","build_bool_not","build_bool_to_felt252","build","build","build_into_box","build_unbox","build","build","build_const","build_from_felt252","build_to_felt252","build","build_downcast","build_upcast","build","build","build_const_as_box","build_const_as_immediate","build_const_type_value","build","build_buy","build_refund","build","build_print","build","build","build","build_is_zero","build_neg","build_point_from_x","build_state_add","build_state_add_mul","build_state_finalize","build_state_init","build_try_new","build_unwrap_point","build_zero","build","build_enum_value","build_from_bounded_int","build_init","build_match","build_snapshot_match","build","build_binary_operation","build_const","build_is_zero","build","build_new","build_squash","build","build_finalize","build_get","build","build","build_builtin_withdraw_gas","build_get_available_gas","build_get_builtin_costs","build_withdraw_gas","build","build_alloc_local","build_finalize_locals","build_rename","build_store_local","build_store_temp","build","build","build_pedersen","build","build_hades_permutation","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build","build_call_contract","build_class_hash_const","build_class_hash_to_felt252","build_class_hash_try_from_felt252","build_contract_address_const","build_contract_address_to_felt252","build_contract_address_try_from_felt252","build_deploy","build_emit_event","build_get_block_hash","build_get_execution_info","build_get_execution_info_v2","build_keccak","build_library_call","build_replace_class","build_send_message_to_l1","build_sha256_process_block_syscall","build_sha256_state_handle_digest","build_sha256_state_handle_init","build_storage_address_from_base","build_storage_address_from_base_and_offset","build_storage_address_to_felt252","build_storage_address_try_from_felt252","build_storage_base_address_const","build_storage_base_address_from_felt252","build_storage_read","build_storage_write","build","build_construct","build_deconstruct","build_struct_value","build","build_byte_reverse","build_const","build_divmod","build_equal","build_from_felt252","build_guarantee_mul","build_guarantee_verify","build_is_zero","build_operation","build_square_root","build_to_felt252","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod","build_is_zero","build_square_root","build_u256_guarantee_inv_mod_n","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod_u256","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build","MetadataStorage","auto_breakpoint","borrow","borrow_mut","debug_utils","default","deref","deref_mut","drop","enum_snapshot_variants","fmt","from","gas","get","get_mut","get_or_insert_with","init","insert","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","prime_modulo","realloc_bindings","remove","runtime_bindings","snapshot_clones","tail_recursion","try_from","try_into","type_id","upcast","upcast_mut","vzip","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","__clone_box","add_event","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","deref","deref","deref_mut","deref_mut","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","has_event","hash","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","maybe_breakpoint","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","type_id","variant_idx","DebugUtils","borrow","borrow_mut","breakpoint_marker","debug_breakpoint_trap","debug_print","default","deref","deref_mut","drop","dump_mem","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","register_impls","try_from","try_into","type_id","upcast","upcast_mut","vzip","EnumSnapshotVariantsMeta","borrow","borrow_mut","default","deref","deref_mut","drop","from","get_variants","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","set_mapping","try_from","try_into","type_id","upcast","upcast_mut","vzip","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","__clone_box","__clone_box","ap_change_info","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","compare","default","default","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","function_set_costs","gas_info","get_gas_cost_for_statement","get_gas_cost_for_statement_and_cost_token_type","get_initial_available_gas","hash","init","init","init","init","initial_required_gas","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","into","linear_ap_change_solver","linear_gas_solver","new","partial_cmp","source","to_owned","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip","gas","PrimeModuloMeta","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","prime","try_from","try_into","type_id","upcast","upcast_mut","vzip","ReallocBindingsMeta","borrow","borrow_mut","deref","deref_mut","drop","fmt","free","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","realloc","try_from","try_into","type_id","upcast","upcast_mut","vzip","RuntimeBindingsMeta","borrow","borrow_mut","default","deref","deref_mut","dict_alloc_free","dict_alloc_new","dict_gas_refund","dict_get","dict_insert","dict_values","drop","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","libfunc_debug_print","libfunc_ec_point_from_x_nz","libfunc_ec_point_try_new_nz","libfunc_ec_state_add","libfunc_ec_state_add_mul","libfunc_ec_state_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","try_from","try_into","type_id","upcast","upcast_mut","vtable_cheatcode","vzip","CloneFn","SnapshotClonesMeta","borrow","borrow_mut","default","deref","deref_mut","drop","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","register","try_from","try_into","type_id","upcast","upcast_mut","vzip","wrap_invoke","TailRecursionMeta","borrow","borrow_mut","depth_counter","deref","deref_mut","drop","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","recursion_target","return_target","set_return_target","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeModule","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_metadata","init","insert_metadata","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","metadata","module","new","program_registry","remove_metadata","try_from","try_into","type_id","upcast","upcast_mut","vzip","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","account_contract_address","account_contract_address","account_deployment_data","block_info","block_info","block_number","block_timestamp","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cairo_native__vtable_cheatcode","call_contract","call_contract","caller_address","caller_address","capacity","chain_id","chain_id","cheatcode","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","compare","compare","compare","compare","compare","compare","compare","contract_address","contract_address","default","deploy","deploy","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","emit_event","emit_event","entry_point_selector","entry_point_selector","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fee_data_availability_mode","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","get_block_hash","get_block_hash","get_execution_info","get_execution_info","get_execution_info_v2","get_execution_info_v2","hash","hash","hash","hash","hash","hash","hash","hash","hash","hi","init","init","init","init","init","init","init","init","init","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","into","into","into","into","into","into","into","into","into","keccak","keccak","library_call","library_call","lo","max_amount","max_fee","max_fee","max_price_per_unit","nonce","nonce","nonce_data_availability_mode","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","paymaster_data","ptr","replace_class","replace_class","resource","resource_bounds","secp256k1_add","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_get_xy","secp256k1_mul","secp256k1_mul","secp256k1_new","secp256k1_new","secp256r1_add","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_get_xy","secp256r1_mul","secp256r1_mul","secp256r1_new","secp256r1_new","send_message_to_l1","send_message_to_l1","sequencer_address","serialize","serialize","serialize","serialize","serialize","serialize","serialize","sha256_process_block","sha256_process_block","signature","signature","since","storage_read","storage_read","storage_write","storage_write","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","transaction_hash","transaction_hash","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_info","tx_info","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","until","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","x","x","y","y","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","call_contract","cheatcode","clone","clone","clone","clone_into","clone_into","clone_into","data","default","default","deploy","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","emit_event","events","events","execution_info","fmt","fmt","fmt","from","from","from","get_block_hash","get_execution_info","get_execution_info_v2","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","keccak","keys","l2_to_l1_messages","library_call","logs","replace_class","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_mul","secp256k1_new","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_mul","secp256r1_new","send_message_to_l1","sha256_process_block","storage","storage_read","storage_write","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","Error","TypeBuilder","WithSelf","__clone_box","array","as_ref","bitwise","borrow","borrow_mut","bounded_int","box","build","build_default","build_drop","builtin_costs","bytes31","circuit","clone","clone_into","coupon","deref","deref","deref_mut","drop","ec_op","ec_point","ec_state","enum","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252","felt252_dict","felt252_dict_entry","fields","fmt","from","gas_builtin","hash","init","integer_range","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","is_bounded_int","is_builtin","is_complex","is_felt252","is_memory_allocated","is_zst","layout","new","non_zero","nullable","pedersen","poseidon","range_check","segment_arena","self_ty","snapshot","squashed_felt252_dict","starknet","struct","to_owned","try_from","try_into","type_id","uint128","uint128_mul_guarantee","uint16","uint32","uint64","uint8","uninitialized","upcast","upcast_mut","variants","vzip","build","build","build","build","build","build","CIRCUIT_INPUT_SIZE","build","build_circuit_accumulator","build_circuit_data","build_circuit_outputs","is_complex","is_zst","layout","build","build","build","build","TypeLayout","build","get_layout_for_variants","get_type_for_variants","HALF_PRIME","PRIME","borrow","borrow","borrow_mut","borrow_mut","build","deref","deref","deref","deref","deref_mut","deref_mut","drop","drop","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","register_prime_modulo_meta","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build","build","build","build","build","build","build","build","build","build","build","build_class_hash","build_contract_address","build_secp256_point","build_sha256_state_handle","build_storage_address","build_storage_base_address","build_system","build","build","build","build","build","build","build","build","LayoutError","ProgramRegistryExt","RangeExt","SHARED_LIBRARY_EXT","__clone_box","borrow","borrow_mut","build_type","build_type_with_layout","cairo_to_sierra","clone","clone_into","create_engine","debug_with","deref","deref_mut","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252_bigint","felt252_short_str","felt252_str","find_entry_point","find_entry_point_by_idx","find_function_id","fmt","fmt","from","generate_function_name","get_integer_layout","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","layout_repeat","next_multiple_of_u32","next_multiple_of_usize","offset_bit_width","padding_needed_for","register_runtime_symbols","run_pass_manager","to_owned","to_smolstr","to_string","try_from","try_into","type_id","upcast","upcast_mut","vzip","zero_based_bit_width","Array","BoundedInt","Bytes31","EcPoint","EcState","Enum","Felt252","Felt252Dict","JitValue","Null","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","__clone_box","borrow","borrow_mut","clone","clone_into","deref","deref_mut","deserialize","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt_str","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","serialize","to_owned","try_from","try_into","type_id","upcast","upcast_mut","vzip","debug_name","debug_name","debug_name","fields","range","tag","value","value","value","x","x","y","y"],"q":[[0,"cairo_native"],[89,"cairo_native::cache"],[119,"cairo_native::cache::aot"],[144,"cairo_native::cache::jit"],[170,"cairo_native::context"],[203,"cairo_native::debug"],[204,"cairo_native::error"],[315,"cairo_native::error::CompilerError"],[317,"cairo_native::error::SierraAssertError"],[318,"cairo_native::execution_result"],[444,"cairo_native::executor"],[534,"cairo_native::libfuncs"],[638,"cairo_native::libfuncs::ap_tracking"],[642,"cairo_native::libfuncs::array"],[656,"cairo_native::libfuncs::bitwise"],[657,"cairo_native::libfuncs::bool"],[660,"cairo_native::libfuncs::bounded_int"],[661,"cairo_native::libfuncs::box"],[664,"cairo_native::libfuncs::branch_align"],[665,"cairo_native::libfuncs::bytes31"],[669,"cairo_native::libfuncs::cast"],[672,"cairo_native::libfuncs::circuit"],[673,"cairo_native::libfuncs::const"],[677,"cairo_native::libfuncs::coupon"],[680,"cairo_native::libfuncs::debug"],[682,"cairo_native::libfuncs::drop"],[683,"cairo_native::libfuncs::dup"],[684,"cairo_native::libfuncs::ec"],[695,"cairo_native::libfuncs::enum"],[701,"cairo_native::libfuncs::felt252"],[705,"cairo_native::libfuncs::felt252_dict"],[708,"cairo_native::libfuncs::felt252_dict_entry"],[711,"cairo_native::libfuncs::function_call"],[712,"cairo_native::libfuncs::gas"],[717,"cairo_native::libfuncs::mem"],[723,"cairo_native::libfuncs::nullable"],[724,"cairo_native::libfuncs::pedersen"],[726,"cairo_native::libfuncs::poseidon"],[728,"cairo_native::libfuncs::sint128"],[736,"cairo_native::libfuncs::sint16"],[745,"cairo_native::libfuncs::sint32"],[754,"cairo_native::libfuncs::sint64"],[763,"cairo_native::libfuncs::sint8"],[772,"cairo_native::libfuncs::snapshot_take"],[773,"cairo_native::libfuncs::starknet"],[801,"cairo_native::libfuncs::struct"],[805,"cairo_native::libfuncs::uint128"],[817,"cairo_native::libfuncs::uint16"],[827,"cairo_native::libfuncs::uint256"],[832,"cairo_native::libfuncs::uint32"],[842,"cairo_native::libfuncs::uint512"],[844,"cairo_native::libfuncs::uint64"],[854,"cairo_native::libfuncs::uint8"],[864,"cairo_native::libfuncs::unconditional_jump"],[865,"cairo_native::libfuncs::unwrap_non_zero"],[866,"cairo_native::metadata"],[904,"cairo_native::metadata::auto_breakpoint"],[968,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[970,"cairo_native::metadata::debug_utils"],[1005,"cairo_native::metadata::enum_snapshot_variants"],[1029,"cairo_native::metadata::gas"],[1172,"cairo_native::metadata::gas::GasMetadataError"],[1173,"cairo_native::metadata::prime_modulo"],[1197,"cairo_native::metadata::realloc_bindings"],[1222,"cairo_native::metadata::runtime_bindings"],[1261,"cairo_native::metadata::snapshot_clones"],[1286,"cairo_native::metadata::tail_recursion"],[1313,"cairo_native::module"],[1342,"cairo_native::starknet"],[1843,"cairo_native::starknet_stub"],[1955,"cairo_native::types"],[2040,"cairo_native::types::array"],[2041,"cairo_native::types::bitwise"],[2042,"cairo_native::types::bounded_int"],[2043,"cairo_native::types::box"],[2044,"cairo_native::types::builtin_costs"],[2045,"cairo_native::types::bytes31"],[2046,"cairo_native::types::circuit"],[2054,"cairo_native::types::coupon"],[2055,"cairo_native::types::ec_op"],[2056,"cairo_native::types::ec_point"],[2057,"cairo_native::types::ec_state"],[2058,"cairo_native::types::enum"],[2062,"cairo_native::types::felt252"],[2108,"cairo_native::types::felt252_dict"],[2109,"cairo_native::types::felt252_dict_entry"],[2110,"cairo_native::types::gas_builtin"],[2111,"cairo_native::types::non_zero"],[2112,"cairo_native::types::nullable"],[2113,"cairo_native::types::pedersen"],[2114,"cairo_native::types::poseidon"],[2115,"cairo_native::types::range_check"],[2116,"cairo_native::types::segment_arena"],[2117,"cairo_native::types::snapshot"],[2118,"cairo_native::types::squashed_felt252_dict"],[2119,"cairo_native::types::starknet"],[2127,"cairo_native::types::struct"],[2128,"cairo_native::types::uint128"],[2129,"cairo_native::types::uint128_mul_guarantee"],[2130,"cairo_native::types::uint16"],[2131,"cairo_native::types::uint32"],[2132,"cairo_native::types::uint64"],[2133,"cairo_native::types::uint8"],[2134,"cairo_native::types::uninitialized"],[2135,"cairo_native::utils"],[2194,"cairo_native::values"],[2265,"cairo_native::values::JitValue"],[2278,"dyn_clone::sealed"],[2279,"cairo_native::ffi"],[2280,"core::cmp"],[2281,"melior::context"],[2282,"melior::ir::module"],[2283,"cairo_lang_sierra::program"],[2284,"cairo_lang_sierra::extensions::core"],[2285,"cairo_lang_sierra::program_registry"],[2286,"melior::ir::attribute"],[2287,"core::result"],[2288,"core::fmt"],[2289,"core::hash"],[2290,"alloc::vec"],[2291,"cairo_lang_semantic::substitution"],[2292,"alloc::collections::vec_deque"],[2293,"core::option"],[2294,"alloc::boxed"],[2295,"std::path"],[2296,"std::io::error"],[2297,"smol_str"],[2298,"alloc::string"],[2299,"core::any"],[2300,"cairo_native::executor::aot"],[2301,"alloc::sync"],[2302,"cairo_native::executor::jit"],[2303,"core::num::error"],[2304,"cairo_lang_sierra::edit_state"],[2305,"core::alloc::layout"],[2306,"melior::error"],[2307,"cairo_lang_sierra::ids"],[2308,"core::error"],[2309,"serde::de"],[2310,"serde::ser"],[2311,"core::ffi"],[2312,"starknet_types_core::felt"],[2313,"libloading::safe"],[2314,"melior::ir::block"],[2315,"melior::ir::value"],[2316,"melior::ir::location"],[2317,"melior::ir::operation"],[2318,"num_bigint::bigint"],[2319,"core::convert"],[2320,"cairo_lang_sierra::extensions::modules::ap_tracking"],[2321,"cairo_lang_sierra::extensions::lib_func"],[2322,"cairo_lang_sierra::extensions::modules::array"],[2323,"cairo_lang_sierra::extensions::modules::boolean"],[2324,"cairo_lang_sierra::extensions::modules::bounded_int"],[2325,"cairo_lang_sierra::extensions::modules::boxing"],[2326,"cairo_lang_sierra::extensions::modules::bytes31"],[2327,"cairo_lang_sierra::extensions::modules::consts"],[2328,"cairo_lang_sierra::extensions::modules::casts"],[2329,"cairo_lang_sierra::extensions::modules::circuit"],[2330,"cairo_lang_sierra::extensions::modules::const_type"],[2331,"cairo_lang_sierra::extensions::modules::coupon"],[2332,"cairo_lang_sierra::extensions::modules::function_call"],[2333,"cairo_lang_sierra::extensions::modules::debug"],[2334,"cairo_lang_sierra::extensions::modules::ec"],[2335,"cairo_lang_sierra::extensions::modules::enm"],[2336,"cairo_lang_sierra::extensions::modules::felt252"],[2337,"cairo_lang_sierra::extensions::modules::felt252_dict"],[2338,"cairo_lang_sierra::extensions::modules::gas"],[2339,"cairo_lang_sierra::extensions::modules::mem"],[2340,"cairo_lang_sierra::extensions::modules::nullable"],[2341,"cairo_lang_sierra::extensions::modules::pedersen"],[2342,"cairo_lang_sierra::extensions::modules::poseidon"],[2343,"cairo_lang_sierra::extensions::modules::int::signed128"],[2344,"cairo_lang_sierra::extensions::modules::int"],[2345,"cairo_lang_sierra::extensions::modules::int::signed"],[2346,"cairo_lang_sierra::extensions::modules::starknet"],[2347,"cairo_lang_sierra::extensions::modules::structure"],[2348,"cairo_lang_sierra::extensions::modules::int::unsigned128"],[2349,"cairo_lang_sierra::extensions::modules::int::unsigned"],[2350,"cairo_lang_sierra::extensions::modules::int::unsigned256"],[2351,"cairo_lang_sierra::extensions::modules::int::unsigned512"],[2352,"core::ops::function"],[2353,"melior::execution_engine"],[2354,"cairo_lang_sierra_gas"],[2355,"cairo_lang_sierra_ap_change"],[2356,"num_bigint::biguint"],[2357,"melior::ir::type"],[2358,"core::clone"],[2359,"cairo_lang_sierra::extensions::modules::utils"],[2360,"cairo_lang_sierra::extensions::types"],[2361,"cairo_lang_sierra::extensions::modules::starknet::secp256"],[2362,"alloc::borrow"],[2363,"cairo_native::compiler"]],"i":[6,6,0,6,6,0,5,6,5,6,5,6,0,5,6,5,6,6,6,0,0,0,6,5,6,5,6,5,6,6,6,6,6,6,6,0,0,0,5,5,6,5,6,6,6,6,5,6,5,5,5,5,5,5,6,6,6,6,6,6,5,6,0,0,0,0,0,6,0,0,5,6,5,5,5,6,5,6,5,6,0,5,6,5,6,0,0,5,6,36,0,36,0,0,0,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,0,36,36,36,36,36,36,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,0,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,50,50,51,50,16,0,16,16,84,0,16,50,16,16,16,16,16,16,16,84,16,16,50,0,16,0,16,16,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,16,50,50,51,51,16,16,16,16,16,16,16,16,16,16,50,51,16,50,51,16,16,16,16,16,16,50,50,50,50,50,50,51,51,51,51,51,51,16,50,51,16,16,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,217,217,218,0,0,0,61,62,63,61,61,62,63,61,62,63,62,61,62,63,61,62,63,61,63,61,63,61,63,61,62,63,61,62,63,61,62,63,61,62,63,61,61,62,63,61,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,63,61,62,63,61,62,63,63,61,63,61,62,63,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,61,62,63,61,63,61,61,61,62,63,62,63,61,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,66,0,66,0,0,66,46,43,66,46,43,66,66,66,46,43,66,46,43,66,46,43,66,46,43,46,43,66,46,43,66,66,66,46,43,46,43,66,46,46,46,46,46,46,43,43,43,43,43,43,66,66,66,66,66,66,46,43,66,46,43,66,46,43,66,46,43,66,46,43,46,66,46,43,66,46,43,66,46,43,66,46,43,66,46,43,66,46,43,66,0,81,82,0,0,82,82,0,75,0,0,0,75,82,75,82,0,0,75,0,81,0,0,0,82,82,75,0,0,0,75,75,82,75,82,0,75,82,0,0,0,0,0,0,82,75,82,0,0,0,0,75,82,75,75,75,75,75,75,75,82,82,82,82,82,82,75,82,81,0,0,0,0,0,0,0,0,0,0,0,0,75,82,75,82,75,82,75,82,0,0,0,0,0,0,0,0,0,75,82,75,82,75,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,14,14,0,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,14,0,0,0,14,14,14,14,14,14,0,0,152,152,151,151,152,151,152,151,152,151,152,151,151,152,151,152,151,152,151,152,152,152,152,152,152,152,151,152,151,151,152,152,151,152,152,152,152,152,152,151,151,151,151,151,151,152,151,151,152,151,152,151,152,151,152,151,152,151,152,151,152,151,219,219,0,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,0,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,53,53,0,0,0,0,53,74,156,157,74,74,156,157,53,74,156,157,53,74,156,157,74,156,157,156,156,74,157,74,156,157,53,74,156,157,53,74,156,157,53,74,156,53,74,74,74,74,74,156,156,156,156,156,53,53,53,53,53,74,156,157,53,53,74,156,157,53,53,53,157,74,74,74,74,156,74,156,157,53,74,74,74,74,74,74,74,156,156,156,156,156,156,157,157,157,157,157,157,53,53,53,53,53,53,74,156,157,53,157,157,74,156,53,74,156,157,53,53,74,156,157,53,74,156,157,53,74,156,157,53,74,156,157,53,74,156,157,53,74,156,157,53,220,0,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,0,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,0,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,0,0,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,0,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,0,0,0,174,0,0,0,174,0,0,0,0,0,0,0,0,0,172,176,177,178,179,180,181,182,183,184,179,182,179,177,178,181,181,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,0,71,175,177,178,173,179,182,71,172,176,177,178,179,180,181,182,183,184,172,176,177,178,179,180,181,182,183,184,176,177,178,179,180,181,182,176,177,178,179,180,181,182,177,178,176,71,175,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,176,177,178,179,180,181,182,175,173,172,176,177,178,179,180,181,182,183,184,71,175,177,178,176,177,178,179,180,181,182,183,184,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,180,180,180,180,180,181,181,181,181,181,182,182,182,182,182,183,183,183,183,183,184,184,184,184,184,179,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,71,175,71,175,71,175,176,177,178,179,180,181,182,183,184,176,175,173,172,176,177,178,179,180,181,182,183,184,175,175,175,175,175,175,173,173,173,173,173,173,172,172,172,172,172,172,176,176,176,176,176,176,177,177,177,177,177,177,178,178,178,178,178,178,179,179,179,179,179,179,180,180,180,180,180,180,181,181,181,181,181,181,182,182,182,182,182,182,183,183,183,183,183,183,184,184,184,184,184,184,175,173,172,176,177,178,179,180,181,182,183,184,71,175,71,175,176,180,179,182,180,179,182,179,176,177,178,179,180,181,182,179,173,71,175,180,179,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,181,176,177,178,179,180,181,182,71,175,179,182,173,71,175,71,175,179,172,176,177,178,179,180,181,182,183,184,179,182,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,177,178,175,173,172,176,177,178,179,180,181,182,183,184,173,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,179,182,175,173,172,176,177,178,179,180,181,182,183,184,183,184,183,184,0,0,0,187,188,189,187,188,189,187,188,189,187,187,187,188,189,187,188,189,188,187,189,187,187,188,189,187,188,189,187,188,189,187,187,189,187,187,188,189,187,188,189,187,187,187,187,188,189,187,187,187,187,187,187,188,188,188,188,188,188,189,189,189,189,189,189,187,188,189,187,188,189,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,188,189,187,188,189,187,188,189,187,188,189,187,188,189,187,188,189,187,188,189,191,0,0,190,0,190,0,190,190,0,0,191,191,191,0,0,0,190,190,0,190,190,190,190,0,0,0,0,190,190,190,190,190,190,0,0,0,191,190,190,0,190,190,191,190,190,190,190,190,190,190,191,191,191,191,191,191,191,190,0,0,0,0,0,0,190,0,0,0,0,190,190,190,190,0,0,0,0,0,0,0,190,190,191,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,204,203,204,0,203,203,204,204,203,204,203,204,203,204,203,204,203,203,203,203,203,203,204,204,204,204,204,204,203,204,0,203,204,203,204,203,204,203,204,203,204,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,54,54,208,208,0,54,54,0,0,54,54,54,54,54,54,54,54,54,0,0,0,0,0,0,54,54,54,0,0,54,54,54,54,54,54,54,54,0,0,0,211,0,0,0,54,54,54,54,54,54,54,54,54,211,72,72,72,72,72,72,72,72,0,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,221,222,223,221,224,222,222,223,224,225,226,225,226],"f":"``````{{{b{c}}d}f{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}0`{{{b{j}}}j}{{{b{l}}}l}{{{b{c}}{b{he}}}f{}{}}0{{{b{l}}{b{l}}}n}{{{b{c}}{b{e}}}n{}{}}{{{b{A`}}{b{Ab}}{b{Ad}}{b{{Aj{AfAh}}}}{b{hAl}}An}{{Bb{fB`}}}}``{{}l}{Bd{{b{c}}}{}}0{Bd{{b{hc}}}{}}0{Bdf}0{{{b{l}}{b{l}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000```{{{b{j}}{b{hBh}}}Bj}0{{{b{l}}{b{hBh}}}Bj}{cc{}}{Bdl}1{Bll}{{{b{l}}{b{hc}}}fBn}{{}Bd}0{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}521034{ce{}{}}0```{{{b{Ab}}l}{{Bb{{C`{Bl}}j}}}}{{{b{{Cl{Bl}}}}{b{Cn}}}{{Bb{fD`}}}}{{{b{l}}{b{l}}}{{Cf{n}}}}``{{{b{c}}}e{}{}}0{{{b{c}}}Db{}}{{{b{c}}}Dd{}}{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0`{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}0``::``````10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{{Dh{c}}}}{b{hBh}}}Bj{DjDlDnE`}}{cc{}}{{{Eb{c}}}{{Dh{c}}}{DjDlDn}}{{{Ed{c}}}{{Dh{c}}}{DjDlDn}}{{}Bd}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}`{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}4`10{{{b{h{Ed{c}}}}c{b{Ad}}l}{{Eh{Ef}}}{DjDlDn}}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{{Ed{c}}}}{b{hBh}}}Bj{DjDlDn}}{cc{}}{{{b{{Ed{c}}}}{b{c}}}{{Cf{{Eh{Ef}}}}}{DjDlDn}}{{}Bd}=>?{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}?{{{b{Ej}}}{{Ed{c}}}{DjDlDn}}??>=<{ce{}{}}`>={{{b{h{Eb{c}}}}c{b{Ad}}l}{{Eh{El}}}{DlDnDj}}{{{b{{Eb{c}}}}}{{b{Ej}}}{DlDnDj}}=<;{{{b{{Eb{c}}}}{b{hBh}}}Bj{DlDnDj}}:{{{b{{Eb{c}}}}{b{c}}}{{Cf{{Eh{El}}}}}{DlDnDj}}9{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}879{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}7{{{b{Ej}}}{{Eb{c}}}{DlDnDj}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}<`10{{{b{Ej}}{b{Ad}}}{{Bb{EnB`}}}}{{{b{Ej}}}{{b{A`}}}}{{}Ej}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{Ej}}{b{Ej}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{{{b{Ej}}{b{hBh}}}Bj}{cc{}}{{}Bd}{{}A`}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{}Ej}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5{{{b{F`}}}{{b{Fb}}}}````````````````````````````222111{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{Bdf}00{{{b{B`}}{b{hBh}}}Bj}0{{{b{Fd}}{b{hBh}}}Bj}0{{{b{Ff}}{b{hBh}}}Bj}0{FfB`}{FhB`}{FjB`}{FlB`}{{{Cj{Fn}}}B`}{G`B`}{GbB`}{GdB`}{cc{}}{FdB`}11{{}Bd}00{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}504123145230{ce{}{}}00{{{b{Gf}}}B`}{{{b{B`}}}{{Cf{{b{Gh}}}}}}{{{b{c}}}Db{}}00{{{b{c}}}Dd{}}00{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00888``````{{{b{c}}d}f{}}00`222111`{{{b{Gj}}}Gj}{{{b{Gl}}}Gl}{{{b{Gn}}}Gn}{{{b{c}}{b{he}}}f{}{}}00{{{b{Gj}}{b{Gj}}}n}{{{b{Gn}}{b{Gn}}}n}{{{b{c}}{b{e}}}n{}{}}0{{}Gj}{{}Gn}{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{c{{Bb{Gj}}}H`}{c{{Bb{Gl}}}H`}{c{{Bb{Gn}}}H`}{Bdf}00`{{{b{Gj}}{b{Gj}}}Bf}{{{b{Gl}}{b{Gl}}}Bf}{{{b{Gn}}{b{Gn}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}00000000000000``{{{b{Gj}}{b{hBh}}}Bj}{{{b{Gl}}{b{hBh}}}Bj}{{{b{Gn}}{b{hBh}}}Bj}{cc{}}00{Gl{{Bb{GnB`}}}}{{{b{Gj}}{b{hc}}}fBn}{{{b{Gn}}{b{hc}}}fBn}{{}Bd}00{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}254310243105{ce{}{}}00{{{b{Gj}}{b{Gj}}}{{Cf{n}}}}{{{b{Gn}}{b{Gn}}}{{Cf{n}}}}````````{{{b{Gj}}c}BbHb}{{{b{Gl}}c}BbHb}{{{b{Gn}}c}BbHb}{{{b{c}}}e{}{}}00{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00:::`````{{{b{c}}d}f{}}222111{{{b{Hd}}}Hd}{{{b{c}}{b{he}}}f{}{}}{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{Bdf}00{{{b{El}}{b{Hf}}}Hh}{{{b{Ef}}{b{Hf}}}Hh}{{{b{El}}{b{hBh}}}Bj}{{{b{Ef}}{b{hBh}}}Bj}{{{b{Hd}}{b{hBh}}}Bj}{cc{}}00{EfHd}{ElHd}{{Enl}El}{{Enl}Ef}{{}Bd}00{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}314502031542{ce{}{}}00{{{b{El}}{b{Hf}}{b{{Cl{Hj}}}}{Cf{Hl}}c}{{Bb{GnB`}}}Hn}{{{b{Ef}}{b{Hf}}{b{{Cl{Hj}}}}{Cf{Hl}}c}{{Bb{GnB`}}}Hn}{{{b{Hd}}{b{Hf}}{b{{Cl{Hj}}}}{Cf{Hl}}c}{{Bb{GnB`}}}Hn}{{{b{El}}{b{Hf}}{b{{Cl{I`}}}}{Cf{Hl}}}{{Bb{GlB`}}}}{{{b{Ef}}{b{Hf}}{b{{Cl{I`}}}}{Cf{Hl}}}{{Bb{GlB`}}}}{{{b{Hd}}{b{Hf}}{b{{Cl{I`}}}}{Cf{Hl}}}{{Bb{GlB`}}}}{{{b{El}}{b{Hf}}{b{{Cl{I`}}}}{Cf{Hl}}c}{{Bb{GlB`}}}Hn}{{{b{Ef}}{b{Hf}}{b{{Cl{I`}}}}{Cf{Hl}}c}{{Bb{GlB`}}}Hn}{{{b{Hd}}{b{Hf}}{b{{Cl{I`}}}}{Cf{Hl}}c}{{Bb{GlB`}}}Hn}{{{b{El}}}{{b{Ab}}}}{{Ib{Aj{AfAh}}Id}Ef}{{{b{El}}}{{b{{Aj{AfAh}}}}}}{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00{ce{}{}}00``````{{{b{c}}d}f{}}`{{{b{If}}Ih}{{b{Ih}}}}```4433``{{{b{If}}Bd{b{{Cl{Ij}}}}Il}In}`{{{b{{Jb{}{{J`{c}}}}}}{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}}{{Bb{fc}}}Gh}```{{{b{Jd}}}Jd}{{{b{c}}{b{he}}}f{}{}}{{{b{If}}{b{A`}}Ij{Jf{Bd}}{Jf{{b{{Cl{Ij}}}}}}Il}In}```{Bd{{b{c}}}{}}{{{b{If}}}{{b{c}}}{}}1{Bd{{b{hc}}}{}}0`{Bdf}0``````{{{b{Jd}}{b{hBh}}}Bj}{cc{}}0``{{{b{A`}}{b{Ih}}IlIj}{{Jh{Ij}}}}{{{b{A`}}{b{Ih}}IlIjc}{{Jh{Ij}}}{{Jl{Jj}}}}{{}Bd}0{{{b{If}}}{{b{Ih}}}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}321540{ce{}{}}0{{{b{{Jb{}{{J`{c}}}}}}}{{Cf{{b{Hf}}}}}Gh}````````````{{{b{If}}{b{A`}}Ij{Ch{Jd{b{{Cl{Ij}}}}}}{b{{Cl{{Ch{JnJd{b{{Cl{Ij}}}}}}}}}}Il}{{Bb{InB`}}}}{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0`````````{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}077{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{K`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}00{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kd}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kf}}}{{Jh{f}}}}002000{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kh}}}{{Jh{f}}}}011113{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kj}}}{{Jh{f}}}}44{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kl}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kn}}}{{Jh{f}}}}446{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{L`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lb}}}{{Jh{f}}}}88{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ld}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lf}}}{{Jh{f}}}}:{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lh}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ll}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ln}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{M`}}}{{Jh{Ij}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mb}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Md}}}{{Jh{f}}}}0{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mf}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}00{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mh}}}{{Jh{f}}}}1111111111{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}Ij{b{Gf}}{b{Gf}}Bd}{{Jh{Ij}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ml}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mn}}}{{Jh{f}}}}55{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{N`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nb}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nd}}}{{Jh{f}}}}8{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nf}}}{{Jh{f}}}}99{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nh}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kf}}}{{Jh{f}}}}0={{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Al}}{b{Kb}}}{{Jh{f}}}}==0{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nl}}}{{Jh{f}}}}3{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kb}}}{{Jh{f}}}}04{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kf}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nn}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{O`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ob}}}{{Jh{f}}}}1{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Od}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{Of}}}}}{{Jh{f}}}}7737{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Oj}}}{{Jh{f}}}}4{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ol}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{On}}}}}{{Jh{f}}}}::6:266{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{A@b}}}}}{{Jh{f}}}}<<8<488{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@d}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{A@f}}}}}{{Jh{f}}}}>>:>6::{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@h}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{A@j}}}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kb}}}{{Jh{f}}}}0=09==={{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@l}}}{{Jh{f}}}}>{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lb}}}{{Jh{f}}}}??0??????????????????0???{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@n}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}0{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Gf}}{b{{Cl{Ij}}}}}{{Jh{Ij}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AA`}}}{{Jh{f}}}}2{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{AAb}}}}}{{Jh{f}}}}333333{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Oj}}}{{Jh{f}}}}44{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAd}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{AAf}}}}}{{Jh{f}}}}::6:{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Oj}}}{{Jh{f}}}}777{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAh}}}{{Jh{f}}}}8888{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{AAl}}}}}{{Jh{f}}}}>>:>3:::{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAn}}}{{Jh{f}}}};{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AB`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{ABb}}}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kb}}}{{Jh{f}}}}0>07>>>{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{ABd}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{ABf}}}}}{{Jh{f}}}}22{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}3:00000``{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}`{{}Al}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}`{{{b{Al}}{b{hBh}}}Bj}{cc{}}`{{{b{Al}}}{{Cf{{b{c}}}}}ABh}{{{b{hAl}}}{{Cf{{b{hc}}}}}ABh}{{{b{hAl}}e}{{b{hc}}}ABh{{ABl{}{{ABj{c}}}}}}{{}Bd}{{{b{hAl}}c}{{Cf{{b{hc}}}}}ABh}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{}Al}``{{{b{hAl}}}{{Cf{c}}}ABh}```{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6```{{{b{c}}d}f{}}0{{{b{hABn}}AC`}f}3322{{{b{AC`}}}AC`}{{{b{ABn}}}ABn}{{{b{c}}{b{he}}}f{}{}}0{{}ABn}{Bd{{b{c}}}{}}0{Bd{{b{hc}}}{}}0{Bdf}0{{{b{AC`}}{b{AC`}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{{{b{AC`}}{b{hBh}}}Bj}{{{b{ABn}}{b{hBh}}}Bj}{cc{}}0{{{b{ABn}}{b{AC`}}}Bf}{{{b{AC`}}{b{hc}}}fBn}{{}Bd}0{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}501234{ce{}{}}0{{{b{ABn}}{b{Ih}}Il{b{Al}}{b{AC`}}}f}{{{b{c}}}e{}{}}0{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}066```10{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}Il}{{Jh{f}}}}{{{b{ACb}}{b{Ih}}Il}{{Jh{f}}}}{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}{b{Fb}}Il}{{Jh{f}}}}{{}ACb}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}IjBdIl}{{Jh{f}}}}{{{b{ACb}}{b{hBh}}}Bj}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}IjIl}{{Jh{f}}}}000000{{{b{ACb}}{b{ACd}}}f}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`10{{}ACf}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{cc{}}{{{b{ACf}}{b{Gf}}}{{Cf{{b{{C`{Gf}}}}}}}}{{}Bd}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{{b{hACf}}{b{Gf}}{Cf{{b{{Cl{Gf}}}}}}}f}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5```````{{{b{c}}d}f{}}00`22221111{{{b{Id}}}Id}{{{b{ACh}}}ACh}{{{b{ACj}}}ACj}{{{b{c}}{b{he}}}f{}{}}00{{{b{ACh}}{b{ACh}}}n}{{{b{c}}{b{e}}}n{}{}}{{}Id}{{}ACj}{Bd{{b{c}}}{}}000{Bd{{b{hc}}}{}}000{Bdf}000{{{b{Id}}{b{Id}}}Bf}{{{b{ACh}}{b{ACh}}}Bf}{{{b{Fj}}{b{Fj}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}00000000000000{{{b{Id}}{b{hBh}}}Bj}{{{b{ACh}}{b{hBh}}}Bj}{{{b{ACj}}{b{hBh}}}Bj}{{{b{Fj}}{b{hBh}}}Bj}0{cc{}}00{AClFj}1{ACnFj}``{{{b{Id}}AD`}{{Cf{Hl}}}}{{{b{Id}}AD`ADb}{{Cf{Hl}}}}{{{b{Id}}{b{Hf}}{Cf{Hl}}}{{Bb{HlFj}}}}{{{b{ACh}}{b{hc}}}fBn}{{}Bd}000{{{b{Id}}{b{Hf}}}{{Cf{Hl}}}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}041253215034043521{ce{}{}}000``{{{b{Ad}}{Cf{ACj}}}{{Bb{IdFj}}}}{{{b{ACh}}{b{ACh}}}{{Cf{n}}}}{{{b{Fj}}}{{Cf{{b{Gh}}}}}}{{{b{c}}}e{}{}}00{{{b{c}}}Db{}}{{{b{c}}}Dd{}}{c{{Bb{e}}}{}{}}0000000{{{b{c}}}Df{}}000{{{b{c}}}{{b{e}}}{}{}}000{{{b{hc}}}{{b{he}}}{}{}}000::::``10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{{ADd{c}}}}{b{hBh}}}BjE`}{cc{}}{{}Bd}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{ADf{{ADd{c}}}{}}{{{b{{ADd{c}}}}}{{b{ADf}}}{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{ADh}}{b{hBh}}}Bj}{{{b{A`}}IjIl}In}{cc{}}{{}Bd}>?{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{A`}}{b{Ab}}}ADh}{{{b{A`}}IjIjIl}In}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`10{{}ADj}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{{{b{hADj}}{b{A`}}{b{Ab}}Ij{b{Ih}}Il}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}Il}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIl}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIjIl}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIjIjIl}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}IjIj{b{Ih}}Il}{{Jh{ADl}}}}{Bdf}{{{b{ADj}}{b{hBh}}}Bj}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIjIjIl}{{Jh{Ij}}}}??>=?>=={c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IlIjIjIj}{{Jh{ADl}}}}6``21{{}ADn}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{cc{}}{{}Bd}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}>{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{{b{hADn}}Gf{AE`{c}}c}f{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5{{{b{ADn}}{b{Gf}}}{{Cf{{Eh{AEb}}}}}}`21{{{b{AEd}}}Ij}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{AEd}}{b{hBh}}}Bj}{cc{}}{{}Bd}>{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{Ij{b{Ih}}}AEd}{{{b{AEd}}}AEf}{{{b{AEd}}}{{Cf{AEf}}}}{{{b{hAEd}}{b{Ih}}}f}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}8`10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{En}}{b{hBh}}}Bj}{cc{}}{{{b{En}}}{{Cf{{b{c}}}}}ABh}{{}Bd}{{{b{hEn}}c}{{Cf{{b{hc}}}}}ABh}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{En}}}{{b{Al}}}}{{{b{En}}}{{b{Ab}}}}{{Ab{Aj{AfAh}}Al}En}{{{b{En}}}{{b{{Aj{AfAh}}}}}}{{{b{hEn}}}{{Cf{c}}}ABh}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}9`````````````````{{{b{c}}d}f{}}000000000```````222222222222111111111111{{{b{h{AEj{AEh}}}}{b{AEh}}{b{{AEj{AEh}}}}}f}{{{b{hHn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}{{{b{hAEn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}`````{{{b{hHn}}Hj{b{{Cl{Hj}}}}}{{C`{Hj}}}}{{{b{AEh}}}AEh}{{{b{AF`}}}AF`}{{{b{AFb}}}AFb}{{{b{AFd}}}AFd}{{{b{AFf}}}AFf}{{{b{AFh}}}AFh}{{{b{AFj}}}AFj}{{{b{AFl}}}AFl}{{{b{AFn}}}AFn}{{{b{AG`}}}AG`}{{{b{c}}{b{he}}}f{}{}}000000000{{{b{AF`}}{b{AF`}}}n}{{{b{AFb}}{b{AFb}}}n}{{{b{AFd}}{b{AFd}}}n}{{{b{AFf}}{b{AFf}}}n}{{{b{AFh}}{b{AFh}}}n}{{{b{AFj}}{b{AFj}}}n}{{{b{AFl}}{b{AFl}}}n}{{{b{c}}{b{e}}}n{}{}}000000``{{}AF`}{{{b{hHn}}HjHj{b{{Cl{Hj}}}}Bf{b{hHl}}}{{AEl{{Ch{Hj{C`{Hj}}}}}}}}{{{b{hAEn}}HjHj{b{{Cl{Hj}}}}Bf{b{hHl}}}{{AEl{{Ch{Hj{C`{Hj}}}}}}}}{Bd{{b{c}}}{}}00000000000{Bd{{b{hc}}}{}}00000000000{c{{Bb{AF`}}}H`}{c{{Bb{AFb}}}H`}{c{{Bb{AFd}}}H`}{c{{Bb{AFf}}}H`}{c{{Bb{AFh}}}H`}{c{{Bb{AFj}}}H`}{c{{Bb{AFl}}}H`}{Bdf}00000000000{{{b{hHn}}{b{{Cl{Hj}}}}{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}{b{{Cl{Hj}}}}{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}``{{{b{AF`}}{b{AF`}}}Bf}{{{b{AFb}}{b{AFb}}}Bf}{{{b{AFd}}{b{AFd}}}Bf}{{{b{AFf}}{b{AFf}}}Bf}{{{b{AFh}}{b{AFh}}}Bf}{{{b{AFj}}{b{AFj}}}Bf}{{{b{AFl}}{b{AFl}}}Bf}{{{b{AFn}}{b{AFn}}}Bf}{{{b{AG`}}{b{AG`}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}00000000000000000000000000000000000000000000`{{{b{{AEj{c}}}}{b{hBh}}}BjE`}{{{b{AEh}}{b{hBh}}}Bj}{{{b{AF`}}{b{hBh}}}Bj}{{{b{AFb}}{b{hBh}}}Bj}{{{b{AFd}}{b{hBh}}}Bj}{{{b{AFf}}{b{hBh}}}Bj}{{{b{AFh}}{b{hBh}}}Bj}{{{b{AFj}}{b{hBh}}}Bj}{{{b{AFl}}{b{hBh}}}Bj}{{{b{AFn}}{b{hBh}}}Bj}{{{b{AG`}}{b{hBh}}}Bj}{cc{}}00000000000{{{b{hHn}}AGb{b{hHl}}}{{AEl{Hj}}}}{{{b{hAEn}}AGb{b{hHl}}}{{AEl{Hj}}}}{{{b{hHn}}{b{hHl}}}{{AEl{AFb}}}}{{{b{hAEn}}{b{hHl}}}{{AEl{AFb}}}}{{{b{hHn}}{b{hHl}}}{{AEl{AFd}}}}{{{b{hAEn}}{b{hHl}}}{{AEl{AFd}}}}{{{b{AF`}}{b{hc}}}fBn}{{{b{AFb}}{b{hc}}}fBn}{{{b{AFd}}{b{hc}}}fBn}{{{b{AFf}}{b{hc}}}fBn}{{{b{AFh}}{b{hc}}}fBn}{{{b{AFj}}{b{hc}}}fBn}{{{b{AFl}}{b{hc}}}fBn}{{{b{AFn}}{b{hc}}}fBn}{{{b{AG`}}{b{hc}}}fBn}`{{}Bd}00000000000{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}241035210345301425103524215430501423352410021345530142352410532401{ce{}{}}00000000000{{{b{hHn}}{b{{Cl{AGb}}}}{b{hHl}}}{{AEl{AF`}}}}{{{b{hAEn}}{b{{Cl{AGb}}}}{b{hHl}}}{{AEl{AF`}}}}{{{b{hHn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}{{{b{hAEn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}````````{{{b{AF`}}{b{AF`}}}{{Cf{n}}}}{{{b{AFb}}{b{AFb}}}{{Cf{n}}}}{{{b{AFd}}{b{AFd}}}{{Cf{n}}}}{{{b{AFf}}{b{AFf}}}{{Cf{n}}}}{{{b{AFh}}{b{AFh}}}{{Cf{n}}}}{{{b{AFj}}{b{AFj}}}{{Cf{n}}}}{{{b{AFl}}{b{AFl}}}{{Cf{n}}}}``{{{b{hHn}}Hj{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}Hj{b{hHl}}}{{AEl{f}}}}``{{{b{hHn}}AFnAFn{b{hHl}}}{{AEl{AFn}}}}{{{b{hAEn}}AFnAFn{b{hHl}}}{{AEl{AFn}}}}{{{b{hHn}}AF`Bf{b{hHl}}}{{AEl{{Cf{AFn}}}}}}{{{b{hAEn}}AF`Bf{b{hHl}}}{{AEl{{Cf{AFn}}}}}}{{{b{hHn}}AFn{b{hHl}}}{{AEl{{Ch{AF`AF`}}}}}}{{{b{hAEn}}AFn{b{hHl}}}{{AEl{{Ch{AF`AF`}}}}}}{{{b{hHn}}AFnAF`{b{hHl}}}{{AEl{AFn}}}}{{{b{hAEn}}AFnAF`{b{hHl}}}{{AEl{AFn}}}}{{{b{hHn}}AF`AF`{b{hHl}}}{{AEl{{Cf{AFn}}}}}}{{{b{hAEn}}AF`AF`{b{hHl}}}{{AEl{{Cf{AFn}}}}}}{{{b{hHn}}AG`AG`{b{hHl}}}{{AEl{AG`}}}}{{{b{hAEn}}AG`AG`{b{hHl}}}{{AEl{AG`}}}}{{{b{hHn}}AF`Bf{b{hHl}}}{{AEl{{Cf{AG`}}}}}}{{{b{hAEn}}AF`Bf{b{hHl}}}{{AEl{{Cf{AG`}}}}}}{{{b{hHn}}AG`{b{hHl}}}{{AEl{{Ch{AF`AF`}}}}}}{{{b{hAEn}}AG`{b{hHl}}}{{AEl{{Ch{AF`AF`}}}}}}{{{b{hHn}}AG`AF`{b{hHl}}}{{AEl{AG`}}}}{{{b{hAEn}}AG`AF`{b{hHl}}}{{AEl{AG`}}}}{{{b{hHn}}AF`AF`{b{hHl}}}{{AEl{{Cf{AG`}}}}}}{{{b{hAEn}}AF`AF`{b{hHl}}}{{AEl{{Cf{AG`}}}}}}{{{b{hHn}}Hj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}Hj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}`{{{b{AF`}}c}BbHb}{{{b{AFb}}c}BbHb}{{{b{AFd}}c}BbHb}{{{b{AFf}}c}BbHb}{{{b{AFh}}c}BbHb}{{{b{AFj}}c}BbHb}{{{b{AFl}}c}BbHb}{{{b{hHn}}{b{{Jf{AGd}}}}{b{{Jf{AGd}}}}{b{hHl}}}{{AEl{{Jf{AGd}}}}}}{{{b{hAEn}}{b{{Jf{AGd}}}}{b{{Jf{AGd}}}}{b{hHl}}}{{AEl{{Jf{AGd}}}}}}```{{{b{hHn}}AGdHj{b{hHl}}}{{AEl{Hj}}}}{{{b{hAEn}}AGdHj{b{hHl}}}{{AEl{Hj}}}}{{{b{hHn}}AGdHjHj{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}AGdHjHj{b{hHl}}}{{AEl{f}}}}`{{{b{c}}}e{}{}}000000000``{c{{Bb{e}}}{}{}}00000000000000000000000``{{{b{c}}}Df{}}00000000000`{{{b{c}}}{{b{e}}}{}{}}00000000000{{{b{hc}}}{{b{he}}}{}{}}00000000000``{ce{}{}}00000000000```````{{{b{c}}d}f{}}00333222{{{b{h{b{hAGf}}}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}{{{b{h{b{hAGf}}}}Hj{b{{Cl{Hj}}}}}{{C`{Hj}}}}{{{b{AGf}}}AGf}{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{c}}{b{he}}}f{}{}}00`{{}AGf}{{}AGj}{{{b{h{b{hAGf}}}}HjHj{b{{Cl{Hj}}}}Bf{b{hHl}}}{{AEl{{Ch{Hj{C`{Hj}}}}}}}}{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{Bdf}00{{{b{h{b{hAGf}}}}{b{{Cl{Hj}}}}{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}```{{{b{AGf}}{b{hBh}}}Bj}{{{b{AGh}}{b{hBh}}}Bj}{{{b{AGj}}{b{hBh}}}Bj}{cc{}}00{{{b{h{b{hAGf}}}}AGb{b{hHl}}}{{AEl{Hj}}}}{{{b{h{b{hAGf}}}}{b{hHl}}}{{AEl{AFb}}}}{{{b{h{b{hAGf}}}}{b{hHl}}}{{AEl{AFd}}}}{{}Bd}00{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}405312301254{ce{}{}}00{{{b{h{b{hAGf}}}}{b{{Cl{AGb}}}}{b{hHl}}}{{AEl{AF`}}}}``{{{b{h{b{hAGf}}}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}`{{{b{h{b{hAGf}}}}Hj{b{hHl}}}{{AEl{f}}}}{{{b{h{b{hAGf}}}}AFnAFn{b{hHl}}}{{AEl{AFn}}}}{{{b{h{b{hAGf}}}}AF`Bf{b{hHl}}}{{AEl{{Cf{AFn}}}}}}{{{b{h{b{hAGf}}}}AFn{b{hHl}}}{{AEl{{Ch{AF`AF`}}}}}}{{{b{h{b{hAGf}}}}AFnAF`{b{hHl}}}{{AEl{AFn}}}}{{{b{h{b{hAGf}}}}AF`AF`{b{hHl}}}{{AEl{{Cf{AFn}}}}}}{{{b{h{b{hAGf}}}}AG`AG`{b{hHl}}}{{AEl{AG`}}}}{{{b{h{b{hAGf}}}}AF`Bf{b{hHl}}}{{AEl{{Cf{AG`}}}}}}{{{b{h{b{hAGf}}}}AG`{b{hHl}}}{{AEl{{Ch{AF`AF`}}}}}}{{{b{h{b{hAGf}}}}AG`AF`{b{hHl}}}{{AEl{AG`}}}}{{{b{h{b{hAGf}}}}AF`AF`{b{hHl}}}{{AEl{{Cf{AG`}}}}}}{{{b{h{b{hAGf}}}}Hj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}{{{b{h{b{hAGf}}}}{b{{Jf{AGd}}}}{b{{Jf{AGd}}}}{b{hHl}}}{{AEl{{Jf{AGd}}}}}}`{{{b{h{b{hAGf}}}}AGdHj{b{hHl}}}{{AEl{Hj}}}}{{{b{h{b{hAGf}}}}AGdHjHj{b{hHl}}}{{AEl{f}}}}{{{b{c}}}e{}{}}00{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00{ce{}{}}00```{{{b{c}}d}f{}}`{{{b{{AGl{c}}}}}{{b{c}}}{}}`43``{{{b{{AGn{}{{J`{c}}}}}}{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{Gf}}}{{Bb{AH`c}}}Gh}{{{b{{AGn{}{{J`{c}}}}}}{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Gf}}}{{Bb{Ijc}}}Gh}{{{b{{AGn{}{{J`{c}}}}}}{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Gf}}}{{Bb{fc}}}Gh}```{{{b{{AGl{c}}}}}{{AGl{c}}}AHb}{{{b{c}}{b{he}}}f{}{}}`5{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}````{{{b{{AGl{c}}}}{b{{AGl{c}}}}}BfDj}{{{b{c}}{b{e}}}Bf{}{}}0000```{{{b{{AGn{}{{J`{c}}}}}}}{{Cf{{b{{Cl{Gf}}}}}}}Gh}{{{b{{AGl{c}}}}{b{hBh}}}BjE`}{cc{}}`{{{b{{AGl{c}}}}{b{he}}}fDnBn}{{}Bd}{{{b{{AGn{}{{J`{c}}}}}}{b{{Aj{AfAh}}}}}{{Cf{AHd}}}Gh}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{{b{{AGn{}{{J`{c}}}}}}{b{{Aj{AfAh}}}}}BfGh}{{{b{{AGn{}{{J`{c}}}}}}}BfGh}1111{{{b{{AGn{}{{J`{c}}}}}}{b{{Aj{AfAh}}}}}{{Bb{AHfc}}}Gh}{{{b{Gf}}{b{c}}}{{AGl{c}}}{}}``````{{{b{{AGl{c}}}}}{{b{Gf}}}{}}````{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}```````{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}{{{b{{AGn{}{{J`{c}}}}}}}{{Cf{{b{{Cl{Gf}}}}}}}Gh};{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHh}}}{{Jh{AH`}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHj}}}{{Jh{AH`}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHl}}}{{Jh{AH`}}}}21{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{AHj}}}{{Jh{AH`}}}}`{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHn}}}{{Jh{AH`}}}}333{{{b{AHn}}}Bf}0{{{b{{Aj{AfAh}}}}{b{AHn}}}{{Jh{AHf}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AI`}}}{{Jh{AH`}}}}666`{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIb}}}{{Jh{AH`}}}}{{{b{{Aj{AfAh}}}}{b{{Cl{Gf}}}}}{{Jh{{Ch{AHfAHf{C`{AHf}}}}}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{{Cl{Gf}}}}}{{Jh{{Ch{AHfAId{C`{AId}}}}}}}}``==<<9{Bd{{b{c}}}{}}{{{b{AIf}}}{{b{ADf}}}}{{{b{AIh}}}{{b{Jj}}}}2{Bd{{b{hc}}}{}}0{Bdf}0{cc{}}0{{}Bd}0{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}540123{ce{}{}}0{{{b{hAl}}}{{b{h{ADd{Hj}}}}}}{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}055{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHh}}}{{Jh{AH`}}}}0{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHj}}}{{Jh{AH`}}}}11000011{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIj}}}{{Jh{AH`}}}}11{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIl}}}{{Jh{AH`}}}}2222{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIn}}}{{Jh{AH`}}}}3333334````{{{b{c}}d}f{}}76{{{b{AJ`}}{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{Gf}}}{{Bb{AH`B`}}}}{{{b{AJ`}}{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{Gf}}}{{Bb{{Ch{AH`AHf}}B`}}}}{{{b{Cn}}}{{Eh{Ad}}}}{{{b{Fl}}}Fl}{{{b{c}}{b{he}}}f{}{}}{{{b{Ab}}{b{Al}}l}ACd}{c{{`{E`}}}{{AEb{{b{hBh}}}{{ABj{Bj}}}}}}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{Fl}}{b{Fl}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{c{{Jf{AGd}}}{{Jl{Jj}}}}{{{b{Fb}}}{{Jf{AGd}}}}0{{{b{Ad}}{b{Fb}}}{{Cf{{b{{AJb{AD`}}}}}}}}{{{b{Ad}}Bd}{{Cf{{b{{AJb{AD`}}}}}}}}{{{b{Ad}}{b{Fb}}}{{b{Hf}}}}{{{b{Fl}}{b{hBh}}}Bj}0{cc{}}{{{b{Hf}}}{{AJd{Fb}}}}{AGdAHf}{{}Bd}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{AHf}}Bd}{{Bb{{Ch{AHfBd}}Fl}}}}{{AGdAGd}AGd}{{BdBd}Bd}{{{b{AJf}}}AGd}{{{b{AHf}}Bd}Bd}{{{b{ACd}}}f}{{{b{A`}}{b{hAb}}}{{Bb{fGd}}}}{{{b{c}}}e{}{}}{{{b{c}}}Db{}}{{{b{c}}}Dd{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}>:```````````````````````{{{b{c}}d}f{}}21{{{b{I`}}}I`}{{{b{c}}{b{he}}}f{}{}}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{c{{Bb{I`}}}H`}{Bdf}{{{b{I`}}{b{I`}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{{{b{Fb}}}I`}{{{b{I`}}{b{hBh}}}Bj}{{{b{{Cl{c}}}}}I`{{Jl{I`}}AHb}}{AJhI`}{JnI`}{cc{}}{AJjI`}{AJlI`}{BlI`}{AGbI`}{AJnI`}{HjI`}{AGdI`}{{{C`{c}}}I`{{Jl{I`}}}}{HlI`}{AK`I`}{{{Jf{c}}}I`{{Jl{I`}}}}{{}Bd}{{{b{hc}}{b{h{Ch{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{{b{I`}}c}BbHb}{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`````````````","D":"DCh","p":[[1,"reference"],[5,"Private",2278],[1,"unit"],[0,"mut"],[5,"LLVMCompileError",0,2279],[6,"OptLevel",0,2279],[6,"Ordering",2280],[5,"Context",2281],[5,"Module",2282],[5,"Program",2283],[6,"CoreType",2284],[6,"CoreLibfunc",2284],[5,"ProgramRegistry",2285],[5,"MetadataStorage",866],[5,"Attribute",2286],[6,"Error",204],[6,"Result",2287],[1,"usize"],[1,"bool"],[5,"Formatter",2288],[8,"Result",2288],[1,"u8"],[10,"Hasher",2289],[5,"Vec",2290],[6,"RewriteResult",2291],[5,"VecDeque",2292],[6,"Option",2293],[1,"tuple"],[5,"Box",2294],[1,"slice"],[5,"Path",2295],[5,"Error",2296],[5,"SmolStr",2297],[5,"String",2298],[5,"TypeId",2299],[6,"ProgramCache",89],[10,"PartialEq",2280],[10,"Eq",2280],[10,"Hash",2289],[10,"Debug",2288],[5,"JitProgramCache",144],[5,"AotProgramCache",119],[5,"AotNativeExecutor",444,2300],[5,"Arc",2301],[5,"NativeContext",170],[5,"JitNativeExecutor",444,2302],[5,"NativeModule",1313],[6,"CoreConcreteLibfunc",2284],[1,"str"],[6,"SierraAssertError",204],[6,"CompilerError",204],[5,"TryFromIntError",2303],[6,"GasMetadataError",1029],[5,"LayoutError",2135],[6,"ProgramRegistryError",2285],[6,"EditStateError",2304],[5,"LayoutError",2305],[6,"Error",2306],[5,"ConcreteTypeId",2307],[10,"Error",2308],[5,"BuiltinStats",318],[5,"ExecutionResult",318],[5,"ContractExecutionResult",318],[10,"Deserializer",2309],[10,"Serializer",2310],[6,"NativeExecutor",444],[5,"FunctionId",2307],[6,"c_void",2311],[5,"Felt",2312],[1,"u128"],[10,"StarknetSyscallHandler",1342],[6,"JitValue",2194],[5,"Library",2313],[5,"GasMetadata",1029],[5,"LibfuncHelper",534],[5,"Block",2314],[5,"Value",2315],[5,"Location",2316],[5,"Operation",2317],[17,"Error"],[10,"LibfuncBuilder",534],[6,"BranchTarget",534],[1,"array"],[8,"Result",204],[5,"BigInt",2318],[10,"Into",2319],[1,"i64"],[6,"ApTrackingConcreteLibfunc",2320],[5,"SignatureOnlyConcreteLibfunc",2321],[6,"ArrayConcreteLibfunc",2322],[5,"SignatureAndTypeConcreteLibfunc",2321],[5,"ConcreteMultiPopLibfunc",2322],[6,"BoolConcreteLibfunc",2323],[6,"BoundedIntConcreteLibfunc",2324],[6,"BoxConcreteLibfunc",2325],[6,"Bytes31ConcreteLibfunc",2326],[5,"SignatureAndConstConcreteLibfunc",2327],[6,"CastConcreteLibfunc",2328],[5,"DowncastConcreteLibfunc",2328],[6,"CircuitConcreteLibfunc",2329],[6,"ConstConcreteLibfunc",2330],[5,"ConstAsBoxConcreteLibfunc",2330],[5,"ConstAsImmediateConcreteLibfunc",2330],[5,"ConstConcreteType",2330],[6,"CouponConcreteLibfunc",2331],[5,"SignatureAndFunctionConcreteLibfunc",2332],[6,"DebugConcreteLibfunc",2333],[6,"EcConcreteLibfunc",2334],[6,"EnumConcreteLibfunc",2335],[5,"EnumFromBoundedIntConcreteLibfunc",2335],[5,"EnumInitConcreteLibfunc",2335],[6,"Felt252Concrete",2336],[6,"Felt252BinaryOperationConcrete",2336],[5,"Felt252ConstConcreteLibfunc",2336],[6,"Felt252DictConcreteLibfunc",2337],[6,"Felt252DictEntryConcreteLibfunc",2337],[6,"GasConcreteLibfunc",2338],[6,"MemConcreteLibfunc",2339],[6,"NullableConcreteLibfunc",2340],[6,"PedersenConcreteLibfunc",2341],[6,"PoseidonConcreteLibfunc",2342],[6,"Sint128Concrete",2343],[5,"Sint128Traits",2343],[5,"IntConstConcreteLibfunc",2344],[5,"IntOperationConcreteLibfunc",2344],[8,"Sint16Concrete",2345],[5,"Sint16Traits",2345],[8,"Sint32Concrete",2345],[5,"Sint32Traits",2345],[8,"Sint64Concrete",2345],[5,"Sint64Traits",2345],[8,"Sint8Concrete",2345],[5,"Sint8Traits",2345],[6,"StarkNetConcreteLibfunc",2346],[6,"StructConcreteLibfunc",2347],[6,"Uint128Concrete",2348],[5,"Uint128Traits",2348],[8,"Uint16Concrete",2349],[5,"Uint16Traits",2349],[6,"Uint256Concrete",2350],[8,"Uint32Concrete",2349],[5,"Uint32Traits",2349],[6,"Uint512Concrete",2351],[8,"Uint64Concrete",2349],[5,"Uint64Traits",2349],[8,"Uint8Concrete",2349],[5,"Uint8Traits",2349],[10,"Any",2299],[17,"Output"],[10,"FnOnce",2352],[5,"AutoBreakpoint",904],[6,"BreakpointEvent",904],[5,"DebugUtils",970],[5,"ExecutionEngine",2353],[5,"EnumSnapshotVariantsMeta",1005],[5,"GasCost",1029],[5,"MetadataComputationConfig",1029],[6,"CostError",2354],[6,"ApChangeError",2355],[5,"StatementIdx",2283],[6,"CostTokenType",2338],[5,"PrimeModuloMeta",1173],[5,"BigUint",2356],[5,"ReallocBindingsMeta",1197],[5,"RuntimeBindingsMeta",1222],[5,"OperationRef",2317],[5,"SnapshotClonesMeta",1261],[8,"CloneFn",1261],[10,"Fn",2352],[5,"TailRecursionMeta",1286],[5,"BlockRef",2314],[5,"Felt252Abi",1342],[5,"ArrayAbi",1342],[8,"SyscallResult",1342],[5,"DummySyscallHandler",1342],[5,"U256",1342],[5,"ExecutionInfo",1342],[5,"ExecutionInfoV2",1342],[5,"TxV2Info",1342],[5,"ResourceBounds",1342],[5,"BlockInfo",1342],[5,"TxInfo",1342],[5,"Secp256k1Point",1342],[5,"Secp256r1Point",1342],[1,"u64"],[1,"u32"],[5,"StubSyscallHandler",1843],[5,"StubEvent",1843],[5,"ContractLogs",1843],[5,"WithSelf",1955],[10,"TypeBuilder",1955],[5,"Type",2357],[10,"Clone",2358],[5,"Range",2359],[5,"Layout",2305],[5,"InfoAndTypeConcreteType",2360],[5,"InfoOnlyConcreteType",2360],[5,"BoundedIntConcreteType",2324],[6,"CircuitTypeConcrete",2329],[5,"CouponConcreteType",2331],[5,"EnumConcreteType",2335],[8,"TypeLayout",2058],[5,"PRIME",2062],[5,"HALF_PRIME",2062],[6,"StarkNetTypeConcrete",2346],[6,"Secp256PointTypeConcrete",2361],[5,"StructConcreteType",2347],[10,"ProgramRegistryExt",2135],[5,"GenFunction",2283],[6,"Cow",2362],[10,"RangeExt",2135],[1,"i128"],[1,"i32"],[1,"i16"],[1,"u16"],[1,"i8"],[15,"BoundedIntOutOfRange",315],[15,"Range",317],[15,"EnumInit",968],[15,"NotEnoughGas",1172],[15,"Struct",2265],[15,"Enum",2265],[15,"Felt252Dict",2265],[15,"BoundedInt",2265],[15,"Secp256K1Point",2265],[15,"Secp256R1Point",2265]],"r":[[2,2279],[5,2279],[19,2363],[65,2279],[66,2279],[90,119],[92,144],[445,2300],[447,2302]],"b":[[38,"impl-Display-for-LLVMCompileError"],[39,"impl-Debug-for-LLVMCompileError"],[42,"impl-From%3Cusize%3E-for-OptLevel"],[44,"impl-From%3Cu8%3E-for-OptLevel"],[102,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[103,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[247,"impl-Debug-for-Error"],[248,"impl-Display-for-Error"],[249,"impl-Display-for-SierraAssertError"],[250,"impl-Debug-for-SierraAssertError"],[251,"impl-Display-for-CompilerError"],[252,"impl-Debug-for-CompilerError"],[253,"impl-From%3CCompilerError%3E-for-Error"],[254,"impl-From%3CTryFromIntError%3E-for-Error"],[255,"impl-From%3CGasMetadataError%3E-for-Error"],[256,"impl-From%3CLayoutError%3E-for-Error"],[257,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[258,"impl-From%3CEditStateError%3E-for-Error"],[259,"impl-From%3CLayoutError%3E-for-Error"],[260,"impl-From%3CError%3E-for-Error"],[262,"impl-From%3CSierraAssertError%3E-for-Error"],[475,"impl-From%3CAotNativeExecutor%3E-for-NativeExecutor%3C\'m%3E"],[476,"impl-From%3CJitNativeExecutor%3C\'m%3E%3E-for-NativeExecutor%3C\'m%3E"],[1091,"impl-Display-for-GasMetadataError"],[1092,"impl-Debug-for-GasMetadataError"],[1096,"impl-From%3CCostError%3E-for-GasMetadataError"],[1098,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[2164,"impl-Display-for-LayoutError"],[2165,"impl-Debug-for-LayoutError"],[2234,"impl-From%3C%26%5BT%5D%3E-for-JitValue"],[2235,"impl-From%3Ci128%3E-for-JitValue"],[2236,"impl-From%3Ci64%3E-for-JitValue"],[2238,"impl-From%3Ci32%3E-for-JitValue"],[2239,"impl-From%3Ci16%3E-for-JitValue"],[2240,"impl-From%3Cu8%3E-for-JitValue"],[2241,"impl-From%3Cu64%3E-for-JitValue"],[2242,"impl-From%3Cu16%3E-for-JitValue"],[2243,"impl-From%3CFelt%3E-for-JitValue"],[2244,"impl-From%3Cu32%3E-for-JitValue"],[2245,"impl-From%3CVec%3CT%3E%3E-for-JitValue"],[2246,"impl-From%3Cu128%3E-for-JitValue"],[2247,"impl-From%3Ci8%3E-for-JitValue"],[2248,"impl-From%3C%5BT;+N%5D%3E-for-JitValue"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMoGlAABAAEABAABAAcADAAVAA4AJQAAACcAAgArAAAALQAPAEEAAABEAAAARwAJAFIAAwBYAA0AZwAIAHEADgCBAAcAigAGAJIABwCbAAcApAAGAKwAAQCvAAsAvAAAAL4ABQDFAA8A1gAJAOEAJAAHAQAACgEUACIBHQBCAToAgQEWAJsBJADCARYA3AECAOABFAD4AQEA/AEAAP8BAAABAhUAHQIAACMCAwAvAgEANQIEADsCAQBDAgAASAIDAE0CCwBpAgYAeQIFAIsCAQCQAgAApQIAAKkCAQC5AgAAwwIBAMYCAQDWAgAA2AIAAAcDEAAaAwcAZAMCAGgDBQBvAwAAcgMBAHUDBQCBAwAAgwMiAKgDDwC6AxUA0QMDANYDAADYAwYA4AMUAPYDBwD/AwkADAQ5AEkEAABLBAQAUQQdAHMEIgCXBAUAngQGAKgEBQCvBAUAtwQGAMEEBQDIBAQA0wQBANYEBgDkBAAA5wQEAO0ECAD3BAYA/wQHAAgFAQALBQMAEAUGABwFBQAjBQUAKwUAAC0FBQA0BQMAOQUIAEMFAQBHBQcAUAUoAHoFnwAmBmMAlgaeADcHJABfBxcAegcpAKYHAQCpBwAAqwcBALAHAQC1BwEAuAcDAMAHBQDJBwEAzQcBANAHBQDeBwAA5QcAAOoHAwD1BwEA+AcAAP8HAAABCAUADwgAABEIAwAWCAcAIAgNADAIDABJCAYAWAgIAGIIAQBmCAgAdQgBAHoIBgCDCAEAhwgKAJQIBgCdCBsAuggDAL8IEQDSCBQA"}],\ -["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOOOONNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","command","command_for_update","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","main","opt_level","output_library","output_mlir","path","replace_ids","single_file","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","vzip"],"q":[[0,"cairo_native_compile"],[69,"dyn_clone::sealed"],[70,"clap_builder::builder::command"],[71,"core::fmt"],[72,"clap_builder::parser::matches::arg_matches"],[73,"clap_builder"],[74,"core::result"],[75,"clap_builder::util::id"],[76,"core::option"],[77,"alloc::vec"],[78,"cairo_lang_semantic::substitution"],[79,"alloc::boxed"],[80,"alloc::collections::vec_deque"],[81,"anyhow"],[82,"clap_builder::builder::possible_value"],[83,"core::any"]],"i":[6,0,6,0,6,10,10,10,6,10,6,10,6,6,10,10,6,10,6,10,6,10,6,10,6,10,10,10,10,6,10,6,6,6,6,6,6,10,10,10,10,10,10,6,10,0,10,10,10,10,10,10,6,6,6,10,6,10,6,10,6,10,6,10,10,10,6,6,10],"f":"````{{{b{c}}d}f{}}`{hh}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{l}}}l}{{{b{c}}{b{je}}}f{}{}}{{}h}0{n{{b{c}}}{}}0{n{{b{jc}}}{}}0{nf}0{{{b{l}}{b{jA`}}}Ab}{{{b{Ad}}{b{jA`}}}Ab}{cc{}}0{{{b{Af}}}{{Aj{AdAh}}}}{{{b{jAf}}}{{Aj{AdAh}}}}{{}{{An{Al}}}}{{}n}0{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bd{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bf{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}250431{ce{}{}}0{{}{{Bj{f}}}}``````{{{b{c}}}e{}{}}{{{b{l}}}{{An{Bl}}}}{c{{Aj{e}}}{}{}}000{{{b{c}}}Bn{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{jAd}}{b{Af}}}{{Aj{fAh}}}}{{{b{jAd}}{b{jAf}}}{{Aj{fAh}}}}{{}{{b{{C`{l}}}}}}::","D":"Ah","p":[[1,"reference"],[5,"Private",69],[1,"unit"],[5,"Command",70],[0,"mut"],[6,"RunMode",0],[1,"usize"],[5,"Formatter",71],[8,"Result",71],[5,"Args",0],[5,"ArgMatches",72],[8,"Error",73],[6,"Result",74],[5,"Id",75],[6,"Option",76],[5,"Vec",77],[6,"RewriteResult",78],[5,"Box",79],[1,"tuple"],[5,"VecDeque",80],[8,"Result",81],[5,"PossibleValue",82],[5,"TypeId",83],[1,"slice"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADkABgAAAAEAAwACAAcAEQAbABAALgAAADUAEAA="}],\ -["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNHHOHHONNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","__clone_box","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","command","command_for_update","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","init","init","input","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","load_program","main","output","parse_input","parse_output","starknet","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip"],"q":[[0,"cairo_native_dump"],[70,"dyn_clone::sealed"],[71,"clap_builder::builder::command"],[72,"core::fmt"],[73,"clap_builder::parser::matches::arg_matches"],[74,"clap_builder"],[75,"core::result"],[76,"clap_builder::util::id"],[77,"core::option"],[78,"alloc::vec"],[79,"cairo_lang_semantic::substitution"],[80,"alloc::collections::vec_deque"],[81,"alloc::boxed"],[82,"std::path"],[83,"cairo_lang_sierra::program"],[84,"core::error"],[85,"alloc::string"],[86,"core::any"]],"i":[0,0,7,7,6,7,6,6,6,7,6,7,6,7,6,7,6,6,6,7,6,7,6,7,6,7,6,7,6,6,6,6,7,6,6,6,6,6,6,6,7,7,7,7,7,7,6,7,0,0,6,0,0,6,6,7,6,7,6,7,6,7,6,7,6,7,6,6,6,7],"f":"````{{{b{c}}d}f{}}0{hh}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{l}}}l}{{{b{n}}}n}{{{b{c}}{b{je}}}f{}{}}0{{}h}0{A`{{b{c}}}{}}0{A`{{b{jc}}}{}}0{A`f}0{{{b{l}}{b{jAb}}}Ad}{{{b{n}}{b{jAb}}}Ad}{cc{}}0{{{b{Af}}}{{Aj{lAh}}}}{{{b{jAf}}}{{Aj{lAh}}}}{{}{{An{Al}}}}{{}A`}0`{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bd{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bf{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bh{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}140325{ce{}{}}0{{{b{Bj}}Bl}{{Aj{Bn{Bf{C`}}}}}}{{}{{Aj{f{Bf{C`}}}}}}`{{{b{Cb}}}{{Aj{CdCf}}}}{{{b{Cb}}}{{Aj{nCf}}}}`{{{b{c}}}e{}{}}0{c{{Aj{e}}}{}{}}000{{{b{c}}}Ch{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{jl}}{b{Af}}}{{Aj{fAh}}}}{{{b{jl}}{b{jAf}}}{{Aj{fAh}}}};;","D":"j","p":[[1,"reference"],[5,"Private",70],[1,"unit"],[5,"Command",71],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[5,"Formatter",72],[8,"Result",72],[5,"ArgMatches",73],[8,"Error",74],[6,"Result",75],[5,"Id",76],[6,"Option",77],[5,"Vec",78],[6,"RewriteResult",79],[5,"VecDeque",80],[5,"Box",81],[1,"tuple"],[5,"Path",82],[1,"bool"],[5,"Program",83],[10,"Error",84],[1,"str"],[5,"PathBuf",82],[5,"String",85],[5,"TypeId",86]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEEABAAAABoAHQARADEABAA3AA8A"}],\ -["cairo_native_run",{"t":"PFPGNONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNCNNNPPFGNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNHOHOCNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNHNNNOOHHNNNOONNNNNNNNNNNNNNNNNNNNNNNNOHONNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","augment_args","augment_args_for_update","available_gas","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","command","command_for_update","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","main","opt_level","path","run_mode","single_file","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","find_function","fmt","format_for_panic","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","jitvalue_to_felt","opt_level","result_to_runresult","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","display_tests_summary","drop","drop","drop","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","passed","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"cairo_native_run"],[69,"cairo_native_run::utils"],[127,"cairo_native_run::utils::test"],[202,"dyn_clone::sealed"],[203,"clap_builder::builder::command"],[204,"core::fmt"],[205,"clap_builder::parser::matches::arg_matches"],[206,"clap_builder"],[207,"core::result"],[208,"clap_builder::util::id"],[209,"core::option"],[210,"alloc::vec"],[211,"cairo_lang_semantic::substitution"],[212,"alloc::boxed"],[213,"alloc::collections::vec_deque"],[214,"anyhow"],[215,"clap_builder::builder::possible_value"],[216,"core::any"],[217,"cairo_lang_sierra::program"],[218,"starknet_types_core::felt"],[219,"alloc::vec::into_iter"],[220,"alloc::string"],[221,"cairo_native::values"],[222,"cairo_native::execution_result"],[223,"cairo_lang_runner"],[224,"cairo_lang_test_plugin"],[225,"scarb_metadata"],[226,"cairo_lang_test_plugin::test_config"],[227,"cairo_lang_sierra::ids"],[228,"cairo_lang_sierra::extensions::modules::gas"],[229,"cairo_lang_utils::ordered_hash_map"]],"i":[6,0,6,0,6,10,10,10,10,6,10,6,10,6,6,10,10,6,10,6,10,6,10,6,10,6,10,10,10,10,6,10,6,6,6,6,6,6,10,10,10,10,10,10,6,10,0,10,10,10,10,6,6,6,10,6,10,6,10,6,10,6,10,10,10,0,6,6,10,25,25,0,0,25,45,25,45,25,25,25,45,25,45,25,45,25,0,25,0,45,25,45,25,45,45,45,45,45,45,25,25,25,25,25,25,45,25,0,45,0,45,0,25,25,45,25,45,25,45,25,45,25,45,25,25,45,25,46,46,0,0,0,35,47,46,35,47,46,35,47,46,35,47,46,0,35,47,46,35,35,0,0,35,47,46,47,35,35,47,46,35,35,35,35,35,35,47,47,47,47,47,47,46,46,46,46,46,46,35,47,46,35,0,47,35,47,46,35,47,46,35,47,46,35,47,46,35,47,46,35,47,46],"f":"````{{{b{c}}d}f{}}`{hh}0`{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{l}}}l}{{{b{c}}{b{je}}}f{}{}}{{}h}0{n{{b{c}}}{}}0{n{{b{jc}}}{}}0{nf}0{{{b{l}}{b{jA`}}}Ab}{{{b{Ad}}{b{jA`}}}Ab}{cc{}}0{{{b{Af}}}{{Aj{AdAh}}}}{{{b{jAf}}}{{Aj{AdAh}}}}{{}{{An{Al}}}}{{}n}0{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bf{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}432105{ce{}{}}0{{}{{Bj{f}}}}````{{{b{c}}}e{}{}}{{{b{l}}}{{An{Bl}}}}{c{{Aj{e}}}{}{}}000{{{b{c}}}Bn{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{jAd}}{b{Af}}}{{Aj{fAh}}}}{{{b{jAd}}{b{jAf}}}{{Aj{fAh}}}}`{{}{{b{{C`{l}}}}}}::````{{{b{c}}d}f{}}5544{{{b{Cb}}}Cb}{{{b{c}}{b{je}}}f{}{}}{n{{b{c}}}{}}0{n{{b{jc}}}{}}0{nf}0{{{b{Cd}}{b{Cf}}}{{Bj{{b{Ch}}}}}}{{{b{Cb}}{b{jA`}}}Ab}{{{Cl{Cj}}}Cn}{cc{}}0{{}n}0{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bf{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}543210{ce{}{}}0{{{b{D`}}}{{B`{Cj}}}}`{{{b{Db}}}{{Bj{Dd}}}}``{{{b{c}}}e{}{}}{{{b{Cb}}}{{An{Bl}}}}{c{{Aj{e}}}{}{}}000{{{b{c}}}Bn{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{}{{b{{C`{Cb}}}}}}99`````222111{n{{b{c}}}{}}00{n{{b{jc}}}{}}00{{{b{Df}}n}f}{nf}00``{{DhDjDjCn}{{Bd{Dhn}}}}{{{b{Dl}}}{{B`{{b{Dn}}}}}}{cc{}}00``{{}n}00{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bf{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}054321452301{ce{}{}}00`{{{B`{{Bd{CnE`}}}}Cd{Eh{Eb{Eh{EdEf}}}}Ej}{{Bj{Df}}}}`{c{{Aj{e}}}{}{}}00000{{{b{c}}}Bn{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00555","D":"Dd","p":[[1,"reference"],[5,"Private",202],[1,"unit"],[5,"Command",203],[0,"mut"],[6,"RunMode",0],[1,"usize"],[5,"Formatter",204],[8,"Result",204],[5,"Args",0],[5,"ArgMatches",205],[8,"Error",206],[6,"Result",207],[5,"Id",208],[6,"Option",209],[5,"Vec",210],[6,"RewriteResult",211],[1,"tuple"],[5,"Box",212],[5,"VecDeque",213],[8,"Result",214],[5,"PossibleValue",215],[5,"TypeId",216],[1,"slice"],[6,"RunMode",69],[5,"Program",217],[1,"str"],[8,"Function",217],[5,"Felt",218],[5,"IntoIter",219],[5,"String",220],[6,"JitValue",221],[5,"ExecutionResult",222],[6,"RunResultValue",223],[5,"TestsSummary",127],[5,"TestCompilation",224],[1,"bool"],[5,"PackageMetadata",225],[5,"TargetMetadata",225],[5,"TestConfig",226],[5,"FunctionId",227],[6,"CostTokenType",228],[1,"i32"],[5,"OrderedHashMap",229],[5,"RunArgs",69],[6,"TestStatus",127],[5,"TestResult",127]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKgAEAAAAAEAAwACAAcAAQAKAA8AHAAQAC8AAAA0ACIAWAAAAFwADQBtAAAAbwASAIUACwCSAAQAnQAVALYAAAC5ABEA"}],\ +["cairo_native",{"t":"PPFPPGNNNNNNCNNNNNNHCCNNNNNCNNNNNNNNCCCNNNNNNNNNNNNNNNNNNNNNNNNCCCHHNCCNNNNNNNNNNCNNNNCCNNPEPEGCNNNNNNNNNNNNNNNNNCNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNHCCCCCCCCPPPPPGPPPGPPPPPPPPPPPPPIPGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOFFFNNNONNNNNNONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNPFPFGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGRPKFPNCNCCCNNNNCCNCMCCCNNNCCCNNNNNCNNCCCCCCNNNCCHHNNNNNNNNNNNNNNNNNMCCCCCCCCCCCCNNNNNNNNCCCCCCCCCNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHFCNNCNNNNCNNCNNNNNNNNNNNNNCCNCCCNNNNNNFGPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNPPFFGFPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNIFNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFPFFFPFSFFKIFFFNNNNNNNNNNOOOOOOONNNNNNNNNNNNNNNNNNNNNNNNHMNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNMNMNMNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNOOOOOOOONNNNNNNOOMNOOMNMNMNMNMNMNMNMNMNMNMNONNNNNNNMNOOOMNMNONNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNOOOOFFFNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNRKFNCNCNNCCMMMCCCNNCNNNNCCCCNNNNNNCCCMNNCNNMNNNNNNNMMMMMMMNCCCCCCNCCCCNNNNCCCCCCCNNMNHHHHHHSHHHHHHHHHHHIHHHFFNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNHHHHHHHHHHHHHHHHHHHHHHHHHHHFKKSNNNMMHNNHHNNNNNNNNNHHHHHHNNNHHNNNNNNNNHHHMHHHNNNNNNNNNMPPPPPPPPGPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOO","n":["Aggressive","Default","LLVMCompileError","Less","None","OptLevel","__clone_box","__clone_box","borrow","borrow","borrow_mut","borrow_mut","cache","clone","clone","clone_into","clone_into","cmp","compare","compile","context","debug","default","deref","deref","deref_mut","deref_mut","docs","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","error","execution_result","executor","fmt","fmt","fmt","from","from","from","from","hash","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","libfuncs","metadata","module","module_to_object","object_to_shared_lib","partial_cmp","starknet","starknet_stub","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_into","try_into","type_id","type_id","types","upcast","upcast","upcast_mut","upcast_mut","utils","values","vzip","vzip","Aot","AotProgramCache","Jit","JitProgramCache","ProgramCache","aot","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","from","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","jit","try_from","try_into","type_id","upcast","upcast_mut","vzip","AotProgramCache","borrow","borrow_mut","compile_and_insert","deref","deref_mut","drop","fmt","from","get","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","try_from","try_into","type_id","upcast","upcast_mut","vzip","JitProgramCache","borrow","borrow_mut","compile_and_insert","context","deref","deref_mut","drop","fmt","from","get","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeContext","borrow","borrow_mut","compile","context","default","deref","deref_mut","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","from","init","initialize_mlir","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","try_from","try_into","type_id","upcast","upcast_mut","vzip","libfunc_to_name","section01","section02","section03","section04","section05","section06","section07","section08","BadTypeInfo","BadTypeInit","BoundedIntOutOfRange","Cast","Compiler","CompilerError","ConstDataMismatch","EditStateError","Err","Error","GasMetadataError","ImpossibleCircuit","LLVMCompileError","LayoutError","LayoutErrorPolyfill","MissingMetadata","MissingParameter","MissingSyscallHandler","MlirError","Ok","ParseAttributeError","ProgramRegistryErrorBoxed","Range","Result","SierraAssert","SierraAssertError","TryFromIntError","UnexpectedValue","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","make_missing_parameter","source","to_smolstr","to_smolstr","to_smolstr","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","range","value","ranges","BuiltinStats","ContractExecutionResult","ExecutionResult","__clone_box","__clone_box","__clone_box","bitwise","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","builtin_stats","clone","clone","clone","clone_into","clone_into","clone_into","cmp","cmp","compare","compare","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","drop","drop","drop","ec_op","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","error_msg","failure_flag","fmt","fmt","fmt","from","from","from","from_execution_result","hash","hash","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","partial_cmp","partial_cmp","pedersen","poseidon","range_check","remaining_gas","remaining_gas","return_value","return_values","segment_arena","serialize","serialize","serialize","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","Aot","AotNativeExecutor","Jit","JitNativeExecutor","NativeExecutor","__clone_box","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","find_function_ptr","find_function_ptr","fmt","fmt","fmt","from","from","from","from","from","from_native_module","from_native_module","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","invoke_contract_dynamic","invoke_contract_dynamic","invoke_contract_dynamic","invoke_dynamic","invoke_dynamic","invoke_dynamic","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","invoke_dynamic_with_syscall_handler","module","new","program_registry","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","BranchTarget","Error","Jump","LibfuncBuilder","LibfuncHelper","Return","__clone_box","ap_tracking","append_block","array","bitwise","bool","borrow","borrow","borrow_mut","borrow_mut","bounded_int","box","br","branch_align","build","bytes31","cast","circuit","clone","clone_into","cond_br","const","coupon","debug","deref","deref","deref","deref_mut","deref_mut","drop","drop","drop","dup","ec","enum","felt252","felt252_dict","felt252_dict_entry","fmt","from","from","function_call","gas","increment_builtin_counter","increment_builtin_counter_by","init","init","init_block","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","is_function_call","mem","nullable","pedersen","poseidon","sint128","sint16","sint32","sint64","sint8","snapshot_take","starknet","struct","switch","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","uint128","uint16","uint256","uint32","uint512","uint64","uint8","unconditional_jump","unwrap_non_zero","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build_disable","build_enable","build_revoke","build","build_append","build_get","build_len","build_new","build_pop_front","build_pop_front_consume","build_slice","build_snapshot_multi_pop_back","build_snapshot_multi_pop_front","build_snapshot_pop_back","build_snapshot_pop_front","build_span_from_tuple","build_tuple_from_span","build","build","build_bool_not","build_bool_to_felt252","build","build","build_into_box","build_unbox","build","build","build_const","build_from_felt252","build_to_felt252","build","build_downcast","build_upcast","build","build","build_const_as_box","build_const_as_immediate","build_const_type_value","build","build_buy","build_refund","build","build_print","build","build","build","build_is_zero","build_neg","build_point_from_x","build_state_add","build_state_add_mul","build_state_finalize","build_state_init","build_try_new","build_unwrap_point","build_zero","build","build_enum_value","build_from_bounded_int","build_init","build_match","build_snapshot_match","build","build_binary_operation","build_const","build_is_zero","build","build_new","build_squash","build","build_finalize","build_get","build","build","build_builtin_withdraw_gas","build_get_available_gas","build_get_builtin_costs","build_withdraw_gas","build","build_alloc_local","build_finalize_locals","build_rename","build_store_local","build_store_temp","build","build","build_pedersen","build","build_hades_permutation","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build_const","build_diff","build_equal","build_from_felt252","build_is_zero","build_operation","build_to_felt252","build_widemul","build","build","build_call_contract","build_class_hash_const","build_class_hash_to_felt252","build_class_hash_try_from_felt252","build_contract_address_const","build_contract_address_to_felt252","build_contract_address_try_from_felt252","build_deploy","build_emit_event","build_get_block_hash","build_get_execution_info","build_get_execution_info_v2","build_keccak","build_library_call","build_replace_class","build_send_message_to_l1","build_sha256_process_block_syscall","build_sha256_state_handle_digest","build_sha256_state_handle_init","build_storage_address_from_base","build_storage_address_from_base_and_offset","build_storage_address_to_felt252","build_storage_address_try_from_felt252","build_storage_base_address_const","build_storage_base_address_from_felt252","build_storage_read","build_storage_write","build","build_construct","build_deconstruct","build_struct_value","build","build_byte_reverse","build_const","build_divmod","build_equal","build_from_felt252","build_guarantee_mul","build_guarantee_verify","build_is_zero","build_operation","build_square_root","build_to_felt252","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod","build_is_zero","build_square_root","build_u256_guarantee_inv_mod_n","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_divmod_u256","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build_const","build_divmod","build_equal","build_from_felt252","build_is_zero","build_operation","build_square_root","build_to_felt252","build_widemul","build","build","MetadataStorage","auto_breakpoint","borrow","borrow_mut","debug_utils","default","deref","deref_mut","drop","enum_snapshot_variants","fmt","from","gas","get","get_mut","get_or_insert_with","init","insert","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","prime_modulo","realloc_bindings","remove","runtime_bindings","snapshot_clones","tail_recursion","try_from","try_into","type_id","upcast","upcast_mut","vzip","AutoBreakpoint","BreakpointEvent","EnumInit","__clone_box","__clone_box","add_event","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","default","deref","deref","deref_mut","deref_mut","drop","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","has_event","hash","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","maybe_breakpoint","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","type_id","variant_idx","DebugUtils","borrow","borrow_mut","breakpoint_marker","debug_breakpoint_trap","debug_print","default","deref","deref_mut","drop","dump_mem","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","print_felt252","print_i1","print_i128","print_i32","print_i64","print_i8","print_pointer","register_impls","try_from","try_into","type_id","upcast","upcast_mut","vzip","EnumSnapshotVariantsMeta","borrow","borrow_mut","default","deref","deref_mut","drop","from","get_variants","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","set_mapping","try_from","try_into","type_id","upcast","upcast_mut","vzip","ApChangeError","CostError","GasCost","GasMetadata","GasMetadataError","MetadataComputationConfig","NotEnoughGas","__clone_box","__clone_box","__clone_box","ap_change_info","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","cmp","compare","default","default","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","function_set_costs","gas_info","get_gas_cost_for_statement","get_gas_cost_for_statement_and_cost_token_type","get_initial_available_gas","hash","init","init","init","init","initial_required_gas","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","into","linear_ap_change_solver","linear_gas_solver","new","partial_cmp","source","to_owned","to_owned","to_owned","to_smolstr","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","vzip","gas","PrimeModuloMeta","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","prime","try_from","try_into","type_id","upcast","upcast_mut","vzip","ReallocBindingsMeta","borrow","borrow_mut","deref","deref_mut","drop","fmt","free","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","realloc","try_from","try_into","type_id","upcast","upcast_mut","vzip","RuntimeBindingsMeta","borrow","borrow_mut","default","deref","deref_mut","dict_alloc_free","dict_alloc_new","dict_gas_refund","dict_get","dict_insert","dict_values","drop","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","libfunc_debug_print","libfunc_ec_point_from_x_nz","libfunc_ec_point_try_new_nz","libfunc_ec_state_add","libfunc_ec_state_add_mul","libfunc_ec_state_init","libfunc_ec_state_try_finalize_nz","libfunc_hades_permutation","libfunc_pedersen","try_from","try_into","type_id","upcast","upcast_mut","vtable_cheatcode","vzip","CloneFn","SnapshotClonesMeta","borrow","borrow_mut","default","deref","deref_mut","drop","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","register","try_from","try_into","type_id","upcast","upcast_mut","vzip","wrap_invoke","TailRecursionMeta","borrow","borrow_mut","depth_counter","deref","deref_mut","drop","fmt","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","new","recursion_target","return_target","set_return_target","try_from","try_into","type_id","upcast","upcast_mut","vzip","NativeModule","borrow","borrow_mut","deref","deref_mut","drop","fmt","from","get_metadata","init","insert_metadata","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","metadata","module","new","program_registry","remove_metadata","try_from","try_into","type_id","upcast","upcast_mut","vzip","ArrayAbi","BlockInfo","DummySyscallHandler","Err","ExecutionInfo","ExecutionInfoV2","Felt252Abi","Ok","ResourceBounds","SYSCALL_HANDLER_VTABLE","Secp256k1Point","Secp256r1Point","StarknetSyscallHandler","SyscallResult","TxInfo","TxV2Info","U256","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","__clone_box","account_contract_address","account_contract_address","account_deployment_data","block_info","block_info","block_number","block_timestamp","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cairo_native__vtable_cheatcode","call_contract","call_contract","caller_address","caller_address","capacity","chain_id","chain_id","cheatcode","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","cmp","cmp","cmp","compare","compare","compare","compare","compare","compare","compare","contract_address","contract_address","default","deploy","deploy","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","deserialize","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","drop","emit_event","emit_event","entry_point_selector","entry_point_selector","eq","eq","eq","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fee_data_availability_mode","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","get_block_hash","get_block_hash","get_execution_info","get_execution_info","get_execution_info_v2","get_execution_info_v2","hash","hash","hash","hash","hash","hash","hash","hash","hash","hi","init","init","init","init","init","init","init","init","init","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","into","into","into","into","into","into","into","into","into","keccak","keccak","library_call","library_call","lo","max_amount","max_fee","max_fee","max_price_per_unit","nonce","nonce","nonce_data_availability_mode","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","paymaster_data","ptr","replace_class","replace_class","resource","resource_bounds","secp256k1_add","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_get_xy","secp256k1_mul","secp256k1_mul","secp256k1_new","secp256k1_new","secp256r1_add","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_get_xy","secp256r1_mul","secp256r1_mul","secp256r1_new","secp256r1_new","send_message_to_l1","send_message_to_l1","sequencer_address","serialize","serialize","serialize","serialize","serialize","serialize","serialize","sha256_process_block","sha256_process_block","signature","signature","since","storage_read","storage_read","storage_write","storage_write","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","transaction_hash","transaction_hash","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_info","tx_info","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","until","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","upcast_mut","version","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","x","x","y","y","ContractLogs","StubEvent","StubSyscallHandler","__clone_box","__clone_box","__clone_box","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","call_contract","cheatcode","clone","clone","clone","clone_into","clone_into","clone_into","data","default","default","deploy","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","emit_event","events","events","execution_info","fmt","fmt","fmt","from","from","from","get_block_hash","get_execution_info","get_execution_info_v2","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","keccak","keys","l2_to_l1_messages","library_call","logs","replace_class","secp256k1_add","secp256k1_get_point_from_x","secp256k1_get_xy","secp256k1_mul","secp256k1_new","secp256r1_add","secp256r1_get_point_from_x","secp256r1_get_xy","secp256r1_mul","secp256r1_new","send_message_to_l1","sha256_process_block","storage","storage_read","storage_write","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip","Error","TypeBuilder","WithSelf","__clone_box","array","as_ref","bitwise","borrow","borrow_mut","bounded_int","box","build","build_default","build_drop","builtin_costs","bytes31","circuit","clone","clone_into","coupon","deref","deref","deref_mut","drop","ec_op","ec_point","ec_state","enum","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252","felt252_dict","felt252_dict_entry","fields","fmt","from","gas_builtin","hash","init","integer_range","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","is_bounded_int","is_builtin","is_complex","is_felt252","is_memory_allocated","is_zst","layout","new","non_zero","nullable","pedersen","poseidon","range_check","segment_arena","self_ty","snapshot","squashed_felt252_dict","starknet","struct","to_owned","try_from","try_into","type_id","uint128","uint128_mul_guarantee","uint16","uint32","uint64","uint8","uninitialized","upcast","upcast_mut","variants","vzip","build","build","build","build","build","build","CIRCUIT_INPUT_SIZE","build","build_circuit_accumulator","build_circuit_data","build_circuit_outputs","is_complex","is_zst","layout","build","build","build","build","TypeLayout","build","get_layout_for_variants","get_type_for_variants","HALF_PRIME","PRIME","borrow","borrow","borrow_mut","borrow_mut","build","deref","deref","deref","deref","deref_mut","deref_mut","drop","drop","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","register_prime_modulo_meta","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","vzip","vzip","build","build","build","build","build","build","build","build","build","build","build","build","build_class_hash","build_contract_address","build_secp256_point","build_sha256_state_handle","build_storage_address","build_storage_base_address","build_system","build","build","build","build","build","build","build","build","LayoutError","ProgramRegistryExt","RangeExt","SHARED_LIBRARY_EXT","__clone_box","borrow","borrow_mut","build_type","build_type_with_layout","cairo_to_sierra","clone","clone_into","create_engine","debug_with","deref","deref_mut","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt252_bigint","felt252_short_str","felt252_str","find_entry_point","find_entry_point_by_idx","find_function_id","fmt","fmt","from","generate_function_name","get_integer_layout","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","layout_repeat","next_multiple_of_u32","next_multiple_of_usize","offset_bit_width","padding_needed_for","register_runtime_symbols","run_pass_manager","to_owned","to_smolstr","to_string","try_from","try_into","type_id","upcast","upcast_mut","vzip","zero_based_bit_width","Array","BoundedInt","Bytes31","EcPoint","EcState","Enum","Felt252","Felt252Dict","JitValue","Null","Secp256K1Point","Secp256R1Point","Sint128","Sint16","Sint32","Sint64","Sint8","Struct","Uint128","Uint16","Uint32","Uint64","Uint8","__clone_box","borrow","borrow_mut","clone","clone_into","deref","deref_mut","deserialize","drop","eq","equivalent","equivalent","equivalent","equivalent","equivalent","felt_str","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","serialize","to_owned","try_from","try_into","type_id","upcast","upcast_mut","vzip","debug_name","debug_name","debug_name","fields","range","tag","value","value","value","x","x","y","y"],"q":[[0,"cairo_native"],[90,"cairo_native::cache"],[120,"cairo_native::cache::aot"],[145,"cairo_native::cache::jit"],[171,"cairo_native::context"],[204,"cairo_native::debug"],[205,"cairo_native::docs"],[213,"cairo_native::error"],[324,"cairo_native::error::CompilerError"],[326,"cairo_native::error::SierraAssertError"],[327,"cairo_native::execution_result"],[453,"cairo_native::executor"],[543,"cairo_native::libfuncs"],[647,"cairo_native::libfuncs::ap_tracking"],[651,"cairo_native::libfuncs::array"],[665,"cairo_native::libfuncs::bitwise"],[666,"cairo_native::libfuncs::bool"],[669,"cairo_native::libfuncs::bounded_int"],[670,"cairo_native::libfuncs::box"],[673,"cairo_native::libfuncs::branch_align"],[674,"cairo_native::libfuncs::bytes31"],[678,"cairo_native::libfuncs::cast"],[681,"cairo_native::libfuncs::circuit"],[682,"cairo_native::libfuncs::const"],[686,"cairo_native::libfuncs::coupon"],[689,"cairo_native::libfuncs::debug"],[691,"cairo_native::libfuncs::drop"],[692,"cairo_native::libfuncs::dup"],[693,"cairo_native::libfuncs::ec"],[704,"cairo_native::libfuncs::enum"],[710,"cairo_native::libfuncs::felt252"],[714,"cairo_native::libfuncs::felt252_dict"],[717,"cairo_native::libfuncs::felt252_dict_entry"],[720,"cairo_native::libfuncs::function_call"],[721,"cairo_native::libfuncs::gas"],[726,"cairo_native::libfuncs::mem"],[732,"cairo_native::libfuncs::nullable"],[733,"cairo_native::libfuncs::pedersen"],[735,"cairo_native::libfuncs::poseidon"],[737,"cairo_native::libfuncs::sint128"],[745,"cairo_native::libfuncs::sint16"],[754,"cairo_native::libfuncs::sint32"],[763,"cairo_native::libfuncs::sint64"],[772,"cairo_native::libfuncs::sint8"],[781,"cairo_native::libfuncs::snapshot_take"],[782,"cairo_native::libfuncs::starknet"],[810,"cairo_native::libfuncs::struct"],[814,"cairo_native::libfuncs::uint128"],[826,"cairo_native::libfuncs::uint16"],[836,"cairo_native::libfuncs::uint256"],[841,"cairo_native::libfuncs::uint32"],[851,"cairo_native::libfuncs::uint512"],[853,"cairo_native::libfuncs::uint64"],[863,"cairo_native::libfuncs::uint8"],[873,"cairo_native::libfuncs::unconditional_jump"],[874,"cairo_native::libfuncs::unwrap_non_zero"],[875,"cairo_native::metadata"],[913,"cairo_native::metadata::auto_breakpoint"],[977,"cairo_native::metadata::auto_breakpoint::BreakpointEvent"],[979,"cairo_native::metadata::debug_utils"],[1014,"cairo_native::metadata::enum_snapshot_variants"],[1038,"cairo_native::metadata::gas"],[1181,"cairo_native::metadata::gas::GasMetadataError"],[1182,"cairo_native::metadata::prime_modulo"],[1206,"cairo_native::metadata::realloc_bindings"],[1231,"cairo_native::metadata::runtime_bindings"],[1270,"cairo_native::metadata::snapshot_clones"],[1295,"cairo_native::metadata::tail_recursion"],[1322,"cairo_native::module"],[1351,"cairo_native::starknet"],[1852,"cairo_native::starknet_stub"],[1964,"cairo_native::types"],[2049,"cairo_native::types::array"],[2050,"cairo_native::types::bitwise"],[2051,"cairo_native::types::bounded_int"],[2052,"cairo_native::types::box"],[2053,"cairo_native::types::builtin_costs"],[2054,"cairo_native::types::bytes31"],[2055,"cairo_native::types::circuit"],[2063,"cairo_native::types::coupon"],[2064,"cairo_native::types::ec_op"],[2065,"cairo_native::types::ec_point"],[2066,"cairo_native::types::ec_state"],[2067,"cairo_native::types::enum"],[2071,"cairo_native::types::felt252"],[2117,"cairo_native::types::felt252_dict"],[2118,"cairo_native::types::felt252_dict_entry"],[2119,"cairo_native::types::gas_builtin"],[2120,"cairo_native::types::non_zero"],[2121,"cairo_native::types::nullable"],[2122,"cairo_native::types::pedersen"],[2123,"cairo_native::types::poseidon"],[2124,"cairo_native::types::range_check"],[2125,"cairo_native::types::segment_arena"],[2126,"cairo_native::types::snapshot"],[2127,"cairo_native::types::squashed_felt252_dict"],[2128,"cairo_native::types::starknet"],[2136,"cairo_native::types::struct"],[2137,"cairo_native::types::uint128"],[2138,"cairo_native::types::uint128_mul_guarantee"],[2139,"cairo_native::types::uint16"],[2140,"cairo_native::types::uint32"],[2141,"cairo_native::types::uint64"],[2142,"cairo_native::types::uint8"],[2143,"cairo_native::types::uninitialized"],[2144,"cairo_native::utils"],[2203,"cairo_native::values"],[2274,"cairo_native::values::JitValue"],[2287,"dyn_clone::sealed"],[2288,"cairo_native::ffi"],[2289,"core::cmp"],[2290,"melior::context"],[2291,"melior::ir::module"],[2292,"cairo_lang_sierra::program"],[2293,"cairo_lang_sierra::extensions::core"],[2294,"cairo_lang_sierra::program_registry"],[2295,"melior::ir::attribute"],[2296,"core::result"],[2297,"core::fmt"],[2298,"core::hash"],[2299,"alloc::vec"],[2300,"cairo_lang_semantic::substitution"],[2301,"alloc::boxed"],[2302,"core::option"],[2303,"alloc::collections::vec_deque"],[2304,"std::path"],[2305,"std::io::error"],[2306,"smol_str"],[2307,"alloc::string"],[2308,"core::any"],[2309,"cairo_native::executor::aot"],[2310,"alloc::sync"],[2311,"cairo_native::executor::jit"],[2312,"core::num::error"],[2313,"cairo_lang_sierra::edit_state"],[2314,"melior::error"],[2315,"core::alloc::layout"],[2316,"cairo_lang_sierra::ids"],[2317,"core::error"],[2318,"serde::de"],[2319,"serde::ser"],[2320,"core::ffi"],[2321,"starknet_types_core::felt"],[2322,"libloading::safe"],[2323,"melior::ir::block"],[2324,"melior::ir::value"],[2325,"melior::ir::location"],[2326,"melior::ir::operation"],[2327,"num_bigint::bigint"],[2328,"core::convert"],[2329,"cairo_lang_sierra::extensions::modules::ap_tracking"],[2330,"cairo_lang_sierra::extensions::lib_func"],[2331,"cairo_lang_sierra::extensions::modules::array"],[2332,"cairo_lang_sierra::extensions::modules::boolean"],[2333,"cairo_lang_sierra::extensions::modules::bounded_int"],[2334,"cairo_lang_sierra::extensions::modules::boxing"],[2335,"cairo_lang_sierra::extensions::modules::bytes31"],[2336,"cairo_lang_sierra::extensions::modules::consts"],[2337,"cairo_lang_sierra::extensions::modules::casts"],[2338,"cairo_lang_sierra::extensions::modules::circuit"],[2339,"cairo_lang_sierra::extensions::modules::const_type"],[2340,"cairo_lang_sierra::extensions::modules::coupon"],[2341,"cairo_lang_sierra::extensions::modules::function_call"],[2342,"cairo_lang_sierra::extensions::modules::debug"],[2343,"cairo_lang_sierra::extensions::modules::ec"],[2344,"cairo_lang_sierra::extensions::modules::enm"],[2345,"cairo_lang_sierra::extensions::modules::felt252"],[2346,"cairo_lang_sierra::extensions::modules::felt252_dict"],[2347,"cairo_lang_sierra::extensions::modules::gas"],[2348,"cairo_lang_sierra::extensions::modules::mem"],[2349,"cairo_lang_sierra::extensions::modules::nullable"],[2350,"cairo_lang_sierra::extensions::modules::pedersen"],[2351,"cairo_lang_sierra::extensions::modules::poseidon"],[2352,"cairo_lang_sierra::extensions::modules::int::signed128"],[2353,"cairo_lang_sierra::extensions::modules::int"],[2354,"cairo_lang_sierra::extensions::modules::int::signed"],[2355,"cairo_lang_sierra::extensions::modules::starknet"],[2356,"cairo_lang_sierra::extensions::modules::structure"],[2357,"cairo_lang_sierra::extensions::modules::int::unsigned128"],[2358,"cairo_lang_sierra::extensions::modules::int::unsigned"],[2359,"cairo_lang_sierra::extensions::modules::int::unsigned256"],[2360,"cairo_lang_sierra::extensions::modules::int::unsigned512"],[2361,"core::ops::function"],[2362,"melior::execution_engine"],[2363,"cairo_lang_sierra_ap_change"],[2364,"cairo_lang_sierra_gas"],[2365,"num_bigint::biguint"],[2366,"melior::ir::type"],[2367,"core::clone"],[2368,"cairo_lang_sierra::extensions::modules::utils"],[2369,"cairo_lang_sierra::extensions::types"],[2370,"cairo_lang_sierra::extensions::modules::starknet::secp256"],[2371,"alloc::borrow"],[2372,"cairo_native::compiler"]],"i":[6,6,0,6,6,0,5,6,5,6,5,6,0,5,6,5,6,6,6,0,0,0,6,5,6,5,6,0,5,6,6,6,6,6,6,6,0,0,0,5,5,6,5,6,6,6,6,5,6,5,5,5,5,5,5,6,6,6,6,6,6,5,6,0,0,0,0,0,6,0,0,5,6,5,5,5,6,5,6,5,6,0,5,6,5,6,0,0,5,6,36,0,36,0,0,0,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,0,36,36,36,36,36,36,0,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,45,45,45,45,45,45,45,45,45,45,45,45,45,45,0,0,0,0,0,0,0,0,0,50,50,51,50,16,0,16,16,84,0,16,50,16,16,16,16,16,16,16,84,16,16,50,0,16,0,16,16,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,16,50,50,51,51,16,16,16,16,16,16,16,16,16,16,50,51,16,50,51,16,16,16,16,16,16,50,50,50,50,50,50,51,51,51,51,51,51,16,50,51,16,16,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,16,50,51,217,217,218,0,0,0,61,62,63,61,61,62,63,61,62,63,62,61,62,63,61,62,63,61,63,61,63,61,63,61,62,63,61,62,63,61,62,63,61,62,63,61,61,62,63,61,61,61,61,61,62,62,62,62,62,63,63,63,63,63,63,63,61,62,63,61,62,63,63,61,63,61,62,63,61,61,61,61,61,61,62,62,62,62,62,62,63,63,63,63,63,63,61,62,63,61,63,61,61,61,62,63,62,63,61,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,61,62,63,66,0,66,0,0,66,46,43,66,46,43,66,66,66,46,43,66,46,43,66,46,43,66,46,43,46,43,66,46,43,66,66,66,46,43,46,43,66,46,46,46,46,46,46,43,43,43,43,43,43,66,66,66,66,66,66,46,43,66,46,43,66,46,43,66,46,43,66,46,43,46,66,46,43,66,46,43,66,46,43,66,46,43,66,46,43,66,46,43,66,0,81,82,0,0,82,82,0,75,0,0,0,75,82,75,82,0,0,75,0,81,0,0,0,82,82,75,0,0,0,75,75,82,75,82,0,75,82,0,0,0,0,0,0,82,75,82,0,0,0,0,75,82,75,75,75,75,75,75,75,82,82,82,82,82,82,75,82,81,0,0,0,0,0,0,0,0,0,0,0,0,75,82,75,82,75,82,75,82,0,0,0,0,0,0,0,0,0,75,82,75,82,75,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,0,14,14,14,14,0,14,14,0,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,14,0,0,0,14,14,14,14,14,14,0,0,152,152,151,151,152,151,152,151,152,151,152,151,151,152,151,152,151,152,151,152,152,152,152,152,152,152,151,152,151,151,152,152,151,152,152,152,152,152,152,151,151,151,151,151,151,152,151,151,152,151,152,151,152,151,152,151,152,151,152,151,152,151,219,219,0,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,0,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,155,54,54,0,0,0,0,54,74,156,157,74,74,156,157,54,74,156,157,54,74,156,157,74,156,157,156,156,74,157,74,156,157,54,74,156,157,54,74,156,157,54,74,156,54,74,74,74,74,74,156,156,156,156,156,54,54,54,54,54,74,156,157,54,54,74,156,157,54,54,54,157,74,74,74,74,156,74,156,157,54,74,74,74,74,74,74,74,156,156,156,156,156,156,157,157,157,157,157,157,54,54,54,54,54,54,74,156,157,54,157,157,74,156,54,74,156,157,54,54,74,156,157,54,74,156,157,54,74,156,157,54,74,156,157,54,74,156,157,54,74,156,157,54,220,0,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162,0,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,0,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,0,0,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,0,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,0,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,0,0,0,174,0,0,0,174,0,0,0,0,0,0,0,0,0,172,176,177,178,179,180,181,182,183,184,179,182,179,177,178,181,181,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,0,71,175,177,178,173,179,182,71,172,176,177,178,179,180,181,182,183,184,172,176,177,178,179,180,181,182,183,184,176,177,178,179,180,181,182,176,177,178,179,180,181,182,177,178,176,71,175,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,176,177,178,179,180,181,182,175,173,172,176,177,178,179,180,181,182,183,184,71,175,177,178,176,177,178,179,180,181,182,183,184,176,176,176,176,176,177,177,177,177,177,178,178,178,178,178,179,179,179,179,179,180,180,180,180,180,181,181,181,181,181,182,182,182,182,182,183,183,183,183,183,184,184,184,184,184,179,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,71,175,71,175,71,175,176,177,178,179,180,181,182,183,184,176,175,173,172,176,177,178,179,180,181,182,183,184,175,175,175,175,175,175,173,173,173,173,173,173,172,172,172,172,172,172,176,176,176,176,176,176,177,177,177,177,177,177,178,178,178,178,178,178,179,179,179,179,179,179,180,180,180,180,180,180,181,181,181,181,181,181,182,182,182,182,182,182,183,183,183,183,183,183,184,184,184,184,184,184,175,173,172,176,177,178,179,180,181,182,183,184,71,175,71,175,176,180,179,182,180,179,182,179,176,177,178,179,180,181,182,179,173,71,175,180,179,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,71,175,181,176,177,178,179,180,181,182,71,175,179,182,173,71,175,71,175,179,172,176,177,178,179,180,181,182,183,184,179,182,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,177,178,175,173,172,176,177,178,179,180,181,182,183,184,173,175,173,172,176,177,178,179,180,181,182,183,184,175,173,172,176,177,178,179,180,181,182,183,184,179,182,175,173,172,176,177,178,179,180,181,182,183,184,183,184,183,184,0,0,0,187,188,189,187,188,189,187,188,189,187,187,187,188,189,187,188,189,188,187,189,187,187,188,189,187,188,189,187,188,189,187,187,189,187,187,188,189,187,188,189,187,187,187,187,188,189,187,187,187,187,187,187,188,188,188,188,188,188,189,189,189,189,189,189,187,188,189,187,188,189,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,188,189,187,188,189,187,188,189,187,188,189,187,188,189,187,188,189,187,188,189,191,0,0,190,0,190,0,190,190,0,0,191,191,191,0,0,0,190,190,0,190,190,190,190,0,0,0,0,190,190,190,190,190,190,0,0,0,191,190,190,0,190,190,191,190,190,190,190,190,190,190,191,191,191,191,191,191,191,190,0,0,0,0,0,0,190,0,0,0,0,190,190,190,190,0,0,0,0,0,0,0,190,190,191,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,204,203,204,0,203,203,204,204,203,204,203,204,203,204,203,204,203,203,203,203,203,203,204,204,204,204,204,204,203,204,0,203,204,203,204,203,204,203,204,203,204,203,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,208,208,0,52,52,0,0,52,52,52,52,52,52,52,52,52,0,0,0,0,0,0,52,52,52,0,0,52,52,52,52,52,52,52,52,0,0,0,211,0,0,0,52,52,52,52,52,52,52,52,52,211,72,72,72,72,72,72,72,72,0,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,221,222,223,221,224,222,222,223,224,225,226,225,226],"f":"``````{{{b{c}}d}f{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}0`{{{b{j}}}j}{{{b{l}}}l}{{{b{c}}{b{he}}}f{}{}}0{{{b{l}}{b{l}}}n}{{{b{c}}{b{e}}}n{}{}}{{{b{A`}}{b{Ab}}{b{Ad}}{b{{Aj{AfAh}}}}{b{hAl}}An}{{Bb{fB`}}}}``{{}l}{Bd{{b{c}}}{}}0{Bd{{b{hc}}}{}}0`{Bdf}0{{{b{l}}{b{l}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000```{{{b{j}}{b{hBh}}}Bj}0{{{b{l}}{b{hBh}}}Bj}{cc{}}{Bll}1{Bdl}{{{b{l}}{b{hc}}}fBn}{{}Bd}0{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}054321{ce{}{}}0```{{{b{Ab}}l}{{Bb{{C`{Bl}}j}}}}{{{b{{Cl{Bl}}}}{b{Cn}}}{{Bb{fD`}}}}{{{b{l}}{b{l}}}{{Ch{n}}}}``{{{b{c}}}e{}{}}0{{{b{c}}}Db{}}{{{b{c}}}Dd{}}{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0`{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}0``::``````10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{{Dh{c}}}}{b{hBh}}}Bj{DjDlDnE`}}{{{Eb{c}}}{{Dh{c}}}{DjDlDn}}{{{Ed{c}}}{{Dh{c}}}{DjDlDn}}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}`{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}4`10{{{b{h{Eb{c}}}}c{b{Ad}}l}{{Eh{Ef}}}{DjDlDn}}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{{Eb{c}}}}{b{hBh}}}Bj{DjDlDn}}{cc{}}{{{b{{Eb{c}}}}{b{c}}}{{Ch{{Eh{Ef}}}}}{DjDlDn}}{{}Bd}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}>{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{Ej}}}{{Eb{c}}}{DjDlDn}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5`10{{{b{h{Ed{c}}}}c{b{Ad}}l}{{Eh{El}}}{DlDnDj}}{{{b{{Ed{c}}}}}{{b{Ej}}}{DlDnDj}}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{{Ed{c}}}}{b{hBh}}}Bj{DlDnDj}}{cc{}}{{{b{{Ed{c}}}}{b{c}}}{{Ch{{Eh{El}}}}}{DlDnDj}}{{}Bd}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{Ej}}}{{Ed{c}}}{DlDnDj}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5`10{{{b{Ej}}{b{Ad}}}{{Bb{EnB`}}}}{{{b{Ej}}}{{b{A`}}}}{{}Ej}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{Ej}}{b{Ej}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{{{b{Ej}}{b{hBh}}}Bj}{cc{}}{{}Bd}{{}A`}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{}Ej}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5{{{b{F`}}}{{b{Fb}}}}````````````````````````````````````222111{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{Bdf}00{{{b{B`}}{b{hBh}}}Bj}0{{{b{Fd}}{b{hBh}}}Bj}0{{{b{Ff}}{b{hBh}}}Bj}0{FhB`}{{{Cf{Fj}}}B`}{FlB`}{FnB`}{G`B`}{cc{}}{GbB`}{GdB`}{FdB`}{FfB`}44{{}Bd}00{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}051324230514{ce{}{}}00{{{b{Gf}}}B`}{{{b{B`}}}{{Ch{{b{Gh}}}}}}{{{b{c}}}Db{}}00{{{b{c}}}Dd{}}00{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00888``````{{{b{c}}d}f{}}00`222111`{{{b{Gj}}}Gj}{{{b{Gl}}}Gl}{{{b{Gn}}}Gn}{{{b{c}}{b{he}}}f{}{}}00{{{b{Gj}}{b{Gj}}}n}{{{b{Gn}}{b{Gn}}}n}{{{b{c}}{b{e}}}n{}{}}0{{}Gj}{{}Gn}{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{c{{Bb{Gj}}}H`}{c{{Bb{Gl}}}H`}{c{{Bb{Gn}}}H`}{Bdf}00`{{{b{Gj}}{b{Gj}}}Bf}{{{b{Gl}}{b{Gl}}}Bf}{{{b{Gn}}{b{Gn}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}00000000000000``{{{b{Gj}}{b{hBh}}}Bj}{{{b{Gl}}{b{hBh}}}Bj}{{{b{Gn}}{b{hBh}}}Bj}{cc{}}00{Gl{{Bb{GnB`}}}}{{{b{Gj}}{b{hc}}}fBn}{{{b{Gn}}{b{hc}}}fBn}{{}Bd}00{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}423150543102{ce{}{}}00{{{b{Gj}}{b{Gj}}}{{Ch{n}}}}{{{b{Gn}}{b{Gn}}}{{Ch{n}}}}````````{{{b{Gj}}c}BbHb}{{{b{Gl}}c}BbHb}{{{b{Gn}}c}BbHb}{{{b{c}}}e{}{}}00{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00:::`````{{{b{c}}d}f{}}222111{{{b{Hd}}}Hd}{{{b{c}}{b{he}}}f{}{}}{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{Bdf}00{{{b{El}}{b{Hf}}}Hh}{{{b{Ef}}{b{Hf}}}Hh}{{{b{El}}{b{hBh}}}Bj}{{{b{Ef}}{b{hBh}}}Bj}{{{b{Hd}}{b{hBh}}}Bj}{cc{}}00{ElHd}{EfHd}{{Enl}El}{{Enl}Ef}{{}Bd}00{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}143502543201{ce{}{}}00{{{b{El}}{b{Hf}}{b{{Cl{Hj}}}}{Ch{Hl}}c}{{Bb{GnB`}}}Hn}{{{b{Ef}}{b{Hf}}{b{{Cl{Hj}}}}{Ch{Hl}}c}{{Bb{GnB`}}}Hn}{{{b{Hd}}{b{Hf}}{b{{Cl{Hj}}}}{Ch{Hl}}c}{{Bb{GnB`}}}Hn}{{{b{El}}{b{Hf}}{b{{Cl{I`}}}}{Ch{Hl}}}{{Bb{GlB`}}}}{{{b{Ef}}{b{Hf}}{b{{Cl{I`}}}}{Ch{Hl}}}{{Bb{GlB`}}}}{{{b{Hd}}{b{Hf}}{b{{Cl{I`}}}}{Ch{Hl}}}{{Bb{GlB`}}}}{{{b{El}}{b{Hf}}{b{{Cl{I`}}}}{Ch{Hl}}c}{{Bb{GlB`}}}Hn}{{{b{Ef}}{b{Hf}}{b{{Cl{I`}}}}{Ch{Hl}}c}{{Bb{GlB`}}}Hn}{{{b{Hd}}{b{Hf}}{b{{Cl{I`}}}}{Ch{Hl}}c}{{Bb{GlB`}}}Hn}{{{b{El}}}{{b{Ab}}}}{{Ib{Aj{AfAh}}Id}Ef}{{{b{El}}}{{b{{Aj{AfAh}}}}}}{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00{ce{}{}}00``````{{{b{c}}d}f{}}`{{{b{If}}Ih}{{b{Ih}}}}```4433``{{{b{If}}Bd{b{{Cl{Ij}}}}Il}In}`{{{b{{Jb{}{{J`{c}}}}}}{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}}{{Bb{fc}}}Gh}```{{{b{Jd}}}Jd}{{{b{c}}{b{he}}}f{}{}}{{{b{If}}{b{A`}}Ij{Jf{Bd}}{Jf{{b{{Cl{Ij}}}}}}Il}In}```{Bd{{b{c}}}{}}{{{b{If}}}{{b{c}}}{}}1{Bd{{b{hc}}}{}}0`{Bdf}0``````{{{b{Jd}}{b{hBh}}}Bj}{cc{}}0``{{{b{A`}}{b{Ih}}IlIj}{{Jh{Ij}}}}{{{b{A`}}{b{Ih}}IlIjc}{{Jh{Ij}}}{{Jl{Jj}}}}{{}Bd}0{{{b{If}}}{{b{Ih}}}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}354210{ce{}{}}0{{{b{{Jb{}{{J`{c}}}}}}}{{Ch{{b{Hf}}}}}Gh}````````````{{{b{If}}{b{A`}}Ij{Cd{Jd{b{{Cl{Ij}}}}}}{b{{Cl{{Cd{JnJd{b{{Cl{Ij}}}}}}}}}}Il}{{Bb{InB`}}}}{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0`````````{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}077{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{K`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}00{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kd}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kf}}}{{Jh{f}}}}002000{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kh}}}{{Jh{f}}}}011113{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kj}}}{{Jh{f}}}}44{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kl}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kn}}}{{Jh{f}}}}446{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{L`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lb}}}{{Jh{f}}}}88{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ld}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lf}}}{{Jh{f}}}}:{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lh}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ll}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ln}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{M`}}}{{Jh{Ij}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mb}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Md}}}{{Jh{f}}}}0{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mf}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}00{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mh}}}{{Jh{f}}}}1111111111{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}Ij{b{Gf}}{b{Gf}}Bd}{{Jh{Ij}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ml}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Mn}}}{{Jh{f}}}}55{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{N`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nb}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nd}}}{{Jh{f}}}}8{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nf}}}{{Jh{f}}}}99{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nh}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kf}}}{{Jh{f}}}}0={{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Al}}{b{Kb}}}{{Jh{f}}}}==0{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nl}}}{{Jh{f}}}}3{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kb}}}{{Jh{f}}}}04{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kf}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Nn}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{O`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ob}}}{{Jh{f}}}}1{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Od}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{Of}}}}}{{Jh{f}}}}7737{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Oj}}}{{Jh{f}}}}4{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Ol}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{On}}}}}{{Jh{f}}}}::6:266{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{A@b}}}}}{{Jh{f}}}}<<8<488{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@d}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{A@f}}}}}{{Jh{f}}}}>>:>6::{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@h}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{A@j}}}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kb}}}{{Jh{f}}}}0=09==={{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@l}}}{{Jh{f}}}}>{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Lb}}}{{Jh{f}}}}??0??????????????????0???{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{A@n}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}0{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Gf}}{b{{Cl{Ij}}}}}{{Jh{Ij}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AA`}}}{{Jh{f}}}}2{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{AAb}}}}}{{Jh{f}}}}333333{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Oj}}}{{Jh{f}}}}44{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAd}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{AAf}}}}}{{Jh{f}}}}::6:{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Oj}}}{{Jh{f}}}}777{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAh}}}{{Jh{f}}}}8888{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAj}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{AAl}}}}}{{Jh{f}}}}>>:>3:::{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AAn}}}{{Jh{f}}}};{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{AB`}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{ABb}}}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{Kb}}}{{Jh{f}}}}0>07>>>{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{ABd}}}{{Jh{f}}}}{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{{Oh{ABf}}}}}{{Jh{f}}}}22{{{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Kb}}}{{Jh{f}}}}3:00000``{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}`{{}Al}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}`{{{b{Al}}{b{hBh}}}Bj}{cc{}}`{{{b{Al}}}{{Ch{{b{c}}}}}ABh}{{{b{hAl}}}{{Ch{{b{hc}}}}}ABh}{{{b{hAl}}e}{{b{hc}}}ABh{{ABl{}{{ABj{c}}}}}}{{}Bd}{{{b{hAl}}c}{{Ch{{b{hc}}}}}ABh}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{}Al}``{{{b{hAl}}}{{Ch{c}}}ABh}```{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6```{{{b{c}}d}f{}}0{{{b{hABn}}AC`}f}3322{{{b{AC`}}}AC`}{{{b{ABn}}}ABn}{{{b{c}}{b{he}}}f{}{}}0{{}ABn}{Bd{{b{c}}}{}}0{Bd{{b{hc}}}{}}0{Bdf}0{{{b{AC`}}{b{AC`}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{{{b{AC`}}{b{hBh}}}Bj}{{{b{ABn}}{b{hBh}}}Bj}{cc{}}0{{{b{ABn}}{b{AC`}}}Bf}{{{b{AC`}}{b{hc}}}fBn}{{}Bd}0{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}410532{ce{}{}}0{{{b{ABn}}{b{Ih}}Il{b{Al}}{b{AC`}}}f}{{{b{c}}}e{}{}}0{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}066```10{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}Il}{{Jh{f}}}}{{{b{ACb}}{b{Ih}}Il}{{Jh{f}}}}{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}{b{Fb}}Il}{{Jh{f}}}}{{}ACb}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}IjBdIl}{{Jh{f}}}}{{{b{ACb}}{b{hBh}}}Bj}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{hACb}}{b{A`}}{b{Ab}}{b{Ih}}IjIl}{{Jh{f}}}}000000{{{b{ACb}}{b{ACd}}}f}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`10{{}ACf}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{cc{}}{{{b{ACf}}{b{Gf}}}{{Ch{{b{{C`{Gf}}}}}}}}{{}Bd}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}?{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{{b{hACf}}{b{Gf}}{Ch{{b{{Cl{Gf}}}}}}}f}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5```````{{{b{c}}d}f{}}00`22221111{{{b{Id}}}Id}{{{b{ACh}}}ACh}{{{b{ACj}}}ACj}{{{b{c}}{b{he}}}f{}{}}00{{{b{ACh}}{b{ACh}}}n}{{{b{c}}{b{e}}}n{}{}}{{}Id}{{}ACj}{Bd{{b{c}}}{}}000{Bd{{b{hc}}}{}}000{Bdf}000{{{b{Id}}{b{Id}}}Bf}{{{b{ACh}}{b{ACh}}}Bf}{{{b{Fl}}{b{Fl}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}00000000000000{{{b{Id}}{b{hBh}}}Bj}{{{b{ACh}}{b{hBh}}}Bj}{{{b{ACj}}{b{hBh}}}Bj}{{{b{Fl}}{b{hBh}}}Bj}0{cc{}}000{AClFl}{ACnFl}``{{{b{Id}}AD`}{{Ch{Hl}}}}{{{b{Id}}AD`ADb}{{Ch{Hl}}}}{{{b{Id}}{b{Hf}}{Ch{Hl}}}{{Bb{HlFl}}}}{{{b{ACh}}{b{hc}}}fBn}{{}Bd}000{{{b{Id}}{b{Hf}}}{{Ch{Hl}}}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}401253540123521043{ce{}{}}000``{{{b{Ad}}{Ch{ACj}}}{{Bb{IdFl}}}}{{{b{ACh}}{b{ACh}}}{{Ch{n}}}}{{{b{Fl}}}{{Ch{{b{Gh}}}}}}{{{b{c}}}e{}{}}00{{{b{c}}}Db{}}{{{b{c}}}Dd{}}{c{{Bb{e}}}{}{}}0000000{{{b{c}}}Df{}}000{{{b{c}}}{{b{e}}}{}{}}000{{{b{hc}}}{{b{he}}}{}{}}000::::``10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{{ADd{c}}}}{b{hBh}}}BjE`}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{ADf{{ADd{c}}}{}}{{{b{{ADd{c}}}}}{{b{ADf}}}{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{ADh}}{b{hBh}}}Bj}{{{b{A`}}IjIl}In}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{A`}}{b{Ab}}}ADh}{{{b{A`}}IjIjIl}In}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`10{{}ADj}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{{{b{hADj}}{b{A`}}{b{Ab}}Ij{b{Ih}}Il}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}Il}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIl}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIjIl}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIjIjIl}{{Jh{ADl}}}}{{{b{hADj}}{b{A`}}{b{Ab}}IjIj{b{Ih}}Il}{{Jh{ADl}}}}{Bdf}{{{b{ADj}}{b{hBh}}}Bj}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IjIjIjIl}{{Jh{Ij}}}}??>=?>=={c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}{{{b{hADj}}{b{A`}}{b{Ab}}{b{Ih}}IlIjIjIj}{{Jh{ADl}}}}6``21{{}ADn}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{cc{}}{{}Bd}>{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{hADn}}Gf{AE`{c}}c}f{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}5{{{b{ADn}}{b{Gf}}}{{Ch{{Eh{AEb}}}}}}`21{{{b{AEd}}}Ij}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{AEd}}{b{hBh}}}Bj}{cc{}}{{}Bd}>{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{Ij{b{Ih}}}AEd}{{{b{AEd}}}AEf}{{{b{AEd}}}{{Ch{AEf}}}}{{{b{hAEd}}{b{Ih}}}f}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}8`10{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{En}}{b{hBh}}}Bj}{cc{}}{{{b{En}}}{{Ch{{b{c}}}}}ABh}{{}Bd}{{{b{hEn}}c}{{Ch{{b{hc}}}}}ABh}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{En}}}{{b{Al}}}}{{{b{En}}}{{b{Ab}}}}{{Ab{Aj{AfAh}}Al}En}{{{b{En}}}{{b{{Aj{AfAh}}}}}}{{{b{hEn}}}{{Ch{c}}}ABh}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}9`````````````````{{{b{c}}d}f{}}000000000```````222222222222111111111111{{{b{h{AEj{AEh}}}}{b{AEh}}{b{{AEj{AEh}}}}}f}{{{b{hHn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}{{{b{hAEn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}`````{{{b{hHn}}Hj{b{{Cl{Hj}}}}}{{C`{Hj}}}}{{{b{AEh}}}AEh}{{{b{AF`}}}AF`}{{{b{AFb}}}AFb}{{{b{AFd}}}AFd}{{{b{AFf}}}AFf}{{{b{AFh}}}AFh}{{{b{AFj}}}AFj}{{{b{AFl}}}AFl}{{{b{AFn}}}AFn}{{{b{AG`}}}AG`}{{{b{c}}{b{he}}}f{}{}}000000000{{{b{AF`}}{b{AF`}}}n}{{{b{AFb}}{b{AFb}}}n}{{{b{AFd}}{b{AFd}}}n}{{{b{AFf}}{b{AFf}}}n}{{{b{AFh}}{b{AFh}}}n}{{{b{AFj}}{b{AFj}}}n}{{{b{AFl}}{b{AFl}}}n}{{{b{c}}{b{e}}}n{}{}}000000``{{}AF`}{{{b{hHn}}HjHj{b{{Cl{Hj}}}}Bf{b{hHl}}}{{AEl{{Cd{Hj{C`{Hj}}}}}}}}{{{b{hAEn}}HjHj{b{{Cl{Hj}}}}Bf{b{hHl}}}{{AEl{{Cd{Hj{C`{Hj}}}}}}}}{Bd{{b{c}}}{}}00000000000{Bd{{b{hc}}}{}}00000000000{c{{Bb{AF`}}}H`}{c{{Bb{AFb}}}H`}{c{{Bb{AFd}}}H`}{c{{Bb{AFf}}}H`}{c{{Bb{AFh}}}H`}{c{{Bb{AFj}}}H`}{c{{Bb{AFl}}}H`}{Bdf}00000000000{{{b{hHn}}{b{{Cl{Hj}}}}{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}{b{{Cl{Hj}}}}{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}``{{{b{AF`}}{b{AF`}}}Bf}{{{b{AFb}}{b{AFb}}}Bf}{{{b{AFd}}{b{AFd}}}Bf}{{{b{AFf}}{b{AFf}}}Bf}{{{b{AFh}}{b{AFh}}}Bf}{{{b{AFj}}{b{AFj}}}Bf}{{{b{AFl}}{b{AFl}}}Bf}{{{b{AFn}}{b{AFn}}}Bf}{{{b{AG`}}{b{AG`}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}00000000000000000000000000000000000000000000`{{{b{{AEj{c}}}}{b{hBh}}}BjE`}{{{b{AEh}}{b{hBh}}}Bj}{{{b{AF`}}{b{hBh}}}Bj}{{{b{AFb}}{b{hBh}}}Bj}{{{b{AFd}}{b{hBh}}}Bj}{{{b{AFf}}{b{hBh}}}Bj}{{{b{AFh}}{b{hBh}}}Bj}{{{b{AFj}}{b{hBh}}}Bj}{{{b{AFl}}{b{hBh}}}Bj}{{{b{AFn}}{b{hBh}}}Bj}{{{b{AG`}}{b{hBh}}}Bj}{cc{}}00000000000{{{b{hHn}}AGb{b{hHl}}}{{AEl{Hj}}}}{{{b{hAEn}}AGb{b{hHl}}}{{AEl{Hj}}}}{{{b{hHn}}{b{hHl}}}{{AEl{AFb}}}}{{{b{hAEn}}{b{hHl}}}{{AEl{AFb}}}}{{{b{hHn}}{b{hHl}}}{{AEl{AFd}}}}{{{b{hAEn}}{b{hHl}}}{{AEl{AFd}}}}{{{b{AF`}}{b{hc}}}fBn}{{{b{AFb}}{b{hc}}}fBn}{{{b{AFd}}{b{hc}}}fBn}{{{b{AFf}}{b{hc}}}fBn}{{{b{AFh}}{b{hc}}}fBn}{{{b{AFj}}{b{hc}}}fBn}{{{b{AFl}}{b{hc}}}fBn}{{{b{AFn}}{b{hc}}}fBn}{{{b{AG`}}{b{hc}}}fBn}`{{}Bd}00000000000{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}152340425310140523205341230145325410201435150432140523431250452031{ce{}{}}00000000000{{{b{hHn}}{b{{Cl{AGb}}}}{b{hHl}}}{{AEl{AF`}}}}{{{b{hAEn}}{b{{Cl{AGb}}}}{b{hHl}}}{{AEl{AF`}}}}{{{b{hHn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}{{{b{hAEn}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}````````{{{b{AF`}}{b{AF`}}}{{Ch{n}}}}{{{b{AFb}}{b{AFb}}}{{Ch{n}}}}{{{b{AFd}}{b{AFd}}}{{Ch{n}}}}{{{b{AFf}}{b{AFf}}}{{Ch{n}}}}{{{b{AFh}}{b{AFh}}}{{Ch{n}}}}{{{b{AFj}}{b{AFj}}}{{Ch{n}}}}{{{b{AFl}}{b{AFl}}}{{Ch{n}}}}``{{{b{hHn}}Hj{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}Hj{b{hHl}}}{{AEl{f}}}}``{{{b{hHn}}AFnAFn{b{hHl}}}{{AEl{AFn}}}}{{{b{hAEn}}AFnAFn{b{hHl}}}{{AEl{AFn}}}}{{{b{hHn}}AF`Bf{b{hHl}}}{{AEl{{Ch{AFn}}}}}}{{{b{hAEn}}AF`Bf{b{hHl}}}{{AEl{{Ch{AFn}}}}}}{{{b{hHn}}AFn{b{hHl}}}{{AEl{{Cd{AF`AF`}}}}}}{{{b{hAEn}}AFn{b{hHl}}}{{AEl{{Cd{AF`AF`}}}}}}{{{b{hHn}}AFnAF`{b{hHl}}}{{AEl{AFn}}}}{{{b{hAEn}}AFnAF`{b{hHl}}}{{AEl{AFn}}}}{{{b{hHn}}AF`AF`{b{hHl}}}{{AEl{{Ch{AFn}}}}}}{{{b{hAEn}}AF`AF`{b{hHl}}}{{AEl{{Ch{AFn}}}}}}{{{b{hHn}}AG`AG`{b{hHl}}}{{AEl{AG`}}}}{{{b{hAEn}}AG`AG`{b{hHl}}}{{AEl{AG`}}}}{{{b{hHn}}AF`Bf{b{hHl}}}{{AEl{{Ch{AG`}}}}}}{{{b{hAEn}}AF`Bf{b{hHl}}}{{AEl{{Ch{AG`}}}}}}{{{b{hHn}}AG`{b{hHl}}}{{AEl{{Cd{AF`AF`}}}}}}{{{b{hAEn}}AG`{b{hHl}}}{{AEl{{Cd{AF`AF`}}}}}}{{{b{hHn}}AG`AF`{b{hHl}}}{{AEl{AG`}}}}{{{b{hAEn}}AG`AF`{b{hHl}}}{{AEl{AG`}}}}{{{b{hHn}}AF`AF`{b{hHl}}}{{AEl{{Ch{AG`}}}}}}{{{b{hAEn}}AF`AF`{b{hHl}}}{{AEl{{Ch{AG`}}}}}}{{{b{hHn}}Hj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}Hj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}`{{{b{AF`}}c}BbHb}{{{b{AFb}}c}BbHb}{{{b{AFd}}c}BbHb}{{{b{AFf}}c}BbHb}{{{b{AFh}}c}BbHb}{{{b{AFj}}c}BbHb}{{{b{AFl}}c}BbHb}{{{b{hHn}}{b{{Jf{AGd}}}}{b{{Jf{AGd}}}}{b{hHl}}}{{AEl{{Jf{AGd}}}}}}{{{b{hAEn}}{b{{Jf{AGd}}}}{b{{Jf{AGd}}}}{b{hHl}}}{{AEl{{Jf{AGd}}}}}}```{{{b{hHn}}AGdHj{b{hHl}}}{{AEl{Hj}}}}{{{b{hAEn}}AGdHj{b{hHl}}}{{AEl{Hj}}}}{{{b{hHn}}AGdHjHj{b{hHl}}}{{AEl{f}}}}{{{b{hAEn}}AGdHjHj{b{hHl}}}{{AEl{f}}}}`{{{b{c}}}e{}{}}000000000``{c{{Bb{e}}}{}{}}00000000000000000000000``{{{b{c}}}Df{}}00000000000`{{{b{c}}}{{b{e}}}{}{}}00000000000{{{b{hc}}}{{b{he}}}{}{}}00000000000``{ce{}{}}00000000000```````{{{b{c}}d}f{}}00333222{{{b{h{b{hAGf}}}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}{{{b{h{b{hAGf}}}}Hj{b{{Cl{Hj}}}}}{{C`{Hj}}}}{{{b{AGf}}}AGf}{{{b{AGh}}}AGh}{{{b{AGj}}}AGj}{{{b{c}}{b{he}}}f{}{}}00`{{}AGf}{{}AGj}{{{b{h{b{hAGf}}}}HjHj{b{{Cl{Hj}}}}Bf{b{hHl}}}{{AEl{{Cd{Hj{C`{Hj}}}}}}}}{Bd{{b{c}}}{}}00{Bd{{b{hc}}}{}}00{Bdf}00{{{b{h{b{hAGf}}}}{b{{Cl{Hj}}}}{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}```{{{b{AGf}}{b{hBh}}}Bj}{{{b{AGh}}{b{hBh}}}Bj}{{{b{AGj}}{b{hBh}}}Bj}{cc{}}00{{{b{h{b{hAGf}}}}AGb{b{hHl}}}{{AEl{Hj}}}}{{{b{h{b{hAGf}}}}{b{hHl}}}{{AEl{AFb}}}}{{{b{h{b{hAGf}}}}{b{hHl}}}{{AEl{AFd}}}}{{}Bd}00{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}345012312504{ce{}{}}00{{{b{h{b{hAGf}}}}{b{{Cl{AGb}}}}{b{hHl}}}{{AEl{AF`}}}}``{{{b{h{b{hAGf}}}}HjHj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{{C`{Hj}}}}}}`{{{b{h{b{hAGf}}}}Hj{b{hHl}}}{{AEl{f}}}}{{{b{h{b{hAGf}}}}AFnAFn{b{hHl}}}{{AEl{AFn}}}}{{{b{h{b{hAGf}}}}AF`Bf{b{hHl}}}{{AEl{{Ch{AFn}}}}}}{{{b{h{b{hAGf}}}}AFn{b{hHl}}}{{AEl{{Cd{AF`AF`}}}}}}{{{b{h{b{hAGf}}}}AFnAF`{b{hHl}}}{{AEl{AFn}}}}{{{b{h{b{hAGf}}}}AF`AF`{b{hHl}}}{{AEl{{Ch{AFn}}}}}}{{{b{h{b{hAGf}}}}AG`AG`{b{hHl}}}{{AEl{AG`}}}}{{{b{h{b{hAGf}}}}AF`Bf{b{hHl}}}{{AEl{{Ch{AG`}}}}}}{{{b{h{b{hAGf}}}}AG`{b{hHl}}}{{AEl{{Cd{AF`AF`}}}}}}{{{b{h{b{hAGf}}}}AG`AF`{b{hHl}}}{{AEl{AG`}}}}{{{b{h{b{hAGf}}}}AF`AF`{b{hHl}}}{{AEl{{Ch{AG`}}}}}}{{{b{h{b{hAGf}}}}Hj{b{{Cl{Hj}}}}{b{hHl}}}{{AEl{f}}}}{{{b{h{b{hAGf}}}}{b{{Jf{AGd}}}}{b{{Jf{AGd}}}}{b{hHl}}}{{AEl{{Jf{AGd}}}}}}`{{{b{h{b{hAGf}}}}AGdHj{b{hHl}}}{{AEl{Hj}}}}{{{b{h{b{hAGf}}}}AGdHjHj{b{hHl}}}{{AEl{f}}}}{{{b{c}}}e{}{}}00{c{{Bb{e}}}{}{}}00000{{{b{c}}}Df{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{hc}}}{{b{he}}}{}{}}00{ce{}{}}00```{{{b{c}}d}f{}}`{{{b{{AGl{c}}}}}{{b{c}}}{}}`43``{{{b{{AGn{}{{J`{c}}}}}}{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{Gf}}}{{Bb{AH`c}}}Gh}{{{b{{AGn{}{{J`{c}}}}}}{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Gf}}}{{Bb{Ijc}}}Gh}{{{b{{AGn{}{{J`{c}}}}}}{b{A`}}{b{{Aj{AfAh}}}}{b{Ih}}Il{b{If}}{b{hAl}}{b{Gf}}}{{Bb{fc}}}Gh}```{{{b{{AGl{c}}}}}{{AGl{c}}}AHb}{{{b{c}}{b{he}}}f{}{}}`5{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}````{{{b{{AGl{c}}}}{b{{AGl{c}}}}}BfDj}{{{b{c}}{b{e}}}Bf{}{}}0000```{{{b{{AGn{}{{J`{c}}}}}}}{{Ch{{b{{Cl{Gf}}}}}}}Gh}{{{b{{AGl{c}}}}{b{hBh}}}BjE`}{cc{}}`{{{b{{AGl{c}}}}{b{he}}}fDnBn}{{}Bd}{{{b{{AGn{}{{J`{c}}}}}}{b{{Aj{AfAh}}}}}{{Ch{AHd}}}Gh}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{ce{}{}}{{{b{{AGn{}{{J`{c}}}}}}{b{{Aj{AfAh}}}}}BfGh}{{{b{{AGn{}{{J`{c}}}}}}}BfGh}1111{{{b{{AGn{}{{J`{c}}}}}}{b{{Aj{AfAh}}}}}{{Bb{AHfc}}}Gh}{{{b{Gf}}{b{c}}}{{AGl{c}}}{}}``````{{{b{{AGl{c}}}}}{{b{Gf}}}{}}````{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}```````{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}{{{b{{AGn{}{{J`{c}}}}}}}{{Ch{{b{{Cl{Gf}}}}}}}Gh};{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHh}}}{{Jh{AH`}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHj}}}{{Jh{AH`}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHl}}}{{Jh{AH`}}}}21{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{AHj}}}{{Jh{AH`}}}}`{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHn}}}{{Jh{AH`}}}}333{{{b{AHn}}}Bf}0{{{b{{Aj{AfAh}}}}{b{AHn}}}{{Jh{AHf}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AI`}}}{{Jh{AH`}}}}666`{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIb}}}{{Jh{AH`}}}}{{{b{{Aj{AfAh}}}}{b{{Cl{Gf}}}}}{{Jh{{Cd{AHfAHf{C`{AHf}}}}}}}}{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{{Cl{Gf}}}}}{{Jh{{Cd{AHfAId{C`{AId}}}}}}}}``==<<9{{{b{AIf}}}{{b{ADf}}}}{Bd{{b{c}}}{}}0{{{b{AIh}}}{{b{Jj}}}}{Bd{{b{hc}}}{}}0{Bdf}0{cc{}}0{{}Bd}0{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}413205{ce{}{}}0{{{b{hAl}}}{{b{h{ADd{Hj}}}}}}{c{{Bb{e}}}{}{}}000{{{b{c}}}Df{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{hc}}}{{b{he}}}{}{}}055{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHh}}}{{Jh{AH`}}}}0{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AHj}}}{{Jh{AH`}}}}11000011{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIj}}}{{Jh{AH`}}}}11{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIl}}}{{Jh{AH`}}}}2222{{{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{AGl{AIn}}}{{Jh{AH`}}}}3333334````{{{b{c}}d}f{}}76{{{b{AJ`}}{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{Gf}}}{{Bb{AH`B`}}}}{{{b{AJ`}}{b{A`}}{b{Ab}}{b{{Aj{AfAh}}}}{b{hAl}}{b{Gf}}}{{Bb{{Cd{AH`AHf}}B`}}}}{{{b{Cn}}}{{Eh{Ad}}}}{{{b{Fh}}}Fh}{{{b{c}}{b{he}}}f{}{}}{{{b{Ab}}{b{Al}}l}ACd}{c{{`{E`}}}{{AEb{{b{hBh}}}{{ABj{Bj}}}}}}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{Bdf}{{{b{Fh}}{b{Fh}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{c{{Jf{AGd}}}{{Jl{Jj}}}}{{{b{Fb}}}{{Jf{AGd}}}}0{{{b{Ad}}{b{Fb}}}{{Ch{{b{{AJb{AD`}}}}}}}}{{{b{Ad}}Bd}{{Ch{{b{{AJb{AD`}}}}}}}}{{{b{Ad}}{b{Fb}}}{{b{Hf}}}}{{{b{Fh}}{b{hBh}}}Bj}0{cc{}}{{{b{Hf}}}{{AJd{Fb}}}}{AGdAHf}{{}Bd}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{AHf}}Bd}{{Bb{{Cd{AHfBd}}Fh}}}}{{AGdAGd}AGd}{{BdBd}Bd}{{{b{AJf}}}AGd}{{{b{AHf}}Bd}Bd}{{{b{ACd}}}f}{{{b{A`}}{b{hAb}}}{{Bb{fGb}}}}{{{b{c}}}e{}{}}{{{b{c}}}Db{}}{{{b{c}}}Dd{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}>:```````````````````````{{{b{c}}d}f{}}21{{{b{I`}}}I`}{{{b{c}}{b{he}}}f{}{}}{Bd{{b{c}}}{}}{Bd{{b{hc}}}{}}{c{{Bb{I`}}}H`}{Bdf}{{{b{I`}}{b{I`}}}Bf}{{{b{c}}{b{e}}}Bf{}{}}0000{{{b{Fb}}}I`}{{{b{I`}}{b{hBh}}}Bj}{JnI`}{AJhI`}{AJjI`}{HlI`}{AJlI`}{BlI`}{AGdI`}{{{C`{c}}}I`{{Jl{I`}}}}{HjI`}{{{b{{Cl{c}}}}}I`{{Jl{I`}}AHb}}{AGbI`}{AJnI`}{{{Jf{c}}}I`{{Jl{I`}}}}{AK`I`}{cc{}}{{}Bd}{{{b{hc}}{b{h{Cd{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{C`{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Bb{eg}}}}}{{Bb{Cbi}}}{}{}{}{}}{{{b{hc}}{b{h{Cf{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Ch{e}}}}}{{Bb{Cbg}}}{}{}{}}{{{b{hc}}{b{h{Cj{e}}}}}{{Bb{Cbg}}}{}{}{}}{ce{}{}}{{{b{I`}}c}BbHb}{{{b{c}}}e{}{}}{c{{Bb{e}}}{}{}}0{{{b{c}}}Df{}}{{{b{c}}}{{b{e}}}{}{}}{{{b{hc}}}{{b{he}}}{}{}}6`````````````","D":"DDj","p":[[1,"reference"],[5,"Private",2287],[1,"unit"],[0,"mut"],[5,"LLVMCompileError",0,2288],[6,"OptLevel",0,2288],[6,"Ordering",2289],[5,"Context",2290],[5,"Module",2291],[5,"Program",2292],[6,"CoreType",2293],[6,"CoreLibfunc",2293],[5,"ProgramRegistry",2294],[5,"MetadataStorage",875],[5,"Attribute",2295],[6,"Error",213],[6,"Result",2296],[1,"usize"],[1,"bool"],[5,"Formatter",2297],[8,"Result",2297],[1,"u8"],[10,"Hasher",2298],[5,"Vec",2299],[6,"RewriteResult",2300],[1,"tuple"],[5,"Box",2301],[6,"Option",2302],[5,"VecDeque",2303],[1,"slice"],[5,"Path",2304],[5,"Error",2305],[5,"SmolStr",2306],[5,"String",2307],[5,"TypeId",2308],[6,"ProgramCache",90],[10,"PartialEq",2289],[10,"Eq",2289],[10,"Hash",2298],[10,"Debug",2297],[5,"AotProgramCache",120],[5,"JitProgramCache",145],[5,"AotNativeExecutor",453,2309],[5,"Arc",2310],[5,"NativeContext",171],[5,"JitNativeExecutor",453,2311],[5,"NativeModule",1322],[6,"CoreConcreteLibfunc",2293],[1,"str"],[6,"SierraAssertError",213],[6,"CompilerError",213],[5,"LayoutError",2144],[6,"ProgramRegistryError",2294],[6,"GasMetadataError",1038],[5,"TryFromIntError",2312],[6,"EditStateError",2313],[6,"Error",2314],[5,"LayoutError",2315],[5,"ConcreteTypeId",2316],[10,"Error",2317],[5,"BuiltinStats",327],[5,"ExecutionResult",327],[5,"ContractExecutionResult",327],[10,"Deserializer",2318],[10,"Serializer",2319],[6,"NativeExecutor",453],[5,"FunctionId",2316],[6,"c_void",2320],[5,"Felt",2321],[1,"u128"],[10,"StarknetSyscallHandler",1351],[6,"JitValue",2203],[5,"Library",2322],[5,"GasMetadata",1038],[5,"LibfuncHelper",543],[5,"Block",2323],[5,"Value",2324],[5,"Location",2325],[5,"Operation",2326],[17,"Error"],[10,"LibfuncBuilder",543],[6,"BranchTarget",543],[1,"array"],[8,"Result",213],[5,"BigInt",2327],[10,"Into",2328],[1,"i64"],[6,"ApTrackingConcreteLibfunc",2329],[5,"SignatureOnlyConcreteLibfunc",2330],[6,"ArrayConcreteLibfunc",2331],[5,"SignatureAndTypeConcreteLibfunc",2330],[5,"ConcreteMultiPopLibfunc",2331],[6,"BoolConcreteLibfunc",2332],[6,"BoundedIntConcreteLibfunc",2333],[6,"BoxConcreteLibfunc",2334],[6,"Bytes31ConcreteLibfunc",2335],[5,"SignatureAndConstConcreteLibfunc",2336],[6,"CastConcreteLibfunc",2337],[5,"DowncastConcreteLibfunc",2337],[6,"CircuitConcreteLibfunc",2338],[6,"ConstConcreteLibfunc",2339],[5,"ConstAsBoxConcreteLibfunc",2339],[5,"ConstAsImmediateConcreteLibfunc",2339],[5,"ConstConcreteType",2339],[6,"CouponConcreteLibfunc",2340],[5,"SignatureAndFunctionConcreteLibfunc",2341],[6,"DebugConcreteLibfunc",2342],[6,"EcConcreteLibfunc",2343],[6,"EnumConcreteLibfunc",2344],[5,"EnumFromBoundedIntConcreteLibfunc",2344],[5,"EnumInitConcreteLibfunc",2344],[6,"Felt252Concrete",2345],[6,"Felt252BinaryOperationConcrete",2345],[5,"Felt252ConstConcreteLibfunc",2345],[6,"Felt252DictConcreteLibfunc",2346],[6,"Felt252DictEntryConcreteLibfunc",2346],[6,"GasConcreteLibfunc",2347],[6,"MemConcreteLibfunc",2348],[6,"NullableConcreteLibfunc",2349],[6,"PedersenConcreteLibfunc",2350],[6,"PoseidonConcreteLibfunc",2351],[6,"Sint128Concrete",2352],[5,"Sint128Traits",2352],[5,"IntConstConcreteLibfunc",2353],[5,"IntOperationConcreteLibfunc",2353],[8,"Sint16Concrete",2354],[5,"Sint16Traits",2354],[8,"Sint32Concrete",2354],[5,"Sint32Traits",2354],[8,"Sint64Concrete",2354],[5,"Sint64Traits",2354],[8,"Sint8Concrete",2354],[5,"Sint8Traits",2354],[6,"StarkNetConcreteLibfunc",2355],[6,"StructConcreteLibfunc",2356],[6,"Uint128Concrete",2357],[5,"Uint128Traits",2357],[8,"Uint16Concrete",2358],[5,"Uint16Traits",2358],[6,"Uint256Concrete",2359],[8,"Uint32Concrete",2358],[5,"Uint32Traits",2358],[6,"Uint512Concrete",2360],[8,"Uint64Concrete",2358],[5,"Uint64Traits",2358],[8,"Uint8Concrete",2358],[5,"Uint8Traits",2358],[10,"Any",2308],[17,"Output"],[10,"FnOnce",2361],[5,"AutoBreakpoint",913],[6,"BreakpointEvent",913],[5,"DebugUtils",979],[5,"ExecutionEngine",2362],[5,"EnumSnapshotVariantsMeta",1014],[5,"GasCost",1038],[5,"MetadataComputationConfig",1038],[6,"ApChangeError",2363],[6,"CostError",2364],[5,"StatementIdx",2292],[6,"CostTokenType",2347],[5,"PrimeModuloMeta",1182],[5,"BigUint",2365],[5,"ReallocBindingsMeta",1206],[5,"RuntimeBindingsMeta",1231],[5,"OperationRef",2326],[5,"SnapshotClonesMeta",1270],[8,"CloneFn",1270],[10,"Fn",2361],[5,"TailRecursionMeta",1295],[5,"BlockRef",2323],[5,"Felt252Abi",1351],[5,"ArrayAbi",1351],[8,"SyscallResult",1351],[5,"DummySyscallHandler",1351],[5,"U256",1351],[5,"ExecutionInfo",1351],[5,"ExecutionInfoV2",1351],[5,"TxV2Info",1351],[5,"ResourceBounds",1351],[5,"BlockInfo",1351],[5,"TxInfo",1351],[5,"Secp256k1Point",1351],[5,"Secp256r1Point",1351],[1,"u64"],[1,"u32"],[5,"StubSyscallHandler",1852],[5,"StubEvent",1852],[5,"ContractLogs",1852],[5,"WithSelf",1964],[10,"TypeBuilder",1964],[5,"Type",2366],[10,"Clone",2367],[5,"Range",2368],[5,"Layout",2315],[5,"InfoAndTypeConcreteType",2369],[5,"InfoOnlyConcreteType",2369],[5,"BoundedIntConcreteType",2333],[6,"CircuitTypeConcrete",2338],[5,"CouponConcreteType",2340],[5,"EnumConcreteType",2344],[8,"TypeLayout",2067],[5,"PRIME",2071],[5,"HALF_PRIME",2071],[6,"StarkNetTypeConcrete",2355],[6,"Secp256PointTypeConcrete",2370],[5,"StructConcreteType",2356],[10,"ProgramRegistryExt",2144],[5,"GenFunction",2292],[6,"Cow",2371],[10,"RangeExt",2144],[1,"i8"],[1,"i16"],[1,"i32"],[1,"u16"],[1,"i128"],[15,"BoundedIntOutOfRange",324],[15,"Range",326],[15,"EnumInit",977],[15,"NotEnoughGas",1181],[15,"Struct",2274],[15,"Enum",2274],[15,"Felt252Dict",2274],[15,"BoundedInt",2274],[15,"Secp256K1Point",2274],[15,"Secp256R1Point",2274]],"r":[[2,2288],[5,2288],[19,2372],[66,2288],[67,2288],[91,120],[93,145],[454,2309],[456,2311]],"b":[[39,"impl-Display-for-LLVMCompileError"],[40,"impl-Debug-for-LLVMCompileError"],[43,"impl-From%3Cu8%3E-for-OptLevel"],[45,"impl-From%3Cusize%3E-for-OptLevel"],[102,"impl-From%3CAotProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[103,"impl-From%3CJitProgramCache%3C\'a,+K%3E%3E-for-ProgramCache%3C\'a,+K%3E"],[256,"impl-Display-for-Error"],[257,"impl-Debug-for-Error"],[258,"impl-Debug-for-SierraAssertError"],[259,"impl-Display-for-SierraAssertError"],[260,"impl-Display-for-CompilerError"],[261,"impl-Debug-for-CompilerError"],[262,"impl-From%3CLayoutError%3E-for-Error"],[263,"impl-From%3CBox%3CProgramRegistryError%3E%3E-for-Error"],[264,"impl-From%3CGasMetadataError%3E-for-Error"],[265,"impl-From%3CTryFromIntError%3E-for-Error"],[266,"impl-From%3CEditStateError%3E-for-Error"],[268,"impl-From%3CError%3E-for-Error"],[269,"impl-From%3CLayoutError%3E-for-Error"],[270,"impl-From%3CSierraAssertError%3E-for-Error"],[271,"impl-From%3CCompilerError%3E-for-Error"],[484,"impl-From%3CJitNativeExecutor%3C\'m%3E%3E-for-NativeExecutor%3C\'m%3E"],[485,"impl-From%3CAotNativeExecutor%3E-for-NativeExecutor%3C\'m%3E"],[1100,"impl-Debug-for-GasMetadataError"],[1101,"impl-Display-for-GasMetadataError"],[1106,"impl-From%3CApChangeError%3E-for-GasMetadataError"],[1107,"impl-From%3CCostError%3E-for-GasMetadataError"],[2173,"impl-Debug-for-LayoutError"],[2174,"impl-Display-for-LayoutError"],[2243,"impl-From%3Ci64%3E-for-JitValue"],[2244,"impl-From%3Ci8%3E-for-JitValue"],[2245,"impl-From%3Ci16%3E-for-JitValue"],[2246,"impl-From%3Cu128%3E-for-JitValue"],[2247,"impl-From%3Ci32%3E-for-JitValue"],[2248,"impl-From%3Cu8%3E-for-JitValue"],[2249,"impl-From%3Cu32%3E-for-JitValue"],[2250,"impl-From%3CVec%3CT%3E%3E-for-JitValue"],[2251,"impl-From%3CFelt%3E-for-JitValue"],[2252,"impl-From%3C%26%5BT%5D%3E-for-JitValue"],[2253,"impl-From%3Cu64%3E-for-JitValue"],[2254,"impl-From%3Cu16%3E-for-JitValue"],[2255,"impl-From%3C%5BT;+N%5D%3E-for-JitValue"],[2256,"impl-From%3Ci128%3E-for-JitValue"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMoGlQABAAEABAABAAcADAAVAAYAHQAHACYAAAAoAAIALAAAAC4ADwBCAAAARQAAAEgACQBTAAMAWQAPAGoABgByAA4AggAHAIsABgCTAAcAnAAHAKUABgCtAAEAsAALAL0AAAC/AAUAxgAHANYABwDfAAkA6gAhAA0BAwATARQAKwEdAEsBOgCKARYApAEkAMsBFgDlAQIA6QEUAAECAQAFAgAACAIAAAoCFQAmAgAALAIDADgCAQA+AgQARAIBAEwCAABRAgMAVgILAHICBgCCAgUAlAIBAJkCAACuAgAAsgIBAMICAADMAgEAzwIBAN8CAADhAgAAEAMQACMDBwBtAwIAcQMFAHgDAAB7AwEAfgMFAIoDAACMAyIAsQMPAMMDFQDaAwMA3wMAAOEDBgDpAxQA/wMHAAgECQAVBDkAUwQFAFoEHQB8BCIAoAQFAKcEBgCxBAUAuAQFAMAEBgDKBAUA0QQEANwEAQDfBAYA7QQAAPAEBAD2BAgAAAUGAAgFBwARBQEAFAUDABkFBgAlBQUALAUFADQFAAA2BQUAPQUDAEIFCABMBQEAUAUHAFkFKACDBZ8ALwZjAJ8GngBAByQAaAcXAIMHKQCvBwEAsgcAALQHAQC5BwEAvgcBAMEHAwDJBwUA0gcBANYHAQDZBwUA5wcAAO4HAADzBwMA/gcBAAEIAAAICAAACggFABgIAAAaCAMAHwgHACkIDQA5CAwAUggGAGEICABrCAEAbwgIAH4IAQCDCAYAjAgBAJAICgCdCAYApggbAMMIDgDTCAYA2wgUAA=="}],\ +["cairo_native_compile",{"t":"PFPGNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOOOONNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","command","command_for_update","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","main","opt_level","output_library","output_mlir","path","replace_ids","single_file","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","value_variants","vzip","vzip"],"q":[[0,"cairo_native_compile"],[69,"dyn_clone::sealed"],[70,"clap_builder::builder::command"],[71,"core::fmt"],[72,"clap_builder::parser::matches::arg_matches"],[73,"clap_builder"],[74,"core::result"],[75,"clap_builder::util::id"],[76,"core::option"],[77,"alloc::vec"],[78,"cairo_lang_semantic::substitution"],[79,"alloc::boxed"],[80,"alloc::collections::vec_deque"],[81,"anyhow"],[82,"clap_builder::builder::possible_value"],[83,"core::any"]],"i":[6,0,6,0,6,10,10,10,6,10,6,10,6,6,10,10,6,10,6,10,6,10,6,10,6,10,10,10,10,6,10,6,6,6,6,6,6,10,10,10,10,10,10,6,10,0,10,10,10,10,10,10,6,6,6,10,6,10,6,10,6,10,6,10,10,10,6,6,10],"f":"````{{{b{c}}d}f{}}`{hh}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{l}}}l}{{{b{c}}{b{je}}}f{}{}}{{}h}0{n{{b{c}}}{}}0{n{{b{jc}}}{}}0{nf}0{{{b{l}}{b{jA`}}}Ab}{{{b{Ad}}{b{jA`}}}Ab}{cc{}}0{{{b{Af}}}{{Aj{AdAh}}}}{{{b{jAf}}}{{Aj{AdAh}}}}{{}{{An{Al}}}}{{}n}0{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bd{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bf{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}251340{ce{}{}}0{{}{{Bj{f}}}}``````{{{b{c}}}e{}{}}{{{b{l}}}{{An{Bl}}}}{c{{Aj{e}}}{}{}}000{{{b{c}}}Bn{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{jAd}}{b{Af}}}{{Aj{fAh}}}}{{{b{jAd}}{b{jAf}}}{{Aj{fAh}}}}{{}{{b{{C`{l}}}}}}::","D":"Ah","p":[[1,"reference"],[5,"Private",69],[1,"unit"],[5,"Command",70],[0,"mut"],[6,"RunMode",0],[1,"usize"],[5,"Formatter",71],[8,"Result",71],[5,"Args",0],[5,"ArgMatches",72],[8,"Error",73],[6,"Result",74],[5,"Id",75],[6,"Option",76],[5,"Vec",77],[6,"RewriteResult",78],[5,"Box",79],[1,"tuple"],[5,"VecDeque",80],[8,"Result",81],[5,"PossibleValue",82],[5,"TypeId",83],[1,"slice"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADkABgAAAAEAAwACAAcAEQAbABAALgAAADUAEAA="}],\ +["cairo_native_dump",{"t":"FGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNHHOHHONNNNNNNNNNNNNNNN","n":["CmdLine","CompilerOutput","Path","Stdout","__clone_box","__clone_box","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","command","command_for_update","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","init","init","input","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","load_program","main","output","parse_input","parse_output","starknet","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip"],"q":[[0,"cairo_native_dump"],[70,"dyn_clone::sealed"],[71,"clap_builder::builder::command"],[72,"core::fmt"],[73,"clap_builder::parser::matches::arg_matches"],[74,"clap_builder"],[75,"core::result"],[76,"clap_builder::util::id"],[77,"core::option"],[78,"cairo_lang_semantic::substitution"],[79,"alloc::vec"],[80,"alloc::collections::vec_deque"],[81,"alloc::boxed"],[82,"std::path"],[83,"cairo_lang_sierra::program"],[84,"core::error"],[85,"alloc::string"],[86,"core::any"]],"i":[0,0,7,7,6,7,6,6,6,7,6,7,6,7,6,7,6,6,6,7,6,7,6,7,6,7,6,7,6,6,6,6,7,6,6,6,6,6,6,6,7,7,7,7,7,7,6,7,0,0,6,0,0,6,6,7,6,7,6,7,6,7,6,7,6,7,6,6,6,7],"f":"````{{{b{c}}d}f{}}0{hh}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{l}}}l}{{{b{n}}}n}{{{b{c}}{b{je}}}f{}{}}0{{}h}0{A`{{b{c}}}{}}0{A`{{b{jc}}}{}}0{A`f}0{{{b{l}}{b{jAb}}}Ad}{{{b{n}}{b{jAb}}}Ad}{cc{}}0{{{b{Af}}}{{Aj{lAh}}}}{{{b{jAf}}}{{Aj{lAh}}}}{{}{{An{Al}}}}{{}A`}0`{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{B`i}}}{}{}{}{}}{{{b{jc}}{b{j{Bb{e}}}}}{{Aj{B`g}}}{}{}{}}{{{b{jc}}{b{j{Bd{e}}}}}{{Aj{B`g}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{B`g}}}{}{}{}}{{{b{jc}}{b{j{Bf{e}}}}}{{Aj{B`g}}}{}{}{}}{{{b{jc}}{b{j{Bh{eg}}}}}{{Aj{B`i}}}{}{}{}{}}045123{ce{}{}}0{{{b{Bj}}Bl}{{Aj{Bn{Bf{C`}}}}}}{{}{{Aj{f{Bf{C`}}}}}}`{{{b{Cb}}}{{Aj{CdCf}}}}{{{b{Cb}}}{{Aj{nCf}}}}`{{{b{c}}}e{}{}}0{c{{Aj{e}}}{}{}}000{{{b{c}}}Ch{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{jl}}{b{Af}}}{{Aj{fAh}}}}{{{b{jl}}{b{jAf}}}{{Aj{fAh}}}};;","D":"j","p":[[1,"reference"],[5,"Private",70],[1,"unit"],[5,"Command",71],[0,"mut"],[5,"CmdLine",0],[6,"CompilerOutput",0],[1,"usize"],[5,"Formatter",72],[8,"Result",72],[5,"ArgMatches",73],[8,"Error",74],[6,"Result",75],[5,"Id",76],[6,"Option",77],[6,"RewriteResult",78],[5,"Vec",79],[5,"VecDeque",80],[5,"Box",81],[1,"tuple"],[5,"Path",82],[1,"bool"],[5,"Program",83],[10,"Error",84],[1,"str"],[5,"PathBuf",82],[5,"String",85],[5,"TypeId",86]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEEABAAAABoAHQARADEABAA3AA8A"}],\ +["cairo_native_run",{"t":"PFPGNONNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHOOOONNNNNNNNNNNNNNCNNNPPFGNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNHOHOCNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNHNNNOOHHNNNOONNNNNNNNNNNNNNNNNNNNNNNNOHONNNNNNNNNNNNNNNNNN","n":["Aot","Args","Jit","RunMode","__clone_box","allow_warnings","augment_args","augment_args_for_update","available_gas","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","command","command_for_update","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","group_id","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","main","opt_level","path","run_mode","single_file","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","vzip","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","find_function","fmt","format_for_panic","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","jitvalue_to_felt","opt_level","result_to_runresult","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","display_tests_summary","drop","drop","drop","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","passed","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"cairo_native_run"],[69,"cairo_native_run::utils"],[127,"cairo_native_run::utils::test"],[202,"dyn_clone::sealed"],[203,"clap_builder::builder::command"],[204,"core::fmt"],[205,"clap_builder::parser::matches::arg_matches"],[206,"clap_builder"],[207,"core::result"],[208,"clap_builder::util::id"],[209,"core::option"],[210,"alloc::collections::vec_deque"],[211,"cairo_lang_semantic::substitution"],[212,"alloc::vec"],[213,"alloc::boxed"],[214,"anyhow"],[215,"clap_builder::builder::possible_value"],[216,"core::any"],[217,"cairo_lang_sierra::program"],[218,"starknet_types_core::felt"],[219,"alloc::vec::into_iter"],[220,"alloc::string"],[221,"cairo_native::values"],[222,"cairo_native::execution_result"],[223,"cairo_lang_runner"],[224,"cairo_lang_test_plugin"],[225,"scarb_metadata"],[226,"cairo_lang_test_plugin::test_config"],[227,"cairo_lang_sierra::ids"],[228,"cairo_lang_sierra::extensions::modules::gas"],[229,"cairo_lang_utils::ordered_hash_map"]],"i":[6,0,6,0,6,10,10,10,10,6,10,6,10,6,6,10,10,6,10,6,10,6,10,6,10,6,10,10,10,10,6,10,6,6,6,6,6,6,10,10,10,10,10,10,6,10,0,10,10,10,10,6,6,6,10,6,10,6,10,6,10,6,10,10,10,0,6,6,10,25,25,0,0,25,45,25,45,25,25,25,45,25,45,25,45,25,0,25,0,45,25,45,25,45,45,45,45,45,45,25,25,25,25,25,25,45,25,0,45,0,45,0,25,25,45,25,45,25,45,25,45,25,45,25,25,45,25,46,46,0,0,0,35,47,46,35,47,46,35,47,46,35,47,46,0,35,47,46,35,35,0,0,35,47,46,47,35,35,47,46,35,35,35,35,35,35,47,47,47,47,47,47,46,46,46,46,46,46,35,47,46,35,0,47,35,47,46,35,47,46,35,47,46,35,47,46,35,47,46,35,47,46],"f":"````{{{b{c}}d}f{}}`{hh}0`{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{l}}}l}{{{b{c}}{b{je}}}f{}{}}{{}h}0{n{{b{c}}}{}}0{n{{b{jc}}}{}}0{nf}0{{{b{l}}{b{jA`}}}Ab}{{{b{Ad}}{b{jA`}}}Ab}{cc{}}0{{{b{Af}}}{{Aj{AdAh}}}}{{{b{jAf}}}{{Aj{AdAh}}}}{{}{{An{Al}}}}{{}n}0{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bd{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bf{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}145032{ce{}{}}0{{}{{Bj{f}}}}````{{{b{c}}}e{}{}}{{{b{l}}}{{An{Bl}}}}{c{{Aj{e}}}{}{}}000{{{b{c}}}Bn{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{{b{jAd}}{b{Af}}}{{Aj{fAh}}}}{{{b{jAd}}{b{jAf}}}{{Aj{fAh}}}}`{{}{{b{{C`{l}}}}}}::````{{{b{c}}d}f{}}5544{{{b{Cb}}}Cb}{{{b{c}}{b{je}}}f{}{}}{n{{b{c}}}{}}0{n{{b{jc}}}{}}0{nf}0{{{b{Cd}}{b{Cf}}}{{Bj{{b{Ch}}}}}}{{{b{Cb}}{b{jA`}}}Ab}{{{Cl{Cj}}}Cn}{cc{}}0{{}n}0{{{b{jc}}{b{j{Bd{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bf{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}543210{ce{}{}}0{{{b{D`}}}{{Bd{Cj}}}}`{{{b{Db}}}{{Bj{Dd}}}}``{{{b{c}}}e{}{}}{{{b{Cb}}}{{An{Bl}}}}{c{{Aj{e}}}{}{}}000{{{b{c}}}Bn{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{}{{b{{C`{Cb}}}}}}99`````222111{n{{b{c}}}{}}00{n{{b{jc}}}{}}00{{{b{Df}}n}f}{nf}00``{{DhDjDjCn}{{Bf{Dhn}}}}{{{b{Dl}}}{{Bd{{b{Dn}}}}}}{cc{}}00``{{}n}00{{{b{jc}}{b{j{Aj{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bf{eg}}}}}{{Aj{Bbi}}}{}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{An{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{B`{e}}}}}{{Aj{Bbg}}}{}{}{}}{{{b{jc}}{b{j{Bd{e}}}}}{{Aj{Bbg}}}{}{}{}}054321452301{ce{}{}}00`{{{Bd{{Bf{CnE`}}}}Cd{Eh{Eb{Eh{EdEf}}}}Ej}{{Bj{Df}}}}`{c{{Aj{e}}}{}{}}00000{{{b{c}}}Bn{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00555","D":"Dd","p":[[1,"reference"],[5,"Private",202],[1,"unit"],[5,"Command",203],[0,"mut"],[6,"RunMode",0],[1,"usize"],[5,"Formatter",204],[8,"Result",204],[5,"Args",0],[5,"ArgMatches",205],[8,"Error",206],[6,"Result",207],[5,"Id",208],[6,"Option",209],[5,"VecDeque",210],[6,"RewriteResult",211],[5,"Vec",212],[1,"tuple"],[5,"Box",213],[8,"Result",214],[5,"PossibleValue",215],[5,"TypeId",216],[1,"slice"],[6,"RunMode",69],[5,"Program",217],[1,"str"],[8,"Function",217],[5,"Felt",218],[5,"IntoIter",219],[5,"String",220],[6,"JitValue",221],[5,"ExecutionResult",222],[6,"RunResultValue",223],[5,"TestsSummary",127],[5,"TestCompilation",224],[1,"bool"],[5,"PackageMetadata",225],[5,"TargetMetadata",225],[5,"TestConfig",226],[5,"FunctionId",227],[6,"CostTokenType",228],[1,"i32"],[5,"OrderedHashMap",229],[5,"RunArgs",69],[6,"TestStatus",127],[5,"TestResult",127]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKgAEAAAAAEAAwACAAcAAQAKAA8AHAAQAC8AAAA0ACIAWAAAAFwADQBtAAAAbwASAIUACwCSAAQAnQAVALYAAAC5ABEA"}],\ ["cairo_native_runtime",{"t":"FFIFNNNNNNHHHHHHHHHHHHHHHNNNNNNNNONNNNNNNNNNNNNNNONNN","n":["DICT_GAS_REFUND_PER_ACCESS","DictValuesArrayAbi","FeltDict","HALF_PRIME","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","cairo_native__alloc_dict","cairo_native__dict_free","cairo_native__dict_gas_refund","cairo_native__dict_get","cairo_native__dict_insert","cairo_native__dict_values","cairo_native__libfunc__debug__print","cairo_native__libfunc__ec__ec_point_from_x_nz","cairo_native__libfunc__ec__ec_point_try_new_nz","cairo_native__libfunc__ec__ec_state_add","cairo_native__libfunc__ec__ec_state_add_mul","cairo_native__libfunc__ec__ec_state_init","cairo_native__libfunc__ec__ec_state_try_finalize_nz","cairo_native__libfunc__hades_permutation","cairo_native__libfunc__pedersen","deref","deref","from","from","from","into","into","into","key","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","value","vzip","vzip","vzip"],"q":[[0,"cairo_native_runtime"],[53,"core::ffi"],[54,"core::ptr::non_null"],[55,"starknet_types_core::felt"],[56,"core::result"],[57,"core::any"]],"i":[0,0,0,0,10,14,16,10,14,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,16,10,14,16,10,14,16,10,10,14,16,10,14,16,10,14,16,10,14,16,10,14,16,10,10,14,16],"f":"````{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00{{}f}{hj}{hl}{{h{b{{A`{n}}}}}f}{{h{b{{A`{n}}}}{Ab{f}}}f}{{hl}Ad}{{AfA`Ah}Af}{{{Ab{{A`{{A`{n}}}}}}}Aj}0{{{Ab{{A`{{A`{n}}}}}}{Ab{{A`{{A`{n}}}}}}}j}{{{Ab{{A`{{A`{n}}}}}}{Ab{{A`{n}}}}{Ab{{A`{{A`{n}}}}}}}j}{{{Ab{{A`{{A`{n}}}}}}}j}{{{Ab{{A`{{A`{n}}}}}}{Ab{{A`{{A`{n}}}}}}}Aj}{{nnn}j}0{{{b{Al}}}{{b{An}}}}{{{b{B`}}}{{b{l}}}}{cc{}}00{ce{}{}}00`{c{{Bb{e}}}{}{}}00000{{{b{c}}}Bd{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{dc}}}{{b{de}}}{}{}}00`444","D":"Bn","p":[[1,"reference"],[0,"mut"],[6,"c_void",53],[8,"FeltDict",0],[1,"unit"],[1,"u64"],[1,"u8"],[1,"array"],[5,"NonNull",54],[5,"DictValuesArrayAbi",0],[1,"i32"],[1,"u32"],[1,"bool"],[5,"HALF_PRIME",0],[5,"Felt",55],[5,"DICT_GAS_REFUND_PER_ACCESS",0],[6,"Result",56],[5,"TypeId",57]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAB4ABAAAAAEABAAGABoAAQAiABMA"}],\ ["cairo_native_stress",{"t":"SJFFSNNNNNNONNNONNNNHHNNNNNNNHNNNNNNNNNNNNNNNNNNHHNOOHNNNNNNNNNNNNNN","n":["AOT_CACHE_DIR","GLOBAL_ALLOC","NaiveAotCache","StressTestCommand","UNIQUE_CONTRACT_VALUE","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","cache","command","command_for_update","compile_and_insert","context","deref","deref","deref_mut","deref_mut","directory_get_size","directory_is_empty","drop","drop","fmt","from","from","from_arg_matches","from_arg_matches_mut","generate_starknet_contract","get","group_id","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","main","modify_starknet_contract","new","output","rounds","set_global_subscriber","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","vzip","vzip"],"q":[[0,"cairo_native_stress"],[68,"clap_builder::builder::command"],[69,"cairo_lang_sierra::program"],[70,"cairo_native::ffi"],[71,"cairo_native::executor::aot"],[72,"alloc::sync"],[73,"core::cmp"],[74,"core::hash"],[75,"core::fmt"],[76,"std::io::error"],[77,"std::path"],[78,"core::convert"],[79,"clap_builder::parser::matches::arg_matches"],[80,"clap_builder"],[81,"core::result"],[82,"cairo_lang_sierra::ids"],[83,"core::option"],[84,"clap_builder::util::id"],[85,"cairo_lang_semantic::substitution"],[86,"alloc::boxed"],[87,"alloc::vec"],[88,"alloc::collections::vec_deque"],[89,"cairo_native::context"],[90,"core::any"]],"i":[0,0,0,0,0,20,20,4,20,4,20,4,20,20,4,4,4,20,4,20,0,0,4,20,20,4,20,20,20,0,4,20,4,20,4,4,4,4,4,4,20,20,20,20,20,20,4,20,0,0,4,20,20,0,4,20,4,20,4,20,4,20,4,20,20,20,4,20],"f":"`````{bb}0{{{d{c}}}{{d{e}}}{}{}}0{{{d{fc}}}{{d{fe}}}{}{}}0`{{}b}0{{{d{f{h{c}}}}c{d{j}}l}{{A`{n}}}{AbAdAfAh}}`{Aj{{d{c}}}{}}0{Aj{{d{fc}}}{}}0{c{{An{Al}}}{{Bb{B`}}}}{c{{An{Bd}}}{{Bb{B`}}}}{AjBf}0{{{d{Bh}}{d{fBj}}}Bl}{cc{}}0{{{d{Bn}}}{{Cb{BhC`}}}}{{{d{fBn}}}{{Cb{BhC`}}}}{Cd{{Ch{Cfj}}}}{{{d{{h{c}}}}{d{c}}}{{Cj{{A`{n}}}}}{AbAdAfAh}}{{}{{Cj{Cl}}}}{{}Aj}0{{{d{fc}}{d{f{Cj{e}}}}}{{Cb{Cng}}}{}{}{}}{{{d{fc}}{d{f{Cb{eg}}}}}{{Cb{Cni}}}{}{}{}{}}{{{d{fc}}{d{f{Ch{eg}}}}}{{Cb{Cni}}}{}{}{}{}}{{{d{fc}}{d{f{D`{e}}}}}{{Cb{Cng}}}{}{}{}}{{{d{fc}}{d{f{Db{e}}}}}{{Cb{Cng}}}{}{}{}}{{{d{fc}}{d{f{Dd{e}}}}}{{Cb{Cng}}}{}{}{}}425031{ce{}{}}0{{}Bf}{{jCdCd}j}{{{d{Df}}}{{h{c}}}{AbAdAfAh}}``{{{d{Bh}}}Bf}{c{{Cb{e}}}{}{}}000{{{d{c}}}Dh{}}0{{{d{c}}}{{d{e}}}{}{}}0{{{d{fc}}}{{d{fe}}}{}{}}0{{{d{fBh}}{d{Bn}}}{{Cb{BfC`}}}}{{{d{fBh}}{d{fBn}}}{{Cb{BfC`}}}}::","D":"An","p":[[5,"Command",68],[1,"reference"],[0,"mut"],[5,"NaiveAotCache",0],[5,"Program",69],[6,"OptLevel",70],[5,"AotNativeExecutor",71],[5,"Arc",72],[10,"PartialEq",73],[10,"Eq",73],[10,"Hash",74],[10,"Display",75],[1,"usize"],[1,"u64"],[8,"Result",76],[5,"Path",77],[10,"AsRef",78],[1,"bool"],[1,"unit"],[5,"StressTestCommand",0],[5,"Formatter",75],[8,"Result",75],[5,"ArgMatches",79],[8,"Error",80],[6,"Result",81],[1,"u32"],[5,"FunctionId",82],[1,"tuple"],[6,"Option",83],[5,"Id",84],[6,"RewriteResult",85],[5,"Box",86],[5,"Vec",87],[5,"VecDeque",88],[5,"NativeContext",89],[5,"TypeId",90]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADUACQACAAAABgAIABAABAAWAAMAHAABAB8ADwAxAAAAMwAAADYADgA="}],\ -["cairo_native_test",{"t":"FONNNNNNNNNONNNNNOONNNNNNNNHOOOOONNNNNNNCNPPFGNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNHOHOCNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNHNNNOOHHNNNOONNNNNNNNNNNNNNNNNNNNNNNNOHONNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","augment_args","augment_args_for_update","borrow","borrow_mut","command","command_for_update","deref","deref_mut","drop","filter","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","main","opt_level","path","run_mode","single_file","starknet","try_from","try_into","type_id","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","find_function","fmt","format_for_panic","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","jitvalue_to_felt","opt_level","result_to_runresult","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","display_tests_summary","drop","drop","drop","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","passed","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"cairo_native_test"],[42,"cairo_native_test::utils"],[100,"cairo_native_test::utils::test"],[175,"clap_builder::builder::command"],[176,"core::fmt"],[177,"clap_builder::parser::matches::arg_matches"],[178,"clap_builder"],[179,"core::result"],[180,"clap_builder::util::id"],[181,"core::option"],[182,"alloc::vec"],[183,"cairo_lang_semantic::substitution"],[184,"alloc::boxed"],[185,"alloc::collections::vec_deque"],[186,"anyhow"],[187,"core::any"],[188,"dyn_clone::sealed"],[189,"cairo_lang_sierra::program"],[190,"starknet_types_core::felt"],[191,"alloc::vec::into_iter"],[192,"alloc::string"],[193,"cairo_native::values"],[194,"cairo_native::execution_result"],[195,"cairo_lang_runner"],[196,"clap_builder::builder::possible_value"],[197,"cairo_lang_test_plugin"],[198,"scarb_metadata"],[199,"cairo_lang_test_plugin::test_config"],[200,"cairo_lang_sierra::ids"],[201,"cairo_lang_sierra::extensions::modules::gas"],[202,"cairo_lang_utils::ordered_hash_map"]],"i":[0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6,0,6,22,22,0,0,22,44,22,44,22,22,22,44,22,44,22,44,22,0,22,0,44,22,44,22,44,44,44,44,44,44,22,22,22,22,22,22,44,22,0,44,0,44,0,22,22,44,22,44,22,44,22,44,22,44,22,22,44,22,45,45,0,0,0,34,46,45,34,46,45,34,46,45,34,46,45,0,34,46,45,34,34,0,0,34,46,45,46,34,34,46,45,34,34,34,34,34,34,46,46,46,46,46,46,45,45,45,45,45,45,34,46,45,34,0,46,34,46,45,34,46,45,34,46,45,34,46,45,34,46,45,34,46,45],"f":"``{bb}0{{{d{c}}}{{d{e}}}{}{}}{{{d{fc}}}{{d{fe}}}{}{}}{{}b}0{h{{d{c}}}{}}{h{{d{fc}}}{}}{hj}`{{{d{l}}{d{fn}}}A`}{cc{}}{{{d{Ab}}}{{Af{lAd}}}}{{{d{fAb}}}{{Af{lAd}}}}{{}{{Aj{Ah}}}}``{{}h}{{{d{fc}}{d{f{Al{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Af{eg}}}}}{{Af{Ani}}}{}{}{}{}}{{{d{fc}}{d{f{B`{eg}}}}}{{Af{Ani}}}{}{}{}{}}{{{d{fc}}{d{f{Bb{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Aj{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Bd{e}}}}}{{Af{Ang}}}{}{}{}}{ce{}{}}{{}{{Bf{j}}}}`````{c{{Af{e}}}{}{}}0{{{d{c}}}Bh{}}{{{d{c}}}{{d{e}}}{}{}}{{{d{fc}}}{{d{fe}}}{}{}}{{{d{fl}}{d{Ab}}}{{Af{jAd}}}}{{{d{fl}}{d{fAb}}}{{Af{jAd}}}}`7````{{{d{c}}Bj}j{}}4433{{{d{Bl}}}Bl}{{{d{c}}{d{fe}}}j{}{}}{h{{d{c}}}{}}0{h{{d{fc}}}{}}0{hj}0{{{d{Bn}}{d{C`}}}{{Bf{{d{Cb}}}}}}{{{d{Bl}}{d{fn}}}A`}{{{Cf{Cd}}}Ch}{cc{}}0{{}h}0{{{d{fc}}{d{f{Bb{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Af{eg}}}}}{{Af{Ani}}}{}{}{}{}}{{{d{fc}}{d{f{B`{eg}}}}}{{Af{Ani}}}{}{}{}{}}{{{d{fc}}{d{f{Aj{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Bd{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Al{e}}}}}{{Af{Ang}}}{}{}{}}435210{ce{}{}}0{{{d{Cj}}}{{Al{Cd}}}}`{{{d{Cl}}}{{Bf{Cn}}}}``{{{d{c}}}e{}{}}{{{d{Bl}}}{{Aj{D`}}}}{c{{Af{e}}}{}{}}000{{{d{c}}}Bh{}}0{{{d{c}}}{{d{e}}}{}{}}0{{{d{fc}}}{{d{fe}}}{}{}}0{{}{{d{{Db{Bl}}}}}}99`````222111{h{{d{c}}}{}}00{h{{d{fc}}}{}}00{{{d{Dd}}h}j}{hj}00``{{DfDhDhCh}{{B`{Dfh}}}}{{{d{Dj}}}{{Al{{d{Dl}}}}}}{cc{}}00``{{}h}00{{{d{fc}}{d{f{Bd{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Aj{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Al{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{Bb{e}}}}}{{Af{Ang}}}{}{}{}}{{{d{fc}}{d{f{B`{eg}}}}}{{Af{Ani}}}{}{}{}{}}{{{d{fc}}{d{f{Af{eg}}}}}{{Af{Ani}}}{}{}{}{}}012453203154{ce{}{}}00`{{{Al{{B`{ChDn}}}}Bn{Ef{E`{Ef{EbEd}}}}Eh}{{Bf{Dd}}}}`{c{{Af{e}}}{}{}}00000{{{d{c}}}Bh{}}00{{{d{c}}}{{d{e}}}{}{}}00{{{d{fc}}}{{d{fe}}}{}{}}00555","D":"Df","p":[[5,"Command",175],[1,"reference"],[0,"mut"],[1,"usize"],[1,"unit"],[5,"Args",0],[5,"Formatter",176],[8,"Result",176],[5,"ArgMatches",177],[8,"Error",178],[6,"Result",179],[5,"Id",180],[6,"Option",181],[5,"Vec",182],[6,"RewriteResult",183],[1,"tuple"],[5,"Box",184],[5,"VecDeque",185],[8,"Result",186],[5,"TypeId",187],[5,"Private",188],[6,"RunMode",42],[5,"Program",189],[1,"str"],[8,"Function",189],[5,"Felt",190],[5,"IntoIter",191],[5,"String",192],[6,"JitValue",193],[5,"ExecutionResult",194],[6,"RunResultValue",195],[5,"PossibleValue",196],[1,"slice"],[5,"TestsSummary",100],[5,"TestCompilation",197],[1,"bool"],[5,"PackageMetadata",198],[5,"TargetMetadata",198],[5,"TestConfig",199],[5,"FunctionId",200],[6,"CostTokenType",201],[1,"i32"],[5,"OrderedHashMap",202],[5,"RunArgs",42],[6,"TestStatus",100],[5,"TestResult",100]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAIwAEAAAAAAAAwAIAA0AAAAPAAIAFAAGABwAAAAiABkAPQAAAEEADQBSAAAAVAASAGoACwB3AAQAggAVAJsAAACeABEA"}],\ +["cairo_native_test",{"t":"FONNNNNNNNNONNNNNOONNNNNNNNHOOOOONNNNNNNCNPPFGNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNHOHOCNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNHNNNOOHHNNNOONNNNNNNNNNNNNNNNNNNNNNNNOHONNNNNNNNNNNNNNNNNN","n":["Args","allow_warnings","augment_args","augment_args_for_update","borrow","borrow_mut","command","command_for_update","deref","deref_mut","drop","filter","fmt","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","main","opt_level","path","run_mode","single_file","starknet","try_from","try_into","type_id","upcast","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","find_function","fmt","format_for_panic","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","jitvalue_to_felt","opt_level","result_to_runresult","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","display_tests_summary","drop","drop","drop","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","passed","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"cairo_native_test"],[42,"cairo_native_test::utils"],[100,"cairo_native_test::utils::test"],[175,"clap_builder::builder::command"],[176,"core::fmt"],[177,"clap_builder::parser::matches::arg_matches"],[178,"clap_builder"],[179,"core::result"],[180,"clap_builder::util::id"],[181,"core::option"],[182,"cairo_lang_semantic::substitution"],[183,"alloc::boxed"],[184,"alloc::collections::vec_deque"],[185,"alloc::vec"],[186,"anyhow"],[187,"core::any"],[188,"dyn_clone::sealed"],[189,"cairo_lang_sierra::program"],[190,"starknet_types_core::felt"],[191,"alloc::vec::into_iter"],[192,"alloc::string"],[193,"cairo_native::values"],[194,"cairo_native::execution_result"],[195,"cairo_lang_runner"],[196,"clap_builder::builder::possible_value"],[197,"cairo_lang_test_plugin"],[198,"scarb_metadata"],[199,"cairo_lang_test_plugin::test_config"],[200,"cairo_lang_sierra::ids"],[201,"cairo_lang_sierra::extensions::modules::gas"],[202,"cairo_lang_utils::ordered_hash_map"]],"i":[0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,6,6,6,6,6,6,6,6,6,6,6,6,0,6,22,22,0,0,22,44,22,44,22,22,22,44,22,44,22,44,22,0,22,0,44,22,44,22,44,44,44,44,44,44,22,22,22,22,22,22,44,22,0,44,0,44,0,22,22,44,22,44,22,44,22,44,22,44,22,22,44,22,45,45,0,0,0,34,46,45,34,46,45,34,46,45,34,46,45,0,34,46,45,34,34,0,0,34,46,45,46,34,34,46,45,34,34,34,34,34,34,46,46,46,46,46,46,45,45,45,45,45,45,34,46,45,34,0,46,34,46,45,34,46,45,34,46,45,34,46,45,34,46,45,34,46,45],"f":"``{bb}0{{{d{c}}}{{d{e}}}{}{}}{{{d{fc}}}{{d{fe}}}{}{}}{{}b}0{h{{d{c}}}{}}{h{{d{fc}}}{}}{hj}`{{{d{l}}{d{fn}}}A`}{cc{}}{{{d{Ab}}}{{Af{lAd}}}}{{{d{fAb}}}{{Af{lAd}}}}{{}{{Aj{Ah}}}}``{{}h}{{{d{fc}}{d{f{Af{eg}}}}}{{Af{Ali}}}{}{}{}{}}{{{d{fc}}{d{f{An{eg}}}}}{{Af{Ali}}}{}{}{}{}}{{{d{fc}}{d{f{B`{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Aj{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Bb{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Bd{e}}}}}{{Af{Alg}}}{}{}{}}{ce{}{}}{{}{{Bf{j}}}}`````{c{{Af{e}}}{}{}}0{{{d{c}}}Bh{}}{{{d{c}}}{{d{e}}}{}{}}{{{d{fc}}}{{d{fe}}}{}{}}{{{d{fl}}{d{Ab}}}{{Af{jAd}}}}{{{d{fl}}{d{fAb}}}{{Af{jAd}}}}`7````{{{d{c}}Bj}j{}}4433{{{d{Bl}}}Bl}{{{d{c}}{d{fe}}}j{}{}}{h{{d{c}}}{}}0{h{{d{fc}}}{}}0{hj}0{{{d{Bn}}{d{C`}}}{{Bf{{d{Cb}}}}}}{{{d{Bl}}{d{fn}}}A`}{{{Cf{Cd}}}Ch}{cc{}}0{{}h}0{{{d{fc}}{d{f{B`{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Af{eg}}}}}{{Af{Ali}}}{}{}{}{}}{{{d{fc}}{d{f{An{eg}}}}}{{Af{Ali}}}{}{}{}{}}{{{d{fc}}{d{f{Aj{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Bb{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Bd{e}}}}}{{Af{Alg}}}{}{}{}}435210{ce{}{}}0{{{d{Cj}}}{{Bd{Cd}}}}`{{{d{Cl}}}{{Bf{Cn}}}}``{{{d{c}}}e{}{}}{{{d{Bl}}}{{Aj{D`}}}}{c{{Af{e}}}{}{}}000{{{d{c}}}Bh{}}0{{{d{c}}}{{d{e}}}{}{}}0{{{d{fc}}}{{d{fe}}}{}{}}0{{}{{d{{Db{Bl}}}}}}99`````222111{h{{d{c}}}{}}00{h{{d{fc}}}{}}00{{{d{Dd}}h}j}{hj}00``{{DfDhDhCh}{{An{Dfh}}}}{{{d{Dj}}}{{Bd{{d{Dl}}}}}}{cc{}}00``{{}h}00{{{d{fc}}{d{f{Bb{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Bd{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{Aj{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{B`{e}}}}}{{Af{Alg}}}{}{}{}}{{{d{fc}}{d{f{An{eg}}}}}{{Af{Ali}}}{}{}{}{}}{{{d{fc}}{d{f{Af{eg}}}}}{{Af{Ali}}}{}{}{}{}}123504401235{ce{}{}}00`{{{Bd{{An{ChDn}}}}Bn{Ef{E`{Ef{EbEd}}}}Eh}{{Bf{Dd}}}}`{c{{Af{e}}}{}{}}00000{{{d{c}}}Bh{}}00{{{d{c}}}{{d{e}}}{}{}}00{{{d{fc}}}{{d{fe}}}{}{}}00555","D":"Df","p":[[5,"Command",175],[1,"reference"],[0,"mut"],[1,"usize"],[1,"unit"],[5,"Args",0],[5,"Formatter",176],[8,"Result",176],[5,"ArgMatches",177],[8,"Error",178],[6,"Result",179],[5,"Id",180],[6,"Option",181],[6,"RewriteResult",182],[1,"tuple"],[5,"Box",183],[5,"VecDeque",184],[5,"Vec",185],[8,"Result",186],[5,"TypeId",187],[5,"Private",188],[6,"RunMode",42],[5,"Program",189],[1,"str"],[8,"Function",189],[5,"Felt",190],[5,"IntoIter",191],[5,"String",192],[6,"JitValue",193],[5,"ExecutionResult",194],[6,"RunResultValue",195],[5,"PossibleValue",196],[1,"slice"],[5,"TestsSummary",100],[5,"TestCompilation",197],[1,"bool"],[5,"PackageMetadata",198],[5,"TargetMetadata",198],[5,"TestConfig",199],[5,"FunctionId",200],[6,"CostTokenType",201],[1,"i32"],[5,"OrderedHashMap",202],[5,"RunArgs",42],[6,"TestStatus",100],[5,"TestResult",100]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAIwAEAAAAAAAAwAIAA0AAAAPAAIAFAAGABwAAAAiABkAPQAAAEEADQBSAAAAVAASAGoACwB3AAQAggAVAJsAAACeABEA"}],\ ["scarb_native_dump",{"t":"HCPPFGNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNHOHOCNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNHNNNOOHHNNNOONNNNNNNNNNNNNNNNNNNNNNNNOHONNNNNNNNNNNNNNNNNN","n":["main","utils","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","find_function","fmt","format_for_panic","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","jitvalue_to_felt","opt_level","result_to_runresult","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","display_tests_summary","drop","drop","drop","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","passed","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"scarb_native_dump"],[2,"scarb_native_dump::utils"],[60,"scarb_native_dump::utils::test"],[135,"anyhow"],[136,"dyn_clone::sealed"],[137,"cairo_lang_sierra::program"],[138,"core::fmt"],[139,"starknet_types_core::felt"],[140,"alloc::vec::into_iter"],[141,"alloc::string"],[142,"alloc::vec"],[143,"cairo_lang_semantic::substitution"],[144,"core::result"],[145,"alloc::boxed"],[146,"core::option"],[147,"alloc::collections::vec_deque"],[148,"cairo_native::values"],[149,"cairo_native::execution_result"],[150,"cairo_lang_runner"],[151,"clap_builder::builder::possible_value"],[152,"core::any"],[153,"cairo_lang_test_plugin"],[154,"scarb_metadata"],[155,"cairo_lang_test_plugin::test_config"],[156,"cairo_lang_sierra::ids"],[157,"cairo_lang_sierra::extensions::modules::gas"],[158,"cairo_lang_utils::ordered_hash_map"]],"i":[0,0,6,6,0,0,6,39,6,39,6,6,6,39,6,39,6,39,6,0,6,0,39,6,39,6,39,39,39,39,39,39,6,6,6,6,6,6,39,6,0,39,0,39,0,6,6,39,6,39,6,39,6,39,6,39,6,6,39,6,40,40,0,0,0,29,41,40,29,41,40,29,41,40,29,41,40,0,29,41,40,29,29,0,0,29,41,40,41,29,29,41,40,29,29,29,29,29,29,41,41,41,41,41,41,40,40,40,40,40,40,29,41,40,29,0,41,29,41,40,29,41,40,29,41,40,29,41,40,29,41,40,29,41,40],"f":"{{}{{d{b}}}}`````{{{f{c}}h}b{}}{{{f{c}}}{{f{e}}}{}{}}0{{{f{jc}}}{{f{je}}}{}{}}0{{{f{l}}}l}{{{f{c}}{f{je}}}b{}{}}{n{{f{c}}}{}}0{n{{f{jc}}}{}}0{nb}0{{{f{A`}}{f{Ab}}}{{d{{f{Ad}}}}}}{{{f{l}}{f{jAf}}}Ah}{{{Al{Aj}}}An}{cc{}}0{{}n}0{{{f{jc}}{f{j{B`{e}}}}}{{Bd{Bbg}}}{}{}{}}{{{f{jc}}{f{j{Bd{eg}}}}}{{Bd{Bbi}}}{}{}{}{}}{{{f{jc}}{f{j{Bf{eg}}}}}{{Bd{Bbi}}}{}{}{}{}}{{{f{jc}}{f{j{Bh{e}}}}}{{Bd{Bbg}}}{}{}{}}{{{f{jc}}{f{j{Bj{e}}}}}{{Bd{Bbg}}}{}{}{}}{{{f{jc}}{f{j{Bl{e}}}}}{{Bd{Bbg}}}{}{}{}}210534{ce{}{}}0{{{f{Bn}}}{{B`{Aj}}}}`{{{f{C`}}}{{d{Cb}}}}``{{{f{c}}}e{}{}}{{{f{l}}}{{Bj{Cd}}}}{c{{Bd{e}}}{}{}}000{{{f{c}}}Cf{}}0{{{f{c}}}{{f{e}}}{}{}}0{{{f{jc}}}{{f{je}}}{}{}}0{{}{{f{{Ch{l}}}}}}99`````222111{n{{f{c}}}{}}00{n{{f{jc}}}{}}00{{{f{Cj}}n}b}{nb}00``{{ClCnCnAn}{{Bf{Cln}}}}{{{f{D`}}}{{B`{{f{Db}}}}}}{cc{}}00``{{}n}00{{{f{jc}}{f{j{B`{e}}}}}{{Bd{Bbg}}}{}{}{}}{{{f{jc}}{f{j{Bd{eg}}}}}{{Bd{Bbi}}}{}{}{}{}}{{{f{jc}}{f{j{Bf{eg}}}}}{{Bd{Bbi}}}{}{}{}{}}{{{f{jc}}{f{j{Bh{e}}}}}{{Bd{Bbg}}}{}{}{}}{{{f{jc}}{f{j{Bj{e}}}}}{{Bd{Bbg}}}{}{}{}}{{{f{jc}}{f{j{Bl{e}}}}}{{Bd{Bbg}}}{}{}{}}052341450123{ce{}{}}00`{{{B`{{Bf{AnDd}}}}A`{Dl{Df{Dl{DhDj}}}}Dn}{{d{Cj}}}}`{c{{Bd{e}}}{}{}}00000{{{f{c}}}Cf{}}00{{{f{c}}}{{f{e}}}{}{}}00{{{f{jc}}}{{f{je}}}{}{}}00555","D":"C`","p":[[1,"unit"],[8,"Result",135],[1,"reference"],[5,"Private",136],[0,"mut"],[6,"RunMode",2],[1,"usize"],[5,"Program",137],[1,"str"],[8,"Function",137],[5,"Formatter",138],[8,"Result",138],[5,"Felt",139],[5,"IntoIter",140],[5,"String",141],[5,"Vec",142],[6,"RewriteResult",143],[6,"Result",144],[1,"tuple"],[5,"Box",145],[6,"Option",146],[5,"VecDeque",147],[6,"JitValue",148],[5,"ExecutionResult",149],[6,"RunResultValue",150],[5,"PossibleValue",151],[5,"TypeId",152],[1,"slice"],[5,"TestsSummary",60],[5,"TestCompilation",153],[1,"bool"],[5,"PackageMetadata",154],[5,"TargetMetadata",154],[5,"TestConfig",155],[5,"FunctionId",156],[6,"CostTokenType",157],[1,"i32"],[5,"OrderedHashMap",158],[5,"RunArgs",2],[6,"TestStatus",60],[5,"TestResult",60]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAG8ACwAAAAAAAgARABUAAAAZAA0AKgAAACwAEgBCAAsATwAEAFoAFQBzAAAAdgARAA=="}],\ -["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNHNNNONNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNHNOOOOONNNNNNNNNNNNNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNHOHOCNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNHNNNOOHHNNNOONNNNNNNNNNNNNNNNNNNNNNNNOHONNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","__clone_box","augment_args","augment_args_for_update","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","command","command_for_update","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize_test_compilation","drop","drop","drop","filter","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","main","matches","opt_level","packages_filter","run_mode","seen","test_kind","to_owned","to_owned","to_possible_value","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","vzip","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","find_function","fmt","format_for_panic","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","jitvalue_to_felt","opt_level","result_to_runresult","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","display_tests_summary","drop","drop","drop","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","passed","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"scarb_native_test"],[102,"scarb_native_test::utils"],[160,"scarb_native_test::utils::test"],[235,"dyn_clone::sealed"],[236,"clap_builder::builder::command"],[237,"std::path"],[238,"alloc::string"],[239,"cairo_lang_test_plugin"],[240,"anyhow"],[241,"core::fmt"],[242,"clap_builder::parser::matches::arg_matches"],[243,"clap_builder"],[244,"core::result"],[245,"clap_builder::util::id"],[246,"core::option"],[247,"cairo_lang_semantic::substitution"],[248,"alloc::vec"],[249,"alloc::collections::vec_deque"],[250,"alloc::boxed"],[251,"clap_builder::builder::possible_value"],[252,"core::any"],[253,"cairo_lang_sierra::program"],[254,"starknet_types_core::felt"],[255,"alloc::vec::into_iter"],[256,"cairo_native::values"],[257,"cairo_native::execution_result"],[258,"cairo_lang_runner"],[259,"scarb_metadata"],[260,"cairo_lang_test_plugin::test_config"],[261,"cairo_lang_sierra::ids"],[262,"cairo_lang_sierra::extensions::modules::gas"],[263,"cairo_lang_utils::ordered_hash_map"]],"i":[7,0,7,0,0,7,6,7,6,6,6,7,8,6,7,8,6,7,6,7,6,6,7,8,6,7,8,6,7,8,0,6,7,8,6,6,7,6,7,8,6,6,6,6,6,6,7,8,6,6,6,6,6,6,7,7,7,7,7,7,8,8,8,8,8,8,6,7,8,0,7,6,6,6,8,6,6,7,7,6,7,8,6,7,8,6,7,8,6,7,8,6,7,8,6,6,0,7,8,6,7,8,31,31,0,0,31,47,31,47,31,31,31,47,31,47,31,47,31,0,31,0,47,31,47,31,47,47,47,47,47,47,31,31,31,31,31,31,47,31,0,47,0,47,0,31,31,47,31,47,31,47,31,47,31,47,31,31,47,31,48,48,0,0,0,39,49,48,39,49,48,39,49,48,39,49,48,0,39,49,48,39,39,0,0,39,49,48,49,39,39,49,48,39,39,39,39,39,39,49,49,49,49,49,49,48,48,48,48,48,48,39,49,48,39,0,49,39,49,48,39,49,48,39,49,48,39,49,48,39,49,48,39,49,48],"f":"``````{{{b{c}}d}f{}}0{hh}0{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00{{{b{l}}}l}{{{b{n}}}n}{{{b{c}}{b{je}}}f{}{}}0{{}h}0{{}n}{{}A`}{Ab{{b{c}}}{}}00{Ab{{b{jc}}}{}}00{{{b{Ad}}Af}{{Aj{Ah}}}}{Abf}00`{{{b{l}}{b{jAl}}}An}{{{b{n}}{b{jAl}}}An}{cc{}}00{{{b{B`}}}{{Bd{lBb}}}}{{{b{jB`}}}{{Bd{lBb}}}}{{}{{Bh{Bf}}}}``{{}Ab}00{{{b{jc}}{b{j{Bd{eg}}}}}{{Bd{Bji}}}{}{}{}{}}{{{b{jc}}{b{j{Bl{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bn{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{C`{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Cb{eg}}}}}{{Bd{Bji}}}{}{}{}{}}432105342105{ce{}{}}00{{}{{Aj{f}}}}{{{b{n}}{b{Cd}}}Cf}`````{{{b{c}}}e{}{}}0{{{b{n}}}{{Bh{Ch}}}}{c{{Bd{e}}}{}{}}00000{{{b{c}}}Cj{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00{{{b{jl}}{b{B`}}}{{Bd{fBb}}}}{{{b{jl}}{b{jB`}}}{{Bd{fBb}}}}`{{}{{b{{Cl{n}}}}}}{{{b{jA`}}AfAf}Cf}<<<````{{{b{c}}d}f{}}6655{{{b{Cn}}}Cn}{{{b{c}}{b{je}}}f{}{}}{Ab{{b{c}}}{}}0{Ab{{b{jc}}}{}}0{Abf}0{{{b{D`}}{b{Cd}}}{{Aj{{b{Db}}}}}}{{{b{Cn}}{b{jAl}}}An}{{{Df{Dd}}}Af}{cc{}}0{{}Ab}0{{{b{jc}}{b{j{Bn{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{C`{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Cb{eg}}}}}{{Bd{Bji}}}{}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bl{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Bd{Bji}}}{}{}{}{}}301524{ce{}{}}0{{{b{Dh}}}{{Bl{Dd}}}}`{{{b{Dj}}}{{Aj{Dl}}}}``{{{b{c}}}e{}{}}{{{b{Cn}}}{{Bh{Ch}}}}{c{{Bd{e}}}{}{}}000{{{b{c}}}Cj{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{}{{b{{Cl{Cn}}}}}}99`````222111{Ab{{b{c}}}{}}00{Ab{{b{jc}}}{}}00{{{b{Dn}}Ab}f}{Abf}00``{{AhCfCfAf}{{Cb{AhAb}}}}{{{b{E`}}}{{Bl{{b{Eb}}}}}}{cc{}}00``{{}Ab}00{{{b{jc}}{b{j{Bl{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bn{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{C`{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Cb{eg}}}}}{{Bd{Bji}}}{}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Bd{Bji}}}{}{}{}{}}350142123450{ce{}{}}00`{{{Bl{{Cb{AfEd}}}}D`{El{Ef{El{EhEj}}}}En}{{Aj{Dn}}}}`{c{{Bd{e}}}{}{}}00000{{{b{c}}}Cj{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00555","D":"Dj","p":[[1,"reference"],[5,"Private",235],[1,"unit"],[5,"Command",236],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",237],[5,"String",238],[5,"TestCompilation",239],[8,"Result",240],[5,"Formatter",241],[8,"Result",241],[5,"ArgMatches",242],[8,"Error",243],[6,"Result",244],[5,"Id",245],[6,"Option",246],[6,"RewriteResult",247],[5,"Vec",248],[5,"VecDeque",249],[5,"Box",250],[1,"tuple"],[1,"str"],[1,"bool"],[5,"PossibleValue",251],[5,"TypeId",252],[1,"slice"],[6,"RunMode",102],[5,"Program",253],[8,"Function",253],[5,"Felt",254],[5,"IntoIter",255],[6,"JitValue",256],[5,"ExecutionResult",257],[6,"RunResultValue",258],[5,"TestsSummary",160],[5,"PackageMetadata",259],[5,"TargetMetadata",259],[5,"TestConfig",260],[5,"FunctionId",261],[6,"CostTokenType",262],[1,"i32"],[5,"OrderedHashMap",263],[5,"RunArgs",102],[6,"TestStatus",160],[5,"TestResult",160]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMYAEwAAAAEAAwAfACQAAQApAAIALgAUAEYAAQBJAAAASwAAAE0AFQBkABMAeQAAAH0ADQCOAAAAkAASAKYACwCzAAQAvgAVANcAAADaABEA"}]\ +["scarb_native_test",{"t":"PFPFGPNNNNNNNNNNNNNNNNNNNNNNNNHNNNONNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNHNOOOOONNNNNNNNNNNNNNNNNNNNCNNNNNPPFGNNNNNNNNNNNNNHNHNNNNNNNNNNNNNNNNNNHOHOCNNNNNNNNNNNNNNNPPFGFNNNNNNNNNNNNHNNNOOHHNNNOONNNNNNNNNNNNNNNNNNNNNNNNOHONNNNNNNNNNNNNNNNNN","n":["All","Args","Integration","TargetGroupDeduplicator","TestKind","Unit","__clone_box","__clone_box","augment_args","augment_args_for_update","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","command","command_for_update","default","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","deserialize_test_compilation","drop","drop","drop","filter","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches_mut","group_id","ignored","include_ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","main","matches","opt_level","packages_filter","run_mode","seen","test_kind","to_owned","to_owned","to_possible_value","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","update_from_arg_matches","update_from_arg_matches_mut","utils","value_variants","visit","vzip","vzip","vzip","Aot","Jit","RunArgs","RunMode","__clone_box","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","deref","deref","deref_mut","deref_mut","drop","drop","find_function","fmt","format_for_panic","from","from","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","jitvalue_to_felt","opt_level","result_to_runresult","run_mode","test","to_owned","to_possible_value","try_from","try_from","try_into","try_into","type_id","type_id","upcast","upcast","upcast_mut","upcast_mut","value_variants","vzip","vzip","Fail","Success","TestResult","TestStatus","TestsSummary","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","deref","deref","deref","deref_mut","deref_mut","deref_mut","display_tests_summary","drop","drop","drop","failed","failed_run_results","filter_test_cases","find_testable_targets","from","from","from","gas_usage","ignored","init","init","init","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","internal_rewrite","into","into","into","passed","run_tests","status","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","upcast","upcast","upcast","upcast_mut","upcast_mut","upcast_mut","vzip","vzip","vzip"],"q":[[0,"scarb_native_test"],[102,"scarb_native_test::utils"],[160,"scarb_native_test::utils::test"],[235,"dyn_clone::sealed"],[236,"clap_builder::builder::command"],[237,"std::path"],[238,"alloc::string"],[239,"cairo_lang_test_plugin"],[240,"anyhow"],[241,"core::fmt"],[242,"clap_builder::parser::matches::arg_matches"],[243,"clap_builder"],[244,"core::result"],[245,"clap_builder::util::id"],[246,"core::option"],[247,"cairo_lang_semantic::substitution"],[248,"alloc::vec"],[249,"alloc::collections::vec_deque"],[250,"alloc::boxed"],[251,"clap_builder::builder::possible_value"],[252,"core::any"],[253,"cairo_lang_sierra::program"],[254,"starknet_types_core::felt"],[255,"alloc::vec::into_iter"],[256,"cairo_native::values"],[257,"cairo_native::execution_result"],[258,"cairo_lang_runner"],[259,"scarb_metadata"],[260,"cairo_lang_test_plugin::test_config"],[261,"cairo_lang_sierra::ids"],[262,"cairo_lang_sierra::extensions::modules::gas"],[263,"cairo_lang_utils::ordered_hash_map"]],"i":[7,0,7,0,0,7,6,7,6,6,6,7,8,6,7,8,6,7,6,7,6,6,7,8,6,7,8,6,7,8,0,6,7,8,6,6,7,6,7,8,6,6,6,6,6,6,7,8,6,6,6,6,6,6,7,7,7,7,7,7,8,8,8,8,8,8,6,7,8,0,7,6,6,6,8,6,6,7,7,6,7,8,6,7,8,6,7,8,6,7,8,6,7,8,6,6,0,7,8,6,7,8,31,31,0,0,31,47,31,47,31,31,31,47,31,47,31,47,31,0,31,0,47,31,47,31,47,47,47,47,47,47,31,31,31,31,31,31,47,31,0,47,0,47,0,31,31,47,31,47,31,47,31,47,31,47,31,31,47,31,48,48,0,0,0,39,49,48,39,49,48,39,49,48,39,49,48,0,39,49,48,39,39,0,0,39,49,48,49,39,39,49,48,39,39,39,39,39,39,49,49,49,49,49,49,48,48,48,48,48,48,39,49,48,39,0,49,39,49,48,39,49,48,39,49,48,39,49,48,39,49,48,39,49,48],"f":"``````{{{b{c}}d}f{}}0{hh}0{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00{{{b{l}}}l}{{{b{n}}}n}{{{b{c}}{b{je}}}f{}{}}0{{}h}0{{}n}{{}A`}{Ab{{b{c}}}{}}00{Ab{{b{jc}}}{}}00{{{b{Ad}}Af}{{Aj{Ah}}}}{Abf}00`{{{b{l}}{b{jAl}}}An}{{{b{n}}{b{jAl}}}An}{cc{}}00{{{b{B`}}}{{Bd{lBb}}}}{{{b{jB`}}}{{Bd{lBb}}}}{{}{{Bh{Bf}}}}``{{}Ab}00{{{b{jc}}{b{j{Bh{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Bd{Bji}}}{}{}{}{}}{{{b{jc}}{b{j{Bl{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bn{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{C`{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Cb{eg}}}}}{{Bd{Bji}}}{}{}{}{}}043251523401{ce{}{}}00{{}{{Aj{f}}}}{{{b{n}}{b{Cd}}}Cf}`````{{{b{c}}}e{}{}}0{{{b{n}}}{{Bh{Ch}}}}{c{{Bd{e}}}{}{}}00000{{{b{c}}}Cj{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00{{{b{jl}}{b{B`}}}{{Bd{fBb}}}}{{{b{jl}}{b{jB`}}}{{Bd{fBb}}}}`{{}{{b{{Cl{n}}}}}}{{{b{jA`}}AfAf}Cf}<<<````{{{b{c}}d}f{}}6655{{{b{Cn}}}Cn}{{{b{c}}{b{je}}}f{}{}}{Ab{{b{c}}}{}}0{Ab{{b{jc}}}{}}0{Abf}0{{{b{D`}}{b{Cd}}}{{Aj{{b{Db}}}}}}{{{b{Cn}}{b{jAl}}}An}{{{Df{Dd}}}Af}{cc{}}0{{}Ab}0{{{b{jc}}{b{j{Bn{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{C`{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Cb{eg}}}}}{{Bd{Bji}}}{}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bl{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Bd{Bji}}}{}{}{}{}}301524{ce{}{}}0{{{b{Dh}}}{{Bl{Dd}}}}`{{{b{Dj}}}{{Aj{Dl}}}}``{{{b{c}}}e{}{}}{{{b{Cn}}}{{Bh{Ch}}}}{c{{Bd{e}}}{}{}}000{{{b{c}}}Cj{}}0{{{b{c}}}{{b{e}}}{}{}}0{{{b{jc}}}{{b{je}}}{}{}}0{{}{{b{{Cl{Cn}}}}}}99`````222111{Ab{{b{c}}}{}}00{Ab{{b{jc}}}{}}00{{{b{Dn}}Ab}f}{Abf}00``{{AhCfCfAf}{{Cb{AhAb}}}}{{{b{E`}}}{{Bl{{b{Eb}}}}}}{cc{}}00``{{}Ab}00{{{b{jc}}{b{j{Bl{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bn{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Bh{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{C`{e}}}}}{{Bd{Bjg}}}{}{}{}}{{{b{jc}}{b{j{Cb{eg}}}}}{{Bd{Bji}}}{}{}{}{}}{{{b{jc}}{b{j{Bd{eg}}}}}{{Bd{Bji}}}{}{}{}{}}350142123450{ce{}{}}00`{{{Bl{{Cb{AfEd}}}}D`{El{Ef{El{EhEj}}}}En}{{Aj{Dn}}}}`{c{{Bd{e}}}{}{}}00000{{{b{c}}}Cj{}}00{{{b{c}}}{{b{e}}}{}{}}00{{{b{jc}}}{{b{je}}}{}{}}00555","D":"Dj","p":[[1,"reference"],[5,"Private",235],[1,"unit"],[5,"Command",236],[0,"mut"],[5,"Args",0],[6,"TestKind",0],[5,"TargetGroupDeduplicator",0],[1,"usize"],[5,"Path",237],[5,"String",238],[5,"TestCompilation",239],[8,"Result",240],[5,"Formatter",241],[8,"Result",241],[5,"ArgMatches",242],[8,"Error",243],[6,"Result",244],[5,"Id",245],[6,"Option",246],[6,"RewriteResult",247],[5,"Vec",248],[5,"VecDeque",249],[5,"Box",250],[1,"tuple"],[1,"str"],[1,"bool"],[5,"PossibleValue",251],[5,"TypeId",252],[1,"slice"],[6,"RunMode",102],[5,"Program",253],[8,"Function",253],[5,"Felt",254],[5,"IntoIter",255],[6,"JitValue",256],[5,"ExecutionResult",257],[6,"RunResultValue",258],[5,"TestsSummary",160],[5,"PackageMetadata",259],[5,"TargetMetadata",259],[5,"TestConfig",260],[5,"FunctionId",261],[6,"CostTokenType",262],[1,"i32"],[5,"OrderedHashMap",263],[5,"RunArgs",102],[6,"TestStatus",160],[5,"TestResult",160]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMYAEwAAAAEAAwAfACQAAQApAAIALgAUAEYAAQBJAAAASwAAAE0AFQBkABMAeQAAAH0ADQCOAAAAkAASAKYACwCzAAQAvgAVANcAAADaABEA"}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/search.desc/cairo_native/cairo_native-desc-0-.js b/search.desc/cairo_native/cairo_native-desc-0-.js index b449b0e7d..c2c0ce041 100644 --- a/search.desc/cairo_native/cairo_native-desc-0-.js +++ b/search.desc/cairo_native/cairo_native-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("cairo_native", 0, "Cairo Sierra to MLIR compiler and JIT engine\nA error from the LLVM API.\nOptimization levels.\nRun the compiler on a program. The compiled program is …\nVarious error types used thorough the crate.\nExecutors\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCompiler libfunc infrastructure\nCode generation metadata\nConverts a MLIR module to a compile object, that can be …\nLinks the passed object into a shared library, stored on …\nStarknet related code for cairo_native\nA (somewhat) usable implementation of the starknet syscall …\nCompiler type infrastructure\nVarious utilities\nJIT params and return values de/serialization\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nA Cache for programs with the same context.\nReturns the argument unchanged.\nCalls U::from(self).\nContext of IRs, dialects and passes for Cairo programs …\nCompiles a sierra program into MLIR and then lowers to …\nReturns the argument unchanged.\nInitialize an MLIR context.\nCalls U::from(self).\nContains the error value\nContains the success value\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nStarknet contract execution result.\nThe result of the JIT execution.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConvert a [ExecuteResult] to a [NativeExecutionResult]\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA MLIR JIT execution engine in the context of Cairo Native.\nThe cairo native executor, either AOT or JIT based.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nUtility to convert a NativeModule into an AotNativeExecutor…\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nA libfunc branching target.\nError type returned by this trait’s methods.\nA block within the current libfunc.\nGeneration of MLIR operations from their Sierra …\nHelper struct which contains logic generation for extra …\nA statement’s branch target by its index.\nAP tracking libfuncs\nInserts a new block after all the current libfunc’s …\nArray libfuncs\nBitwise libfuncs\nBoolean libfuncs\nBounded int libfuncs\nBox libfuncs\nCreates an unconditional branching operation out of the …\nBranch alignment libfunc\nGenerate the MLIR operations.\nBytes31-related libfuncs\nCasting libfuncs\nCircuit libfuncs\nCreates a conditional binary branching operation, …\nConst libfuncs\nBranch alignment libfunc\nDebug libfuncs\nAP tracking libfuncs\nState value duplication libfunc\nElliptic curve libfuncs\nEnum-related libfuncs\nFelt-related libfuncs\nFelt dictionary libfuncs\nFelt dictionary entry libfuncs\nReturns the argument unchanged.\nReturns the argument unchanged.\nFunction call libfuncs\nGas management libfuncs\nReturn the initialization block.\nCalls U::from(self).\nCalls U::from(self).\nReturn the target function if the statement is a function …\nMemory-related libfuncs\nNullable libfuncs\nPedersen hashing libfuncs\nPoseidon hashing libfuncs\ni128-related libfuncs\ni16-related libfuncs\ni32-related libfuncs\ni64-related libfuncs\ni8-related libfuncs\nSnapshot taking libfuncs\nStarknet libfuncs\nStruct-related libfuncs\nCreates a conditional multi-branching operation, …\nu128-related libfuncs\nu16-related libfuncs\nu256-related libfuncs\nu32-related libfuncs\nu512-related libfuncs\nu64-related libfuncs\nu8-related libfuncs\nUnconditional jump libfunc\nNon-zero unwrapping libfuncs\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the disable_ap_tracking …\nGenerate MLIR operations for the enable_ap_tracking …\nGenerate MLIR operations for the revoke_ap_tracking. …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the array_append libfunc.\nGenerate MLIR operations for the array_get libfunc.\nGenerate MLIR operations for the array_len libfunc.\nGenerate MLIR operations for the array_new libfunc.\nGenerate MLIR operations for the array_pop_front libfunc.\nGenerate MLIR operations for the array_pop_front_consume …\nGenerate MLIR operations for the array_slice libfunc.\nGenerate MLIR operations for the array_snapshot_pop_back …\nGenerate MLIR operations for the array_snapshot_pop_front …\nGenerate MLIR operations for the span_from_tuple libfunc.\nGenerate MLIR operations for the bitwise libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bool_not_impl libfunc.\nGenerate MLIR operations for the unbox libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the into_box libfunc.\nGenerate MLIR operations for the unbox libfunc.\nGenerate MLIR operations for the branch_align libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bytes31_const libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the bytes31_to_felt252 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the downcast libfunc.\nGenerate MLIR operations for the upcast libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the const_as_box libfunc.\nGenerate MLIR operations for the const_as_immediate …\nGenerate MLIR operations for the coupon libfuncs. In …\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the drop libfunc.\nGenerate MLIR operations for the dup libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the ec_point_is_zero libfunc.\nGenerate MLIR operations for the ec_neg libfunc.\nGenerate MLIR operations for the ec_point_from_x_nz …\nGenerate MLIR operations for the ec_state_add libfunc.\nGenerate MLIR operations for the ec_state_add_mul libfunc.\nGenerate MLIR operations for the ec_state_try_finalize_nz …\nGenerate MLIR operations for the ec_state_init libfunc.\nGenerate MLIR operations for the ec_point_try_new_nz …\nGenerate MLIR operations for the ec_point_unwrap libfunc.\nGenerate MLIR operations for the ec_point_zero libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the enum_from_bounded_int …\nGenerate MLIR operations for the enum_init libfunc.\nGenerate MLIR operations for the enum_match libfunc.\nGenerate MLIR operations for the enum_snapshot_match …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the following libfuncs:\nGenerate MLIR operations for the felt252_const libfunc.\nGenerate MLIR operations for the felt252_is_zero libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the function_call libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the withdraw_gas_all libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the withdraw_gas libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the alloc_local libfunc.\nGenerate MLIR operations for the finalize_locals libfunc.\nGenerate MLIR operations for the rename libfunc.\nGenerate MLIR operations for the store_local libfunc.\nGenerate MLIR operations for the store_temp libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i128_const libfunc.\nGenerate MLIR operations for the i128_diff libfunc.\nGenerate MLIR operations for the i128_eq libfunc.\nGenerate MLIR operations for the i128_from_felt252 libfunc.\nGenerate MLIR operations for the i128_is_zero libfunc.\nGenerate MLIR operations for the i128 operation libfunc.\nGenerate MLIR operations for the i128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i16_const libfunc.\nGenerate MLIR operations for the i16_diff libfunc.\nGenerate MLIR operations for the i16_eq libfunc.\nGenerate MLIR operations for the i16_from_felt252 libfunc.\nGenerate MLIR operations for the i16_is_zero libfunc.\nGenerate MLIR operations for the i16 operation libfunc.\nGenerate MLIR operations for the i16_to_felt252 libfunc.\nGenerate MLIR operations for the i16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i32_const libfunc.\nGenerate MLIR operations for the i32_diff libfunc.\nGenerate MLIR operations for the i32_eq libfunc.\nGenerate MLIR operations for the i32_from_felt252 libfunc.\nGenerate MLIR operations for the i32_is_zero libfunc.\nGenerate MLIR operations for the i32 operation libfunc.\nGenerate MLIR operations for the i32_to_felt252 libfunc.\nGenerate MLIR operations for the i32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i64_const libfunc.\nGenerate MLIR operations for the i64_diff libfunc.\nGenerate MLIR operations for the i64_eq libfunc.\nGenerate MLIR operations for the i64_from_felt252 libfunc.\nGenerate MLIR operations for the i64_is_zero libfunc.\nGenerate MLIR operations for the i64 operation libfunc.\nGenerate MLIR operations for the i64_to_felt252 libfunc.\nGenerate MLIR operations for the i64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i8_const libfunc.\nGenerate MLIR operations for the i8_diff libfunc.\nGenerate MLIR operations for the i8_eq libfunc.\nGenerate MLIR operations for the i8_from_felt252 libfunc.\nGenerate MLIR operations for the i8_is_zero libfunc.\nGenerate MLIR operations for the i8 operation libfunc.\nGenerate MLIR operations for the i8_to_felt252 libfunc.\nGenerate MLIR operations for the i8_widemul libfunc.\nGenerate MLIR operations for the snapshot_take libfunc.\nSelect and call the correct libfunc builder function from …\nFrom the corelib\nFrom the corelib\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the struct_construct libfunc.\nGenerate MLIR operations for the struct_deconstruct …\nGenerate MLIR operations for the struct_construct libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u128_byte_reverse libfunc.\nGenerate MLIR operations for the u128_const libfunc.\nGenerate MLIR operations for the u128_safe_divmod libfunc.\nGenerate MLIR operations for the u128_equal libfunc.\nGenerate MLIR operations for the u128s_from_felt252 …\nGenerate MLIR operations for the u128_guarantee_mul …\nGenerate MLIR operations for the u128_guarantee_verify …\nGenerate MLIR operations for the u128_is_zero libfunc.\nGenerate MLIR operations for the u128_add and u128_sub …\nGenerate MLIR operations for the u128_sqrt libfunc.\nGenerate MLIR operations for the u128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u16_const libfunc.\nGenerate MLIR operations for the u16_safe_divmod libfunc.\nGenerate MLIR operations for the u16_eq libfunc.\nGenerate MLIR operations for the u16_from_felt252 libfunc.\nGenerate MLIR operations for the u16_is_zero libfunc.\nGenerate MLIR operations for the u16 operation libfunc.\nGenerate MLIR operations for the u16_sqrt libfunc.\nGenerate MLIR operations for the u16_to_felt252 libfunc.\nGenerate MLIR operations for the u16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u256_safe_divmod libfunc.\nGenerate MLIR operations for the u256_is_zero libfunc.\nGenerate MLIR operations for the u256_sqrt libfunc.\nGenerate MLIR operations for the u256_guarantee_inv_mod_n …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u32_const libfunc.\nGenerate MLIR operations for the u32_safe_divmod libfunc.\nGenerate MLIR operations for the u32_eq libfunc.\nGenerate MLIR operations for the u32_from_felt252 libfunc.\nGenerate MLIR operations for the u32_is_zero libfunc.\nGenerate MLIR operations for the u32 operation libfunc.\nGenerate MLIR operations for the u32_sqrt libfunc.\nGenerate MLIR operations for the u32_to_felt252 libfunc.\nGenerate MLIR operations for the u32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u512_safe_divmod_by_u256 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u64_const libfunc.\nGenerate MLIR operations for the u64_safe_divmod libfunc.\nGenerate MLIR operations for the u64_eq libfunc.\nGenerate MLIR operations for the u64_from_felt252 libfunc.\nGenerate MLIR operations for the u64_is_zero libfunc.\nGenerate MLIR operations for the u64 operation libfunc.\nGenerate MLIR operations for the u64_sqrt libfunc.\nGenerate MLIR operations for the u64_to_felt252 libfunc.\nGenerate MLIR operations for the u64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u8_const libfunc.\nGenerate MLIR operations for the u8_safe_divmod libfunc.\nGenerate MLIR operations for the u8_eq libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the u8_is_zero libfunc.\nGenerate MLIR operations for the u8 operation libfunc.\nGenerate MLIR operations for the u8_sqrt libfunc.\nGenerate MLIR operations for the u8_to_felt252 libfunc.\nGenerate MLIR operations for the u8_widemul libfunc.\nGenerate MLIR operations for the jump libfunc.\nGenerate MLIR operations for the unwrap_non_zero libfunc.\nMetadata container.\nDebug utilities\nReturns the argument unchanged.\nRetrieve a reference to some metadata.\nRetrieve a mutable reference to some metadata.\nInsert some metadata and return a mutable reference.\nCalls U::from(self).\nCreate an empty metadata container.\nFinite field prime modulo\nMemory allocation external bindings\nRemove some metadata and return its last value.\nRuntime library bindings\nTail recursion information\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nPrints the given &str.\nDump a memory region at runtime.\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nHolds global gas info.\nError for metadata calculations.\nConfiguration for metadata computation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the initial value for the gas counter. If …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nPrime modulo number metadata.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the metadata from the prime number.\nReturn the stored prime number.\nMemory allocation realloc metadata.\nCalls the free function.\nReturns the argument unchanged.\nCalls U::from(self).\nRegister the bindings to the realloc C function and return …\nCalls the realloc function, returns a op with 1 result: an …\nRuntime library bindings metadata.\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_gas_refund() …\nRegister if necessary, then invoke the dict_get() function.\nRegister if necessary, then invoke the dict_insert() …\nRegister if necessary, then invoke the dict_clone() …\nReturns the argument unchanged.\nCalls U::from(self).\nRegister if necessary, then invoke the debug::print() …\nRegister if necessary, then invoke the ec_point_from_x_nz()…\nRegister if necessary, then invoke the …\nRegister if necessary, then invoke the ec_state_add() …\nRegister if necessary, then invoke the ec_state_add_mul() …\nRegister if necessary, then invoke the ec_state_init() …\nRegister if necessary, then invoke the poseidon() function.\nRegister if necessary, then invoke the pedersen() function.\nRegister if necessary, then invoke the vtable_cheatcode() …\nReturns the argument unchanged.\nCalls U::from(self).\nThe tail recursion metadata.\nReturn the current depth counter value.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the tail recursion meta.\nReturn the recursion target block.\nReturn the return target block, if set.\nSet the return target block.\nA MLIR module in the context of Cairo Native. It is …\nReturns the argument unchanged.\nRetrieve a reference to some stored metadata.\nInsert some metadata for the program execution and return …\nCalls U::from(self).\nRemoves metadata\nContains the error value\nBinary representation of a Felt (in MLIR).\nContains the success value\nBinary representation of a u256 (in MLIR).\nRuntime function that calls the cheatcode syscall\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nEvent emitted by the emit_event syscall.\nA (somewhat) usable implementation of the starknet syscall …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nError type returned by this trait’s methods.\nGeneration of MLIR types from their Sierra counterparts.\nArray type\nBitwise type\nBoundedInt type\nBox type\nBuild the MLIR type.\nBuiltin costs type\nbytes31 type\nCircuit type\nCoupon type.\nElliptic curve operation type\nElliptic curve point type\nElliptic curve state type\nEnum type\nfelt252 type\nFelt dictionary type\nFelt dictionary entry type\nReturns the argument unchanged.\nGas builtin type\nIf the type is an integer, return its value range.\nCalls U::from(self).\nReturn whether the type is a BoundedInt<>, either directly …\nReturn whether the type is a builtin.\nReturn whether the type requires a return pointer when …\nReturn whether the type is a felt252, either directly or …\nWhether the layout should be allocated in memory (either …\nReturn whether the Sierra type resolves to a zero-sized …\nGenerate the layout of the MLIR type.\nNon-zero type\nNullable type\nPedersen type\nPoseidon type\nBuiltin costs type\nSegment arena type\nSnapshot type\nSquashed Felt dictionary type\nStarknet types\nStruct type\nUnsigned 128-bit integer type\nUnsigned 128-bit multiplication guarantee type\nUnsigned 16-bit integer type\nUnsigned 32-bit integer type\nUnsigned 64-bit integer type\nUnsigned 8-bit integer type\nUninitialized type\nIf the type is a enum type, return all possible variants.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nAn MLIR type with its memory layout.\nBuild the MLIR type.\nExtract layout for the default enum representation, its …\nExtract the type and layout for the default enum …\nThe felt252 prime modulo.\nBuild the MLIR type.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nCompile a cairo program found at the given path to sierra.\nCreates the execution engine, with all symbols registered.\nReturn a type that calls a closure when formatted using …\nParse any type that can be a bigint to a felt that can be …\nParse a short string into a felt that can be used in the …\nParse a numeric string into felt, wrapping negatives …\nReturns the given entry point if present.\nReturns the given entry point if present.\nGiven a string representing a function name, searches in …\nReturns the argument unchanged.\nGenerate a function name.\nReturn the layout for an integer of arbitrary width.\nCalls U::from(self).\nCopied from std.\nWidth in bits when the offset is not necessarily zero …\nEdit: Copied from the std lib.\nWidth in bits when the offset is zero (aka. the natural …\nall elements need to be same type\nA JitValue is a value that can be passed to the JIT engine …\nUsed as return value for Nullables that are null.\nString to felt\nReturns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file +searchState.loadedDescShard("cairo_native", 0, "⚡ Cairo Native ⚡\nA error from the LLVM API.\nOptimization levels.\nRun the compiler on a program. The compiled program is …\nCairo Native Compiler and Execution Engine\nVarious error types used thorough the crate.\nExecutors\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCompiler libfunc infrastructure\nCode generation metadata\nConverts a MLIR module to a compile object, that can be …\nLinks the passed object into a shared library, stored on …\nStarknet related code for cairo_native\nA (somewhat) usable implementation of the starknet syscall …\nCompiler type infrastructure\nVarious utilities\nJIT params and return values de/serialization\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nA Cache for programs with the same context.\nReturns the argument unchanged.\nCalls U::from(self).\nContext of IRs, dialects and passes for Cairo programs …\nCompiles a sierra program into MLIR and then lowers to …\nReturns the argument unchanged.\nInitialize an MLIR context.\nCalls U::from(self).\nOverview\nCompilation Walkthrough\nExecution Walkthrough\nGas and Builtins Accounting\nImplementing Libfuncs\nDebugging\nSierra Resources\nMLIR Resources\nContains the error value\nContains the success value\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nStarknet contract execution result.\nThe result of the JIT execution.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConvert an ExecutionResult into a ContractExecutionResult\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nA MLIR JIT execution engine in the context of Cairo Native.\nThe cairo native executor, either AOT or JIT based.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nUtility to convert a NativeModule into an AotNativeExecutor…\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nExecute a program with the given params.\nInvoke the given function by its function id, with the …\nA libfunc branching target.\nError type returned by this trait’s methods.\nA block within the current libfunc.\nGeneration of MLIR operations from their Sierra …\nHelper struct which contains logic generation for extra …\nA statement’s branch target by its index.\nAP tracking libfuncs\nInserts a new block after all the current libfunc’s …\nArray libfuncs\nBitwise libfuncs\nBoolean libfuncs\nBounded int libfuncs\nBox libfuncs\nCreates an unconditional branching operation out of the …\nBranch alignment libfunc\nGenerate the MLIR operations.\nBytes31-related libfuncs\nCasting libfuncs\nCircuit libfuncs\nCreates a conditional binary branching operation, …\nConst libfuncs\nBranch alignment libfunc\nDebug libfuncs\nAP tracking libfuncs\nState value duplication libfunc\nElliptic curve libfuncs\nEnum-related libfuncs\nFelt-related libfuncs\nFelt dictionary libfuncs\nFelt dictionary entry libfuncs\nReturns the argument unchanged.\nReturns the argument unchanged.\nFunction call libfuncs\nGas management libfuncs\nReturn the initialization block.\nCalls U::from(self).\nCalls U::from(self).\nReturn the target function if the statement is a function …\nMemory-related libfuncs\nNullable libfuncs\nPedersen hashing libfuncs\nPoseidon hashing libfuncs\ni128-related libfuncs\ni16-related libfuncs\ni32-related libfuncs\ni64-related libfuncs\ni8-related libfuncs\nSnapshot taking libfuncs\nStarknet libfuncs\nStruct-related libfuncs\nCreates a conditional multi-branching operation, …\nu128-related libfuncs\nu16-related libfuncs\nu256-related libfuncs\nu32-related libfuncs\nu512-related libfuncs\nu64-related libfuncs\nu8-related libfuncs\nUnconditional jump libfunc\nNon-zero unwrapping libfuncs\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the disable_ap_tracking …\nGenerate MLIR operations for the enable_ap_tracking …\nGenerate MLIR operations for the revoke_ap_tracking. …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the array_append libfunc.\nGenerate MLIR operations for the array_get libfunc.\nGenerate MLIR operations for the array_len libfunc.\nGenerate MLIR operations for the array_new libfunc.\nGenerate MLIR operations for the array_pop_front libfunc.\nGenerate MLIR operations for the array_pop_front_consume …\nGenerate MLIR operations for the array_slice libfunc.\nGenerate MLIR operations for the array_snapshot_pop_back …\nGenerate MLIR operations for the array_snapshot_pop_front …\nGenerate MLIR operations for the span_from_tuple libfunc.\nGenerate MLIR operations for the bitwise libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bool_not_impl libfunc.\nGenerate MLIR operations for the unbox libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the into_box libfunc.\nGenerate MLIR operations for the unbox libfunc.\nGenerate MLIR operations for the branch_align libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the bytes31_const libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the bytes31_to_felt252 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the downcast libfunc.\nGenerate MLIR operations for the upcast libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the const_as_box libfunc.\nGenerate MLIR operations for the const_as_immediate …\nGenerate MLIR operations for the coupon libfuncs. In …\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the coupon libfunc.\nGenerate MLIR operations for the drop libfunc.\nGenerate MLIR operations for the dup libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the ec_point_is_zero libfunc.\nGenerate MLIR operations for the ec_neg libfunc.\nGenerate MLIR operations for the ec_point_from_x_nz …\nGenerate MLIR operations for the ec_state_add libfunc.\nGenerate MLIR operations for the ec_state_add_mul libfunc.\nGenerate MLIR operations for the ec_state_try_finalize_nz …\nGenerate MLIR operations for the ec_state_init libfunc.\nGenerate MLIR operations for the ec_point_try_new_nz …\nGenerate MLIR operations for the ec_point_unwrap libfunc.\nGenerate MLIR operations for the ec_point_zero libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the enum_from_bounded_int …\nGenerate MLIR operations for the enum_init libfunc.\nGenerate MLIR operations for the enum_match libfunc.\nGenerate MLIR operations for the enum_snapshot_match …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the following libfuncs:\nGenerate MLIR operations for the felt252_const libfunc.\nGenerate MLIR operations for the felt252_is_zero libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the function_call libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the withdraw_gas_all libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the get_builtin_costs libfunc.\nGenerate MLIR operations for the withdraw_gas libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the alloc_local libfunc.\nGenerate MLIR operations for the finalize_locals libfunc.\nGenerate MLIR operations for the rename libfunc.\nGenerate MLIR operations for the store_local libfunc.\nGenerate MLIR operations for the store_temp libfunc.\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i128_const libfunc.\nGenerate MLIR operations for the i128_diff libfunc.\nGenerate MLIR operations for the i128_eq libfunc.\nGenerate MLIR operations for the i128_from_felt252 libfunc.\nGenerate MLIR operations for the i128_is_zero libfunc.\nGenerate MLIR operations for the i128 operation libfunc.\nGenerate MLIR operations for the i128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i16_const libfunc.\nGenerate MLIR operations for the i16_diff libfunc.\nGenerate MLIR operations for the i16_eq libfunc.\nGenerate MLIR operations for the i16_from_felt252 libfunc.\nGenerate MLIR operations for the i16_is_zero libfunc.\nGenerate MLIR operations for the i16 operation libfunc.\nGenerate MLIR operations for the i16_to_felt252 libfunc.\nGenerate MLIR operations for the i16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i32_const libfunc.\nGenerate MLIR operations for the i32_diff libfunc.\nGenerate MLIR operations for the i32_eq libfunc.\nGenerate MLIR operations for the i32_from_felt252 libfunc.\nGenerate MLIR operations for the i32_is_zero libfunc.\nGenerate MLIR operations for the i32 operation libfunc.\nGenerate MLIR operations for the i32_to_felt252 libfunc.\nGenerate MLIR operations for the i32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i64_const libfunc.\nGenerate MLIR operations for the i64_diff libfunc.\nGenerate MLIR operations for the i64_eq libfunc.\nGenerate MLIR operations for the i64_from_felt252 libfunc.\nGenerate MLIR operations for the i64_is_zero libfunc.\nGenerate MLIR operations for the i64 operation libfunc.\nGenerate MLIR operations for the i64_to_felt252 libfunc.\nGenerate MLIR operations for the i64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the i8_const libfunc.\nGenerate MLIR operations for the i8_diff libfunc.\nGenerate MLIR operations for the i8_eq libfunc.\nGenerate MLIR operations for the i8_from_felt252 libfunc.\nGenerate MLIR operations for the i8_is_zero libfunc.\nGenerate MLIR operations for the i8 operation libfunc.\nGenerate MLIR operations for the i8_to_felt252 libfunc.\nGenerate MLIR operations for the i8_widemul libfunc.\nGenerate MLIR operations for the snapshot_take libfunc.\nSelect and call the correct libfunc builder function from …\nFrom the corelib\nFrom the corelib\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the struct_construct libfunc.\nGenerate MLIR operations for the struct_deconstruct …\nGenerate MLIR operations for the struct_construct libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u128_byte_reverse libfunc.\nGenerate MLIR operations for the u128_const libfunc.\nGenerate MLIR operations for the u128_safe_divmod libfunc.\nGenerate MLIR operations for the u128_equal libfunc.\nGenerate MLIR operations for the u128s_from_felt252 …\nGenerate MLIR operations for the u128_guarantee_mul …\nGenerate MLIR operations for the u128_guarantee_verify …\nGenerate MLIR operations for the u128_is_zero libfunc.\nGenerate MLIR operations for the u128_add and u128_sub …\nGenerate MLIR operations for the u128_sqrt libfunc.\nGenerate MLIR operations for the u128_to_felt252 libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u16_const libfunc.\nGenerate MLIR operations for the u16_safe_divmod libfunc.\nGenerate MLIR operations for the u16_eq libfunc.\nGenerate MLIR operations for the u16_from_felt252 libfunc.\nGenerate MLIR operations for the u16_is_zero libfunc.\nGenerate MLIR operations for the u16 operation libfunc.\nGenerate MLIR operations for the u16_sqrt libfunc.\nGenerate MLIR operations for the u16_to_felt252 libfunc.\nGenerate MLIR operations for the u16_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u256_safe_divmod libfunc.\nGenerate MLIR operations for the u256_is_zero libfunc.\nGenerate MLIR operations for the u256_sqrt libfunc.\nGenerate MLIR operations for the u256_guarantee_inv_mod_n …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u32_const libfunc.\nGenerate MLIR operations for the u32_safe_divmod libfunc.\nGenerate MLIR operations for the u32_eq libfunc.\nGenerate MLIR operations for the u32_from_felt252 libfunc.\nGenerate MLIR operations for the u32_is_zero libfunc.\nGenerate MLIR operations for the u32 operation libfunc.\nGenerate MLIR operations for the u32_sqrt libfunc.\nGenerate MLIR operations for the u32_to_felt252 libfunc.\nGenerate MLIR operations for the u32_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u512_safe_divmod_by_u256 …\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u64_const libfunc.\nGenerate MLIR operations for the u64_safe_divmod libfunc.\nGenerate MLIR operations for the u64_eq libfunc.\nGenerate MLIR operations for the u64_from_felt252 libfunc.\nGenerate MLIR operations for the u64_is_zero libfunc.\nGenerate MLIR operations for the u64 operation libfunc.\nGenerate MLIR operations for the u64_sqrt libfunc.\nGenerate MLIR operations for the u64_to_felt252 libfunc.\nGenerate MLIR operations for the u64_widemul libfunc.\nSelect and call the correct libfunc builder function from …\nGenerate MLIR operations for the u8_const libfunc.\nGenerate MLIR operations for the u8_safe_divmod libfunc.\nGenerate MLIR operations for the u8_eq libfunc.\nGenerate MLIR operations for the u8_from_felt252 libfunc.\nGenerate MLIR operations for the u8_is_zero libfunc.\nGenerate MLIR operations for the u8 operation libfunc.\nGenerate MLIR operations for the u8_sqrt libfunc.\nGenerate MLIR operations for the u8_to_felt252 libfunc.\nGenerate MLIR operations for the u8_widemul libfunc.\nGenerate MLIR operations for the jump libfunc.\nGenerate MLIR operations for the unwrap_non_zero libfunc.\nMetadata container.\nDebug utilities\nReturns the argument unchanged.\nRetrieve a reference to some metadata.\nRetrieve a mutable reference to some metadata.\nInsert some metadata and return a mutable reference.\nCalls U::from(self).\nCreate an empty metadata container.\nFinite field prime modulo\nMemory allocation external bindings\nRemove some metadata and return its last value.\nRuntime library bindings\nTail recursion information\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nPrints the given &str.\nDump a memory region at runtime.\nReturns the argument unchanged.\nCalls U::from(self).\nReturns the argument unchanged.\nCalls U::from(self).\nHolds global gas info.\nError for metadata calculations.\nConfiguration for metadata computation.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the initial value for the gas counter. If …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nPrime modulo number metadata.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the metadata from the prime number.\nReturn the stored prime number.\nMemory allocation realloc metadata.\nCalls the free function.\nReturns the argument unchanged.\nCalls U::from(self).\nRegister the bindings to the realloc C function and return …\nCalls the realloc function, returns a op with 1 result: an …\nRuntime library bindings metadata.\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_alloc_new() …\nRegister if necessary, then invoke the dict_gas_refund() …\nRegister if necessary, then invoke the dict_get() function.\nRegister if necessary, then invoke the dict_insert() …\nRegister if necessary, then invoke the dict_clone() …\nReturns the argument unchanged.\nCalls U::from(self).\nRegister if necessary, then invoke the debug::print() …\nRegister if necessary, then invoke the ec_point_from_x_nz()…\nRegister if necessary, then invoke the …\nRegister if necessary, then invoke the ec_state_add() …\nRegister if necessary, then invoke the ec_state_add_mul() …\nRegister if necessary, then invoke the ec_state_init() …\nRegister if necessary, then invoke the poseidon() function.\nRegister if necessary, then invoke the pedersen() function.\nRegister if necessary, then invoke the vtable_cheatcode() …\nReturns the argument unchanged.\nCalls U::from(self).\nThe tail recursion metadata.\nReturn the current depth counter value.\nReturns the argument unchanged.\nCalls U::from(self).\nCreate the tail recursion meta.\nReturn the recursion target block.\nReturn the return target block, if set.\nSet the return target block.\nA MLIR module in the context of Cairo Native. It is …\nReturns the argument unchanged.\nRetrieve a reference to some stored metadata.\nInsert some metadata for the program execution and return …\nCalls U::from(self).\nRemoves metadata\nContains the error value\nBinary representation of a Felt (in MLIR).\nContains the success value\nBinary representation of a u256 (in MLIR).\nRuntime function that calls the cheatcode syscall\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nEvent emitted by the emit_event syscall.\nA (somewhat) usable implementation of the starknet syscall …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nError type returned by this trait’s methods.\nGeneration of MLIR types from their Sierra counterparts.\nArray type\nBitwise type\nBoundedInt type\nBox type\nBuild the MLIR type.\nBuiltin costs type\nbytes31 type\nCircuit type\nCoupon type.\nElliptic curve operation type\nElliptic curve point type\nElliptic curve state type\nEnum type\nfelt252 type\nFelt dictionary type\nFelt dictionary entry type\nReturns the argument unchanged.\nGas builtin type\nIf the type is an integer, return its value range.\nCalls U::from(self).\nReturn whether the type is a BoundedInt<>, either directly …\nReturn whether the type is a builtin.\nReturn whether the type requires a return pointer when …\nReturn whether the type is a felt252, either directly or …\nWhether the layout should be allocated in memory (either …\nReturn whether the Sierra type resolves to a zero-sized …\nGenerate the layout of the MLIR type.\nNon-zero type\nNullable type\nPedersen type\nPoseidon type\nBuiltin costs type\nSegment arena type\nSnapshot type\nSquashed Felt dictionary type\nStarknet types\nStruct type\nUnsigned 128-bit integer type\nUnsigned 128-bit multiplication guarantee type\nUnsigned 16-bit integer type\nUnsigned 32-bit integer type\nUnsigned 64-bit integer type\nUnsigned 8-bit integer type\nUninitialized type\nIf the type is a enum type, return all possible variants.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nAn MLIR type with its memory layout.\nBuild the MLIR type.\nExtract layout for the default enum representation, its …\nExtract the type and layout for the default enum …\nThe felt252 prime modulo.\nBuild the MLIR type.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nBuild the MLIR type.\nCompile a cairo program found at the given path to sierra.\nCreates the execution engine, with all symbols registered.\nReturn a type that calls a closure when formatted using …\nParse any type that can be a bigint to a felt that can be …\nParse a short string into a felt that can be used in the …\nParse a numeric string into felt, wrapping negatives …\nReturns the given entry point if present.\nReturns the given entry point if present.\nGiven a string representing a function name, searches in …\nReturns the argument unchanged.\nGenerate a function name.\nReturn the layout for an integer of arbitrary width.\nCalls U::from(self).\nCopied from std.\nWidth in bits when the offset is not necessarily zero …\nEdit: Copied from the std lib.\nWidth in bits when the offset is zero (aka. the natural …\nall elements need to be same type\nA JitValue is a value that can be passed to the JIT engine …\nUsed as return value for Nullables that are null.\nString to felt\nReturns the argument unchanged.\nCalls U::from(self).") \ No newline at end of file diff --git a/settings.html b/settings.html index ee3127433..72f3253b8 100644 --- a/settings.html +++ b/settings.html @@ -1 +1 @@ -Settings

Rustdoc settings

Back
\ No newline at end of file +Settings

Rustdoc settings

Back
\ No newline at end of file diff --git a/src-files.js b/src-files.js index ce1efd25a..6b81fe872 100644 --- a/src-files.js +++ b/src-files.js @@ -1,5 +1,5 @@ var srcIndex = new Map(JSON.parse('[\ -["cairo_native",["",[["arch",[],["x86_64.rs"]],["cache",[],["aot.rs","jit.rs"]],["executor",[],["aot.rs","jit.rs"]],["libfuncs",[["starknet",[],["secp256.rs","testing.rs"]]],["ap_tracking.rs","array.rs","bitwise.rs","bool.rs","bounded_int.rs","box.rs","branch_align.rs","bytes31.rs","cast.rs","circuit.rs","const.rs","coupon.rs","debug.rs","drop.rs","dup.rs","ec.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","function_call.rs","gas.rs","mem.rs","nullable.rs","pedersen.rs","poseidon.rs","sint128.rs","sint16.rs","sint32.rs","sint64.rs","sint8.rs","snapshot_take.rs","starknet.rs","struct.rs","uint128.rs","uint16.rs","uint256.rs","uint32.rs","uint512.rs","uint64.rs","uint8.rs","unconditional_jump.rs","unwrap_non_zero.rs"]],["metadata",[],["auto_breakpoint.rs","debug_utils.rs","enum_snapshot_variants.rs","gas.rs","prime_modulo.rs","realloc_bindings.rs","runtime_bindings.rs","snapshot_clones.rs","tail_recursion.rs"]],["types",[],["array.rs","bitwise.rs","bounded_int.rs","box.rs","builtin_costs.rs","bytes31.rs","circuit.rs","coupon.rs","ec_op.rs","ec_point.rs","ec_state.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","gas_builtin.rs","non_zero.rs","nullable.rs","pedersen.rs","poseidon.rs","range_check.rs","segment_arena.rs","snapshot.rs","squashed_felt252_dict.rs","starknet.rs","struct.rs","uint128.rs","uint128_mul_guarantee.rs","uint16.rs","uint32.rs","uint64.rs","uint8.rs","uninitialized.rs"]]],["arch.rs","block_ext.rs","cache.rs","compiler.rs","context.rs","debug.rs","error.rs","execution_result.rs","executor.rs","ffi.rs","lib.rs","libfuncs.rs","metadata.rs","module.rs","starknet.rs","starknet_stub.rs","types.rs","utils.rs","values.rs"]]],\ +["cairo_native",["",[["arch",[],["x86_64.rs"]],["cache",[],["aot.rs","jit.rs"]],["executor",[],["aot.rs","jit.rs"]],["libfuncs",[["starknet",[],["secp256.rs","testing.rs"]]],["ap_tracking.rs","array.rs","bitwise.rs","bool.rs","bounded_int.rs","box.rs","branch_align.rs","bytes31.rs","cast.rs","circuit.rs","const.rs","coupon.rs","debug.rs","drop.rs","dup.rs","ec.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","function_call.rs","gas.rs","mem.rs","nullable.rs","pedersen.rs","poseidon.rs","sint128.rs","sint16.rs","sint32.rs","sint64.rs","sint8.rs","snapshot_take.rs","starknet.rs","struct.rs","uint128.rs","uint16.rs","uint256.rs","uint32.rs","uint512.rs","uint64.rs","uint8.rs","unconditional_jump.rs","unwrap_non_zero.rs"]],["metadata",[],["auto_breakpoint.rs","debug_utils.rs","enum_snapshot_variants.rs","gas.rs","prime_modulo.rs","realloc_bindings.rs","runtime_bindings.rs","snapshot_clones.rs","tail_recursion.rs"]],["types",[],["array.rs","bitwise.rs","bounded_int.rs","box.rs","builtin_costs.rs","bytes31.rs","circuit.rs","coupon.rs","ec_op.rs","ec_point.rs","ec_state.rs","enum.rs","felt252.rs","felt252_dict.rs","felt252_dict_entry.rs","gas_builtin.rs","non_zero.rs","nullable.rs","pedersen.rs","poseidon.rs","range_check.rs","segment_arena.rs","snapshot.rs","squashed_felt252_dict.rs","starknet.rs","struct.rs","uint128.rs","uint128_mul_guarantee.rs","uint16.rs","uint32.rs","uint64.rs","uint8.rs","uninitialized.rs"]]],["arch.rs","block_ext.rs","cache.rs","compiler.rs","context.rs","debug.rs","docs.rs","error.rs","execution_result.rs","executor.rs","ffi.rs","lib.rs","libfuncs.rs","metadata.rs","module.rs","starknet.rs","starknet_stub.rs","types.rs","utils.rs","values.rs"]]],\ ["cairo_native_compile",["",[],["cairo-native-compile.rs"]]],\ ["cairo_native_dump",["",[],["cairo-native-dump.rs"]]],\ ["cairo_native_run",["",[["utils",[],["mod.rs","test.rs"]]],["cairo-native-run.rs"]]],\ diff --git a/src/cairo_native/docs.rs.html b/src/cairo_native/docs.rs.html new file mode 100644 index 000000000..085c94e1f --- /dev/null +++ b/src/cairo_native/docs.rs.html @@ -0,0 +1,69 @@ +docs.rs - source
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+
//! # Cairo Native Compiler and Execution Engine
+
+#[allow(clippy::needless_doctest_main)]
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/overview.md")]
+pub mod section01 {}
+
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/compilation_walkthrough.md")]
+pub mod section02 {}
+
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/execution_walkthrough.md")]
+pub mod section03 {}
+
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/gas_builtin_accounting.md")]
+pub mod section04 {}
+
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/implementing_libfuncs.md")]
+pub mod section05 {}
+
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/debugging.md")]
+pub mod section06 {}
+
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/sierra.md")]
+pub mod section07 {}
+
+#[cfg_attr(doc, aquamarine::aquamarine)]
+#[doc = include_str!("../docs/mlir.md")]
+pub mod section08 {}
+
\ No newline at end of file diff --git a/src/cairo_native/execution_result.rs.html b/src/cairo_native/execution_result.rs.html index 54c09193a..25f2c1b3e 100644 --- a/src/cairo_native/execution_result.rs.html +++ b/src/cairo_native/execution_result.rs.html @@ -174,7 +174,7 @@ } impl ContractExecutionResult { - /// Convert a [`ExecuteResult`] to a [`NativeExecutionResult`] + /// Convert an [`ExecutionResult`] into a [`ContractExecutionResult`] pub fn from_execution_result(result: ExecutionResult) -> Result<Self, Error> { let mut error_msg = None; let failure_flag; diff --git a/src/cairo_native/executor/jit.rs.html b/src/cairo_native/executor/jit.rs.html index 48a032f87..25f6f06f7 100644 --- a/src/cairo_native/executor/jit.rs.html +++ b/src/cairo_native/executor/jit.rs.html @@ -153,10 +153,6 @@ 153 154 155 -156 -157 -158 -159
use crate::{
     error::Error,
     execution_result::{ContractExecutionResult, ExecutionResult},
@@ -224,8 +220,6 @@
     }
 
     /// Execute a program with the given params.
-    ///
-    /// See [`cairo_native::jit_runner::execute`]
     pub fn invoke_dynamic(
         &self,
         function_id: &FunctionId,
@@ -248,8 +242,6 @@
     }
 
     /// Execute a program with the given params.
-    ///
-    /// See [`cairo_native::jit_runner::execute`]
     pub fn invoke_dynamic_with_syscall_handler(
         &self,
         function_id: &FunctionId,
diff --git a/src/cairo_native/lib.rs.html b/src/cairo_native/lib.rs.html
index af85fc273..af125abe4 100644
--- a/src/cairo_native/lib.rs.html
+++ b/src/cairo_native/lib.rs.html
@@ -32,184 +32,15 @@
 32
 33
 34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
-102
-103
-104
-105
-106
-107
-108
-109
-110
-111
-112
-113
-114
-115
-116
-117
-118
-

//! # Cairo Sierra to MLIR compiler and JIT engine
-//!
-//! This crate is a compiler and JIT engine that transforms Sierra (or Cairo) sources into MLIR,
-//! which can be [JIT-executed](https://en.wikipedia.org/wiki/Just-in-time_compilation) or further
-//! compiled into a binary
-//! [ahead of time](https://en.wikipedia.org/wiki/Ahead-of-time_compilation).
-//!
-//! ## Usage
-//!
-//! The API contains two structs, `NativeContext` and `NativeExecutor`.
-//! The main purpose of `NativeContext` is MLIR initialization, compilation and lowering to LLVM.
-//! `NativeExecutor` in the other hand is responsible of executing MLIR compiled sierra programs
-//! from an entrypoint.
-//! Programs and JIT states can be cached in contexts where their execution will be done multiple
-//! times.
-//!
-//! ```
-//! use starknet_types_core::felt::Felt;
-//! use cairo_native::context::NativeContext;
-//! use cairo_native::executor::JitNativeExecutor;
-//! use cairo_native::values::JitValue;
-//! use std::path::Path;
-//!
-//! let program_path = Path::new("programs/examples/hello.cairo");
-//! // Compile the cairo program to sierra.
-//! let sierra_program = cairo_native::utils::cairo_to_sierra(program_path);
-//!
-//! // Instantiate a Cairo Native MLIR context. This data structure is responsible for the MLIR
-//! // initialization and compilation of sierra programs into a MLIR module.
-//! let native_context = NativeContext::new();
-//!
-//! // Compile the sierra program into a MLIR module.
-//! let native_program = native_context.compile(&sierra_program).unwrap();
-//!
-//! // The parameters of the entry point.
-//! let params = &[JitValue::Felt252(Felt::from_bytes_be_slice(b"user"))];
-//!
-//! // Find the entry point id by its name.
-//! let entry_point = "hello::hello::greet";
-//! let entry_point_id = cairo_native::utils::find_function_id(&sierra_program, entry_point);
-//!
-//! // Instantiate the executor.
-//! let native_executor = JitNativeExecutor::from_native_module(native_program, Default::default());
-//!
-//! // Execute the program.
-//! let result = native_executor
-//!     .invoke_dynamic(entry_point_id, params, None)
-//!     .unwrap();
-//!
-//! println!("Cairo program was compiled and executed successfully.");
-//! println!("{:?}", result);
-//! ```
-//!
-//! ## Common definitions
-//!
-//! Within this project there are lots of functions with the same signature. As their arguments have
-//! all the same meaning, they are documented here:
-//!
-//!   - `context: NativeContext`: The MLIR context.
-//!   - `module: &NativeModule`: The compiled MLIR program, with other relevant information such as program registry and metadata.
-//!   - `program: &Program`: The Sierra input program.
-//!   - `registry: &ProgramRegistry<TType, TLibfunc>`: The registry extracted from the program.
-//!   - `metadata: &mut MetadataStorage`: Current compiler metadata.
-//!
-//! ## Project layout
-//!
-//! ```txt
-//!  src
-//!  ├─ context.rs - The MLIR context wrapper, provides the compile method.
-//!  ├─ utils.rs - Internal utilities.
-//!  ├─ metadata/ - Metadata injector to use within the compilation process
-//!  ├─ executor/ - Code related to the executor of programs.
-//!  ├─ module.rs - The MLIR module wrapper.
-//!  ├─ arch/ - Trampoline assembly for calling functions with dynamic signatures.
-//!  ├─ executor.rs - The executor code.
-//!  ├─ ffi.cpp - Missing FFI C wrappers
-//!  ├─ libfuncs - Cairo Sierra libfunc implementations
-//!  ├─ libfuncs.rs - Cairo Sierra libfunc glue code
-//!  ├─ starknet.rs - Starknet syscall handler glue code.
-//!  ├─ ffi.rs - Missing FFI C wrappers, rust side.
-//!  ├─ block_ext.rs - A melior (MLIR) block trait extension to write less code.
-//!  ├─ lib.rs - The main lib file.
-//!  ├─ execution_result.rs - Program result parsing.
-//!  ├─ values.rs - JIT serialization.
-//!  ├─ metadata.rs - Metadata injector to use within the compilation process.
-//!  ├─ compiler.rs - The glue code of the compiler, has the codegen for the function signatures
-//!  and calls the libfunc codegen implementations.
-//!  ├─ error.rs - Error handling
-//!  ├─ bin - Binary programs
-//!  ├─ types - Cairo to MLIR type information
-//! ```
-
-// #![warn(missing_docs)]
-#![allow(clippy::missing_safety_doc)]
+
#![allow(clippy::missing_safety_doc)]
+#![allow(rustdoc::bare_urls)]
+// The following line contains a markdown reference link.
+// This is necessary to override the link destination in the README.md file, so
+// that when the README.md is rendered standalone (e.g. on Github) it points to
+// the online version, and when rendered by rustdoc to the docs module rendered
+// page.
+//! [developer documentation]: docs
+#![doc = include_str!("../README.md")]
 
 pub use self::{
     compiler::compile,
@@ -222,6 +53,7 @@
 mod compiler;
 pub mod context;
 pub mod debug;
+pub mod docs;
 pub mod error;
 pub mod execution_result;
 pub mod executor;