Lesson 2b: Writing Workers (Guppy)

Important

This is an alternative lesson to Lesson 2a. It uses Guppy to construct the quantum computation.

In Lesson 2a you wrote a worker that constructs a symbolic quantum circuit and running it on a simulator. In this example we’re going to extend your “my_example_worker” with Guppy functions.

  1. Define a simple parametric Guppy program

  2. Provide parameters at runtime

Note

Guppy is a programming language for Quantum Computers. All code in a Guppy program will be executed in coherence time on the controller. Since it is embedded in Python, we can use the same worker mechanism as before.

Lesson 3 will proceed with the pytket functionality, so you may skip ahead.

Prerequisite

We’re going to extend the existing worker so we assume you have run the prerequisites from before.

As a reminder this was (see 2a):

uv init
uv add tierkreis pytket pytket-qiskit sympy ruff
uv run tkr project init
uv run tkr init worker -n my_example_worker

We’re adding the dependencies for Guppy:

uv add guppylang hugr

Defining the tasks

As before we assume your implementing impl.py of your previously defined worker

# The worker is added here for validity of the example
from tierkreis import Worker

worker = Worker("my_example_worker")
# Your previous tasks will be here

In Guppy, you write programs by using the @guppy annotation and then calling compile. You can do the same from inside a worker function, here we will dynamically construct a n-qubit GHZ state.

from guppylang import comptime, guppy
from guppylang.std.builtins import array, result
from guppylang.std.quantum import cx, h, measure_array, qubit
from hugr.package import Package


@worker.task()
def ghz(size: int) -> Package:
    n = guppy.nat_var("n")

    @guppy
    def build_ghz_state(q: array[qubit, n]) -> None:  # type: ignore
        h(q[0])
        for i in range(n - 1):  # type: ignore
            cx(q[i], q[i + 1])

    @guppy
    def main() -> None:
        q = array(qubit() for _ in range(comptime(size)))  # type: ignore
        build_ghz_state(q)

        result("c", measure_array(q))

    return main.compile()

As before you can provide inputs to the function.

Important

You must call compile() on the main function you wish to run as a task. This will generate a serialized version of the program (a Hugr), which can be used as value in Tierkreis. The corresponding type is hugr.Package.

Generating stubs

As before generate the api from the cli

uv run tkr init stubs

Using the tasks

Now you can use the newly declared tasks in a graph similar to how you used the builtin functionality or other tasks. You have to import the task API from the worker first which you then can use with a task node. First we declare the graph

# Constructing, put into graphs/main.py
from tierkreis.builder import Graph
from tierkreis.controller.data.models import TKR

graph = Graph(TKR[int], TKR[Package])

and then add the tasks:

# Constructing, put into graphs/main.py
from my_example_worker import ghz  # noqa: F811

program = graph.task(ghz(graph.inputs))
workflow = graph.finish_with_outputs(program)  # type: ignore

Running the graph

As before you know can run the graph, the circuit we have defined already above. The result is an binary represantion of the program.

# Running, put into graphs/main.py
from uuid import UUID

from tierkreis.controller import run_graph
from tierkreis.executor import ShellExecutor
from tierkreis.storage import FileStorage, read_outputs

storage = FileStorage(workflow_id=UUID(int=12347), name="Guppy example graph")
storage.clean_graph_files()
executor = ShellExecutor(registry_path=None, workflow_dir=storage.workflow_dir)
run_graph(storage, executor, workflow, 3)  # single import
output = read_outputs(workflow, storage)
print(output)
Package(modules=[Hugr(module_root=Node(0), entrypoint=Node(1), _nodes=[NodeData(op=Module(), parent=None, metadata=NodeMetadata({'core.generator': {'name': 'guppylang (guppylang-internals-v1.1.3)', 'version': '1.1.3'}, 'core.used_extensions': [{'name': 'collections.borrow_arr', 'version': '0.2.1'}, {'name': 'prelude', 'version': '0.2.2'}, {'name': 'arithmetic.int.types', 'version': '0.1.0'}, {'name': 'tket.quantum', 'version': '0.3.0'}, {'name': 'arithmetic.conversions', 'version': '0.1.1'}, {'name': 'arithmetic.int', 'version': '0.1.1'}, {'name': 'tket.measurement', 'version': '0.1.0'}, {'name': 'collections.array', 'version': '0.1.2'}, {'name': 'tket.result', 'version': '0.2.0'}, {'name': 'tket.guppy', 'version': '0.2.0'}, {'name': 'arithmetic.float.types', 'version': '0.1.0'}, {'name': 'tket.rotation', 'version': '0.2.0'}], 'name': '__main__'})), NodeData(op=FuncDefn(f_name='tkr_my_example_worker_impl.impl.ghz.<locals>.main', inputs=[], params=[], visibility='Public'), parent=Node(0), metadata=NodeMetadata({'tket.unitary': 0})), NodeData(op=Input(types=[]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='new_all_borrowed', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Create a new borrow array that contains no elements', misc={}), signature=FunctionType([], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Const(0), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=TailLoop(just_inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], rest=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), other_inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(12), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(13), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(13), metadata=NodeMetadata({})), NodeData(op=Const(Right()), parent=Node(13), metadata=NodeMetadata({})), NodeData(op=LoadConst(Either(Tuple(int<6>, int<6>, int<6>), ())), parent=Node(13), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(12), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=Left([Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], []), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='QAlloc', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([], [Qubit])), binary=False), description='QAlloc', misc={'commutation': []}), signature=FunctionType([], [Qubit]), args=[]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='return', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize, $1], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Put an element into a borrow array (panicking if there is an element already)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Qubit], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(18), metadata=NodeMetadata({})), NodeData(op=CFG(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], _sum=Either(left=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], right=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])])), parent=Node(35), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=Const(TRUE), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=LoadConst(Bool), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(36), metadata=NodeMetadata({})), NodeData(op=ExitBlock(), parent=Node(35), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Tuple(Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), parent=Node(35), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='ige_s', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [Bool])), binary=False), description='"greater than or equal" as signed integers', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [Bool]), args=[BoundedNatArg(n=6)]), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(47), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Tuple(Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), parent=Node(35), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(57), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(57), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='ile_s', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [Bool])), binary=False), description='"less than or equal" as signed integers', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [Bool]), args=[BoundedNatArg(n=6)]), parent=Node(57), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(57), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(57), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Either(left=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], right=[])), parent=Node(35), metadata=NodeMetadata({})), NodeData(op=Input(types=[Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(63), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(63), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Bool, other_inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(63), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(66), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(67), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(67), metadata=NodeMetadata({})), NodeData(op=Left([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], []), parent=Node(67), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(67), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(67), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(67), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(67), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(66), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(75), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(75), metadata=NodeMetadata({})), NodeData(op=Const(Right()), parent=Node(75), metadata=NodeMetadata({})), NodeData(op=LoadConst(Either((int<6>, int<6>, int<6>), ())), parent=Node(75), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(63), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(63), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(63), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(63), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[], _sum=Tuple(Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(35), metadata=NodeMetadata({})), NodeData(op=Input(types=[]), parent=Node(84), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(84), metadata=NodeMetadata({})), NodeData(op=Const(None), parent=Node(84), metadata=NodeMetadata({})), NodeData(op=LoadConst(Option(Tuple(int<6>, Tuple(int<6>, int<6>, int<6>)))), parent=Node(84), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(84), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(84), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Tuple(Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(35), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=Some(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(91), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(7), metadata=NodeMetadata({})), NodeData(op=Call(signature=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])])), instantiation=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), type_args=[]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='clone', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Copyable)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Clones an array with copyable elements', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='to_array', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])], [ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Turns `borrow_array` into `array`', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])], [ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='result_array_bool', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam(), BoundedNatParam(upper_bound=None)], body=FunctionType([ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=1, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=Bool)])], [])), binary=False), description='Report an array of boolean results.', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])], []), args=[StringArg(value='c'), BoundedNatArg(n=3)]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='drop', signature=OpDefSig(poly_func=PolyFuncType(params=[TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([$0], [])), binary=False), description='Drop the input wire. Applicable to guppy affine types only.', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])], []), args=[TypeTypeArg(ty=ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]))]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='new_all_borrowed', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Create a new borrow array that contains no elements', misc={}), signature=FunctionType([], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Const(0), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=TailLoop(just_inputs=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], rest=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(117), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(117), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(117), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(117), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Option(Tuple(Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), other_inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(117), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(122), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(123), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(123), metadata=NodeMetadata({})), NodeData(op=Right([Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], []), parent=Node(123), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[Tuple(Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(122), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=Left([Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], []), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='MeasureFree', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])])), binary=False), description='MeasureFree', misc={'commutation': []}), signature=FunctionType([Qubit], [ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='return', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize, $1], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Put an element into a borrow array (panicking if there is an element already)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(127), metadata=NodeMetadata({})), NodeData(op=CFG(inputs=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(117), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], _sum=Either(left=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], right=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])])), parent=Node(140), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(141), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(141), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(141), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='ilt_s', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [Bool])), binary=False), description='"less than" as signed integers', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [Bool]), args=[BoundedNatArg(n=6)]), parent=Node(141), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Bool, other_inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(141), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(146), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(147), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(147), metadata=NodeMetadata({})), NodeData(op=Const(None), parent=Node(147), metadata=NodeMetadata({})), NodeData(op=LoadConst(Option(int<6>)), parent=Node(147), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(146), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(152), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(152), metadata=NodeMetadata({})), NodeData(op=Some(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])), parent=Node(152), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(141), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(141), metadata=NodeMetadata({})), NodeData(op=ExitBlock(), parent=Node(140), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], _sum=Tuple(Option(Tuple(Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(140), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='borrow', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), $1])), binary=False), description='Take an element from a borrow array (panicking if it was already taken before)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), Qubit]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=MakeTuple([Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=Some(Tuple(Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(159), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], _sum=Tuple(Option(Tuple(Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(140), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), parent=Node(172), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(172), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='discard_all_borrowed', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])], [])), binary=False), description='Discard a borrow array where all elements have been borrowed', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], []), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(172), metadata=NodeMetadata({})), NodeData(op=Left([], [Tuple(Qubit, Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(172), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(172), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(172), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='new_all_borrowed', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Create a new borrow array that contains no elements', misc={}), signature=FunctionType([], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Const(0), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=TailLoop(just_inputs=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], rest=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(183), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(183), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(183), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(183), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Option(Tuple(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), other_inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(183), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(188), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(189), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(189), metadata=NodeMetadata({})), NodeData(op=Right([Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], []), parent=Node(189), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[Tuple(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(188), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=Left([Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], []), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='Read', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Bool])), binary=False), description='Consumes a measurement, converting it into a bool.', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Bool]), args=[]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='return', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize, $1], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Put an element into a borrow array (panicking if there is an element already)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Bool], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Bool)]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(193), metadata=NodeMetadata({})), NodeData(op=CFG(inputs=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(183), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], _sum=Either(left=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])], right=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])])), parent=Node(206), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(207), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(207), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(207), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='ilt_s', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [Bool])), binary=False), description='"less than" as signed integers', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [Bool]), args=[BoundedNatArg(n=6)]), parent=Node(207), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Bool, other_inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(207), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(212), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(213), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(213), metadata=NodeMetadata({})), NodeData(op=Left([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), parent=Node(213), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(212), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(217), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(217), metadata=NodeMetadata({})), NodeData(op=Right([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), parent=Node(217), metadata=NodeMetadata({})), NodeData(op=Const(3), parent=Node(207), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(207), metadata=NodeMetadata({})), NodeData(op=ExitBlock(), parent=Node(206), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])], _sum=Tuple(Option(Tuple(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(206), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='get', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Copyable)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize], [Option($1), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Get an element from an array', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Option(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Option(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])), other_inputs=[]), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[]), parent=Node(229), metadata=NodeMetadata({})), NodeData(op=Input(types=[]), parent=Node(230), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(230), metadata=NodeMetadata({})), NodeData(op=Const(ConstError({'signal': 1, 'message': 'Array index out of bounds'})), parent=Node(230), metadata=NodeMetadata({})), NodeData(op=LoadConst(error), parent=Node(230), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='panic', signature=OpDefSig(poly_func=PolyFuncType(params=[ListParam(param=TypeTypeParam(bound=TypeBound.Linear)), ListParam(param=TypeTypeParam(bound=TypeBound.Linear))], body=FunctionType([ExtType(type_def=TypeDef(name='error', description='Simple opaque error type.', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), $0], [$1])), binary=False), description='Panic with input error', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='error', description='Simple opaque error type.', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[ListArg(elems=[]), ListArg(elems=[TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), parent=Node(230), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), parent=Node(229), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), parent=Node(236), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(236), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=Some(Tuple(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(224), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])], _sum=Tuple(Option(Tuple(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(206), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])]), parent=Node(247), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(247), metadata=NodeMetadata({})), NodeData(op=Left([], [Tuple(ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(247), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='drop', signature=OpDefSig(poly_func=PolyFuncType(params=[TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([$0], [])), binary=False), description='Drop the input wire. Applicable to guppy affine types only.', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])], []), args=[TypeTypeArg(ty=ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))]))]), parent=Node(247), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(247), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(247), metadata=NodeMetadata({})), NodeData(op=Const(0), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Const(0), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=Const(Tuple(0, 3, 1)), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=LoadConst(Tuple(int<6>, int<6>, int<6>)), parent=Node(1), metadata=NodeMetadata({})), NodeData(op=FuncDefn(f_name='tkr_my_example_worker_impl.impl.ghz.<locals>.build_ghz_state$3', inputs=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], params=[], visibility='Private'), parent=Node(0), metadata=NodeMetadata({'tket.unitary': 0})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='borrow', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), $1])), binary=False), description='Take an element from a borrow array (panicking if it was already taken before)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), Qubit]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=Const(ConstUsize(0)), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=LoadConst(usize), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='H', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='H', misc={'commutation': []}), signature=FunctionType([Qubit], [Qubit]), args=[]), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=CFG(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], _sum=Either(left=[Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], right=[Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])])), parent=Node(267), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), parent=Node(268), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(268), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(268), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), other_inputs=[]), parent=Node(268), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[]), parent=Node(272), metadata=NodeMetadata({})), NodeData(op=Input(types=[]), parent=Node(273), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(273), metadata=NodeMetadata({})), NodeData(op=Const(FALSE), parent=Node(273), metadata=NodeMetadata({})), NodeData(op=LoadConst(Bool), parent=Node(273), metadata=NodeMetadata({})), NodeData(op=Const(None), parent=Node(273), metadata=NodeMetadata({})), NodeData(op=LoadConst(Option(Tuple(int<6>, Tuple(int<6>, int<6>, int<6>)))), parent=Node(273), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(272), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(280), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(280), metadata=NodeMetadata({})), NodeData(op=Const(TRUE), parent=Node(280), metadata=NodeMetadata({})), NodeData(op=LoadConst(Bool), parent=Node(280), metadata=NodeMetadata({})), NodeData(op=Some(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), parent=Node(280), metadata=NodeMetadata({})), NodeData(op=CFG(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(268), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))], _sum=Either(left=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], right=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])])), parent=Node(286), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(287), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(287), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(287), metadata=NodeMetadata({})), NodeData(op=Const(0), parent=Node(287), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(287), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='ige_s', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [Bool])), binary=False), description='"greater than or equal" as signed integers', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [Bool]), args=[BoundedNatArg(n=6)]), parent=Node(287), metadata=NodeMetadata({})), NodeData(op=ExitBlock(), parent=Node(286), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Tuple(Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), parent=Node(286), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(295), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(295), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='ige_s', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [Bool])), binary=False), description='"greater than or equal" as signed integers', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [Bool]), args=[BoundedNatArg(n=6)]), parent=Node(295), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(295), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(295), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Tuple(Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))), parent=Node(286), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(301), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(301), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='ile_s', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [Bool])), binary=False), description='"less than or equal" as signed integers', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [Bool]), args=[BoundedNatArg(n=6)]), parent=Node(301), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(301), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(301), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Either(left=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], right=[])), parent=Node(286), metadata=NodeMetadata({})), NodeData(op=Input(types=[Bool, ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(307), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(307), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Bool, other_inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(307), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(310), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(311), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(311), metadata=NodeMetadata({})), NodeData(op=Left([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], []), parent=Node(311), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(310), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(315), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(315), metadata=NodeMetadata({})), NodeData(op=Const(Right()), parent=Node(315), metadata=NodeMetadata({})), NodeData(op=LoadConst(Either((int<6>, int<6>, int<6>), ())), parent=Node(315), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[], _sum=Tuple(Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(286), metadata=NodeMetadata({})), NodeData(op=Input(types=[]), parent=Node(320), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(320), metadata=NodeMetadata({})), NodeData(op=Const(None), parent=Node(320), metadata=NodeMetadata({})), NodeData(op=LoadConst(Option(Tuple(int<6>, Tuple(int<6>, int<6>, int<6>)))), parent=Node(320), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(320), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(320), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], _sum=Tuple(Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))))), parent=Node(286), metadata=NodeMetadata({})), NodeData(op=Input(types=[ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=MakeTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=Some(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(327), metadata=NodeMetadata({})), NodeData(op=ExitBlock(), parent=Node(267), metadata=NodeMetadata({})), NodeData(op=DataflowBlock(inputs=[Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])], _sum=Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]))), parent=Node(267), metadata=NodeMetadata({})), NodeData(op=Input(types=[Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), other_inputs=[]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[]), parent=Node(340), metadata=NodeMetadata({})), NodeData(op=Input(types=[]), parent=Node(341), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(341), metadata=NodeMetadata({})), NodeData(op=Const(ConstError({'signal': 1, 'message': 'Option.unwrap: value is `Nothing`'})), parent=Node(341), metadata=NodeMetadata({})), NodeData(op=LoadConst(error), parent=Node(341), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='panic', signature=OpDefSig(poly_func=PolyFuncType(params=[ListParam(param=TypeTypeParam(bound=TypeBound.Linear)), ListParam(param=TypeTypeParam(bound=TypeBound.Linear))], body=FunctionType([ExtType(type_def=TypeDef(name='error', description='Simple opaque error type.', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), $0], [$1])), binary=False), description='Panic with input error', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='error', description='Simple opaque error type.', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), args=[ListArg(elems=[]), ListArg(elems=[TypeTypeArg(ty=Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))))])]), parent=Node(341), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(340), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(347), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(347), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=UnpackTuple([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='borrow', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), $1])), binary=False), description='Take an element from a borrow array (panicking if it was already taken before)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), Qubit]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='iadd', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=7))])])), binary=False), description='addition modulo 2^N (signed and unsigned versions are the same op)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])]), args=[BoundedNatArg(n=6)]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='borrow', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), $1])), binary=False), description='Take an element from a borrow array (panicking if it was already taken before)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), Qubit]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='itousize', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [USize])), binary=False), description='convert a 64b unsigned integer to its usize representation', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])], [ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])]), args=[]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='CX', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, Qubit], [Qubit, Qubit])), binary=False), description='CX', misc={'commutation': [[0, 'Z'], [1, 'X']]}), signature=FunctionType([Qubit, Qubit], [Qubit, Qubit]), args=[]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='return', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize, $1], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Put an element into a borrow array (panicking if there is an element already)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Qubit], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='return', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize, $1], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Put an element into a borrow array (panicking if there is an element already)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Qubit], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=Const(Unit), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=LoadConst(Unit), parent=Node(337), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='return', signature=OpDefSig(poly_func=PolyFuncType(params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)]), USize, $1], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=0, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=$1)])])), binary=False), description='Put an element into a borrow array (panicking if there is an element already)', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), ExtType(type_def=TypeDef(name='usize', description='usize', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Qubit], [ExtType(type_def=TypeDef(name='borrow_array', description='Fixed-length borrow array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)])]), args=[BoundedNatArg(n=3), TypeTypeArg(ty=Qubit)]), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=Conditional(sum_ty=Option(Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))), other_inputs=[]), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[]), parent=Node(367), metadata=NodeMetadata({})), NodeData(op=Input(types=[]), parent=Node(368), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(368), metadata=NodeMetadata({})), NodeData(op=Case(inputs=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(367), metadata=NodeMetadata({})), NodeData(op=Input(types=[Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))]), parent=Node(371), metadata=NodeMetadata({})), NodeData(op=Output(), parent=Node(371), metadata=NodeMetadata({})), NodeData(op=Const(ConstError({'signal': 1, 'message': 'Option.unwrap: value is `Some`'})), parent=Node(371), metadata=NodeMetadata({})), NodeData(op=LoadConst(error), parent=Node(371), metadata=NodeMetadata({})), NodeData(op=ExtOp(_op_def=OpDef(name='panic', signature=OpDefSig(poly_func=PolyFuncType(params=[ListParam(param=TypeTypeParam(bound=TypeBound.Linear)), ListParam(param=TypeTypeParam(bound=TypeBound.Linear))], body=FunctionType([ExtType(type_def=TypeDef(name='error', description='Simple opaque error type.', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), $0], [$1])), binary=False), description='Panic with input error', misc={}), signature=FunctionType([ExtType(type_def=TypeDef(name='error', description='Simple opaque error type.', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)])))], []), args=[ListArg(elems=[TypeTypeArg(ty=Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), Tuple(ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]), ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[BoundedNatArg(n=6)]))))]), ListArg(elems=[])]), parent=Node(371), metadata=NodeMetadata({})), NodeData(op=Const(0), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=Const(1), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=Const(ConstUsize(0)), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=LoadConst(usize), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=Const(2), parent=Node(260), metadata=NodeMetadata({})), NodeData(op=LoadConst(int<6>), parent=Node(260), metadata=NodeMetadata({}))], _links=_NodeLinks(_items={_SubPort(port=OutPort(Node(5), 0), sub_offset=0): _SubPort(port=InPort(Node(6), 0), sub_offset=0), _SubPort(port=OutPort(Node(16), 0), sub_offset=0): _SubPort(port=InPort(Node(17), 0), sub_offset=0), _SubPort(port=OutPort(Node(28), 0), sub_offset=0): _SubPort(port=InPort(Node(29), 0), sub_offset=0), _SubPort(port=OutPort(Node(31), 0), sub_offset=0): _SubPort(port=InPort(Node(32), 0), sub_offset=0), _SubPort(port=OutPort(Node(33), 0), sub_offset=0): _SubPort(port=InPort(Node(34), 0), sub_offset=0), _SubPort(port=OutPort(Node(19), -1), sub_offset=0): _SubPort(port=InPort(Node(25), -1), sub_offset=0), _SubPort(port=OutPort(Node(25), -1), sub_offset=0): _SubPort(port=InPort(Node(20), -1), sub_offset=0), _SubPort(port=OutPort(Node(39), 0), sub_offset=0): _SubPort(port=InPort(Node(40), 0), sub_offset=0), _SubPort(port=OutPort(Node(42), 0), sub_offset=0): _SubPort(port=InPort(Node(43), 0), sub_offset=0), _SubPort(port=OutPort(Node(44), 0), sub_offset=0): _SubPort(port=InPort(Node(45), 0), sub_offset=0), _SubPort(port=OutPort(Node(51), 0), sub_offset=0): _SubPort(port=InPort(Node(52), 0), sub_offset=0), _SubPort(port=OutPort(Node(53), 0), sub_offset=0): _SubPort(port=InPort(Node(54), 0), sub_offset=0), _SubPort(port=OutPort(Node(55), 0), sub_offset=0): _SubPort(port=InPort(Node(56), 0), sub_offset=0), _SubPort(port=OutPort(Node(61), 0), sub_offset=0): _SubPort(port=InPort(Node(62), 0), sub_offset=0), _SubPort(port=OutPort(Node(71), 0), sub_offset=0): _SubPort(port=InPort(Node(72), 0), sub_offset=0), _SubPort(port=OutPort(Node(73), 0), sub_offset=0): _SubPort(port=InPort(Node(74), 0), sub_offset=0), _SubPort(port=OutPort(Node(78), 0), sub_offset=0): _SubPort(port=InPort(Node(79), 0), sub_offset=0), _SubPort(port=OutPort(Node(80), 0), sub_offset=0): _SubPort(port=InPort(Node(81), 0), sub_offset=0), _SubPort(port=OutPort(Node(82), 0), sub_offset=0): _SubPort(port=InPort(Node(83), 0), sub_offset=0), _SubPort(port=OutPort(Node(87), 0), sub_offset=0): _SubPort(port=InPort(Node(88), 0), sub_offset=0), _SubPort(port=OutPort(Node(89), 0), sub_offset=0): _SubPort(port=InPort(Node(90), 0), sub_offset=0), _SubPort(port=OutPort(Node(98), 0), sub_offset=0): _SubPort(port=InPort(Node(99), 0), sub_offset=0), _SubPort(port=OutPort(Node(100), 0), sub_offset=0): _SubPort(port=InPort(Node(101), 0), sub_offset=0), _SubPort(port=OutPort(Node(102), 0), sub_offset=0): _SubPort(port=InPort(Node(103), 0), sub_offset=0), _SubPort(port=OutPort(Node(104), 0), sub_offset=0): _SubPort(port=InPort(Node(105), 0), sub_offset=0), _SubPort(port=OutPort(Node(106), 0), sub_offset=0): _SubPort(port=InPort(Node(107), 0), sub_offset=0), _SubPort(port=OutPort(Node(8), -1), sub_offset=0): _SubPort(port=InPort(Node(12), -1), sub_offset=0), _SubPort(port=OutPort(Node(12), -1), sub_offset=0): _SubPort(port=InPort(Node(9), -1), sub_offset=0), _SubPort(port=OutPort(Node(114), 0), sub_offset=0): _SubPort(port=InPort(Node(115), 0), sub_offset=0), _SubPort(port=OutPort(Node(137), 0), sub_offset=0): _SubPort(port=InPort(Node(138), 0), sub_offset=0), _SubPort(port=OutPort(Node(128), -1), sub_offset=0): _SubPort(port=InPort(Node(134), -1), sub_offset=0), _SubPort(port=OutPort(Node(134), -1), sub_offset=0): _SubPort(port=InPort(Node(129), -1), sub_offset=0), _SubPort(port=OutPort(Node(150), 0), sub_offset=0): _SubPort(port=InPort(Node(151), 0), sub_offset=0), _SubPort(port=OutPort(Node(156), 0), sub_offset=0): _SubPort(port=InPort(Node(157), 0), sub_offset=0), _SubPort(port=OutPort(Node(164), 0), sub_offset=0): _SubPort(port=InPort(Node(165), 0), sub_offset=0), _SubPort(port=OutPort(Node(170), 0), sub_offset=0): _SubPort(port=InPort(Node(171), 0), sub_offset=0), _SubPort(port=OutPort(Node(177), 0), sub_offset=0): _SubPort(port=InPort(Node(178), 0), sub_offset=0), _SubPort(port=OutPort(Node(118), -1), sub_offset=0): _SubPort(port=InPort(Node(122), -1), sub_offset=0), _SubPort(port=OutPort(Node(122), -1), sub_offset=0): _SubPort(port=InPort(Node(119), -1), sub_offset=0), _SubPort(port=OutPort(Node(180), 0), sub_offset=0): _SubPort(port=InPort(Node(181), 0), sub_offset=0), _SubPort(port=OutPort(Node(203), 0), sub_offset=0): _SubPort(port=InPort(Node(204), 0), sub_offset=0), _SubPort(port=OutPort(Node(221), 0), sub_offset=0): _SubPort(port=InPort(Node(222), 0), sub_offset=0), _SubPort(port=OutPort(Node(233), 0), sub_offset=0): _SubPort(port=InPort(Node(234), 0), sub_offset=0), _SubPort(port=OutPort(Node(231), -1), sub_offset=0): _SubPort(port=InPort(Node(235), -1), sub_offset=0), _SubPort(port=OutPort(Node(235), -1), sub_offset=0): _SubPort(port=InPort(Node(232), -1), sub_offset=0), _SubPort(port=OutPort(Node(239), 0), sub_offset=0): _SubPort(port=InPort(Node(240), 0), sub_offset=0), _SubPort(port=OutPort(Node(245), 0), sub_offset=0): _SubPort(port=InPort(Node(246), 0), sub_offset=0), _SubPort(port=OutPort(Node(225), -1), sub_offset=0): _SubPort(port=InPort(Node(229), -1), sub_offset=0), _SubPort(port=OutPort(Node(229), -1), sub_offset=0): _SubPort(port=InPort(Node(226), -1), sub_offset=0), _SubPort(port=OutPort(Node(252), 0), sub_offset=0): _SubPort(port=InPort(Node(253), 0), sub_offset=0), _SubPort(port=OutPort(Node(184), -1), sub_offset=0): _SubPort(port=InPort(Node(206), -1), sub_offset=0), _SubPort(port=OutPort(Node(206), -1), sub_offset=0): _SubPort(port=InPort(Node(185), -1), sub_offset=0), _SubPort(port=OutPort(Node(254), 0), sub_offset=0): _SubPort(port=InPort(Node(255), 0), sub_offset=0), _SubPort(port=OutPort(Node(256), 0), sub_offset=0): _SubPort(port=InPort(Node(257), 0), sub_offset=0), _SubPort(port=OutPort(Node(258), 0), sub_offset=0): _SubPort(port=InPort(Node(259), 0), sub_offset=0), _SubPort(port=OutPort(Node(2), -1), sub_offset=0): _SubPort(port=InPort(Node(7), -1), sub_offset=0), _SubPort(port=OutPort(Node(7), -1), sub_offset=0): _SubPort(port=InPort(Node(108), -1), sub_offset=0), _SubPort(port=OutPort(Node(108), -1), sub_offset=0): _SubPort(port=InPort(Node(117), -1), sub_offset=0), _SubPort(port=OutPort(Node(111), -1), sub_offset=0): _SubPort(port=InPort(Node(3), -1), sub_offset=0), _SubPort(port=OutPort(Node(117), -1), sub_offset=0): _SubPort(port=InPort(Node(183), -1), sub_offset=0), _SubPort(port=OutPort(Node(183), -1), sub_offset=0): _SubPort(port=InPort(Node(111), -1), sub_offset=0), _SubPort(port=OutPort(Node(264), 0), sub_offset=0): _SubPort(port=InPort(Node(265), 0), sub_offset=0), _SubPort(port=OutPort(Node(276), 0), sub_offset=0): _SubPort(port=InPort(Node(277), 0), sub_offset=0), _SubPort(port=OutPort(Node(278), 0), sub_offset=0): _SubPort(port=InPort(Node(279), 0), sub_offset=0), _SubPort(port=OutPort(Node(283), 0), sub_offset=0): _SubPort(port=InPort(Node(284), 0), sub_offset=0), _SubPort(port=OutPort(Node(291), 0), sub_offset=0): _SubPort(port=InPort(Node(292), 0), sub_offset=0), _SubPort(port=OutPort(Node(299), 0), sub_offset=0): _SubPort(port=InPort(Node(300), 0), sub_offset=0), _SubPort(port=OutPort(Node(305), 0), sub_offset=0): _SubPort(port=InPort(Node(306), 0), sub_offset=0), _SubPort(port=OutPort(Node(318), 0), sub_offset=0): _SubPort(port=InPort(Node(319), 0), sub_offset=0), _SubPort(port=OutPort(Node(323), 0), sub_offset=0): _SubPort(port=InPort(Node(324), 0), sub_offset=0), _SubPort(port=OutPort(Node(325), 0), sub_offset=0): _SubPort(port=InPort(Node(326), 0), sub_offset=0), _SubPort(port=OutPort(Node(334), 0), sub_offset=0): _SubPort(port=InPort(Node(335), 0), sub_offset=0), _SubPort(port=OutPort(Node(269), -1), sub_offset=0): _SubPort(port=InPort(Node(270), -1), sub_offset=0), _SubPort(port=OutPort(Node(344), 0), sub_offset=0): _SubPort(port=InPort(Node(345), 0), sub_offset=0), _SubPort(port=OutPort(Node(342), -1), sub_offset=0): _SubPort(port=InPort(Node(346), -1), sub_offset=0), _SubPort(port=OutPort(Node(346), -1), sub_offset=0): _SubPort(port=InPort(Node(343), -1), sub_offset=0), _SubPort(port=OutPort(Node(354), 0), sub_offset=0): _SubPort(port=InPort(Node(355), 0), sub_offset=0), _SubPort(port=OutPort(Node(364), 0), sub_offset=0): _SubPort(port=InPort(Node(365), 0), sub_offset=0), _SubPort(port=OutPort(Node(338), -1), sub_offset=0): _SubPort(port=InPort(Node(340), -1), sub_offset=0), _SubPort(port=OutPort(Node(340), -1), sub_offset=0): _SubPort(port=InPort(Node(339), -1), sub_offset=0), _SubPort(port=OutPort(Node(374), 0), sub_offset=0): _SubPort(port=InPort(Node(375), 0), sub_offset=0), _SubPort(port=OutPort(Node(372), -1), sub_offset=0): _SubPort(port=InPort(Node(376), -1), sub_offset=0), _SubPort(port=OutPort(Node(376), -1), sub_offset=0): _SubPort(port=InPort(Node(373), -1), sub_offset=0), _SubPort(port=OutPort(Node(377), 0), sub_offset=0): _SubPort(port=InPort(Node(378), 0), sub_offset=0), _SubPort(port=OutPort(Node(379), 0), sub_offset=0): _SubPort(port=InPort(Node(380), 0), sub_offset=0), _SubPort(port=OutPort(Node(381), 0), sub_offset=0): _SubPort(port=InPort(Node(382), 0), sub_offset=0), _SubPort(port=OutPort(Node(383), 0), sub_offset=0): _SubPort(port=InPort(Node(384), 0), sub_offset=0), _SubPort(port=OutPort(Node(261), -1), sub_offset=0): _SubPort(port=InPort(Node(267), -1), sub_offset=0), _SubPort(port=OutPort(Node(267), -1), sub_offset=0): _SubPort(port=InPort(Node(367), -1), sub_offset=0), _SubPort(port=OutPort(Node(367), -1), sub_offset=0): _SubPort(port=InPort(Node(262), -1), sub_offset=0), _SubPort(port=OutPort(Node(4), 0), sub_offset=0): _SubPort(port=InPort(Node(7), 1), sub_offset=0), _SubPort(port=OutPort(Node(6), 0), sub_offset=0): _SubPort(port=InPort(Node(7), 2), sub_offset=0), _SubPort(port=OutPort(Node(259), 0), sub_offset=0): _SubPort(port=InPort(Node(7), 0), sub_offset=0), _SubPort(port=OutPort(Node(7), 0), sub_offset=0): _SubPort(port=InPort(Node(108), 0), sub_offset=0), _SubPort(port=OutPort(Node(8), 0), sub_offset=0): _SubPort(port=InPort(Node(10), 0), sub_offset=0), _SubPort(port=OutPort(Node(8), 1), sub_offset=0): _SubPort(port=InPort(Node(12), 1), sub_offset=0), _SubPort(port=OutPort(Node(8), 2), sub_offset=0): _SubPort(port=InPort(Node(12), 2), sub_offset=0), _SubPort(port=OutPort(Node(12), 0), sub_offset=0): _SubPort(port=InPort(Node(9), 0), sub_offset=0), _SubPort(port=OutPort(Node(12), 1), sub_offset=0): _SubPort(port=InPort(Node(9), 1), sub_offset=0), _SubPort(port=OutPort(Node(12), 2), sub_offset=0): _SubPort(port=InPort(Node(9), 2), sub_offset=0), _SubPort(port=OutPort(Node(10), 0), sub_offset=0): _SubPort(port=InPort(Node(11), 0), sub_offset=0), _SubPort(port=OutPort(Node(105), 0), sub_offset=0): _SubPort(port=InPort(Node(11), 1), sub_offset=0), _SubPort(port=OutPort(Node(107), 0), sub_offset=0): _SubPort(port=InPort(Node(11), 2), sub_offset=0), _SubPort(port=OutPort(Node(11), 0), sub_offset=0): _SubPort(port=InPort(Node(35), 0), sub_offset=0), _SubPort(port=OutPort(Node(35), 0), sub_offset=0): _SubPort(port=InPort(Node(12), 0), sub_offset=0), _SubPort(port=OutPort(Node(14), 0), sub_offset=0): _SubPort(port=InPort(Node(15), 1), sub_offset=0), _SubPort(port=OutPort(Node(14), 1), sub_offset=0): _SubPort(port=InPort(Node(15), 2), sub_offset=0), _SubPort(port=OutPort(Node(17), 0), sub_offset=0): _SubPort(port=InPort(Node(15), 0), sub_offset=0), _SubPort(port=OutPort(Node(19), 0), sub_offset=0): _SubPort(port=InPort(Node(21), 0), sub_offset=0), _SubPort(port=OutPort(Node(19), 1), sub_offset=0): _SubPort(port=InPort(Node(27), 0), sub_offset=0), _SubPort(port=OutPort(Node(19), 2), sub_offset=0): _SubPort(port=InPort(Node(26), 0), sub_offset=0), _SubPort(port=OutPort(Node(19), 2), sub_offset=1): _SubPort(port=InPort(Node(30), 0), sub_offset=0), _SubPort(port=OutPort(Node(24), 0), sub_offset=0): _SubPort(port=InPort(Node(20), 0), sub_offset=0), _SubPort(port=OutPort(Node(27), 0), sub_offset=0): _SubPort(port=InPort(Node(20), 1), sub_offset=0), _SubPort(port=OutPort(Node(30), 0), sub_offset=0): _SubPort(port=InPort(Node(20), 2), sub_offset=0), _SubPort(port=OutPort(Node(21), 1), sub_offset=0): _SubPort(port=InPort(Node(22), 0), sub_offset=0), _SubPort(port=OutPort(Node(22), 0), sub_offset=0): _SubPort(port=InPort(Node(23), 0), sub_offset=0), _SubPort(port=OutPort(Node(32), 0), sub_offset=0): _SubPort(port=InPort(Node(23), 1), sub_offset=0), _SubPort(port=OutPort(Node(34), 0), sub_offset=0): _SubPort(port=InPort(Node(23), 2), sub_offset=0), _SubPort(port=OutPort(Node(23), 0), sub_offset=0): _SubPort(port=InPort(Node(24), 0), sub_offset=0), _SubPort(port=OutPort(Node(25), 0), sub_offset=0): _SubPort(port=InPort(Node(27), 2), sub_offset=0), _SubPort(port=OutPort(Node(26), 0), sub_offset=0): _SubPort(port=InPort(Node(27), 1), sub_offset=0), _SubPort(port=OutPort(Node(29), 0), sub_offset=0): _SubPort(port=InPort(Node(30), 1), sub_offset=0), _SubPort(port=OutPort(Node(36), 0), sub_offset=0): _SubPort(port=InPort(Node(57), 0), sub_offset=0), _SubPort(port=OutPort(Node(36), 1), sub_offset=0): _SubPort(port=InPort(Node(47), 0), sub_offset=0), _SubPort(port=OutPort(Node(37), 0), sub_offset=0): _SubPort(port=InPort(Node(41), 0), sub_offset=0), _SubPort(port=OutPort(Node(40), 0), sub_offset=0): _SubPort(port=InPort(Node(38), 0), sub_offset=0), _SubPort(port=OutPort(Node(41), 0), sub_offset=0): _SubPort(port=InPort(Node(38), 1), sub_offset=0), _SubPort(port=OutPort(Node(45), 0), sub_offset=0): _SubPort(port=InPort(Node(38), 2), sub_offset=0), _SubPort(port=OutPort(Node(43), 0), sub_offset=0): _SubPort(port=InPort(Node(38), 3), sub_offset=0), _SubPort(port=OutPort(Node(84), 0), sub_offset=0): _SubPort(port=InPort(Node(46), 0), sub_offset=0), _SubPort(port=OutPort(Node(91), 0), sub_offset=0): _SubPort(port=InPort(Node(46), 0), sub_offset=1), _SubPort(port=OutPort(Node(47), 0), sub_offset=0): _SubPort(port=InPort(Node(63), 0), sub_offset=0), _SubPort(port=OutPort(Node(57), 0), sub_offset=0): _SubPort(port=InPort(Node(63), 0), sub_offset=1), _SubPort(port=OutPort(Node(48), 0), sub_offset=0): _SubPort(port=InPort(Node(49), 2), sub_offset=0), _SubPort(port=OutPort(Node(48), 0), sub_offset=1): _SubPort(port=InPort(Node(50), 0), sub_offset=0), _SubPort(port=OutPort(Node(56), 0), sub_offset=0): _SubPort(port=InPort(Node(49), 0), sub_offset=0), _SubPort(port=OutPort(Node(50), 0), sub_offset=0): _SubPort(port=InPort(Node(49), 1), sub_offset=0), _SubPort(port=OutPort(Node(52), 0), sub_offset=0): _SubPort(port=InPort(Node(49), 3), sub_offset=0), _SubPort(port=OutPort(Node(54), 0), sub_offset=0): _SubPort(port=InPort(Node(49), 4), sub_offset=0), _SubPort(port=OutPort(Node(54), 0), sub_offset=1): _SubPort(port=InPort(Node(50), 1), sub_offset=0), _SubPort(port=OutPort(Node(58), 0), sub_offset=0): _SubPort(port=InPort(Node(59), 2), sub_offset=0), _SubPort(port=OutPort(Node(58), 0), sub_offset=1): _SubPort(port=InPort(Node(60), 0), sub_offset=0), _SubPort(port=OutPort(Node(58), 1), sub_offset=0): _SubPort(port=InPort(Node(59), 3), sub_offset=0), _SubPort(port=OutPort(Node(58), 2), sub_offset=0): _SubPort(port=InPort(Node(59), 4), sub_offset=0), _SubPort(port=OutPort(Node(58), 2), sub_offset=1): _SubPort(port=InPort(Node(60), 1), sub_offset=0), _SubPort(port=OutPort(Node(62), 0), sub_offset=0): _SubPort(port=InPort(Node(59), 0), sub_offset=0), _SubPort(port=OutPort(Node(60), 0), sub_offset=0): _SubPort(port=InPort(Node(59), 1), sub_offset=0), _SubPort(port=OutPort(Node(63), 0), sub_offset=0): _SubPort(port=InPort(Node(91), 0), sub_offset=0), _SubPort(port=OutPort(Node(63), 1), sub_offset=0): _SubPort(port=InPort(Node(84), 0), sub_offset=0), _SubPort(port=OutPort(Node(64), 0), sub_offset=0): _SubPort(port=InPort(Node(66), 0), sub_offset=0), _SubPort(port=OutPort(Node(64), 1), sub_offset=0): _SubPort(port=InPort(Node(66), 1), sub_offset=0), _SubPort(port=OutPort(Node(66), 0), sub_offset=0): _SubPort(port=InPort(Node(65), 0), sub_offset=0), _SubPort(port=OutPort(Node(81), 0), sub_offset=0): _SubPort(port=InPort(Node(66), 2), sub_offset=0), _SubPort(port=OutPort(Node(83), 0), sub_offset=0): _SubPort(port=InPort(Node(66), 3), sub_offset=0), _SubPort(port=OutPort(Node(68), 0), sub_offset=0): _SubPort(port=InPort(Node(70), 0), sub_offset=0), _SubPort(port=OutPort(Node(70), 0), sub_offset=0): _SubPort(port=InPort(Node(69), 0), sub_offset=0), _SubPort(port=OutPort(Node(72), 0), sub_offset=0): _SubPort(port=InPort(Node(70), 1), sub_offset=0), _SubPort(port=OutPort(Node(74), 0), sub_offset=0): _SubPort(port=InPort(Node(70), 2), sub_offset=0), _SubPort(port=OutPort(Node(79), 0), sub_offset=0): _SubPort(port=InPort(Node(77), 0), sub_offset=0), _SubPort(port=OutPort(Node(90), 0), sub_offset=0): _SubPort(port=InPort(Node(86), 0), sub_offset=0), _SubPort(port=OutPort(Node(88), 0), sub_offset=0): _SubPort(port=InPort(Node(86), 1), sub_offset=0), _SubPort(port=OutPort(Node(92), 0), sub_offset=0): _SubPort(port=InPort(Node(94), 0), sub_offset=0), _SubPort(port=OutPort(Node(92), 0), sub_offset=1): _SubPort(port=InPort(Node(96), 0), sub_offset=0), _SubPort(port=OutPort(Node(103), 0), sub_offset=0): _SubPort(port=InPort(Node(93), 0), sub_offset=0), _SubPort(port=OutPort(Node(97), 0), sub_offset=0): _SubPort(port=InPort(Node(93), 1), sub_offset=0), _SubPort(port=OutPort(Node(99), 0), sub_offset=0): _SubPort(port=InPort(Node(94), 1), sub_offset=0), _SubPort(port=OutPort(Node(99), 0), sub_offset=1): _SubPort(port=InPort(Node(95), 2), sub_offset=0), _SubPort(port=OutPort(Node(94), 0), sub_offset=0): _SubPort(port=InPort(Node(95), 0), sub_offset=0), _SubPort(port=OutPort(Node(101), 0), sub_offset=0): _SubPort(port=InPort(Node(95), 1), sub_offset=0), _SubPort(port=OutPort(Node(95), 0), sub_offset=0): _SubPort(port=InPort(Node(96), 1), sub_offset=0), _SubPort(port=OutPort(Node(96), 0), sub_offset=0): _SubPort(port=InPort(Node(97), 0), sub_offset=0), _SubPort(port=OutPort(Node(108), 0), sub_offset=0): _SubPort(port=InPort(Node(116), 0), sub_offset=0), _SubPort(port=OutPort(Node(183), 0), sub_offset=0): _SubPort(port=InPort(Node(109), 0), sub_offset=0), _SubPort(port=OutPort(Node(109), 0), sub_offset=0): _SubPort(port=InPort(Node(110), 0), sub_offset=0), _SubPort(port=OutPort(Node(109), 1), sub_offset=0): _SubPort(port=InPort(Node(112), 0), sub_offset=0), _SubPort(port=OutPort(Node(110), 0), sub_offset=0): _SubPort(port=InPort(Node(111), 0), sub_offset=0), _SubPort(port=OutPort(Node(113), 0), sub_offset=0): _SubPort(port=InPort(Node(117), 1), sub_offset=0), _SubPort(port=OutPort(Node(115), 0), sub_offset=0): _SubPort(port=InPort(Node(117), 2), sub_offset=0), _SubPort(port=OutPort(Node(255), 0), sub_offset=0): _SubPort(port=InPort(Node(116), 1), sub_offset=0), _SubPort(port=OutPort(Node(116), 0), sub_offset=0): _SubPort(port=InPort(Node(117), 0), sub_offset=0), _SubPort(port=OutPort(Node(117), 0), sub_offset=0): _SubPort(port=InPort(Node(182), 0), sub_offset=0), _SubPort(port=OutPort(Node(118), 0), sub_offset=0): _SubPort(port=InPort(Node(120), 0), sub_offset=0), _SubPort(port=OutPort(Node(118), 1), sub_offset=0): _SubPort(port=InPort(Node(122), 1), sub_offset=0), _SubPort(port=OutPort(Node(118), 2), sub_offset=0): _SubPort(port=InPort(Node(122), 2), sub_offset=0), _SubPort(port=OutPort(Node(122), 0), sub_offset=0): _SubPort(port=InPort(Node(119), 0), sub_offset=0), _SubPort(port=OutPort(Node(122), 1), sub_offset=0): _SubPort(port=InPort(Node(119), 1), sub_offset=0), _SubPort(port=OutPort(Node(122), 2), sub_offset=0): _SubPort(port=InPort(Node(119), 2), sub_offset=0), _SubPort(port=OutPort(Node(120), 0), sub_offset=0): _SubPort(port=InPort(Node(121), 0), sub_offset=0), _SubPort(port=OutPort(Node(120), 1), sub_offset=0): _SubPort(port=InPort(Node(121), 1), sub_offset=0), _SubPort(port=OutPort(Node(121), 0), sub_offset=0): _SubPort(port=InPort(Node(140), 0), sub_offset=0), _SubPort(port=OutPort(Node(140), 0), sub_offset=0): _SubPort(port=InPort(Node(122), 0), sub_offset=0), _SubPort(port=OutPort(Node(124), 0), sub_offset=0): _SubPort(port=InPort(Node(125), 1), sub_offset=0), _SubPort(port=OutPort(Node(124), 1), sub_offset=0): _SubPort(port=InPort(Node(125), 2), sub_offset=0), _SubPort(port=OutPort(Node(126), 0), sub_offset=0): _SubPort(port=InPort(Node(125), 0), sub_offset=0), _SubPort(port=OutPort(Node(128), 0), sub_offset=0): _SubPort(port=InPort(Node(130), 0), sub_offset=0), _SubPort(port=OutPort(Node(128), 1), sub_offset=0): _SubPort(port=InPort(Node(136), 0), sub_offset=0), _SubPort(port=OutPort(Node(128), 2), sub_offset=0): _SubPort(port=InPort(Node(135), 0), sub_offset=0), _SubPort(port=OutPort(Node(128), 2), sub_offset=1): _SubPort(port=InPort(Node(139), 0), sub_offset=0), _SubPort(port=OutPort(Node(133), 0), sub_offset=0): _SubPort(port=InPort(Node(129), 0), sub_offset=0), _SubPort(port=OutPort(Node(136), 0), sub_offset=0): _SubPort(port=InPort(Node(129), 1), sub_offset=0), _SubPort(port=OutPort(Node(139), 0), sub_offset=0): _SubPort(port=InPort(Node(129), 2), sub_offset=0), _SubPort(port=OutPort(Node(130), 0), sub_offset=0): _SubPort(port=InPort(Node(134), 0), sub_offset=0), _SubPort(port=OutPort(Node(130), 1), sub_offset=0): _SubPort(port=InPort(Node(131), 0), sub_offset=0), _SubPort(port=OutPort(Node(131), 0), sub_offset=0): _SubPort(port=InPort(Node(132), 0), sub_offset=0), _SubPort(port=OutPort(Node(131), 1), sub_offset=0): _SubPort(port=InPort(Node(132), 1), sub_offset=0), _SubPort(port=OutPort(Node(132), 0), sub_offset=0): _SubPort(port=InPort(Node(133), 0), sub_offset=0), _SubPort(port=OutPort(Node(134), 0), sub_offset=0): _SubPort(port=InPort(Node(136), 2), sub_offset=0), _SubPort(port=OutPort(Node(135), 0), sub_offset=0): _SubPort(port=InPort(Node(136), 1), sub_offset=0), _SubPort(port=OutPort(Node(138), 0), sub_offset=0): _SubPort(port=InPort(Node(139), 1), sub_offset=0), _SubPort(port=OutPort(Node(141), 0), sub_offset=0): _SubPort(port=InPort(Node(172), 0), sub_offset=0), _SubPort(port=OutPort(Node(141), 1), sub_offset=0): _SubPort(port=InPort(Node(159), 0), sub_offset=0), _SubPort(port=OutPort(Node(142), 0), sub_offset=0): _SubPort(port=InPort(Node(144), 0), sub_offset=0), _SubPort(port=OutPort(Node(146), 0), sub_offset=0): _SubPort(port=InPort(Node(143), 0), sub_offset=0), _SubPort(port=OutPort(Node(144), 0), sub_offset=0): _SubPort(port=InPort(Node(143), 1), sub_offset=0), _SubPort(port=OutPort(Node(144), 1), sub_offset=0): _SubPort(port=InPort(Node(145), 0), sub_offset=0), _SubPort(port=OutPort(Node(144), 1), sub_offset=1): _SubPort(port=InPort(Node(146), 1), sub_offset=0), _SubPort(port=OutPort(Node(157), 0), sub_offset=0): _SubPort(port=InPort(Node(145), 1), sub_offset=0), _SubPort(port=OutPort(Node(145), 0), sub_offset=0): _SubPort(port=InPort(Node(146), 0), sub_offset=0), _SubPort(port=OutPort(Node(151), 0), sub_offset=0): _SubPort(port=InPort(Node(149), 0), sub_offset=0), _SubPort(port=OutPort(Node(153), 0), sub_offset=0): _SubPort(port=InPort(Node(155), 0), sub_offset=0), _SubPort(port=OutPort(Node(155), 0), sub_offset=0): _SubPort(port=InPort(Node(154), 0), sub_offset=0), _SubPort(port=OutPort(Node(159), 0), sub_offset=0): _SubPort(port=InPort(Node(158), 0), sub_offset=0), _SubPort(port=OutPort(Node(172), 0), sub_offset=0): _SubPort(port=InPort(Node(158), 0), sub_offset=1), _SubPort(port=OutPort(Node(160), 0), sub_offset=0): _SubPort(port=InPort(Node(162), 0), sub_offset=0), _SubPort(port=OutPort(Node(160), 0), sub_offset=1): _SubPort(port=InPort(Node(166), 0), sub_offset=0), _SubPort(port=OutPort(Node(160), 1), sub_offset=0): _SubPort(port=InPort(Node(163), 0), sub_offset=0), _SubPort(port=OutPort(Node(171), 0), sub_offset=0): _SubPort(port=InPort(Node(161), 0), sub_offset=0), _SubPort(port=OutPort(Node(169), 0), sub_offset=0): _SubPort(port=InPort(Node(161), 1), sub_offset=0), _SubPort(port=OutPort(Node(162), 0), sub_offset=0): _SubPort(port=InPort(Node(163), 1), sub_offset=0), _SubPort(port=OutPort(Node(163), 0), sub_offset=0): _SubPort(port=InPort(Node(167), 0), sub_offset=0), _SubPort(port=OutPort(Node(163), 1), sub_offset=0): _SubPort(port=InPort(Node(168), 0), sub_offset=0), _SubPort(port=OutPort(Node(165), 0), sub_offset=0): _SubPort(port=InPort(Node(166), 1), sub_offset=0), _SubPort(port=OutPort(Node(166), 0), sub_offset=0): _SubPort(port=InPort(Node(167), 1), sub_offset=0), _SubPort(port=OutPort(Node(167), 0), sub_offset=0): _SubPort(port=InPort(Node(168), 1), sub_offset=0), _SubPort(port=OutPort(Node(168), 0), sub_offset=0): _SubPort(port=InPort(Node(169), 0), sub_offset=0), _SubPort(port=OutPort(Node(173), 0), sub_offset=0): _SubPort(port=InPort(Node(175), 0), sub_offset=0), _SubPort(port=OutPort(Node(178), 0), sub_offset=0): _SubPort(port=InPort(Node(174), 0), sub_offset=0), _SubPort(port=OutPort(Node(176), 0), sub_offset=0): _SubPort(port=InPort(Node(174), 1), sub_offset=0), _SubPort(port=OutPort(Node(179), 0), sub_offset=0): _SubPort(port=InPort(Node(183), 1), sub_offset=0), _SubPort(port=OutPort(Node(181), 0), sub_offset=0): _SubPort(port=InPort(Node(183), 2), sub_offset=0), _SubPort(port=OutPort(Node(257), 0), sub_offset=0): _SubPort(port=InPort(Node(182), 1), sub_offset=0), _SubPort(port=OutPort(Node(182), 0), sub_offset=0): _SubPort(port=InPort(Node(183), 0), sub_offset=0), _SubPort(port=OutPort(Node(184), 0), sub_offset=0): _SubPort(port=InPort(Node(186), 0), sub_offset=0), _SubPort(port=OutPort(Node(184), 1), sub_offset=0): _SubPort(port=InPort(Node(188), 1), sub_offset=0), _SubPort(port=OutPort(Node(184), 2), sub_offset=0): _SubPort(port=InPort(Node(188), 2), sub_offset=0), _SubPort(port=OutPort(Node(188), 0), sub_offset=0): _SubPort(port=InPort(Node(185), 0), sub_offset=0), _SubPort(port=OutPort(Node(188), 1), sub_offset=0): _SubPort(port=InPort(Node(185), 1), sub_offset=0), _SubPort(port=OutPort(Node(188), 2), sub_offset=0): _SubPort(port=InPort(Node(185), 2), sub_offset=0), _SubPort(port=OutPort(Node(186), 0), sub_offset=0): _SubPort(port=InPort(Node(187), 0), sub_offset=0), _SubPort(port=OutPort(Node(186), 1), sub_offset=0): _SubPort(port=InPort(Node(187), 1), sub_offset=0), _SubPort(port=OutPort(Node(187), 0), sub_offset=0): _SubPort(port=InPort(Node(206), 0), sub_offset=0), _SubPort(port=OutPort(Node(206), 0), sub_offset=0): _SubPort(port=InPort(Node(188), 0), sub_offset=0), _SubPort(port=OutPort(Node(190), 0), sub_offset=0): _SubPort(port=InPort(Node(191), 1), sub_offset=0), _SubPort(port=OutPort(Node(190), 1), sub_offset=0): _SubPort(port=InPort(Node(191), 2), sub_offset=0), _SubPort(port=OutPort(Node(192), 0), sub_offset=0): _SubPort(port=InPort(Node(191), 0), sub_offset=0), _SubPort(port=OutPort(Node(194), 0), sub_offset=0): _SubPort(port=InPort(Node(196), 0), sub_offset=0), _SubPort(port=OutPort(Node(194), 1), sub_offset=0): _SubPort(port=InPort(Node(202), 0), sub_offset=0), _SubPort(port=OutPort(Node(194), 2), sub_offset=0): _SubPort(port=InPort(Node(201), 0), sub_offset=0), _SubPort(port=OutPort(Node(194), 2), sub_offset=1): _SubPort(port=InPort(Node(205), 0), sub_offset=0), _SubPort(port=OutPort(Node(199), 0), sub_offset=0): _SubPort(port=InPort(Node(195), 0), sub_offset=0), _SubPort(port=OutPort(Node(202), 0), sub_offset=0): _SubPort(port=InPort(Node(195), 1), sub_offset=0), _SubPort(port=OutPort(Node(205), 0), sub_offset=0): _SubPort(port=InPort(Node(195), 2), sub_offset=0), _SubPort(port=OutPort(Node(196), 0), sub_offset=0): _SubPort(port=InPort(Node(200), 0), sub_offset=0), _SubPort(port=OutPort(Node(196), 1), sub_offset=0): _SubPort(port=InPort(Node(197), 0), sub_offset=0), _SubPort(port=OutPort(Node(197), 0), sub_offset=0): _SubPort(port=InPort(Node(198), 0), sub_offset=0), _SubPort(port=OutPort(Node(197), 1), sub_offset=0): _SubPort(port=InPort(Node(198), 1), sub_offset=0), _SubPort(port=OutPort(Node(198), 0), sub_offset=0): _SubPort(port=InPort(Node(199), 0), sub_offset=0), _SubPort(port=OutPort(Node(200), 0), sub_offset=0): _SubPort(port=InPort(Node(202), 2), sub_offset=0), _SubPort(port=OutPort(Node(201), 0), sub_offset=0): _SubPort(port=InPort(Node(202), 1), sub_offset=0), _SubPort(port=OutPort(Node(204), 0), sub_offset=0): _SubPort(port=InPort(Node(205), 1), sub_offset=0), _SubPort(port=OutPort(Node(207), 0), sub_offset=0): _SubPort(port=InPort(Node(247), 0), sub_offset=0), _SubPort(port=OutPort(Node(207), 1), sub_offset=0): _SubPort(port=InPort(Node(224), 0), sub_offset=0), _SubPort(port=OutPort(Node(208), 0), sub_offset=0): _SubPort(port=InPort(Node(210), 0), sub_offset=0), _SubPort(port=OutPort(Node(212), 0), sub_offset=0): _SubPort(port=InPort(Node(209), 0), sub_offset=0), _SubPort(port=OutPort(Node(210), 0), sub_offset=0): _SubPort(port=InPort(Node(212), 1), sub_offset=0), _SubPort(port=OutPort(Node(210), 1), sub_offset=0): _SubPort(port=InPort(Node(211), 0), sub_offset=0), _SubPort(port=OutPort(Node(210), 1), sub_offset=1): _SubPort(port=InPort(Node(212), 2), sub_offset=0), _SubPort(port=OutPort(Node(222), 0), sub_offset=0): _SubPort(port=InPort(Node(211), 1), sub_offset=0), _SubPort(port=OutPort(Node(211), 0), sub_offset=0): _SubPort(port=InPort(Node(212), 0), sub_offset=0), _SubPort(port=OutPort(Node(214), 0), sub_offset=0): _SubPort(port=InPort(Node(216), 0), sub_offset=0), _SubPort(port=OutPort(Node(216), 0), sub_offset=0): _SubPort(port=InPort(Node(215), 0), sub_offset=0), _SubPort(port=OutPort(Node(218), 0), sub_offset=0): _SubPort(port=InPort(Node(220), 1), sub_offset=0), _SubPort(port=OutPort(Node(218), 1), sub_offset=0): _SubPort(port=InPort(Node(220), 0), sub_offset=0), _SubPort(port=OutPort(Node(220), 0), sub_offset=0): _SubPort(port=InPort(Node(219), 0), sub_offset=0), _SubPort(port=OutPort(Node(224), 0), sub_offset=0): _SubPort(port=InPort(Node(223), 0), sub_offset=0), _SubPort(port=OutPort(Node(247), 0), sub_offset=0): _SubPort(port=InPort(Node(223), 0), sub_offset=1), _SubPort(port=OutPort(Node(225), 0), sub_offset=0): _SubPort(port=InPort(Node(227), 0), sub_offset=0), _SubPort(port=OutPort(Node(225), 0), sub_offset=1): _SubPort(port=InPort(Node(241), 0), sub_offset=0), _SubPort(port=OutPort(Node(225), 1), sub_offset=0): _SubPort(port=InPort(Node(228), 0), sub_offset=0), _SubPort(port=OutPort(Node(246), 0), sub_offset=0): _SubPort(port=InPort(Node(226), 0), sub_offset=0), _SubPort(port=OutPort(Node(244), 0), sub_offset=0): _SubPort(port=InPort(Node(226), 1), sub_offset=0), _SubPort(port=OutPort(Node(227), 0), sub_offset=0): _SubPort(port=InPort(Node(228), 1), sub_offset=0), _SubPort(port=OutPort(Node(228), 0), sub_offset=0): _SubPort(port=InPort(Node(229), 0), sub_offset=0), _SubPort(port=OutPort(Node(228), 1), sub_offset=0): _SubPort(port=InPort(Node(242), 0), sub_offset=0), _SubPort(port=OutPort(Node(229), 0), sub_offset=0): _SubPort(port=InPort(Node(243), 0), sub_offset=0), _SubPort(port=OutPort(Node(235), 0), sub_offset=0): _SubPort(port=InPort(Node(232), 0), sub_offset=0), _SubPort(port=OutPort(Node(234), 0), sub_offset=0): _SubPort(port=InPort(Node(235), 0), sub_offset=0), _SubPort(port=OutPort(Node(237), 0), sub_offset=0): _SubPort(port=InPort(Node(238), 0), sub_offset=0), _SubPort(port=OutPort(Node(240), 0), sub_offset=0): _SubPort(port=InPort(Node(241), 1), sub_offset=0), _SubPort(port=OutPort(Node(241), 0), sub_offset=0): _SubPort(port=InPort(Node(242), 1), sub_offset=0), _SubPort(port=OutPort(Node(242), 0), sub_offset=0): _SubPort(port=InPort(Node(243), 1), sub_offset=0), _SubPort(port=OutPort(Node(243), 0), sub_offset=0): _SubPort(port=InPort(Node(244), 0), sub_offset=0), _SubPort(port=OutPort(Node(248), 0), sub_offset=0): _SubPort(port=InPort(Node(251), 0), sub_offset=0), _SubPort(port=OutPort(Node(253), 0), sub_offset=0): _SubPort(port=InPort(Node(249), 0), sub_offset=0), _SubPort(port=OutPort(Node(250), 0), sub_offset=0): _SubPort(port=InPort(Node(249), 1), sub_offset=0), _SubPort(port=OutPort(Node(261), 0), sub_offset=0): _SubPort(port=InPort(Node(263), 0), sub_offset=0), _SubPort(port=OutPort(Node(267), 1), sub_offset=0): _SubPort(port=InPort(Node(262), 0), sub_offset=0), _SubPort(port=OutPort(Node(265), 0), sub_offset=0): _SubPort(port=InPort(Node(263), 1), sub_offset=0), _SubPort(port=OutPort(Node(263), 0), sub_offset=0): _SubPort(port=InPort(Node(366), 0), sub_offset=0), _SubPort(port=OutPort(Node(263), 1), sub_offset=0): _SubPort(port=InPort(Node(266), 0), sub_offset=0), _SubPort(port=OutPort(Node(266), 0), sub_offset=0): _SubPort(port=InPort(Node(366), 2), sub_offset=0), _SubPort(port=OutPort(Node(378), 0), sub_offset=0): _SubPort(port=InPort(Node(267), 0), sub_offset=0), _SubPort(port=OutPort(Node(380), 0), sub_offset=0): _SubPort(port=InPort(Node(267), 1), sub_offset=0), _SubPort(port=OutPort(Node(384), 0), sub_offset=0): _SubPort(port=InPort(Node(267), 2), sub_offset=0), _SubPort(port=OutPort(Node(366), 0), sub_offset=0): _SubPort(port=InPort(Node(267), 3), sub_offset=0), _SubPort(port=OutPort(Node(267), 0), sub_offset=0): _SubPort(port=InPort(Node(367), 0), sub_offset=0), _SubPort(port=OutPort(Node(337), 0), sub_offset=0): _SubPort(port=InPort(Node(268), 0), sub_offset=0), _SubPort(port=OutPort(Node(268), 0), sub_offset=0): _SubPort(port=InPort(Node(336), 0), sub_offset=0), _SubPort(port=OutPort(Node(268), 1), sub_offset=0): _SubPort(port=InPort(Node(337), 0), sub_offset=0), _SubPort(port=OutPort(Node(269), 0), sub_offset=0): _SubPort(port=InPort(Node(271), 0), sub_offset=0), _SubPort(port=OutPort(Node(269), 1), sub_offset=0): _SubPort(port=InPort(Node(271), 2), sub_offset=0), _SubPort(port=OutPort(Node(269), 2), sub_offset=0): _SubPort(port=InPort(Node(271), 1), sub_offset=0), _SubPort(port=OutPort(Node(269), 3), sub_offset=0): _SubPort(port=InPort(Node(270), 2), sub_offset=0), _SubPort(port=OutPort(Node(272), 0), sub_offset=0): _SubPort(port=InPort(Node(270), 0), sub_offset=0), _SubPort(port=OutPort(Node(272), 1), sub_offset=0): _SubPort(port=InPort(Node(270), 1), sub_offset=0), _SubPort(port=OutPort(Node(271), 0), sub_offset=0): _SubPort(port=InPort(Node(286), 0), sub_offset=0), _SubPort(port=OutPort(Node(286), 0), sub_offset=0): _SubPort(port=InPort(Node(272), 0), sub_offset=0), _SubPort(port=OutPort(Node(277), 0), sub_offset=0): _SubPort(port=InPort(Node(275), 0), sub_offset=0), _SubPort(port=OutPort(Node(279), 0), sub_offset=0): _SubPort(port=InPort(Node(275), 1), sub_offset=0), _SubPort(port=OutPort(Node(281), 0), sub_offset=0): _SubPort(port=InPort(Node(285), 0), sub_offset=0), _SubPort(port=OutPort(Node(284), 0), sub_offset=0): _SubPort(port=InPort(Node(282), 0), sub_offset=0), _SubPort(port=OutPort(Node(285), 0), sub_offset=0): _SubPort(port=InPort(Node(282), 1), sub_offset=0), _SubPort(port=OutPort(Node(287), 0), sub_offset=0): _SubPort(port=InPort(Node(301), 0), sub_offset=0), _SubPort(port=OutPort(Node(287), 1), sub_offset=0): _SubPort(port=InPort(Node(295), 0), sub_offset=0), _SubPort(port=OutPort(Node(288), 0), sub_offset=0): _SubPort(port=InPort(Node(290), 0), sub_offset=0), _SubPort(port=OutPort(Node(293), 0), sub_offset=0): _SubPort(port=InPort(Node(289), 0), sub_offset=0), _SubPort(port=OutPort(Node(290), 0), sub_offset=0): _SubPort(port=InPort(Node(289), 1), sub_offset=0), _SubPort(port=OutPort(Node(290), 2), sub_offset=0): _SubPort(port=InPort(Node(289), 2), sub_offset=0), _SubPort(port=OutPort(Node(290), 2), sub_offset=1): _SubPort(port=InPort(Node(293), 0), sub_offset=0), _SubPort(port=OutPort(Node(290), 1), sub_offset=0): _SubPort(port=InPort(Node(289), 3), sub_offset=0), _SubPort(port=OutPort(Node(292), 0), sub_offset=0): _SubPort(port=InPort(Node(293), 1), sub_offset=0), _SubPort(port=OutPort(Node(320), 0), sub_offset=0): _SubPort(port=InPort(Node(294), 0), sub_offset=0), _SubPort(port=OutPort(Node(327), 0), sub_offset=0): _SubPort(port=InPort(Node(294), 0), sub_offset=1), _SubPort(port=OutPort(Node(295), 0), sub_offset=0): _SubPort(port=InPort(Node(307), 0), sub_offset=0), _SubPort(port=OutPort(Node(301), 0), sub_offset=0): _SubPort(port=InPort(Node(307), 0), sub_offset=1), _SubPort(port=OutPort(Node(296), 0), sub_offset=0): _SubPort(port=InPort(Node(297), 2), sub_offset=0), _SubPort(port=OutPort(Node(296), 0), sub_offset=1): _SubPort(port=InPort(Node(298), 0), sub_offset=0), _SubPort(port=OutPort(Node(296), 1), sub_offset=0): _SubPort(port=InPort(Node(297), 3), sub_offset=0), _SubPort(port=OutPort(Node(296), 2), sub_offset=0): _SubPort(port=InPort(Node(297), 4), sub_offset=0), _SubPort(port=OutPort(Node(296), 2), sub_offset=1): _SubPort(port=InPort(Node(298), 1), sub_offset=0), _SubPort(port=OutPort(Node(300), 0), sub_offset=0): _SubPort(port=InPort(Node(297), 0), sub_offset=0), _SubPort(port=OutPort(Node(298), 0), sub_offset=0): _SubPort(port=InPort(Node(297), 1), sub_offset=0), _SubPort(port=OutPort(Node(302), 0), sub_offset=0): _SubPort(port=InPort(Node(303), 2), sub_offset=0), _SubPort(port=OutPort(Node(302), 0), sub_offset=1): _SubPort(port=InPort(Node(304), 0), sub_offset=0), _SubPort(port=OutPort(Node(302), 1), sub_offset=0): _SubPort(port=InPort(Node(303), 3), sub_offset=0), _SubPort(port=OutPort(Node(302), 2), sub_offset=0): _SubPort(port=InPort(Node(303), 4), sub_offset=0), _SubPort(port=OutPort(Node(302), 2), sub_offset=1): _SubPort(port=InPort(Node(304), 1), sub_offset=0), _SubPort(port=OutPort(Node(306), 0), sub_offset=0): _SubPort(port=InPort(Node(303), 0), sub_offset=0), _SubPort(port=OutPort(Node(304), 0), sub_offset=0): _SubPort(port=InPort(Node(303), 1), sub_offset=0), _SubPort(port=OutPort(Node(307), 0), sub_offset=0): _SubPort(port=InPort(Node(327), 0), sub_offset=0), _SubPort(port=OutPort(Node(307), 1), sub_offset=0): _SubPort(port=InPort(Node(320), 0), sub_offset=0), _SubPort(port=OutPort(Node(308), 0), sub_offset=0): _SubPort(port=InPort(Node(310), 0), sub_offset=0), _SubPort(port=OutPort(Node(308), 1), sub_offset=0): _SubPort(port=InPort(Node(310), 1), sub_offset=0), _SubPort(port=OutPort(Node(308), 2), sub_offset=0): _SubPort(port=InPort(Node(310), 2), sub_offset=0), _SubPort(port=OutPort(Node(308), 3), sub_offset=0): _SubPort(port=InPort(Node(310), 3), sub_offset=0), _SubPort(port=OutPort(Node(310), 0), sub_offset=0): _SubPort(port=InPort(Node(309), 0), sub_offset=0), _SubPort(port=OutPort(Node(312), 0), sub_offset=0): _SubPort(port=InPort(Node(314), 0), sub_offset=0), _SubPort(port=OutPort(Node(312), 1), sub_offset=0): _SubPort(port=InPort(Node(314), 1), sub_offset=0), _SubPort(port=OutPort(Node(312), 2), sub_offset=0): _SubPort(port=InPort(Node(314), 2), sub_offset=0), _SubPort(port=OutPort(Node(314), 0), sub_offset=0): _SubPort(port=InPort(Node(313), 0), sub_offset=0), _SubPort(port=OutPort(Node(319), 0), sub_offset=0): _SubPort(port=InPort(Node(317), 0), sub_offset=0), _SubPort(port=OutPort(Node(326), 0), sub_offset=0): _SubPort(port=InPort(Node(322), 0), sub_offset=0), _SubPort(port=OutPort(Node(324), 0), sub_offset=0): _SubPort(port=InPort(Node(322), 1), sub_offset=0), _SubPort(port=OutPort(Node(328), 0), sub_offset=0): _SubPort(port=InPort(Node(330), 0), sub_offset=0), _SubPort(port=OutPort(Node(328), 0), sub_offset=1): _SubPort(port=InPort(Node(332), 0), sub_offset=0), _SubPort(port=OutPort(Node(328), 1), sub_offset=0): _SubPort(port=InPort(Node(330), 1), sub_offset=0), _SubPort(port=OutPort(Node(328), 1), sub_offset=1): _SubPort(port=InPort(Node(331), 2), sub_offset=0), _SubPort(port=OutPort(Node(328), 2), sub_offset=0): _SubPort(port=InPort(Node(331), 1), sub_offset=0), _SubPort(port=OutPort(Node(335), 0), sub_offset=0): _SubPort(port=InPort(Node(329), 0), sub_offset=0), _SubPort(port=OutPort(Node(333), 0), sub_offset=0): _SubPort(port=InPort(Node(329), 1), sub_offset=0), _SubPort(port=OutPort(Node(330), 0), sub_offset=0): _SubPort(port=InPort(Node(331), 0), sub_offset=0), _SubPort(port=OutPort(Node(331), 0), sub_offset=0): _SubPort(port=InPort(Node(332), 1), sub_offset=0), _SubPort(port=OutPort(Node(332), 0), sub_offset=0): _SubPort(port=InPort(Node(333), 0), sub_offset=0), _SubPort(port=OutPort(Node(338), 0), sub_offset=0): _SubPort(port=InPort(Node(340), 0), sub_offset=0), _SubPort(port=OutPort(Node(338), 1), sub_offset=0): _SubPort(port=InPort(Node(353), 0), sub_offset=0), _SubPort(port=OutPort(Node(365), 0), sub_offset=0): _SubPort(port=InPort(Node(339), 0), sub_offset=0), _SubPort(port=OutPort(Node(351), 0), sub_offset=0): _SubPort(port=InPort(Node(339), 1), sub_offset=0), _SubPort(port=OutPort(Node(351), 2), sub_offset=0): _SubPort(port=InPort(Node(339), 2), sub_offset=0), _SubPort(port=OutPort(Node(351), 1), sub_offset=0): _SubPort(port=InPort(Node(339), 3), sub_offset=0), _SubPort(port=OutPort(Node(363), 0), sub_offset=0): _SubPort(port=InPort(Node(339), 4), sub_offset=0), _SubPort(port=OutPort(Node(340), 0), sub_offset=0): _SubPort(port=InPort(Node(350), 0), sub_offset=0), _SubPort(port=OutPort(Node(346), 0), sub_offset=0): _SubPort(port=InPort(Node(343), 0), sub_offset=0), _SubPort(port=OutPort(Node(345), 0), sub_offset=0): _SubPort(port=InPort(Node(346), 0), sub_offset=0), _SubPort(port=OutPort(Node(348), 0), sub_offset=0): _SubPort(port=InPort(Node(349), 0), sub_offset=0), _SubPort(port=OutPort(Node(350), 0), sub_offset=0): _SubPort(port=InPort(Node(352), 0), sub_offset=0), _SubPort(port=OutPort(Node(350), 0), sub_offset=1): _SubPort(port=InPort(Node(356), 0), sub_offset=0), _SubPort(port=OutPort(Node(350), 0), sub_offset=2): _SubPort(port=InPort(Node(359), 0), sub_offset=0), _SubPort(port=OutPort(Node(350), 1), sub_offset=0): _SubPort(port=InPort(Node(351), 0), sub_offset=0), _SubPort(port=OutPort(Node(352), 0), sub_offset=0): _SubPort(port=InPort(Node(353), 1), sub_offset=0), _SubPort(port=OutPort(Node(353), 0), sub_offset=0): _SubPort(port=InPort(Node(358), 0), sub_offset=0), _SubPort(port=OutPort(Node(353), 1), sub_offset=0): _SubPort(port=InPort(Node(361), 0), sub_offset=0), _SubPort(port=OutPort(Node(355), 0), sub_offset=0): _SubPort(port=InPort(Node(356), 1), sub_offset=0), _SubPort(port=OutPort(Node(356), 0), sub_offset=0): _SubPort(port=InPort(Node(357), 0), sub_offset=0), _SubPort(port=OutPort(Node(356), 0), sub_offset=1): _SubPort(port=InPort(Node(360), 0), sub_offset=0), _SubPort(port=OutPort(Node(357), 0), sub_offset=0): _SubPort(port=InPort(Node(358), 1), sub_offset=0), _SubPort(port=OutPort(Node(358), 0), sub_offset=0): _SubPort(port=InPort(Node(362), 0), sub_offset=0), _SubPort(port=OutPort(Node(358), 1), sub_offset=0): _SubPort(port=InPort(Node(361), 1), sub_offset=0), _SubPort(port=OutPort(Node(359), 0), sub_offset=0): _SubPort(port=InPort(Node(362), 1), sub_offset=0), _SubPort(port=OutPort(Node(360), 0), sub_offset=0): _SubPort(port=InPort(Node(363), 1), sub_offset=0), _SubPort(port=OutPort(Node(361), 0), sub_offset=0): _SubPort(port=InPort(Node(362), 2), sub_offset=0), _SubPort(port=OutPort(Node(361), 1), sub_offset=0): _SubPort(port=InPort(Node(363), 2), sub_offset=0), _SubPort(port=OutPort(Node(362), 0), sub_offset=0): _SubPort(port=InPort(Node(363), 0), sub_offset=0), _SubPort(port=OutPort(Node(382), 0), sub_offset=0): _SubPort(port=InPort(Node(366), 1), sub_offset=0), _SubPort(port=OutPort(Node(372), 0), sub_offset=0): _SubPort(port=InPort(Node(376), 1), sub_offset=0), _SubPort(port=OutPort(Node(375), 0), sub_offset=0): _SubPort(port=InPort(Node(376), 0), sub_offset=0), _SubPort(port=OutPort(Node(260), 0), sub_offset=0): _SubPort(port=InPort(Node(108), 1), sub_offset=0)}, _fwd={OutPort(Node(5), 0): {0: _SubPort(port=InPort(Node(6), 0), sub_offset=0)}, OutPort(Node(16), 0): {0: _SubPort(port=InPort(Node(17), 0), sub_offset=0)}, OutPort(Node(28), 0): {0: _SubPort(port=InPort(Node(29), 0), sub_offset=0)}, OutPort(Node(31), 0): {0: _SubPort(port=InPort(Node(32), 0), sub_offset=0)}, OutPort(Node(33), 0): {0: _SubPort(port=InPort(Node(34), 0), sub_offset=0)}, OutPort(Node(19), -1): {0: _SubPort(port=InPort(Node(25), -1), sub_offset=0)}, OutPort(Node(25), -1): {0: _SubPort(port=InPort(Node(20), -1), sub_offset=0)}, OutPort(Node(39), 0): {0: _SubPort(port=InPort(Node(40), 0), sub_offset=0)}, OutPort(Node(42), 0): {0: _SubPort(port=InPort(Node(43), 0), sub_offset=0)}, OutPort(Node(44), 0): {0: _SubPort(port=InPort(Node(45), 0), sub_offset=0)}, OutPort(Node(51), 0): {0: _SubPort(port=InPort(Node(52), 0), sub_offset=0)}, OutPort(Node(53), 0): {0: _SubPort(port=InPort(Node(54), 0), sub_offset=0)}, OutPort(Node(55), 0): {0: _SubPort(port=InPort(Node(56), 0), sub_offset=0)}, OutPort(Node(61), 0): {0: _SubPort(port=InPort(Node(62), 0), sub_offset=0)}, OutPort(Node(71), 0): {0: _SubPort(port=InPort(Node(72), 0), sub_offset=0)}, OutPort(Node(73), 0): {0: _SubPort(port=InPort(Node(74), 0), sub_offset=0)}, OutPort(Node(78), 0): {0: _SubPort(port=InPort(Node(79), 0), sub_offset=0)}, OutPort(Node(80), 0): {0: _SubPort(port=InPort(Node(81), 0), sub_offset=0)}, OutPort(Node(82), 0): {0: _SubPort(port=InPort(Node(83), 0), sub_offset=0)}, OutPort(Node(87), 0): {0: _SubPort(port=InPort(Node(88), 0), sub_offset=0)}, OutPort(Node(89), 0): {0: _SubPort(port=InPort(Node(90), 0), sub_offset=0)}, OutPort(Node(98), 0): {0: _SubPort(port=InPort(Node(99), 0), sub_offset=0)}, OutPort(Node(100), 0): {0: _SubPort(port=InPort(Node(101), 0), sub_offset=0)}, OutPort(Node(102), 0): {0: _SubPort(port=InPort(Node(103), 0), sub_offset=0)}, OutPort(Node(104), 0): {0: _SubPort(port=InPort(Node(105), 0), sub_offset=0)}, OutPort(Node(106), 0): {0: _SubPort(port=InPort(Node(107), 0), sub_offset=0)}, OutPort(Node(8), -1): {0: _SubPort(port=InPort(Node(12), -1), sub_offset=0)}, OutPort(Node(12), -1): {0: _SubPort(port=InPort(Node(9), -1), sub_offset=0)}, OutPort(Node(114), 0): {0: _SubPort(port=InPort(Node(115), 0), sub_offset=0)}, OutPort(Node(137), 0): {0: _SubPort(port=InPort(Node(138), 0), sub_offset=0)}, OutPort(Node(128), -1): {0: _SubPort(port=InPort(Node(134), -1), sub_offset=0)}, OutPort(Node(134), -1): {0: _SubPort(port=InPort(Node(129), -1), sub_offset=0)}, OutPort(Node(150), 0): {0: _SubPort(port=InPort(Node(151), 0), sub_offset=0)}, OutPort(Node(156), 0): {0: _SubPort(port=InPort(Node(157), 0), sub_offset=0)}, OutPort(Node(164), 0): {0: _SubPort(port=InPort(Node(165), 0), sub_offset=0)}, OutPort(Node(170), 0): {0: _SubPort(port=InPort(Node(171), 0), sub_offset=0)}, OutPort(Node(177), 0): {0: _SubPort(port=InPort(Node(178), 0), sub_offset=0)}, OutPort(Node(118), -1): {0: _SubPort(port=InPort(Node(122), -1), sub_offset=0)}, OutPort(Node(122), -1): {0: _SubPort(port=InPort(Node(119), -1), sub_offset=0)}, OutPort(Node(180), 0): {0: _SubPort(port=InPort(Node(181), 0), sub_offset=0)}, OutPort(Node(203), 0): {0: _SubPort(port=InPort(Node(204), 0), sub_offset=0)}, OutPort(Node(221), 0): {0: _SubPort(port=InPort(Node(222), 0), sub_offset=0)}, OutPort(Node(233), 0): {0: _SubPort(port=InPort(Node(234), 0), sub_offset=0)}, OutPort(Node(231), -1): {0: _SubPort(port=InPort(Node(235), -1), sub_offset=0)}, OutPort(Node(235), -1): {0: _SubPort(port=InPort(Node(232), -1), sub_offset=0)}, OutPort(Node(239), 0): {0: _SubPort(port=InPort(Node(240), 0), sub_offset=0)}, OutPort(Node(245), 0): {0: _SubPort(port=InPort(Node(246), 0), sub_offset=0)}, OutPort(Node(225), -1): {0: _SubPort(port=InPort(Node(229), -1), sub_offset=0)}, OutPort(Node(229), -1): {0: _SubPort(port=InPort(Node(226), -1), sub_offset=0)}, OutPort(Node(252), 0): {0: _SubPort(port=InPort(Node(253), 0), sub_offset=0)}, OutPort(Node(184), -1): {0: _SubPort(port=InPort(Node(206), -1), sub_offset=0)}, OutPort(Node(206), -1): {0: _SubPort(port=InPort(Node(185), -1), sub_offset=0)}, OutPort(Node(254), 0): {0: _SubPort(port=InPort(Node(255), 0), sub_offset=0)}, OutPort(Node(256), 0): {0: _SubPort(port=InPort(Node(257), 0), sub_offset=0)}, OutPort(Node(258), 0): {0: _SubPort(port=InPort(Node(259), 0), sub_offset=0)}, OutPort(Node(2), -1): {0: _SubPort(port=InPort(Node(7), -1), sub_offset=0)}, OutPort(Node(7), -1): {0: _SubPort(port=InPort(Node(108), -1), sub_offset=0)}, OutPort(Node(108), -1): {0: _SubPort(port=InPort(Node(117), -1), sub_offset=0)}, OutPort(Node(111), -1): {0: _SubPort(port=InPort(Node(3), -1), sub_offset=0)}, OutPort(Node(117), -1): {0: _SubPort(port=InPort(Node(183), -1), sub_offset=0)}, OutPort(Node(183), -1): {0: _SubPort(port=InPort(Node(111), -1), sub_offset=0)}, OutPort(Node(264), 0): {0: _SubPort(port=InPort(Node(265), 0), sub_offset=0)}, OutPort(Node(276), 0): {0: _SubPort(port=InPort(Node(277), 0), sub_offset=0)}, OutPort(Node(278), 0): {0: _SubPort(port=InPort(Node(279), 0), sub_offset=0)}, OutPort(Node(283), 0): {0: _SubPort(port=InPort(Node(284), 0), sub_offset=0)}, OutPort(Node(291), 0): {0: _SubPort(port=InPort(Node(292), 0), sub_offset=0)}, OutPort(Node(299), 0): {0: _SubPort(port=InPort(Node(300), 0), sub_offset=0)}, OutPort(Node(305), 0): {0: _SubPort(port=InPort(Node(306), 0), sub_offset=0)}, OutPort(Node(318), 0): {0: _SubPort(port=InPort(Node(319), 0), sub_offset=0)}, OutPort(Node(323), 0): {0: _SubPort(port=InPort(Node(324), 0), sub_offset=0)}, OutPort(Node(325), 0): {0: _SubPort(port=InPort(Node(326), 0), sub_offset=0)}, OutPort(Node(334), 0): {0: _SubPort(port=InPort(Node(335), 0), sub_offset=0)}, OutPort(Node(269), -1): {0: _SubPort(port=InPort(Node(270), -1), sub_offset=0)}, OutPort(Node(344), 0): {0: _SubPort(port=InPort(Node(345), 0), sub_offset=0)}, OutPort(Node(342), -1): {0: _SubPort(port=InPort(Node(346), -1), sub_offset=0)}, OutPort(Node(346), -1): {0: _SubPort(port=InPort(Node(343), -1), sub_offset=0)}, OutPort(Node(354), 0): {0: _SubPort(port=InPort(Node(355), 0), sub_offset=0)}, OutPort(Node(364), 0): {0: _SubPort(port=InPort(Node(365), 0), sub_offset=0)}, OutPort(Node(338), -1): {0: _SubPort(port=InPort(Node(340), -1), sub_offset=0)}, OutPort(Node(340), -1): {0: _SubPort(port=InPort(Node(339), -1), sub_offset=0)}, OutPort(Node(374), 0): {0: _SubPort(port=InPort(Node(375), 0), sub_offset=0)}, OutPort(Node(372), -1): {0: _SubPort(port=InPort(Node(376), -1), sub_offset=0)}, OutPort(Node(376), -1): {0: _SubPort(port=InPort(Node(373), -1), sub_offset=0)}, OutPort(Node(377), 0): {0: _SubPort(port=InPort(Node(378), 0), sub_offset=0)}, OutPort(Node(379), 0): {0: _SubPort(port=InPort(Node(380), 0), sub_offset=0)}, OutPort(Node(381), 0): {0: _SubPort(port=InPort(Node(382), 0), sub_offset=0)}, OutPort(Node(383), 0): {0: _SubPort(port=InPort(Node(384), 0), sub_offset=0)}, OutPort(Node(261), -1): {0: _SubPort(port=InPort(Node(267), -1), sub_offset=0)}, OutPort(Node(267), -1): {0: _SubPort(port=InPort(Node(367), -1), sub_offset=0)}, OutPort(Node(367), -1): {0: _SubPort(port=InPort(Node(262), -1), sub_offset=0)}, OutPort(Node(4), 0): {0: _SubPort(port=InPort(Node(7), 1), sub_offset=0)}, OutPort(Node(6), 0): {0: _SubPort(port=InPort(Node(7), 2), sub_offset=0)}, OutPort(Node(259), 0): {0: _SubPort(port=InPort(Node(7), 0), sub_offset=0)}, OutPort(Node(7), 0): {0: _SubPort(port=InPort(Node(108), 0), sub_offset=0)}, OutPort(Node(8), 0): {0: _SubPort(port=InPort(Node(10), 0), sub_offset=0)}, OutPort(Node(8), 1): {0: _SubPort(port=InPort(Node(12), 1), sub_offset=0)}, OutPort(Node(8), 2): {0: _SubPort(port=InPort(Node(12), 2), sub_offset=0)}, OutPort(Node(12), 0): {0: _SubPort(port=InPort(Node(9), 0), sub_offset=0)}, OutPort(Node(12), 1): {0: _SubPort(port=InPort(Node(9), 1), sub_offset=0)}, OutPort(Node(12), 2): {0: _SubPort(port=InPort(Node(9), 2), sub_offset=0)}, OutPort(Node(10), 0): {0: _SubPort(port=InPort(Node(11), 0), sub_offset=0)}, OutPort(Node(105), 0): {0: _SubPort(port=InPort(Node(11), 1), sub_offset=0)}, OutPort(Node(107), 0): {0: _SubPort(port=InPort(Node(11), 2), sub_offset=0)}, OutPort(Node(11), 0): {0: _SubPort(port=InPort(Node(35), 0), sub_offset=0)}, OutPort(Node(35), 0): {0: _SubPort(port=InPort(Node(12), 0), sub_offset=0)}, OutPort(Node(14), 0): {0: _SubPort(port=InPort(Node(15), 1), sub_offset=0)}, OutPort(Node(14), 1): {0: _SubPort(port=InPort(Node(15), 2), sub_offset=0)}, OutPort(Node(17), 0): {0: _SubPort(port=InPort(Node(15), 0), sub_offset=0)}, OutPort(Node(19), 0): {0: _SubPort(port=InPort(Node(21), 0), sub_offset=0)}, OutPort(Node(19), 1): {0: _SubPort(port=InPort(Node(27), 0), sub_offset=0)}, OutPort(Node(19), 2): {0: _SubPort(port=InPort(Node(26), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(30), 0), sub_offset=0)}, OutPort(Node(24), 0): {0: _SubPort(port=InPort(Node(20), 0), sub_offset=0)}, OutPort(Node(27), 0): {0: _SubPort(port=InPort(Node(20), 1), sub_offset=0)}, OutPort(Node(30), 0): {0: _SubPort(port=InPort(Node(20), 2), sub_offset=0)}, OutPort(Node(21), 1): {0: _SubPort(port=InPort(Node(22), 0), sub_offset=0)}, OutPort(Node(22), 0): {0: _SubPort(port=InPort(Node(23), 0), sub_offset=0)}, OutPort(Node(32), 0): {0: _SubPort(port=InPort(Node(23), 1), sub_offset=0)}, OutPort(Node(34), 0): {0: _SubPort(port=InPort(Node(23), 2), sub_offset=0)}, OutPort(Node(23), 0): {0: _SubPort(port=InPort(Node(24), 0), sub_offset=0)}, OutPort(Node(25), 0): {0: _SubPort(port=InPort(Node(27), 2), sub_offset=0)}, OutPort(Node(26), 0): {0: _SubPort(port=InPort(Node(27), 1), sub_offset=0)}, OutPort(Node(29), 0): {0: _SubPort(port=InPort(Node(30), 1), sub_offset=0)}, OutPort(Node(36), 0): {0: _SubPort(port=InPort(Node(57), 0), sub_offset=0)}, OutPort(Node(36), 1): {0: _SubPort(port=InPort(Node(47), 0), sub_offset=0)}, OutPort(Node(37), 0): {0: _SubPort(port=InPort(Node(41), 0), sub_offset=0)}, OutPort(Node(40), 0): {0: _SubPort(port=InPort(Node(38), 0), sub_offset=0)}, OutPort(Node(41), 0): {0: _SubPort(port=InPort(Node(38), 1), sub_offset=0)}, OutPort(Node(45), 0): {0: _SubPort(port=InPort(Node(38), 2), sub_offset=0)}, OutPort(Node(43), 0): {0: _SubPort(port=InPort(Node(38), 3), sub_offset=0)}, OutPort(Node(84), 0): {0: _SubPort(port=InPort(Node(46), 0), sub_offset=0)}, OutPort(Node(91), 0): {0: _SubPort(port=InPort(Node(46), 0), sub_offset=1)}, OutPort(Node(47), 0): {0: _SubPort(port=InPort(Node(63), 0), sub_offset=0)}, OutPort(Node(57), 0): {0: _SubPort(port=InPort(Node(63), 0), sub_offset=1)}, OutPort(Node(48), 0): {0: _SubPort(port=InPort(Node(49), 2), sub_offset=0), 1: _SubPort(port=InPort(Node(50), 0), sub_offset=0)}, OutPort(Node(56), 0): {0: _SubPort(port=InPort(Node(49), 0), sub_offset=0)}, OutPort(Node(50), 0): {0: _SubPort(port=InPort(Node(49), 1), sub_offset=0)}, OutPort(Node(52), 0): {0: _SubPort(port=InPort(Node(49), 3), sub_offset=0)}, OutPort(Node(54), 0): {0: _SubPort(port=InPort(Node(49), 4), sub_offset=0), 1: _SubPort(port=InPort(Node(50), 1), sub_offset=0)}, OutPort(Node(58), 0): {0: _SubPort(port=InPort(Node(59), 2), sub_offset=0), 1: _SubPort(port=InPort(Node(60), 0), sub_offset=0)}, OutPort(Node(58), 1): {0: _SubPort(port=InPort(Node(59), 3), sub_offset=0)}, OutPort(Node(58), 2): {0: _SubPort(port=InPort(Node(59), 4), sub_offset=0), 1: _SubPort(port=InPort(Node(60), 1), sub_offset=0)}, OutPort(Node(62), 0): {0: _SubPort(port=InPort(Node(59), 0), sub_offset=0)}, OutPort(Node(60), 0): {0: _SubPort(port=InPort(Node(59), 1), sub_offset=0)}, OutPort(Node(63), 0): {0: _SubPort(port=InPort(Node(91), 0), sub_offset=0)}, OutPort(Node(63), 1): {0: _SubPort(port=InPort(Node(84), 0), sub_offset=0)}, OutPort(Node(64), 0): {0: _SubPort(port=InPort(Node(66), 0), sub_offset=0)}, OutPort(Node(64), 1): {0: _SubPort(port=InPort(Node(66), 1), sub_offset=0)}, OutPort(Node(66), 0): {0: _SubPort(port=InPort(Node(65), 0), sub_offset=0)}, OutPort(Node(81), 0): {0: _SubPort(port=InPort(Node(66), 2), sub_offset=0)}, OutPort(Node(83), 0): {0: _SubPort(port=InPort(Node(66), 3), sub_offset=0)}, OutPort(Node(68), 0): {0: _SubPort(port=InPort(Node(70), 0), sub_offset=0)}, OutPort(Node(70), 0): {0: _SubPort(port=InPort(Node(69), 0), sub_offset=0)}, OutPort(Node(72), 0): {0: _SubPort(port=InPort(Node(70), 1), sub_offset=0)}, OutPort(Node(74), 0): {0: _SubPort(port=InPort(Node(70), 2), sub_offset=0)}, OutPort(Node(79), 0): {0: _SubPort(port=InPort(Node(77), 0), sub_offset=0)}, OutPort(Node(90), 0): {0: _SubPort(port=InPort(Node(86), 0), sub_offset=0)}, OutPort(Node(88), 0): {0: _SubPort(port=InPort(Node(86), 1), sub_offset=0)}, OutPort(Node(92), 0): {0: _SubPort(port=InPort(Node(94), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(96), 0), sub_offset=0)}, OutPort(Node(103), 0): {0: _SubPort(port=InPort(Node(93), 0), sub_offset=0)}, OutPort(Node(97), 0): {0: _SubPort(port=InPort(Node(93), 1), sub_offset=0)}, OutPort(Node(99), 0): {0: _SubPort(port=InPort(Node(94), 1), sub_offset=0), 1: _SubPort(port=InPort(Node(95), 2), sub_offset=0)}, OutPort(Node(94), 0): {0: _SubPort(port=InPort(Node(95), 0), sub_offset=0)}, OutPort(Node(101), 0): {0: _SubPort(port=InPort(Node(95), 1), sub_offset=0)}, OutPort(Node(95), 0): {0: _SubPort(port=InPort(Node(96), 1), sub_offset=0)}, OutPort(Node(96), 0): {0: _SubPort(port=InPort(Node(97), 0), sub_offset=0)}, OutPort(Node(108), 0): {0: _SubPort(port=InPort(Node(116), 0), sub_offset=0)}, OutPort(Node(183), 0): {0: _SubPort(port=InPort(Node(109), 0), sub_offset=0)}, OutPort(Node(109), 0): {0: _SubPort(port=InPort(Node(110), 0), sub_offset=0)}, OutPort(Node(109), 1): {0: _SubPort(port=InPort(Node(112), 0), sub_offset=0)}, OutPort(Node(110), 0): {0: _SubPort(port=InPort(Node(111), 0), sub_offset=0)}, OutPort(Node(113), 0): {0: _SubPort(port=InPort(Node(117), 1), sub_offset=0)}, OutPort(Node(115), 0): {0: _SubPort(port=InPort(Node(117), 2), sub_offset=0)}, OutPort(Node(255), 0): {0: _SubPort(port=InPort(Node(116), 1), sub_offset=0)}, OutPort(Node(116), 0): {0: _SubPort(port=InPort(Node(117), 0), sub_offset=0)}, OutPort(Node(117), 0): {0: _SubPort(port=InPort(Node(182), 0), sub_offset=0)}, OutPort(Node(118), 0): {0: _SubPort(port=InPort(Node(120), 0), sub_offset=0)}, OutPort(Node(118), 1): {0: _SubPort(port=InPort(Node(122), 1), sub_offset=0)}, OutPort(Node(118), 2): {0: _SubPort(port=InPort(Node(122), 2), sub_offset=0)}, OutPort(Node(122), 0): {0: _SubPort(port=InPort(Node(119), 0), sub_offset=0)}, OutPort(Node(122), 1): {0: _SubPort(port=InPort(Node(119), 1), sub_offset=0)}, OutPort(Node(122), 2): {0: _SubPort(port=InPort(Node(119), 2), sub_offset=0)}, OutPort(Node(120), 0): {0: _SubPort(port=InPort(Node(121), 0), sub_offset=0)}, OutPort(Node(120), 1): {0: _SubPort(port=InPort(Node(121), 1), sub_offset=0)}, OutPort(Node(121), 0): {0: _SubPort(port=InPort(Node(140), 0), sub_offset=0)}, OutPort(Node(140), 0): {0: _SubPort(port=InPort(Node(122), 0), sub_offset=0)}, OutPort(Node(124), 0): {0: _SubPort(port=InPort(Node(125), 1), sub_offset=0)}, OutPort(Node(124), 1): {0: _SubPort(port=InPort(Node(125), 2), sub_offset=0)}, OutPort(Node(126), 0): {0: _SubPort(port=InPort(Node(125), 0), sub_offset=0)}, OutPort(Node(128), 0): {0: _SubPort(port=InPort(Node(130), 0), sub_offset=0)}, OutPort(Node(128), 1): {0: _SubPort(port=InPort(Node(136), 0), sub_offset=0)}, OutPort(Node(128), 2): {0: _SubPort(port=InPort(Node(135), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(139), 0), sub_offset=0)}, OutPort(Node(133), 0): {0: _SubPort(port=InPort(Node(129), 0), sub_offset=0)}, OutPort(Node(136), 0): {0: _SubPort(port=InPort(Node(129), 1), sub_offset=0)}, OutPort(Node(139), 0): {0: _SubPort(port=InPort(Node(129), 2), sub_offset=0)}, OutPort(Node(130), 0): {0: _SubPort(port=InPort(Node(134), 0), sub_offset=0)}, OutPort(Node(130), 1): {0: _SubPort(port=InPort(Node(131), 0), sub_offset=0)}, OutPort(Node(131), 0): {0: _SubPort(port=InPort(Node(132), 0), sub_offset=0)}, OutPort(Node(131), 1): {0: _SubPort(port=InPort(Node(132), 1), sub_offset=0)}, OutPort(Node(132), 0): {0: _SubPort(port=InPort(Node(133), 0), sub_offset=0)}, OutPort(Node(134), 0): {0: _SubPort(port=InPort(Node(136), 2), sub_offset=0)}, OutPort(Node(135), 0): {0: _SubPort(port=InPort(Node(136), 1), sub_offset=0)}, OutPort(Node(138), 0): {0: _SubPort(port=InPort(Node(139), 1), sub_offset=0)}, OutPort(Node(141), 0): {0: _SubPort(port=InPort(Node(172), 0), sub_offset=0)}, OutPort(Node(141), 1): {0: _SubPort(port=InPort(Node(159), 0), sub_offset=0)}, OutPort(Node(142), 0): {0: _SubPort(port=InPort(Node(144), 0), sub_offset=0)}, OutPort(Node(146), 0): {0: _SubPort(port=InPort(Node(143), 0), sub_offset=0)}, OutPort(Node(144), 0): {0: _SubPort(port=InPort(Node(143), 1), sub_offset=0)}, OutPort(Node(144), 1): {0: _SubPort(port=InPort(Node(145), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(146), 1), sub_offset=0)}, OutPort(Node(157), 0): {0: _SubPort(port=InPort(Node(145), 1), sub_offset=0)}, OutPort(Node(145), 0): {0: _SubPort(port=InPort(Node(146), 0), sub_offset=0)}, OutPort(Node(151), 0): {0: _SubPort(port=InPort(Node(149), 0), sub_offset=0)}, OutPort(Node(153), 0): {0: _SubPort(port=InPort(Node(155), 0), sub_offset=0)}, OutPort(Node(155), 0): {0: _SubPort(port=InPort(Node(154), 0), sub_offset=0)}, OutPort(Node(159), 0): {0: _SubPort(port=InPort(Node(158), 0), sub_offset=0)}, OutPort(Node(172), 0): {0: _SubPort(port=InPort(Node(158), 0), sub_offset=1)}, OutPort(Node(160), 0): {0: _SubPort(port=InPort(Node(162), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(166), 0), sub_offset=0)}, OutPort(Node(160), 1): {0: _SubPort(port=InPort(Node(163), 0), sub_offset=0)}, OutPort(Node(171), 0): {0: _SubPort(port=InPort(Node(161), 0), sub_offset=0)}, OutPort(Node(169), 0): {0: _SubPort(port=InPort(Node(161), 1), sub_offset=0)}, OutPort(Node(162), 0): {0: _SubPort(port=InPort(Node(163), 1), sub_offset=0)}, OutPort(Node(163), 0): {0: _SubPort(port=InPort(Node(167), 0), sub_offset=0)}, OutPort(Node(163), 1): {0: _SubPort(port=InPort(Node(168), 0), sub_offset=0)}, OutPort(Node(165), 0): {0: _SubPort(port=InPort(Node(166), 1), sub_offset=0)}, OutPort(Node(166), 0): {0: _SubPort(port=InPort(Node(167), 1), sub_offset=0)}, OutPort(Node(167), 0): {0: _SubPort(port=InPort(Node(168), 1), sub_offset=0)}, OutPort(Node(168), 0): {0: _SubPort(port=InPort(Node(169), 0), sub_offset=0)}, OutPort(Node(173), 0): {0: _SubPort(port=InPort(Node(175), 0), sub_offset=0)}, OutPort(Node(178), 0): {0: _SubPort(port=InPort(Node(174), 0), sub_offset=0)}, OutPort(Node(176), 0): {0: _SubPort(port=InPort(Node(174), 1), sub_offset=0)}, OutPort(Node(179), 0): {0: _SubPort(port=InPort(Node(183), 1), sub_offset=0)}, OutPort(Node(181), 0): {0: _SubPort(port=InPort(Node(183), 2), sub_offset=0)}, OutPort(Node(257), 0): {0: _SubPort(port=InPort(Node(182), 1), sub_offset=0)}, OutPort(Node(182), 0): {0: _SubPort(port=InPort(Node(183), 0), sub_offset=0)}, OutPort(Node(184), 0): {0: _SubPort(port=InPort(Node(186), 0), sub_offset=0)}, OutPort(Node(184), 1): {0: _SubPort(port=InPort(Node(188), 1), sub_offset=0)}, OutPort(Node(184), 2): {0: _SubPort(port=InPort(Node(188), 2), sub_offset=0)}, OutPort(Node(188), 0): {0: _SubPort(port=InPort(Node(185), 0), sub_offset=0)}, OutPort(Node(188), 1): {0: _SubPort(port=InPort(Node(185), 1), sub_offset=0)}, OutPort(Node(188), 2): {0: _SubPort(port=InPort(Node(185), 2), sub_offset=0)}, OutPort(Node(186), 0): {0: _SubPort(port=InPort(Node(187), 0), sub_offset=0)}, OutPort(Node(186), 1): {0: _SubPort(port=InPort(Node(187), 1), sub_offset=0)}, OutPort(Node(187), 0): {0: _SubPort(port=InPort(Node(206), 0), sub_offset=0)}, OutPort(Node(206), 0): {0: _SubPort(port=InPort(Node(188), 0), sub_offset=0)}, OutPort(Node(190), 0): {0: _SubPort(port=InPort(Node(191), 1), sub_offset=0)}, OutPort(Node(190), 1): {0: _SubPort(port=InPort(Node(191), 2), sub_offset=0)}, OutPort(Node(192), 0): {0: _SubPort(port=InPort(Node(191), 0), sub_offset=0)}, OutPort(Node(194), 0): {0: _SubPort(port=InPort(Node(196), 0), sub_offset=0)}, OutPort(Node(194), 1): {0: _SubPort(port=InPort(Node(202), 0), sub_offset=0)}, OutPort(Node(194), 2): {0: _SubPort(port=InPort(Node(201), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(205), 0), sub_offset=0)}, OutPort(Node(199), 0): {0: _SubPort(port=InPort(Node(195), 0), sub_offset=0)}, OutPort(Node(202), 0): {0: _SubPort(port=InPort(Node(195), 1), sub_offset=0)}, OutPort(Node(205), 0): {0: _SubPort(port=InPort(Node(195), 2), sub_offset=0)}, OutPort(Node(196), 0): {0: _SubPort(port=InPort(Node(200), 0), sub_offset=0)}, OutPort(Node(196), 1): {0: _SubPort(port=InPort(Node(197), 0), sub_offset=0)}, OutPort(Node(197), 0): {0: _SubPort(port=InPort(Node(198), 0), sub_offset=0)}, OutPort(Node(197), 1): {0: _SubPort(port=InPort(Node(198), 1), sub_offset=0)}, OutPort(Node(198), 0): {0: _SubPort(port=InPort(Node(199), 0), sub_offset=0)}, OutPort(Node(200), 0): {0: _SubPort(port=InPort(Node(202), 2), sub_offset=0)}, OutPort(Node(201), 0): {0: _SubPort(port=InPort(Node(202), 1), sub_offset=0)}, OutPort(Node(204), 0): {0: _SubPort(port=InPort(Node(205), 1), sub_offset=0)}, OutPort(Node(207), 0): {0: _SubPort(port=InPort(Node(247), 0), sub_offset=0)}, OutPort(Node(207), 1): {0: _SubPort(port=InPort(Node(224), 0), sub_offset=0)}, OutPort(Node(208), 0): {0: _SubPort(port=InPort(Node(210), 0), sub_offset=0)}, OutPort(Node(212), 0): {0: _SubPort(port=InPort(Node(209), 0), sub_offset=0)}, OutPort(Node(210), 0): {0: _SubPort(port=InPort(Node(212), 1), sub_offset=0)}, OutPort(Node(210), 1): {0: _SubPort(port=InPort(Node(211), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(212), 2), sub_offset=0)}, OutPort(Node(222), 0): {0: _SubPort(port=InPort(Node(211), 1), sub_offset=0)}, OutPort(Node(211), 0): {0: _SubPort(port=InPort(Node(212), 0), sub_offset=0)}, OutPort(Node(214), 0): {0: _SubPort(port=InPort(Node(216), 0), sub_offset=0)}, OutPort(Node(216), 0): {0: _SubPort(port=InPort(Node(215), 0), sub_offset=0)}, OutPort(Node(218), 0): {0: _SubPort(port=InPort(Node(220), 1), sub_offset=0)}, OutPort(Node(218), 1): {0: _SubPort(port=InPort(Node(220), 0), sub_offset=0)}, OutPort(Node(220), 0): {0: _SubPort(port=InPort(Node(219), 0), sub_offset=0)}, OutPort(Node(224), 0): {0: _SubPort(port=InPort(Node(223), 0), sub_offset=0)}, OutPort(Node(247), 0): {0: _SubPort(port=InPort(Node(223), 0), sub_offset=1)}, OutPort(Node(225), 0): {0: _SubPort(port=InPort(Node(227), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(241), 0), sub_offset=0)}, OutPort(Node(225), 1): {0: _SubPort(port=InPort(Node(228), 0), sub_offset=0)}, OutPort(Node(246), 0): {0: _SubPort(port=InPort(Node(226), 0), sub_offset=0)}, OutPort(Node(244), 0): {0: _SubPort(port=InPort(Node(226), 1), sub_offset=0)}, OutPort(Node(227), 0): {0: _SubPort(port=InPort(Node(228), 1), sub_offset=0)}, OutPort(Node(228), 0): {0: _SubPort(port=InPort(Node(229), 0), sub_offset=0)}, OutPort(Node(228), 1): {0: _SubPort(port=InPort(Node(242), 0), sub_offset=0)}, OutPort(Node(229), 0): {0: _SubPort(port=InPort(Node(243), 0), sub_offset=0)}, OutPort(Node(235), 0): {0: _SubPort(port=InPort(Node(232), 0), sub_offset=0)}, OutPort(Node(234), 0): {0: _SubPort(port=InPort(Node(235), 0), sub_offset=0)}, OutPort(Node(237), 0): {0: _SubPort(port=InPort(Node(238), 0), sub_offset=0)}, OutPort(Node(240), 0): {0: _SubPort(port=InPort(Node(241), 1), sub_offset=0)}, OutPort(Node(241), 0): {0: _SubPort(port=InPort(Node(242), 1), sub_offset=0)}, OutPort(Node(242), 0): {0: _SubPort(port=InPort(Node(243), 1), sub_offset=0)}, OutPort(Node(243), 0): {0: _SubPort(port=InPort(Node(244), 0), sub_offset=0)}, OutPort(Node(248), 0): {0: _SubPort(port=InPort(Node(251), 0), sub_offset=0)}, OutPort(Node(253), 0): {0: _SubPort(port=InPort(Node(249), 0), sub_offset=0)}, OutPort(Node(250), 0): {0: _SubPort(port=InPort(Node(249), 1), sub_offset=0)}, OutPort(Node(261), 0): {0: _SubPort(port=InPort(Node(263), 0), sub_offset=0)}, OutPort(Node(267), 1): {0: _SubPort(port=InPort(Node(262), 0), sub_offset=0)}, OutPort(Node(265), 0): {0: _SubPort(port=InPort(Node(263), 1), sub_offset=0)}, OutPort(Node(263), 0): {0: _SubPort(port=InPort(Node(366), 0), sub_offset=0)}, OutPort(Node(263), 1): {0: _SubPort(port=InPort(Node(266), 0), sub_offset=0)}, OutPort(Node(266), 0): {0: _SubPort(port=InPort(Node(366), 2), sub_offset=0)}, OutPort(Node(378), 0): {0: _SubPort(port=InPort(Node(267), 0), sub_offset=0)}, OutPort(Node(380), 0): {0: _SubPort(port=InPort(Node(267), 1), sub_offset=0)}, OutPort(Node(384), 0): {0: _SubPort(port=InPort(Node(267), 2), sub_offset=0)}, OutPort(Node(366), 0): {0: _SubPort(port=InPort(Node(267), 3), sub_offset=0)}, OutPort(Node(267), 0): {0: _SubPort(port=InPort(Node(367), 0), sub_offset=0)}, OutPort(Node(337), 0): {0: _SubPort(port=InPort(Node(268), 0), sub_offset=0)}, OutPort(Node(268), 0): {0: _SubPort(port=InPort(Node(336), 0), sub_offset=0)}, OutPort(Node(268), 1): {0: _SubPort(port=InPort(Node(337), 0), sub_offset=0)}, OutPort(Node(269), 0): {0: _SubPort(port=InPort(Node(271), 0), sub_offset=0)}, OutPort(Node(269), 1): {0: _SubPort(port=InPort(Node(271), 2), sub_offset=0)}, OutPort(Node(269), 2): {0: _SubPort(port=InPort(Node(271), 1), sub_offset=0)}, OutPort(Node(269), 3): {0: _SubPort(port=InPort(Node(270), 2), sub_offset=0)}, OutPort(Node(272), 0): {0: _SubPort(port=InPort(Node(270), 0), sub_offset=0)}, OutPort(Node(272), 1): {0: _SubPort(port=InPort(Node(270), 1), sub_offset=0)}, OutPort(Node(271), 0): {0: _SubPort(port=InPort(Node(286), 0), sub_offset=0)}, OutPort(Node(286), 0): {0: _SubPort(port=InPort(Node(272), 0), sub_offset=0)}, OutPort(Node(277), 0): {0: _SubPort(port=InPort(Node(275), 0), sub_offset=0)}, OutPort(Node(279), 0): {0: _SubPort(port=InPort(Node(275), 1), sub_offset=0)}, OutPort(Node(281), 0): {0: _SubPort(port=InPort(Node(285), 0), sub_offset=0)}, OutPort(Node(284), 0): {0: _SubPort(port=InPort(Node(282), 0), sub_offset=0)}, OutPort(Node(285), 0): {0: _SubPort(port=InPort(Node(282), 1), sub_offset=0)}, OutPort(Node(287), 0): {0: _SubPort(port=InPort(Node(301), 0), sub_offset=0)}, OutPort(Node(287), 1): {0: _SubPort(port=InPort(Node(295), 0), sub_offset=0)}, OutPort(Node(288), 0): {0: _SubPort(port=InPort(Node(290), 0), sub_offset=0)}, OutPort(Node(293), 0): {0: _SubPort(port=InPort(Node(289), 0), sub_offset=0)}, OutPort(Node(290), 0): {0: _SubPort(port=InPort(Node(289), 1), sub_offset=0)}, OutPort(Node(290), 2): {0: _SubPort(port=InPort(Node(289), 2), sub_offset=0), 1: _SubPort(port=InPort(Node(293), 0), sub_offset=0)}, OutPort(Node(290), 1): {0: _SubPort(port=InPort(Node(289), 3), sub_offset=0)}, OutPort(Node(292), 0): {0: _SubPort(port=InPort(Node(293), 1), sub_offset=0)}, OutPort(Node(320), 0): {0: _SubPort(port=InPort(Node(294), 0), sub_offset=0)}, OutPort(Node(327), 0): {0: _SubPort(port=InPort(Node(294), 0), sub_offset=1)}, OutPort(Node(295), 0): {0: _SubPort(port=InPort(Node(307), 0), sub_offset=0)}, OutPort(Node(301), 0): {0: _SubPort(port=InPort(Node(307), 0), sub_offset=1)}, OutPort(Node(296), 0): {0: _SubPort(port=InPort(Node(297), 2), sub_offset=0), 1: _SubPort(port=InPort(Node(298), 0), sub_offset=0)}, OutPort(Node(296), 1): {0: _SubPort(port=InPort(Node(297), 3), sub_offset=0)}, OutPort(Node(296), 2): {0: _SubPort(port=InPort(Node(297), 4), sub_offset=0), 1: _SubPort(port=InPort(Node(298), 1), sub_offset=0)}, OutPort(Node(300), 0): {0: _SubPort(port=InPort(Node(297), 0), sub_offset=0)}, OutPort(Node(298), 0): {0: _SubPort(port=InPort(Node(297), 1), sub_offset=0)}, OutPort(Node(302), 0): {0: _SubPort(port=InPort(Node(303), 2), sub_offset=0), 1: _SubPort(port=InPort(Node(304), 0), sub_offset=0)}, OutPort(Node(302), 1): {0: _SubPort(port=InPort(Node(303), 3), sub_offset=0)}, OutPort(Node(302), 2): {0: _SubPort(port=InPort(Node(303), 4), sub_offset=0), 1: _SubPort(port=InPort(Node(304), 1), sub_offset=0)}, OutPort(Node(306), 0): {0: _SubPort(port=InPort(Node(303), 0), sub_offset=0)}, OutPort(Node(304), 0): {0: _SubPort(port=InPort(Node(303), 1), sub_offset=0)}, OutPort(Node(307), 0): {0: _SubPort(port=InPort(Node(327), 0), sub_offset=0)}, OutPort(Node(307), 1): {0: _SubPort(port=InPort(Node(320), 0), sub_offset=0)}, OutPort(Node(308), 0): {0: _SubPort(port=InPort(Node(310), 0), sub_offset=0)}, OutPort(Node(308), 1): {0: _SubPort(port=InPort(Node(310), 1), sub_offset=0)}, OutPort(Node(308), 2): {0: _SubPort(port=InPort(Node(310), 2), sub_offset=0)}, OutPort(Node(308), 3): {0: _SubPort(port=InPort(Node(310), 3), sub_offset=0)}, OutPort(Node(310), 0): {0: _SubPort(port=InPort(Node(309), 0), sub_offset=0)}, OutPort(Node(312), 0): {0: _SubPort(port=InPort(Node(314), 0), sub_offset=0)}, OutPort(Node(312), 1): {0: _SubPort(port=InPort(Node(314), 1), sub_offset=0)}, OutPort(Node(312), 2): {0: _SubPort(port=InPort(Node(314), 2), sub_offset=0)}, OutPort(Node(314), 0): {0: _SubPort(port=InPort(Node(313), 0), sub_offset=0)}, OutPort(Node(319), 0): {0: _SubPort(port=InPort(Node(317), 0), sub_offset=0)}, OutPort(Node(326), 0): {0: _SubPort(port=InPort(Node(322), 0), sub_offset=0)}, OutPort(Node(324), 0): {0: _SubPort(port=InPort(Node(322), 1), sub_offset=0)}, OutPort(Node(328), 0): {0: _SubPort(port=InPort(Node(330), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(332), 0), sub_offset=0)}, OutPort(Node(328), 1): {0: _SubPort(port=InPort(Node(330), 1), sub_offset=0), 1: _SubPort(port=InPort(Node(331), 2), sub_offset=0)}, OutPort(Node(328), 2): {0: _SubPort(port=InPort(Node(331), 1), sub_offset=0)}, OutPort(Node(335), 0): {0: _SubPort(port=InPort(Node(329), 0), sub_offset=0)}, OutPort(Node(333), 0): {0: _SubPort(port=InPort(Node(329), 1), sub_offset=0)}, OutPort(Node(330), 0): {0: _SubPort(port=InPort(Node(331), 0), sub_offset=0)}, OutPort(Node(331), 0): {0: _SubPort(port=InPort(Node(332), 1), sub_offset=0)}, OutPort(Node(332), 0): {0: _SubPort(port=InPort(Node(333), 0), sub_offset=0)}, OutPort(Node(338), 0): {0: _SubPort(port=InPort(Node(340), 0), sub_offset=0)}, OutPort(Node(338), 1): {0: _SubPort(port=InPort(Node(353), 0), sub_offset=0)}, OutPort(Node(365), 0): {0: _SubPort(port=InPort(Node(339), 0), sub_offset=0)}, OutPort(Node(351), 0): {0: _SubPort(port=InPort(Node(339), 1), sub_offset=0)}, OutPort(Node(351), 2): {0: _SubPort(port=InPort(Node(339), 2), sub_offset=0)}, OutPort(Node(351), 1): {0: _SubPort(port=InPort(Node(339), 3), sub_offset=0)}, OutPort(Node(363), 0): {0: _SubPort(port=InPort(Node(339), 4), sub_offset=0)}, OutPort(Node(340), 0): {0: _SubPort(port=InPort(Node(350), 0), sub_offset=0)}, OutPort(Node(346), 0): {0: _SubPort(port=InPort(Node(343), 0), sub_offset=0)}, OutPort(Node(345), 0): {0: _SubPort(port=InPort(Node(346), 0), sub_offset=0)}, OutPort(Node(348), 0): {0: _SubPort(port=InPort(Node(349), 0), sub_offset=0)}, OutPort(Node(350), 0): {0: _SubPort(port=InPort(Node(352), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(356), 0), sub_offset=0), 2: _SubPort(port=InPort(Node(359), 0), sub_offset=0)}, OutPort(Node(350), 1): {0: _SubPort(port=InPort(Node(351), 0), sub_offset=0)}, OutPort(Node(352), 0): {0: _SubPort(port=InPort(Node(353), 1), sub_offset=0)}, OutPort(Node(353), 0): {0: _SubPort(port=InPort(Node(358), 0), sub_offset=0)}, OutPort(Node(353), 1): {0: _SubPort(port=InPort(Node(361), 0), sub_offset=0)}, OutPort(Node(355), 0): {0: _SubPort(port=InPort(Node(356), 1), sub_offset=0)}, OutPort(Node(356), 0): {0: _SubPort(port=InPort(Node(357), 0), sub_offset=0), 1: _SubPort(port=InPort(Node(360), 0), sub_offset=0)}, OutPort(Node(357), 0): {0: _SubPort(port=InPort(Node(358), 1), sub_offset=0)}, OutPort(Node(358), 0): {0: _SubPort(port=InPort(Node(362), 0), sub_offset=0)}, OutPort(Node(358), 1): {0: _SubPort(port=InPort(Node(361), 1), sub_offset=0)}, OutPort(Node(359), 0): {0: _SubPort(port=InPort(Node(362), 1), sub_offset=0)}, OutPort(Node(360), 0): {0: _SubPort(port=InPort(Node(363), 1), sub_offset=0)}, OutPort(Node(361), 0): {0: _SubPort(port=InPort(Node(362), 2), sub_offset=0)}, OutPort(Node(361), 1): {0: _SubPort(port=InPort(Node(363), 2), sub_offset=0)}, OutPort(Node(362), 0): {0: _SubPort(port=InPort(Node(363), 0), sub_offset=0)}, OutPort(Node(382), 0): {0: _SubPort(port=InPort(Node(366), 1), sub_offset=0)}, OutPort(Node(372), 0): {0: _SubPort(port=InPort(Node(376), 1), sub_offset=0)}, OutPort(Node(375), 0): {0: _SubPort(port=InPort(Node(376), 0), sub_offset=0)}, OutPort(Node(260), 0): {0: _SubPort(port=InPort(Node(108), 1), sub_offset=0)}}, _bck={InPort(Node(6), 0): {0: _SubPort(port=OutPort(Node(5), 0), sub_offset=0)}, InPort(Node(17), 0): {0: _SubPort(port=OutPort(Node(16), 0), sub_offset=0)}, InPort(Node(29), 0): {0: _SubPort(port=OutPort(Node(28), 0), sub_offset=0)}, InPort(Node(32), 0): {0: _SubPort(port=OutPort(Node(31), 0), sub_offset=0)}, InPort(Node(34), 0): {0: _SubPort(port=OutPort(Node(33), 0), sub_offset=0)}, InPort(Node(25), -1): {0: _SubPort(port=OutPort(Node(19), -1), sub_offset=0)}, InPort(Node(20), -1): {0: _SubPort(port=OutPort(Node(25), -1), sub_offset=0)}, InPort(Node(40), 0): {0: _SubPort(port=OutPort(Node(39), 0), sub_offset=0)}, InPort(Node(43), 0): {0: _SubPort(port=OutPort(Node(42), 0), sub_offset=0)}, InPort(Node(45), 0): {0: _SubPort(port=OutPort(Node(44), 0), sub_offset=0)}, InPort(Node(52), 0): {0: _SubPort(port=OutPort(Node(51), 0), sub_offset=0)}, InPort(Node(54), 0): {0: _SubPort(port=OutPort(Node(53), 0), sub_offset=0)}, InPort(Node(56), 0): {0: _SubPort(port=OutPort(Node(55), 0), sub_offset=0)}, InPort(Node(62), 0): {0: _SubPort(port=OutPort(Node(61), 0), sub_offset=0)}, InPort(Node(72), 0): {0: _SubPort(port=OutPort(Node(71), 0), sub_offset=0)}, InPort(Node(74), 0): {0: _SubPort(port=OutPort(Node(73), 0), sub_offset=0)}, InPort(Node(79), 0): {0: _SubPort(port=OutPort(Node(78), 0), sub_offset=0)}, InPort(Node(81), 0): {0: _SubPort(port=OutPort(Node(80), 0), sub_offset=0)}, InPort(Node(83), 0): {0: _SubPort(port=OutPort(Node(82), 0), sub_offset=0)}, InPort(Node(88), 0): {0: _SubPort(port=OutPort(Node(87), 0), sub_offset=0)}, InPort(Node(90), 0): {0: _SubPort(port=OutPort(Node(89), 0), sub_offset=0)}, InPort(Node(99), 0): {0: _SubPort(port=OutPort(Node(98), 0), sub_offset=0)}, InPort(Node(101), 0): {0: _SubPort(port=OutPort(Node(100), 0), sub_offset=0)}, InPort(Node(103), 0): {0: _SubPort(port=OutPort(Node(102), 0), sub_offset=0)}, InPort(Node(105), 0): {0: _SubPort(port=OutPort(Node(104), 0), sub_offset=0)}, InPort(Node(107), 0): {0: _SubPort(port=OutPort(Node(106), 0), sub_offset=0)}, InPort(Node(12), -1): {0: _SubPort(port=OutPort(Node(8), -1), sub_offset=0)}, InPort(Node(9), -1): {0: _SubPort(port=OutPort(Node(12), -1), sub_offset=0)}, InPort(Node(115), 0): {0: _SubPort(port=OutPort(Node(114), 0), sub_offset=0)}, InPort(Node(138), 0): {0: _SubPort(port=OutPort(Node(137), 0), sub_offset=0)}, InPort(Node(134), -1): {0: _SubPort(port=OutPort(Node(128), -1), sub_offset=0)}, InPort(Node(129), -1): {0: _SubPort(port=OutPort(Node(134), -1), sub_offset=0)}, InPort(Node(151), 0): {0: _SubPort(port=OutPort(Node(150), 0), sub_offset=0)}, InPort(Node(157), 0): {0: _SubPort(port=OutPort(Node(156), 0), sub_offset=0)}, InPort(Node(165), 0): {0: _SubPort(port=OutPort(Node(164), 0), sub_offset=0)}, InPort(Node(171), 0): {0: _SubPort(port=OutPort(Node(170), 0), sub_offset=0)}, InPort(Node(178), 0): {0: _SubPort(port=OutPort(Node(177), 0), sub_offset=0)}, InPort(Node(122), -1): {0: _SubPort(port=OutPort(Node(118), -1), sub_offset=0)}, InPort(Node(119), -1): {0: _SubPort(port=OutPort(Node(122), -1), sub_offset=0)}, InPort(Node(181), 0): {0: _SubPort(port=OutPort(Node(180), 0), sub_offset=0)}, InPort(Node(204), 0): {0: _SubPort(port=OutPort(Node(203), 0), sub_offset=0)}, InPort(Node(222), 0): {0: _SubPort(port=OutPort(Node(221), 0), sub_offset=0)}, InPort(Node(234), 0): {0: _SubPort(port=OutPort(Node(233), 0), sub_offset=0)}, InPort(Node(235), -1): {0: _SubPort(port=OutPort(Node(231), -1), sub_offset=0)}, InPort(Node(232), -1): {0: _SubPort(port=OutPort(Node(235), -1), sub_offset=0)}, InPort(Node(240), 0): {0: _SubPort(port=OutPort(Node(239), 0), sub_offset=0)}, InPort(Node(246), 0): {0: _SubPort(port=OutPort(Node(245), 0), sub_offset=0)}, InPort(Node(229), -1): {0: _SubPort(port=OutPort(Node(225), -1), sub_offset=0)}, InPort(Node(226), -1): {0: _SubPort(port=OutPort(Node(229), -1), sub_offset=0)}, InPort(Node(253), 0): {0: _SubPort(port=OutPort(Node(252), 0), sub_offset=0)}, InPort(Node(206), -1): {0: _SubPort(port=OutPort(Node(184), -1), sub_offset=0)}, InPort(Node(185), -1): {0: _SubPort(port=OutPort(Node(206), -1), sub_offset=0)}, InPort(Node(255), 0): {0: _SubPort(port=OutPort(Node(254), 0), sub_offset=0)}, InPort(Node(257), 0): {0: _SubPort(port=OutPort(Node(256), 0), sub_offset=0)}, InPort(Node(259), 0): {0: _SubPort(port=OutPort(Node(258), 0), sub_offset=0)}, InPort(Node(7), -1): {0: _SubPort(port=OutPort(Node(2), -1), sub_offset=0)}, InPort(Node(108), -1): {0: _SubPort(port=OutPort(Node(7), -1), sub_offset=0)}, InPort(Node(117), -1): {0: _SubPort(port=OutPort(Node(108), -1), sub_offset=0)}, InPort(Node(3), -1): {0: _SubPort(port=OutPort(Node(111), -1), sub_offset=0)}, InPort(Node(183), -1): {0: _SubPort(port=OutPort(Node(117), -1), sub_offset=0)}, InPort(Node(111), -1): {0: _SubPort(port=OutPort(Node(183), -1), sub_offset=0)}, InPort(Node(265), 0): {0: _SubPort(port=OutPort(Node(264), 0), sub_offset=0)}, InPort(Node(277), 0): {0: _SubPort(port=OutPort(Node(276), 0), sub_offset=0)}, InPort(Node(279), 0): {0: _SubPort(port=OutPort(Node(278), 0), sub_offset=0)}, InPort(Node(284), 0): {0: _SubPort(port=OutPort(Node(283), 0), sub_offset=0)}, InPort(Node(292), 0): {0: _SubPort(port=OutPort(Node(291), 0), sub_offset=0)}, InPort(Node(300), 0): {0: _SubPort(port=OutPort(Node(299), 0), sub_offset=0)}, InPort(Node(306), 0): {0: _SubPort(port=OutPort(Node(305), 0), sub_offset=0)}, InPort(Node(319), 0): {0: _SubPort(port=OutPort(Node(318), 0), sub_offset=0)}, InPort(Node(324), 0): {0: _SubPort(port=OutPort(Node(323), 0), sub_offset=0)}, InPort(Node(326), 0): {0: _SubPort(port=OutPort(Node(325), 0), sub_offset=0)}, InPort(Node(335), 0): {0: _SubPort(port=OutPort(Node(334), 0), sub_offset=0)}, InPort(Node(270), -1): {0: _SubPort(port=OutPort(Node(269), -1), sub_offset=0)}, InPort(Node(345), 0): {0: _SubPort(port=OutPort(Node(344), 0), sub_offset=0)}, InPort(Node(346), -1): {0: _SubPort(port=OutPort(Node(342), -1), sub_offset=0)}, InPort(Node(343), -1): {0: _SubPort(port=OutPort(Node(346), -1), sub_offset=0)}, InPort(Node(355), 0): {0: _SubPort(port=OutPort(Node(354), 0), sub_offset=0)}, InPort(Node(365), 0): {0: _SubPort(port=OutPort(Node(364), 0), sub_offset=0)}, InPort(Node(340), -1): {0: _SubPort(port=OutPort(Node(338), -1), sub_offset=0)}, InPort(Node(339), -1): {0: _SubPort(port=OutPort(Node(340), -1), sub_offset=0)}, InPort(Node(375), 0): {0: _SubPort(port=OutPort(Node(374), 0), sub_offset=0)}, InPort(Node(376), -1): {0: _SubPort(port=OutPort(Node(372), -1), sub_offset=0)}, InPort(Node(373), -1): {0: _SubPort(port=OutPort(Node(376), -1), sub_offset=0)}, InPort(Node(378), 0): {0: _SubPort(port=OutPort(Node(377), 0), sub_offset=0)}, InPort(Node(380), 0): {0: _SubPort(port=OutPort(Node(379), 0), sub_offset=0)}, InPort(Node(382), 0): {0: _SubPort(port=OutPort(Node(381), 0), sub_offset=0)}, InPort(Node(384), 0): {0: _SubPort(port=OutPort(Node(383), 0), sub_offset=0)}, InPort(Node(267), -1): {0: _SubPort(port=OutPort(Node(261), -1), sub_offset=0)}, InPort(Node(367), -1): {0: _SubPort(port=OutPort(Node(267), -1), sub_offset=0)}, InPort(Node(262), -1): {0: _SubPort(port=OutPort(Node(367), -1), sub_offset=0)}, InPort(Node(7), 1): {0: _SubPort(port=OutPort(Node(4), 0), sub_offset=0)}, InPort(Node(7), 2): {0: _SubPort(port=OutPort(Node(6), 0), sub_offset=0)}, InPort(Node(7), 0): {0: _SubPort(port=OutPort(Node(259), 0), sub_offset=0)}, InPort(Node(108), 0): {0: _SubPort(port=OutPort(Node(7), 0), sub_offset=0)}, InPort(Node(10), 0): {0: _SubPort(port=OutPort(Node(8), 0), sub_offset=0)}, InPort(Node(12), 1): {0: _SubPort(port=OutPort(Node(8), 1), sub_offset=0)}, InPort(Node(12), 2): {0: _SubPort(port=OutPort(Node(8), 2), sub_offset=0)}, InPort(Node(9), 0): {0: _SubPort(port=OutPort(Node(12), 0), sub_offset=0)}, InPort(Node(9), 1): {0: _SubPort(port=OutPort(Node(12), 1), sub_offset=0)}, InPort(Node(9), 2): {0: _SubPort(port=OutPort(Node(12), 2), sub_offset=0)}, InPort(Node(11), 0): {0: _SubPort(port=OutPort(Node(10), 0), sub_offset=0)}, InPort(Node(11), 1): {0: _SubPort(port=OutPort(Node(105), 0), sub_offset=0)}, InPort(Node(11), 2): {0: _SubPort(port=OutPort(Node(107), 0), sub_offset=0)}, InPort(Node(35), 0): {0: _SubPort(port=OutPort(Node(11), 0), sub_offset=0)}, InPort(Node(12), 0): {0: _SubPort(port=OutPort(Node(35), 0), sub_offset=0)}, InPort(Node(15), 1): {0: _SubPort(port=OutPort(Node(14), 0), sub_offset=0)}, InPort(Node(15), 2): {0: _SubPort(port=OutPort(Node(14), 1), sub_offset=0)}, InPort(Node(15), 0): {0: _SubPort(port=OutPort(Node(17), 0), sub_offset=0)}, InPort(Node(21), 0): {0: _SubPort(port=OutPort(Node(19), 0), sub_offset=0)}, InPort(Node(27), 0): {0: _SubPort(port=OutPort(Node(19), 1), sub_offset=0)}, InPort(Node(26), 0): {0: _SubPort(port=OutPort(Node(19), 2), sub_offset=0)}, InPort(Node(30), 0): {0: _SubPort(port=OutPort(Node(19), 2), sub_offset=1)}, InPort(Node(20), 0): {0: _SubPort(port=OutPort(Node(24), 0), sub_offset=0)}, InPort(Node(20), 1): {0: _SubPort(port=OutPort(Node(27), 0), sub_offset=0)}, InPort(Node(20), 2): {0: _SubPort(port=OutPort(Node(30), 0), sub_offset=0)}, InPort(Node(22), 0): {0: _SubPort(port=OutPort(Node(21), 1), sub_offset=0)}, InPort(Node(23), 0): {0: _SubPort(port=OutPort(Node(22), 0), sub_offset=0)}, InPort(Node(23), 1): {0: _SubPort(port=OutPort(Node(32), 0), sub_offset=0)}, InPort(Node(23), 2): {0: _SubPort(port=OutPort(Node(34), 0), sub_offset=0)}, InPort(Node(24), 0): {0: _SubPort(port=OutPort(Node(23), 0), sub_offset=0)}, InPort(Node(27), 2): {0: _SubPort(port=OutPort(Node(25), 0), sub_offset=0)}, InPort(Node(27), 1): {0: _SubPort(port=OutPort(Node(26), 0), sub_offset=0)}, InPort(Node(30), 1): {0: _SubPort(port=OutPort(Node(29), 0), sub_offset=0)}, InPort(Node(57), 0): {0: _SubPort(port=OutPort(Node(36), 0), sub_offset=0)}, InPort(Node(47), 0): {0: _SubPort(port=OutPort(Node(36), 1), sub_offset=0)}, InPort(Node(41), 0): {0: _SubPort(port=OutPort(Node(37), 0), sub_offset=0)}, InPort(Node(38), 0): {0: _SubPort(port=OutPort(Node(40), 0), sub_offset=0)}, InPort(Node(38), 1): {0: _SubPort(port=OutPort(Node(41), 0), sub_offset=0)}, InPort(Node(38), 2): {0: _SubPort(port=OutPort(Node(45), 0), sub_offset=0)}, InPort(Node(38), 3): {0: _SubPort(port=OutPort(Node(43), 0), sub_offset=0)}, InPort(Node(46), 0): {0: _SubPort(port=OutPort(Node(84), 0), sub_offset=0), 1: _SubPort(port=OutPort(Node(91), 0), sub_offset=0)}, InPort(Node(63), 0): {0: _SubPort(port=OutPort(Node(47), 0), sub_offset=0), 1: _SubPort(port=OutPort(Node(57), 0), sub_offset=0)}, InPort(Node(49), 2): {0: _SubPort(port=OutPort(Node(48), 0), sub_offset=0)}, InPort(Node(50), 0): {0: _SubPort(port=OutPort(Node(48), 0), sub_offset=1)}, InPort(Node(49), 0): {0: _SubPort(port=OutPort(Node(56), 0), sub_offset=0)}, InPort(Node(49), 1): {0: _SubPort(port=OutPort(Node(50), 0), sub_offset=0)}, InPort(Node(49), 3): {0: _SubPort(port=OutPort(Node(52), 0), sub_offset=0)}, InPort(Node(49), 4): {0: _SubPort(port=OutPort(Node(54), 0), sub_offset=0)}, InPort(Node(50), 1): {0: _SubPort(port=OutPort(Node(54), 0), sub_offset=1)}, InPort(Node(59), 2): {0: _SubPort(port=OutPort(Node(58), 0), sub_offset=0)}, InPort(Node(60), 0): {0: _SubPort(port=OutPort(Node(58), 0), sub_offset=1)}, InPort(Node(59), 3): {0: _SubPort(port=OutPort(Node(58), 1), sub_offset=0)}, InPort(Node(59), 4): {0: _SubPort(port=OutPort(Node(58), 2), sub_offset=0)}, InPort(Node(60), 1): {0: _SubPort(port=OutPort(Node(58), 2), sub_offset=1)}, InPort(Node(59), 0): {0: _SubPort(port=OutPort(Node(62), 0), sub_offset=0)}, InPort(Node(59), 1): {0: _SubPort(port=OutPort(Node(60), 0), sub_offset=0)}, InPort(Node(91), 0): {0: _SubPort(port=OutPort(Node(63), 0), sub_offset=0)}, InPort(Node(84), 0): {0: _SubPort(port=OutPort(Node(63), 1), sub_offset=0)}, InPort(Node(66), 0): {0: _SubPort(port=OutPort(Node(64), 0), sub_offset=0)}, InPort(Node(66), 1): {0: _SubPort(port=OutPort(Node(64), 1), sub_offset=0)}, InPort(Node(65), 0): {0: _SubPort(port=OutPort(Node(66), 0), sub_offset=0)}, InPort(Node(66), 2): {0: _SubPort(port=OutPort(Node(81), 0), sub_offset=0)}, InPort(Node(66), 3): {0: _SubPort(port=OutPort(Node(83), 0), sub_offset=0)}, InPort(Node(70), 0): {0: _SubPort(port=OutPort(Node(68), 0), sub_offset=0)}, InPort(Node(69), 0): {0: _SubPort(port=OutPort(Node(70), 0), sub_offset=0)}, InPort(Node(70), 1): {0: _SubPort(port=OutPort(Node(72), 0), sub_offset=0)}, InPort(Node(70), 2): {0: _SubPort(port=OutPort(Node(74), 0), sub_offset=0)}, InPort(Node(77), 0): {0: _SubPort(port=OutPort(Node(79), 0), sub_offset=0)}, InPort(Node(86), 0): {0: _SubPort(port=OutPort(Node(90), 0), sub_offset=0)}, InPort(Node(86), 1): {0: _SubPort(port=OutPort(Node(88), 0), sub_offset=0)}, InPort(Node(94), 0): {0: _SubPort(port=OutPort(Node(92), 0), sub_offset=0)}, InPort(Node(96), 0): {0: _SubPort(port=OutPort(Node(92), 0), sub_offset=1)}, InPort(Node(93), 0): {0: _SubPort(port=OutPort(Node(103), 0), sub_offset=0)}, InPort(Node(93), 1): {0: _SubPort(port=OutPort(Node(97), 0), sub_offset=0)}, InPort(Node(94), 1): {0: _SubPort(port=OutPort(Node(99), 0), sub_offset=0)}, InPort(Node(95), 2): {0: _SubPort(port=OutPort(Node(99), 0), sub_offset=1)}, InPort(Node(95), 0): {0: _SubPort(port=OutPort(Node(94), 0), sub_offset=0)}, InPort(Node(95), 1): {0: _SubPort(port=OutPort(Node(101), 0), sub_offset=0)}, InPort(Node(96), 1): {0: _SubPort(port=OutPort(Node(95), 0), sub_offset=0)}, InPort(Node(97), 0): {0: _SubPort(port=OutPort(Node(96), 0), sub_offset=0)}, InPort(Node(116), 0): {0: _SubPort(port=OutPort(Node(108), 0), sub_offset=0)}, InPort(Node(109), 0): {0: _SubPort(port=OutPort(Node(183), 0), sub_offset=0)}, InPort(Node(110), 0): {0: _SubPort(port=OutPort(Node(109), 0), sub_offset=0)}, InPort(Node(112), 0): {0: _SubPort(port=OutPort(Node(109), 1), sub_offset=0)}, InPort(Node(111), 0): {0: _SubPort(port=OutPort(Node(110), 0), sub_offset=0)}, InPort(Node(117), 1): {0: _SubPort(port=OutPort(Node(113), 0), sub_offset=0)}, InPort(Node(117), 2): {0: _SubPort(port=OutPort(Node(115), 0), sub_offset=0)}, InPort(Node(116), 1): {0: _SubPort(port=OutPort(Node(255), 0), sub_offset=0)}, InPort(Node(117), 0): {0: _SubPort(port=OutPort(Node(116), 0), sub_offset=0)}, InPort(Node(182), 0): {0: _SubPort(port=OutPort(Node(117), 0), sub_offset=0)}, InPort(Node(120), 0): {0: _SubPort(port=OutPort(Node(118), 0), sub_offset=0)}, InPort(Node(122), 1): {0: _SubPort(port=OutPort(Node(118), 1), sub_offset=0)}, InPort(Node(122), 2): {0: _SubPort(port=OutPort(Node(118), 2), sub_offset=0)}, InPort(Node(119), 0): {0: _SubPort(port=OutPort(Node(122), 0), sub_offset=0)}, InPort(Node(119), 1): {0: _SubPort(port=OutPort(Node(122), 1), sub_offset=0)}, InPort(Node(119), 2): {0: _SubPort(port=OutPort(Node(122), 2), sub_offset=0)}, InPort(Node(121), 0): {0: _SubPort(port=OutPort(Node(120), 0), sub_offset=0)}, InPort(Node(121), 1): {0: _SubPort(port=OutPort(Node(120), 1), sub_offset=0)}, InPort(Node(140), 0): {0: _SubPort(port=OutPort(Node(121), 0), sub_offset=0)}, InPort(Node(122), 0): {0: _SubPort(port=OutPort(Node(140), 0), sub_offset=0)}, InPort(Node(125), 1): {0: _SubPort(port=OutPort(Node(124), 0), sub_offset=0)}, InPort(Node(125), 2): {0: _SubPort(port=OutPort(Node(124), 1), sub_offset=0)}, InPort(Node(125), 0): {0: _SubPort(port=OutPort(Node(126), 0), sub_offset=0)}, InPort(Node(130), 0): {0: _SubPort(port=OutPort(Node(128), 0), sub_offset=0)}, InPort(Node(136), 0): {0: _SubPort(port=OutPort(Node(128), 1), sub_offset=0)}, InPort(Node(135), 0): {0: _SubPort(port=OutPort(Node(128), 2), sub_offset=0)}, InPort(Node(139), 0): {0: _SubPort(port=OutPort(Node(128), 2), sub_offset=1)}, InPort(Node(129), 0): {0: _SubPort(port=OutPort(Node(133), 0), sub_offset=0)}, InPort(Node(129), 1): {0: _SubPort(port=OutPort(Node(136), 0), sub_offset=0)}, InPort(Node(129), 2): {0: _SubPort(port=OutPort(Node(139), 0), sub_offset=0)}, InPort(Node(134), 0): {0: _SubPort(port=OutPort(Node(130), 0), sub_offset=0)}, InPort(Node(131), 0): {0: _SubPort(port=OutPort(Node(130), 1), sub_offset=0)}, InPort(Node(132), 0): {0: _SubPort(port=OutPort(Node(131), 0), sub_offset=0)}, InPort(Node(132), 1): {0: _SubPort(port=OutPort(Node(131), 1), sub_offset=0)}, InPort(Node(133), 0): {0: _SubPort(port=OutPort(Node(132), 0), sub_offset=0)}, InPort(Node(136), 2): {0: _SubPort(port=OutPort(Node(134), 0), sub_offset=0)}, InPort(Node(136), 1): {0: _SubPort(port=OutPort(Node(135), 0), sub_offset=0)}, InPort(Node(139), 1): {0: _SubPort(port=OutPort(Node(138), 0), sub_offset=0)}, InPort(Node(172), 0): {0: _SubPort(port=OutPort(Node(141), 0), sub_offset=0)}, InPort(Node(159), 0): {0: _SubPort(port=OutPort(Node(141), 1), sub_offset=0)}, InPort(Node(144), 0): {0: _SubPort(port=OutPort(Node(142), 0), sub_offset=0)}, InPort(Node(143), 0): {0: _SubPort(port=OutPort(Node(146), 0), sub_offset=0)}, InPort(Node(143), 1): {0: _SubPort(port=OutPort(Node(144), 0), sub_offset=0)}, InPort(Node(145), 0): {0: _SubPort(port=OutPort(Node(144), 1), sub_offset=0)}, InPort(Node(146), 1): {0: _SubPort(port=OutPort(Node(144), 1), sub_offset=1)}, InPort(Node(145), 1): {0: _SubPort(port=OutPort(Node(157), 0), sub_offset=0)}, InPort(Node(146), 0): {0: _SubPort(port=OutPort(Node(145), 0), sub_offset=0)}, InPort(Node(149), 0): {0: _SubPort(port=OutPort(Node(151), 0), sub_offset=0)}, InPort(Node(155), 0): {0: _SubPort(port=OutPort(Node(153), 0), sub_offset=0)}, InPort(Node(154), 0): {0: _SubPort(port=OutPort(Node(155), 0), sub_offset=0)}, InPort(Node(158), 0): {0: _SubPort(port=OutPort(Node(159), 0), sub_offset=0), 1: _SubPort(port=OutPort(Node(172), 0), sub_offset=0)}, InPort(Node(162), 0): {0: _SubPort(port=OutPort(Node(160), 0), sub_offset=0)}, InPort(Node(166), 0): {0: _SubPort(port=OutPort(Node(160), 0), sub_offset=1)}, InPort(Node(163), 0): {0: _SubPort(port=OutPort(Node(160), 1), sub_offset=0)}, InPort(Node(161), 0): {0: _SubPort(port=OutPort(Node(171), 0), sub_offset=0)}, InPort(Node(161), 1): {0: _SubPort(port=OutPort(Node(169), 0), sub_offset=0)}, InPort(Node(163), 1): {0: _SubPort(port=OutPort(Node(162), 0), sub_offset=0)}, InPort(Node(167), 0): {0: _SubPort(port=OutPort(Node(163), 0), sub_offset=0)}, InPort(Node(168), 0): {0: _SubPort(port=OutPort(Node(163), 1), sub_offset=0)}, InPort(Node(166), 1): {0: _SubPort(port=OutPort(Node(165), 0), sub_offset=0)}, InPort(Node(167), 1): {0: _SubPort(port=OutPort(Node(166), 0), sub_offset=0)}, InPort(Node(168), 1): {0: _SubPort(port=OutPort(Node(167), 0), sub_offset=0)}, InPort(Node(169), 0): {0: _SubPort(port=OutPort(Node(168), 0), sub_offset=0)}, InPort(Node(175), 0): {0: _SubPort(port=OutPort(Node(173), 0), sub_offset=0)}, InPort(Node(174), 0): {0: _SubPort(port=OutPort(Node(178), 0), sub_offset=0)}, InPort(Node(174), 1): {0: _SubPort(port=OutPort(Node(176), 0), sub_offset=0)}, InPort(Node(183), 1): {0: _SubPort(port=OutPort(Node(179), 0), sub_offset=0)}, InPort(Node(183), 2): {0: _SubPort(port=OutPort(Node(181), 0), sub_offset=0)}, InPort(Node(182), 1): {0: _SubPort(port=OutPort(Node(257), 0), sub_offset=0)}, InPort(Node(183), 0): {0: _SubPort(port=OutPort(Node(182), 0), sub_offset=0)}, InPort(Node(186), 0): {0: _SubPort(port=OutPort(Node(184), 0), sub_offset=0)}, InPort(Node(188), 1): {0: _SubPort(port=OutPort(Node(184), 1), sub_offset=0)}, InPort(Node(188), 2): {0: _SubPort(port=OutPort(Node(184), 2), sub_offset=0)}, InPort(Node(185), 0): {0: _SubPort(port=OutPort(Node(188), 0), sub_offset=0)}, InPort(Node(185), 1): {0: _SubPort(port=OutPort(Node(188), 1), sub_offset=0)}, InPort(Node(185), 2): {0: _SubPort(port=OutPort(Node(188), 2), sub_offset=0)}, InPort(Node(187), 0): {0: _SubPort(port=OutPort(Node(186), 0), sub_offset=0)}, InPort(Node(187), 1): {0: _SubPort(port=OutPort(Node(186), 1), sub_offset=0)}, InPort(Node(206), 0): {0: _SubPort(port=OutPort(Node(187), 0), sub_offset=0)}, InPort(Node(188), 0): {0: _SubPort(port=OutPort(Node(206), 0), sub_offset=0)}, InPort(Node(191), 1): {0: _SubPort(port=OutPort(Node(190), 0), sub_offset=0)}, InPort(Node(191), 2): {0: _SubPort(port=OutPort(Node(190), 1), sub_offset=0)}, InPort(Node(191), 0): {0: _SubPort(port=OutPort(Node(192), 0), sub_offset=0)}, InPort(Node(196), 0): {0: _SubPort(port=OutPort(Node(194), 0), sub_offset=0)}, InPort(Node(202), 0): {0: _SubPort(port=OutPort(Node(194), 1), sub_offset=0)}, InPort(Node(201), 0): {0: _SubPort(port=OutPort(Node(194), 2), sub_offset=0)}, InPort(Node(205), 0): {0: _SubPort(port=OutPort(Node(194), 2), sub_offset=1)}, InPort(Node(195), 0): {0: _SubPort(port=OutPort(Node(199), 0), sub_offset=0)}, InPort(Node(195), 1): {0: _SubPort(port=OutPort(Node(202), 0), sub_offset=0)}, InPort(Node(195), 2): {0: _SubPort(port=OutPort(Node(205), 0), sub_offset=0)}, InPort(Node(200), 0): {0: _SubPort(port=OutPort(Node(196), 0), sub_offset=0)}, InPort(Node(197), 0): {0: _SubPort(port=OutPort(Node(196), 1), sub_offset=0)}, InPort(Node(198), 0): {0: _SubPort(port=OutPort(Node(197), 0), sub_offset=0)}, InPort(Node(198), 1): {0: _SubPort(port=OutPort(Node(197), 1), sub_offset=0)}, InPort(Node(199), 0): {0: _SubPort(port=OutPort(Node(198), 0), sub_offset=0)}, InPort(Node(202), 2): {0: _SubPort(port=OutPort(Node(200), 0), sub_offset=0)}, InPort(Node(202), 1): {0: _SubPort(port=OutPort(Node(201), 0), sub_offset=0)}, InPort(Node(205), 1): {0: _SubPort(port=OutPort(Node(204), 0), sub_offset=0)}, InPort(Node(247), 0): {0: _SubPort(port=OutPort(Node(207), 0), sub_offset=0)}, InPort(Node(224), 0): {0: _SubPort(port=OutPort(Node(207), 1), sub_offset=0)}, InPort(Node(210), 0): {0: _SubPort(port=OutPort(Node(208), 0), sub_offset=0)}, InPort(Node(209), 0): {0: _SubPort(port=OutPort(Node(212), 0), sub_offset=0)}, InPort(Node(212), 1): {0: _SubPort(port=OutPort(Node(210), 0), sub_offset=0)}, InPort(Node(211), 0): {0: _SubPort(port=OutPort(Node(210), 1), sub_offset=0)}, InPort(Node(212), 2): {0: _SubPort(port=OutPort(Node(210), 1), sub_offset=1)}, InPort(Node(211), 1): {0: _SubPort(port=OutPort(Node(222), 0), sub_offset=0)}, InPort(Node(212), 0): {0: _SubPort(port=OutPort(Node(211), 0), sub_offset=0)}, InPort(Node(216), 0): {0: _SubPort(port=OutPort(Node(214), 0), sub_offset=0)}, InPort(Node(215), 0): {0: _SubPort(port=OutPort(Node(216), 0), sub_offset=0)}, InPort(Node(220), 1): {0: _SubPort(port=OutPort(Node(218), 0), sub_offset=0)}, InPort(Node(220), 0): {0: _SubPort(port=OutPort(Node(218), 1), sub_offset=0)}, InPort(Node(219), 0): {0: _SubPort(port=OutPort(Node(220), 0), sub_offset=0)}, InPort(Node(223), 0): {0: _SubPort(port=OutPort(Node(224), 0), sub_offset=0), 1: _SubPort(port=OutPort(Node(247), 0), sub_offset=0)}, InPort(Node(227), 0): {0: _SubPort(port=OutPort(Node(225), 0), sub_offset=0)}, InPort(Node(241), 0): {0: _SubPort(port=OutPort(Node(225), 0), sub_offset=1)}, InPort(Node(228), 0): {0: _SubPort(port=OutPort(Node(225), 1), sub_offset=0)}, InPort(Node(226), 0): {0: _SubPort(port=OutPort(Node(246), 0), sub_offset=0)}, InPort(Node(226), 1): {0: _SubPort(port=OutPort(Node(244), 0), sub_offset=0)}, InPort(Node(228), 1): {0: _SubPort(port=OutPort(Node(227), 0), sub_offset=0)}, InPort(Node(229), 0): {0: _SubPort(port=OutPort(Node(228), 0), sub_offset=0)}, InPort(Node(242), 0): {0: _SubPort(port=OutPort(Node(228), 1), sub_offset=0)}, InPort(Node(243), 0): {0: _SubPort(port=OutPort(Node(229), 0), sub_offset=0)}, InPort(Node(232), 0): {0: _SubPort(port=OutPort(Node(235), 0), sub_offset=0)}, InPort(Node(235), 0): {0: _SubPort(port=OutPort(Node(234), 0), sub_offset=0)}, InPort(Node(238), 0): {0: _SubPort(port=OutPort(Node(237), 0), sub_offset=0)}, InPort(Node(241), 1): {0: _SubPort(port=OutPort(Node(240), 0), sub_offset=0)}, InPort(Node(242), 1): {0: _SubPort(port=OutPort(Node(241), 0), sub_offset=0)}, InPort(Node(243), 1): {0: _SubPort(port=OutPort(Node(242), 0), sub_offset=0)}, InPort(Node(244), 0): {0: _SubPort(port=OutPort(Node(243), 0), sub_offset=0)}, InPort(Node(251), 0): {0: _SubPort(port=OutPort(Node(248), 0), sub_offset=0)}, InPort(Node(249), 0): {0: _SubPort(port=OutPort(Node(253), 0), sub_offset=0)}, InPort(Node(249), 1): {0: _SubPort(port=OutPort(Node(250), 0), sub_offset=0)}, InPort(Node(263), 0): {0: _SubPort(port=OutPort(Node(261), 0), sub_offset=0)}, InPort(Node(262), 0): {0: _SubPort(port=OutPort(Node(267), 1), sub_offset=0)}, InPort(Node(263), 1): {0: _SubPort(port=OutPort(Node(265), 0), sub_offset=0)}, InPort(Node(366), 0): {0: _SubPort(port=OutPort(Node(263), 0), sub_offset=0)}, InPort(Node(266), 0): {0: _SubPort(port=OutPort(Node(263), 1), sub_offset=0)}, InPort(Node(366), 2): {0: _SubPort(port=OutPort(Node(266), 0), sub_offset=0)}, InPort(Node(267), 0): {0: _SubPort(port=OutPort(Node(378), 0), sub_offset=0)}, InPort(Node(267), 1): {0: _SubPort(port=OutPort(Node(380), 0), sub_offset=0)}, InPort(Node(267), 2): {0: _SubPort(port=OutPort(Node(384), 0), sub_offset=0)}, InPort(Node(267), 3): {0: _SubPort(port=OutPort(Node(366), 0), sub_offset=0)}, InPort(Node(367), 0): {0: _SubPort(port=OutPort(Node(267), 0), sub_offset=0)}, InPort(Node(268), 0): {0: _SubPort(port=OutPort(Node(337), 0), sub_offset=0)}, InPort(Node(336), 0): {0: _SubPort(port=OutPort(Node(268), 0), sub_offset=0)}, InPort(Node(337), 0): {0: _SubPort(port=OutPort(Node(268), 1), sub_offset=0)}, InPort(Node(271), 0): {0: _SubPort(port=OutPort(Node(269), 0), sub_offset=0)}, InPort(Node(271), 2): {0: _SubPort(port=OutPort(Node(269), 1), sub_offset=0)}, InPort(Node(271), 1): {0: _SubPort(port=OutPort(Node(269), 2), sub_offset=0)}, InPort(Node(270), 2): {0: _SubPort(port=OutPort(Node(269), 3), sub_offset=0)}, InPort(Node(270), 0): {0: _SubPort(port=OutPort(Node(272), 0), sub_offset=0)}, InPort(Node(270), 1): {0: _SubPort(port=OutPort(Node(272), 1), sub_offset=0)}, InPort(Node(286), 0): {0: _SubPort(port=OutPort(Node(271), 0), sub_offset=0)}, InPort(Node(272), 0): {0: _SubPort(port=OutPort(Node(286), 0), sub_offset=0)}, InPort(Node(275), 0): {0: _SubPort(port=OutPort(Node(277), 0), sub_offset=0)}, InPort(Node(275), 1): {0: _SubPort(port=OutPort(Node(279), 0), sub_offset=0)}, InPort(Node(285), 0): {0: _SubPort(port=OutPort(Node(281), 0), sub_offset=0)}, InPort(Node(282), 0): {0: _SubPort(port=OutPort(Node(284), 0), sub_offset=0)}, InPort(Node(282), 1): {0: _SubPort(port=OutPort(Node(285), 0), sub_offset=0)}, InPort(Node(301), 0): {0: _SubPort(port=OutPort(Node(287), 0), sub_offset=0)}, InPort(Node(295), 0): {0: _SubPort(port=OutPort(Node(287), 1), sub_offset=0)}, InPort(Node(290), 0): {0: _SubPort(port=OutPort(Node(288), 0), sub_offset=0)}, InPort(Node(289), 0): {0: _SubPort(port=OutPort(Node(293), 0), sub_offset=0)}, InPort(Node(289), 1): {0: _SubPort(port=OutPort(Node(290), 0), sub_offset=0)}, InPort(Node(289), 2): {0: _SubPort(port=OutPort(Node(290), 2), sub_offset=0)}, InPort(Node(293), 0): {0: _SubPort(port=OutPort(Node(290), 2), sub_offset=1)}, InPort(Node(289), 3): {0: _SubPort(port=OutPort(Node(290), 1), sub_offset=0)}, InPort(Node(293), 1): {0: _SubPort(port=OutPort(Node(292), 0), sub_offset=0)}, InPort(Node(294), 0): {0: _SubPort(port=OutPort(Node(320), 0), sub_offset=0), 1: _SubPort(port=OutPort(Node(327), 0), sub_offset=0)}, InPort(Node(307), 0): {0: _SubPort(port=OutPort(Node(295), 0), sub_offset=0), 1: _SubPort(port=OutPort(Node(301), 0), sub_offset=0)}, InPort(Node(297), 2): {0: _SubPort(port=OutPort(Node(296), 0), sub_offset=0)}, InPort(Node(298), 0): {0: _SubPort(port=OutPort(Node(296), 0), sub_offset=1)}, InPort(Node(297), 3): {0: _SubPort(port=OutPort(Node(296), 1), sub_offset=0)}, InPort(Node(297), 4): {0: _SubPort(port=OutPort(Node(296), 2), sub_offset=0)}, InPort(Node(298), 1): {0: _SubPort(port=OutPort(Node(296), 2), sub_offset=1)}, InPort(Node(297), 0): {0: _SubPort(port=OutPort(Node(300), 0), sub_offset=0)}, InPort(Node(297), 1): {0: _SubPort(port=OutPort(Node(298), 0), sub_offset=0)}, InPort(Node(303), 2): {0: _SubPort(port=OutPort(Node(302), 0), sub_offset=0)}, InPort(Node(304), 0): {0: _SubPort(port=OutPort(Node(302), 0), sub_offset=1)}, InPort(Node(303), 3): {0: _SubPort(port=OutPort(Node(302), 1), sub_offset=0)}, InPort(Node(303), 4): {0: _SubPort(port=OutPort(Node(302), 2), sub_offset=0)}, InPort(Node(304), 1): {0: _SubPort(port=OutPort(Node(302), 2), sub_offset=1)}, InPort(Node(303), 0): {0: _SubPort(port=OutPort(Node(306), 0), sub_offset=0)}, InPort(Node(303), 1): {0: _SubPort(port=OutPort(Node(304), 0), sub_offset=0)}, InPort(Node(327), 0): {0: _SubPort(port=OutPort(Node(307), 0), sub_offset=0)}, InPort(Node(320), 0): {0: _SubPort(port=OutPort(Node(307), 1), sub_offset=0)}, InPort(Node(310), 0): {0: _SubPort(port=OutPort(Node(308), 0), sub_offset=0)}, InPort(Node(310), 1): {0: _SubPort(port=OutPort(Node(308), 1), sub_offset=0)}, InPort(Node(310), 2): {0: _SubPort(port=OutPort(Node(308), 2), sub_offset=0)}, InPort(Node(310), 3): {0: _SubPort(port=OutPort(Node(308), 3), sub_offset=0)}, InPort(Node(309), 0): {0: _SubPort(port=OutPort(Node(310), 0), sub_offset=0)}, InPort(Node(314), 0): {0: _SubPort(port=OutPort(Node(312), 0), sub_offset=0)}, InPort(Node(314), 1): {0: _SubPort(port=OutPort(Node(312), 1), sub_offset=0)}, InPort(Node(314), 2): {0: _SubPort(port=OutPort(Node(312), 2), sub_offset=0)}, InPort(Node(313), 0): {0: _SubPort(port=OutPort(Node(314), 0), sub_offset=0)}, InPort(Node(317), 0): {0: _SubPort(port=OutPort(Node(319), 0), sub_offset=0)}, InPort(Node(322), 0): {0: _SubPort(port=OutPort(Node(326), 0), sub_offset=0)}, InPort(Node(322), 1): {0: _SubPort(port=OutPort(Node(324), 0), sub_offset=0)}, InPort(Node(330), 0): {0: _SubPort(port=OutPort(Node(328), 0), sub_offset=0)}, InPort(Node(332), 0): {0: _SubPort(port=OutPort(Node(328), 0), sub_offset=1)}, InPort(Node(330), 1): {0: _SubPort(port=OutPort(Node(328), 1), sub_offset=0)}, InPort(Node(331), 2): {0: _SubPort(port=OutPort(Node(328), 1), sub_offset=1)}, InPort(Node(331), 1): {0: _SubPort(port=OutPort(Node(328), 2), sub_offset=0)}, InPort(Node(329), 0): {0: _SubPort(port=OutPort(Node(335), 0), sub_offset=0)}, InPort(Node(329), 1): {0: _SubPort(port=OutPort(Node(333), 0), sub_offset=0)}, InPort(Node(331), 0): {0: _SubPort(port=OutPort(Node(330), 0), sub_offset=0)}, InPort(Node(332), 1): {0: _SubPort(port=OutPort(Node(331), 0), sub_offset=0)}, InPort(Node(333), 0): {0: _SubPort(port=OutPort(Node(332), 0), sub_offset=0)}, InPort(Node(340), 0): {0: _SubPort(port=OutPort(Node(338), 0), sub_offset=0)}, InPort(Node(353), 0): {0: _SubPort(port=OutPort(Node(338), 1), sub_offset=0)}, InPort(Node(339), 0): {0: _SubPort(port=OutPort(Node(365), 0), sub_offset=0)}, InPort(Node(339), 1): {0: _SubPort(port=OutPort(Node(351), 0), sub_offset=0)}, InPort(Node(339), 2): {0: _SubPort(port=OutPort(Node(351), 2), sub_offset=0)}, InPort(Node(339), 3): {0: _SubPort(port=OutPort(Node(351), 1), sub_offset=0)}, InPort(Node(339), 4): {0: _SubPort(port=OutPort(Node(363), 0), sub_offset=0)}, InPort(Node(350), 0): {0: _SubPort(port=OutPort(Node(340), 0), sub_offset=0)}, InPort(Node(343), 0): {0: _SubPort(port=OutPort(Node(346), 0), sub_offset=0)}, InPort(Node(346), 0): {0: _SubPort(port=OutPort(Node(345), 0), sub_offset=0)}, InPort(Node(349), 0): {0: _SubPort(port=OutPort(Node(348), 0), sub_offset=0)}, InPort(Node(352), 0): {0: _SubPort(port=OutPort(Node(350), 0), sub_offset=0)}, InPort(Node(356), 0): {0: _SubPort(port=OutPort(Node(350), 0), sub_offset=1)}, InPort(Node(359), 0): {0: _SubPort(port=OutPort(Node(350), 0), sub_offset=2)}, InPort(Node(351), 0): {0: _SubPort(port=OutPort(Node(350), 1), sub_offset=0)}, InPort(Node(353), 1): {0: _SubPort(port=OutPort(Node(352), 0), sub_offset=0)}, InPort(Node(358), 0): {0: _SubPort(port=OutPort(Node(353), 0), sub_offset=0)}, InPort(Node(361), 0): {0: _SubPort(port=OutPort(Node(353), 1), sub_offset=0)}, InPort(Node(356), 1): {0: _SubPort(port=OutPort(Node(355), 0), sub_offset=0)}, InPort(Node(357), 0): {0: _SubPort(port=OutPort(Node(356), 0), sub_offset=0)}, InPort(Node(360), 0): {0: _SubPort(port=OutPort(Node(356), 0), sub_offset=1)}, InPort(Node(358), 1): {0: _SubPort(port=OutPort(Node(357), 0), sub_offset=0)}, InPort(Node(362), 0): {0: _SubPort(port=OutPort(Node(358), 0), sub_offset=0)}, InPort(Node(361), 1): {0: _SubPort(port=OutPort(Node(358), 1), sub_offset=0)}, InPort(Node(362), 1): {0: _SubPort(port=OutPort(Node(359), 0), sub_offset=0)}, InPort(Node(363), 1): {0: _SubPort(port=OutPort(Node(360), 0), sub_offset=0)}, InPort(Node(362), 2): {0: _SubPort(port=OutPort(Node(361), 0), sub_offset=0)}, InPort(Node(363), 2): {0: _SubPort(port=OutPort(Node(361), 1), sub_offset=0)}, InPort(Node(363), 0): {0: _SubPort(port=OutPort(Node(362), 0), sub_offset=0)}, InPort(Node(366), 1): {0: _SubPort(port=OutPort(Node(382), 0), sub_offset=0)}, InPort(Node(376), 1): {0: _SubPort(port=OutPort(Node(372), 0), sub_offset=0)}, InPort(Node(376), 0): {0: _SubPort(port=OutPort(Node(375), 0), sub_offset=0)}, InPort(Node(108), 1): {0: _SubPort(port=OutPort(Node(260), 0), sub_offset=0)}}), _free_nodes=[])], extensions=[Extension(name='tket.quantum', version=SemanticVersion(major=0, minor=3, patch=0, prerelease=None, build=None), types={}, operations={'CRz': OpDef(name='CRz', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, Qubit, ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Qubit, Qubit])), binary=False), description='CRz', misc={'commutation': []}), 'CX': OpDef(name='CX', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, Qubit], [Qubit, Qubit])), binary=False), description='CX', misc={'commutation': [[0, 'Z'], [1, 'X']]}), 'CY': OpDef(name='CY', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, Qubit], [Qubit, Qubit])), binary=False), description='CY', misc={'commutation': []}), 'CZ': OpDef(name='CZ', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, Qubit], [Qubit, Qubit])), binary=False), description='CZ', misc={'commutation': [[0, 'Z'], [1, 'Z']]}), 'H': OpDef(name='H', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='H', misc={'commutation': []}), 'Measure': OpDef(name='Measure', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit, Bool])), binary=False), description='Measure', misc={'commutation': [[0, 'Z']]}), 'MeasureFree': OpDef(name='MeasureFree', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])])), binary=False), description='MeasureFree', misc={'commutation': []}), 'QAlloc': OpDef(name='QAlloc', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([], [Qubit])), binary=False), description='QAlloc', misc={'commutation': []}), 'QFree': OpDef(name='QFree', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [])), binary=False), description='QFree', misc={'commutation': []}), 'Reset': OpDef(name='Reset', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='Reset', misc={'commutation': []}), 'Rx': OpDef(name='Rx', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Qubit])), binary=False), description='Rx', misc={'commutation': [[0, 'X']]}), 'Ry': OpDef(name='Ry', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Qubit])), binary=False), description='Ry', misc={'commutation': []}), 'Rz': OpDef(name='Rz', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Qubit])), binary=False), description='Rz', misc={'commutation': [[0, 'Z']]}), 'S': OpDef(name='S', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='S', misc={'commutation': [[0, 'Z']]}), 'Sdg': OpDef(name='Sdg', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='Sdg', misc={'commutation': [[0, 'Z']]}), 'T': OpDef(name='T', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='T', misc={'commutation': [[0, 'Z']]}), 'Tdg': OpDef(name='Tdg', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='Tdg', misc={'commutation': [[0, 'Z']]}), 'Toffoli': OpDef(name='Toffoli', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit, Qubit, Qubit], [Qubit, Qubit, Qubit])), binary=False), description='Toffoli', misc={'commutation': []}), 'TryQAlloc': OpDef(name='TryQAlloc', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([], [Option(Qubit)])), binary=False), description='TryQAlloc', misc={'commutation': []}), 'V': OpDef(name='V', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='V', misc={'commutation': [[0, 'X']]}), 'Vdg': OpDef(name='Vdg', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='Vdg', misc={'commutation': [[0, 'X']]}), 'X': OpDef(name='X', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='X', misc={'commutation': [[0, 'X']]}), 'Y': OpDef(name='Y', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='Y', misc={'commutation': [[0, 'Y']]}), 'Z': OpDef(name='Z', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([Qubit], [Qubit])), binary=False), description='Z', misc={'commutation': [[0, 'Z']]}), 'symbolic_angle': OpDef(name='symbolic_angle', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam()], body=FunctionType([], [ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])])), binary=False), description='Store a sympy expression that can be evaluated to an angle.', misc={})}), Extension(name='tket.measurement', version=SemanticVersion(major=0, minor=1, patch=0, prerelease=None, build=None), types={'Measurement': TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable))}, operations={'Read': OpDef(name='Read', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='Measurement', description='A copyable type representing the result of a measurement operation', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Bool])), binary=False), description='Consumes a measurement, converting it into a bool.', misc={})}), Extension(name='tket.result', version=SemanticVersion(major=0, minor=2, patch=0, prerelease=None, build=None), types={}, operations={'result_array_bool': OpDef(name='result_array_bool', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam(), BoundedNatParam(upper_bound=None)], body=FunctionType([ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=1, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=Bool)])], [])), binary=False), description='Report an array of boolean results.', misc={}), 'result_array_f64': OpDef(name='result_array_f64', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam(), BoundedNatParam(upper_bound=None)], body=FunctionType([ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=1, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='float64', description='64-bit IEEE 754-2019 floating-point value', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])], [])), binary=False), description='Report an array of floating-point results.', misc={}), 'result_array_int': OpDef(name='result_array_int', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam(), BoundedNatParam(upper_bound=None), BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=1, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=2, param=BoundedNatParam(upper_bound=7))]))])], [])), binary=False), description='Report an array of signed integer results.', misc={}), 'result_array_uint': OpDef(name='result_array_uint', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam(), BoundedNatParam(upper_bound=None), BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='array', description='Fixed-length array', params=[BoundedNatParam(upper_bound=None), TypeTypeParam(bound=TypeBound.Linear)], bound=ExplicitBound(bound=TypeBound.Linear)), args=[VariableArg(idx=1, param=BoundedNatParam(upper_bound=None)), TypeTypeArg(ty=ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=2, param=BoundedNatParam(upper_bound=7))]))])], [])), binary=False), description='Report an array of unsigned integer results.', misc={}), 'result_bool': OpDef(name='result_bool', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam()], body=FunctionType([Bool], [])), binary=False), description='Report a boolean result.', misc={}), 'result_f64': OpDef(name='result_f64', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam()], body=FunctionType([ExtType(type_def=TypeDef(name='float64', description='64-bit IEEE 754-2019 floating-point value', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [])), binary=False), description='Report a floating-point result.', misc={}), 'result_int': OpDef(name='result_int', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam(), BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=1, param=BoundedNatParam(upper_bound=7))])], [])), binary=False), description='Report a signed integer result.', misc={}), 'result_uint': OpDef(name='result_uint', signature=OpDefSig(poly_func=PolyFuncType(params=[StringParam(), BoundedNatParam(upper_bound=7)], body=FunctionType([ExtType(type_def=TypeDef(name='int', description='integral value of a given bit width', params=[BoundedNatParam(upper_bound=7)], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[VariableArg(idx=1, param=BoundedNatParam(upper_bound=7))])], [])), binary=False), description='Report an unsigned integer result.', misc={})}), Extension(name='tket.guppy', version=SemanticVersion(major=0, minor=2, patch=0, prerelease=None, build=None), types={}, operations={'drop': OpDef(name='drop', signature=OpDefSig(poly_func=PolyFuncType(params=[TypeTypeParam(bound=TypeBound.Linear)], body=FunctionType([$0], [])), binary=False), description='Drop the input wire. Applicable to guppy affine types only.', misc={})}), Extension(name='tket.rotation', version=SemanticVersion(major=0, minor=2, patch=0, prerelease=None, build=None), types={'rotation': TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable))}, operations={'from_halfturns': OpDef(name='from_halfturns', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='float64', description='64-bit IEEE 754-2019 floating-point value', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [Option(ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]))])), binary=False), description='Construct rotation from number of half-turns (would be multiples of PI in radians). Returns None if the float is non-finite.', misc={}), 'from_halfturns_unchecked': OpDef(name='from_halfturns_unchecked', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='float64', description='64-bit IEEE 754-2019 floating-point value', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])])), binary=False), description='Construct rotation from number of half-turns (would be multiples of PI in radians). Panics if the float is non-finite.', misc={}), 'radd': OpDef(name='radd', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[]), ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])])), binary=False), description='Add two angles together (experimental).', misc={}), 'to_halfturns': OpDef(name='to_halfturns', signature=OpDefSig(poly_func=PolyFuncType(params=[], body=FunctionType([ExtType(type_def=TypeDef(name='rotation', description='rotation type expressed as number of half turns', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])], [ExtType(type_def=TypeDef(name='float64', description='64-bit IEEE 754-2019 floating-point value', params=[], bound=ExplicitBound(bound=TypeBound.Copyable)), args=[])])), binary=False), description='Convert rotation to number of half-turns (would be multiples of PI in radians).', misc={})})])