{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "log_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "log_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "log_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "name": "log_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "val",
          "type": "address"
        }
      ],
      "name": "log_named_address",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "val",
          "type": "uint256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256[]",
          "name": "val",
          "type": "int256[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "val",
          "type": "address[]"
        }
      ],
      "name": "log_named_array",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "val",
          "type": "bytes"
        }
      ],
      "name": "log_named_bytes",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "val",
          "type": "bytes32"
        }
      ],
      "name": "log_named_bytes32",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "name": "log_named_decimal_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "int256",
          "name": "val",
          "type": "int256"
        }
      ],
      "name": "log_named_int",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "val",
          "type": "string"
        }
      ],
      "name": "log_named_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "key",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "val",
          "type": "uint256"
        }
      ],
      "name": "log_named_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "name": "log_string",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "log_uint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "logs",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "IS_SCRIPT",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "IS_TEST",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "failed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "setUp",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "input",
          "type": "uint32"
        }
      ],
      "name": "testFuzz_decimalUint32",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "input",
          "type": "bytes32"
        }
      ],
      "name": "testFuzz_encodeHex",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vm",
      "outputs": [
        {
          "internalType": "contract Vm",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x60806040526000805462ff00001960ff19909116600117166201000017905534801561002a57600080fd5b5061128e8061003a6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806360b63c9a1161005b57806360b63c9a146100da578063ba414fa6146100fd578063f8ccbf4714610119578063fa7626d4146101215761007d565b80630a9254e4146100825780633a7684631461008c57806356ca517a146100bd575b600080fd5b61008a610129565b005b61009461012b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61008a600480360360208110156100d357600080fd5b5035610143565b61008a600480360360208110156100f057600080fd5b503563ffffffff16610324565b61010561066a565b604080519115158252519081900360200190f35b61010561089c565b6101056108ab565b565b737109709ecfa91a80626ff3989d68f67f5b1dd12d81565b60008061014f836108b4565b604080517f3078000000000000000000000000000000000000000000000000000000000000602082015260228101849052604280820184905282518083039091018152606282018084527fb11a19e80000000000000000000000000000000000000000000000000000000090526066820188905291519395509193509161031e918391737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b11a19e891608680830192600092919082900301818387803b15801561020e57600080fd5b505af1158015610222573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561026957600080fd5b810190808051604051939291908464010000000082111561028957600080fd5b90830190602082018581111561029e57600080fd5b82516401000000008111828201881017156102b857600080fd5b82525081516020918201929091019080838360005b838110156102e55781810151838201526020016102cd565b50505050905090810190601f1680156103125780820380516001836020036101000a031916815260200191505b50604052505050610988565b50505050565b604080517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff8316151560048201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91634c63e56291602480830192600092919082900301818387803b15801561039757600080fd5b505af11580156103ab573d6000803e3d6000fd5b5060009250839150505b63ffffffff8116156103d857600a63ffffffff82166001909301920490506103b5565b604080517f6900a3ae00000000000000000000000000000000000000000000000000000000815263ffffffff851660048201529051600091737109709ecfa91a80626ff3989d68f67f5b1dd12d91636900a3ae91602480820192869290919082900301818387803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104a757600080fd5b81019080805160405193929190846401000000008211156104c757600080fd5b9083019060208201858111156104dc57600080fd5b82516401000000008111828201881017156104f657600080fd5b82525081516020918201929091019080838360005b8381101561052357818101518382015260200161050b565b50505050905090810190601f1680156105505780820380516001836020036101000a031916815260200191505b50604052505050905060005b83600a03811015610623578160405160200180807f300000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106105e057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105a3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040529150808060010191505061055c565b5061031e6106368563ffffffff16610ca0565b604051602001808269ffffffffffffffffffff1660b01b8152600a0191505060405160208183030381529060405282610cff565b60008054610100900460ff161561068c5750600054610100900460ff16610899565b6000610696610d09565b156108965760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152835180840385018152606084019094527f667f9d700000000000000000000000000000000000000000000000000000000060808401908152845160009593947f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49493608490910191908401908083835b6020831061078e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610751565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061081057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b5091505080806020019051602081101561089057600080fd5b50519150505b90505b90565b60005462010000900460ff1681565b60005460ff1681565b600080601f5b600f8160ff16111561091c5760ff600882021684901c6108d981610d24565b61ffff16841793508160ff166010146108f457601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016108ba565b50600f5b60ff8160ff1610156109825760ff600882021684901c61093f81610d24565b61ffff16831792508160ff1660001461095a57601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610920565b50915091565b806040516020018082805190602001908083835b602083106109d957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161099c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120826040516020018082805190602001908083835b60208310610a6557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a28565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014610c9c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602481526020018061123b6024913960400191505060405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040518080602001806020018381038352600a8152602001807f2020457870656374656400000000000000000000000000000000000000000000815250602001838103825284818151815260200191508051906020019080838360005b83811015610b87578181015183820152602001610b6f565b50505050905090810190601f168015610bb45780820380516001836020036101000a031916815260200191505b50935050505060405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040518080602001806020018381038352600a8152602001807f2020202041637475616c00000000000000000000000000000000000000000000815250602001838103825284818151815260200191508051906020019080838360005b83811015610c59578181015183820152602001610c41565b50505050905090810190601f168015610c865780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1610c9c610d54565b5050565b60006030815b600a8160ff161015610cf85760ff600882021682600a63ffffffff87160663ffffffff160169ffffffffffffffffffff16901b83179250600a8463ffffffff1681610ced57fe5b049350600101610ca6565b5050919050565b610c9c8282610f7c565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b151590565b6000610d3660048360ff16901c61113d565b60ff161760081b62ffff0016610d4b8261113d565b60ff1617919050565b610d5c610d09565b15610f4e5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152600160608481019190915284518085039091018152608084019094527f70ca10bb0000000000000000000000000000000000000000000000000000000060a08401908152845160009593947f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc4949360a490910191908401908083835b60208310610e6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610e23565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310610ee257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610ea5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610f44576040519150601f19603f3d011682016040523d82523d6000602084013e610f49565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610f868282611193565b610c9c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602381526020018061125f6023913960400191505060405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18816040518080602001806020018381038352600a8152602001807f2020457870656374656400000000000000000000000000000000000000000000815250602001838103825284818151815260200191508051906020019080838360005b8381101561106c578181015183820152602001611054565b50505050905090810190601f1680156110995780820380516001836020036101000a031916815260200191505b50935050505060405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18826040518080602001806020018381038352600a8152602001807f2020202041637475616c000000000000000000000000000000000000000000008152506020018381038252848181518152602001915080519060200190808383600083811015610c59578181015183820152602001610c41565b6040805180820190915260108082527f30313233343536373839616263646566000000000000000000000000000000006020830152600091600f8416918290811061118457fe5b016020015160f81c9392505050565b8051825160019114156112305760005b835181101561122a578281815181106111b857fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106111f157fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161461122257600091505b6001016111a3565b50611234565b5060005b9291505056fe4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472696e675d4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797465735da164736f6c6343000706000a",
    "sourceMap": "187:948:50:-:0;;;1572:26:0;;;-1:-1:-1;;;;1572:26:0;;;1594:4;1572:26;170:28:1;;;;;187:948:50;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806360b63c9a1161005b57806360b63c9a146100da578063ba414fa6146100fd578063f8ccbf4714610119578063fa7626d4146101215761007d565b80630a9254e4146100825780633a7684631461008c57806356ca517a146100bd575b600080fd5b61008a610129565b005b61009461012b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61008a600480360360208110156100d357600080fd5b5035610143565b61008a600480360360208110156100f057600080fd5b503563ffffffff16610324565b61010561066a565b604080519115158252519081900360200190f35b61010561089c565b6101056108ab565b565b737109709ecfa91a80626ff3989d68f67f5b1dd12d81565b60008061014f836108b4565b604080517f3078000000000000000000000000000000000000000000000000000000000000602082015260228101849052604280820184905282518083039091018152606282018084527fb11a19e80000000000000000000000000000000000000000000000000000000090526066820188905291519395509193509161031e918391737109709ecfa91a80626ff3989d68f67f5b1dd12d9163b11a19e891608680830192600092919082900301818387803b15801561020e57600080fd5b505af1158015610222573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561026957600080fd5b810190808051604051939291908464010000000082111561028957600080fd5b90830190602082018581111561029e57600080fd5b82516401000000008111828201881017156102b857600080fd5b82525081516020918201929091019080838360005b838110156102e55781810151838201526020016102cd565b50505050905090810190601f1680156103125780820380516001836020036101000a031916815260200191505b50604052505050610988565b50505050565b604080517f4c63e56200000000000000000000000000000000000000000000000000000000815263ffffffff8316151560048201529051737109709ecfa91a80626ff3989d68f67f5b1dd12d91634c63e56291602480830192600092919082900301818387803b15801561039757600080fd5b505af11580156103ab573d6000803e3d6000fd5b5060009250839150505b63ffffffff8116156103d857600a63ffffffff82166001909301920490506103b5565b604080517f6900a3ae00000000000000000000000000000000000000000000000000000000815263ffffffff851660048201529051600091737109709ecfa91a80626ff3989d68f67f5b1dd12d91636900a3ae91602480820192869290919082900301818387803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156104a757600080fd5b81019080805160405193929190846401000000008211156104c757600080fd5b9083019060208201858111156104dc57600080fd5b82516401000000008111828201881017156104f657600080fd5b82525081516020918201929091019080838360005b8381101561052357818101518382015260200161050b565b50505050905090810190601f1680156105505780820380516001836020036101000a031916815260200191505b50604052505050905060005b83600a03811015610623578160405160200180807f300000000000000000000000000000000000000000000000000000000000000081525060010182805190602001908083835b602083106105e057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016105a3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040529150808060010191505061055c565b5061031e6106368563ffffffff16610ca0565b604051602001808269ffffffffffffffffffff1660b01b8152600a0191505060405160208183030381529060405282610cff565b60008054610100900460ff161561068c5750600054610100900460ff16610899565b6000610696610d09565b156108965760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152835180840385018152606084019094527f667f9d700000000000000000000000000000000000000000000000000000000060808401908152845160009593947f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc49493608490910191908401908083835b6020831061078e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610751565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b6020831061081057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b5091505080806020019051602081101561089057600080fd5b50519150505b90505b90565b60005462010000900460ff1681565b60005460ff1681565b600080601f5b600f8160ff16111561091c5760ff600882021684901c6108d981610d24565b61ffff16841793508160ff166010146108f457601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016108ba565b50600f5b60ff8160ff1610156109825760ff600882021684901c61093f81610d24565b61ffff16831792508160ff1660001461095a57601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610920565b50915091565b806040516020018082805190602001908083835b602083106109d957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161099c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120826040516020018082805190602001908083835b60208310610a6557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a28565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014610c9c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602481526020018061123b6024913960400191505060405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583816040518080602001806020018381038352600a8152602001807f2020457870656374656400000000000000000000000000000000000000000000815250602001838103825284818151815260200191508051906020019080838360005b83811015610b87578181015183820152602001610b6f565b50505050905090810190601f168015610bb45780820380516001836020036101000a031916815260200191505b50935050505060405180910390a17f280f4446b28a1372417dda658d30b95b2992b12ac9c7f378535f29a97acf3583826040518080602001806020018381038352600a8152602001807f2020202041637475616c00000000000000000000000000000000000000000000815250602001838103825284818151815260200191508051906020019080838360005b83811015610c59578181015183820152602001610c41565b50505050905090810190601f168015610c865780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1610c9c610d54565b5050565b60006030815b600a8160ff161015610cf85760ff600882021682600a63ffffffff87160663ffffffff160169ffffffffffffffffffff16901b83179250600a8463ffffffff1681610ced57fe5b049350600101610ca6565b5050919050565b610c9c8282610f7c565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b151590565b6000610d3660048360ff16901c61113d565b60ff161760081b62ffff0016610d4b8261113d565b60ff1617919050565b610d5c610d09565b15610f4e5760408051737109709ecfa91a80626ff3989d68f67f5b1dd12d60208083018290527f6661696c6564000000000000000000000000000000000000000000000000000083850152600160608481019190915284518085039091018152608084019094527f70ca10bb0000000000000000000000000000000000000000000000000000000060a08401908152845160009593947f70ca10bbd0dbfd9020a9f4b13402c16cb120705e0d1c0aeab10fa353ae586fc4949360a490910191908401908083835b60208310610e6057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610e23565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310610ee257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610ea5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610f44576040519150601f19603f3d011682016040523d82523d6000602084013e610f49565b606091505b505050505b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100179055565b610f868282611193565b610c9c577f41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f5060405180806020018281038252602381526020018061125f6023913960400191505060405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18816040518080602001806020018381038352600a8152602001807f2020457870656374656400000000000000000000000000000000000000000000815250602001838103825284818151815260200191508051906020019080838360005b8381101561106c578181015183820152602001611054565b50505050905090810190601f1680156110995780820380516001836020036101000a031916815260200191505b50935050505060405180910390a17fd26e16cad4548705e4c9e2d94f98ee91c289085ee425594fd5635fa2964ccf18826040518080602001806020018381038352600a8152602001807f2020202041637475616c000000000000000000000000000000000000000000008152506020018381038252848181518152602001915080519060200190808383600083811015610c59578181015183820152602001610c41565b6040805180820190915260108082527f30313233343536373839616263646566000000000000000000000000000000006020830152600091600f8416918290811061118457fe5b016020015160f81c9392505050565b8051825160019114156112305760005b835181101561122a578281815181106111b857fe5b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168482815181106111f157fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161461122257600091505b6001016111a3565b50611234565b5060005b9291505056fe4572726f723a2061203d3d2062206e6f7420736174697366696564205b737472696e675d4572726f723a2061203d3d2062206e6f7420736174697366696564205b62797465735da164736f6c6343000706000a",
    "sourceMap": "187:948:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:26;;;:::i;:::-;;321:38:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;900:233:50;;;;;;;;;;;;;;;;-1:-1:-1;900:233:50;;:::i;319:575::-;;;;;;;;;;;;;;;;-1:-1:-1;319:575:50;;;;:::i;1819:584:0:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;170:28:1;;;:::i;1572:26:0:-;;;:::i;287::50:-;:::o;321:38:1:-;250:64;321:38;:::o;900:233:50:-;961:9;;985:26;993:5;985:24;:26::i;:::-;1051:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:18;;;;;;;;;;;960:51;;-1:-1:-1;960:51:50;;-1:-1:-1;1051:28:50;1090:36;;1051:28;;250:64:1;;1107:11:50;;:18;;;;;1021:20;;1107:18;;;;;;;1021:20;250:64:1;1107:18:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1107:18:50;;;;;;;;;;-1:-1:-1;1107:18:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1090:8;:36::i;:::-;900:233;;;;:::o;319:575::-;382:21;;;;;;392:10;;;;;382:21;;;;;;250:64:1;;382:9:50;;:21;;;;;274:37:1;;382:21:50;;;;;;;274:37:1;250:64;382:21:50;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;413:14:50;;-1:-1:-1;453:5:50;;-1:-1:-1;;468:79:50;475:11;;;;468:79;;512:2;502:12;;;528:8;;;;;502:12;;-1:-1:-1;468:79:50;;;576:27;;;;;;588:14;;;576:27;;;;;;556:17;;250:64:1;;576:11:50;;:27;;;;;556:17;;576:27;;;;;;;;556:17;250:64:1;576:27:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;576:27:50;;;;;;;;;;-1:-1:-1;576:27:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;556:47;;719:9;714:103;739:6;734:2;:11;730:1;:15;714:103;;;801:3;779:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;766:40;;747:3;;;;;;;714:103;;;;826:61;852:21;:5;:19;;;:21::i;:::-;835:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;882:3;826:8;:61::i;1819:584:0:-;1853:4;1873:7;;;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;1896:14;;1869:528;1941:17;1984:16;:14;:16::i;:::-;1980:374;;;2196:43;;;1671:64;2196:43;;;;;;;2221:17;2196:43;;;;;;;;;;;;;1679:55;2196:43;;;;;2086:175;;;;;;;;;2023:20;;1671:64;;2135:34;;2196:43;2086:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:232;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;;;;-1:-1:-1;2312:27:0;;-1:-1:-1;;1980:374:0;2374:12;-1:-1:-1;1869:528:0;1819:584;:::o;170:28:1:-;;;;;;;;;:::o;1572:26:0:-;;;;;;:::o;1175:614:37:-;1257:18;;1327:2;1312:211;1335:2;1331:1;:6;;;1312:211;;;1378:17;1393:1;1389:5;;1378:17;;;;1424:12;1378:17;1424:8;:12::i;:::-;1410:26;;;;;;1454:1;:7;;1459:2;1454:7;1450:63;;1496:2;1481:17;;;;;1450:63;-1:-1:-1;1339:6:37;;1312:211;;;-1:-1:-1;1585:2:37;1570:213;1593:3;1589:1;:7;;;1570:213;;;1637:17;1652:1;1648:5;;1637:17;;;;1684:12;1637:17;1684:8;:12::i;:::-;1669:27;;;;;;1714:1;:6;;1719:1;1714:6;1710:63;;1756:2;1740:18;;;;;1710:63;-1:-1:-1;1598:6:37;;1570:213;;;;1175:614;;;:::o;14688:344:0:-;14824:1;14807:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14797:30;;;;;;14790:1;14773:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14763:30;;;;;;:64;14759:267;;14848:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14910:33;14941:1;14910:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14962;14993:1;14962:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15009:6;:4;:6::i;:::-;14688:344;;:::o;489:390:37:-;572:15;620:4;572:15;738:135;760:2;756:1;:6;;;738:135;;;798:34;830:1;826:5;;798:34;813:7;807:2;800:9;;;;799:21;;;798:34;;;;786:46;;;;860:2;853:4;:9;;;;;;;;;-1:-1:-1;769:1:37;764:6;738:135;;;;489:390;;;;:::o;8566:91:3:-;8635:15;8645:1;8648;8635:9;:15::i;2840:242:0:-;2990:42;2978:55;3059:16;;2840:242;:::o;2333:214:37:-;2386:15;2425:22;2445:1;2436:5;:10;;;;2425;:22::i;:::-;2413:34;;;2484:1;2471:14;;;2507:17;2518:5;2507:10;:17::i;:::-;2495:29;;;;2333:214;-1:-1:-1;2333:214:37:o;2410:424:0:-;2449:16;:14;:16::i;:::-;2445:359;;;2645:67;;;1671:64;2645:67;;;;;;;2670:17;2645:67;;;;2705:4;1679:55;2645:67;;;;;;;;;;;;;;;;;;;;;;;2534:196;;;;;;;;;2482:11;;1671:64;;2579:43;;2645:67;2534:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2445:359:0;2813:7;:14;;;;;;;;2410:424::o;15647:291::-;15722:14;15731:1;15734;15722:8;:14::i;:::-;15717:215;;15757:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15818:32;15848:1;15818:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15869;15899:1;15869:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1986:186:37;2142:13;;;;;;;;;;;;;;;;;;2041:11;;2088:4;2080:12;;;;;2142:22;;;;;;;;;;;;;1986:186;-1:-1:-1;;;1986:186:37:o;15297:345:0:-;15424:8;;15412;;15394:4;;15412:20;15408:228;;;15453:6;15448:137;15469:1;:8;15465:1;:12;15448:137;;;15514:1;15516;15514:4;;;;;;;;;;;;;;;;15506:12;;;:1;15508;15506:4;;;;;;;;;;;;;;:12;15502:69;;15547:5;15542:10;;15502:69;15479:3;;15448:137;;;;15408:228;;;-1:-1:-1;15620:5:0;15408:228;15297:345;;;;:::o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "IS_SCRIPT()": "f8ccbf47",
    "IS_TEST()": "fa7626d4",
    "failed()": "ba414fa6",
    "setUp()": "0a9254e4",
    "testFuzz_decimalUint32(uint32)": "60b63c9a",
    "testFuzz_encodeHex(bytes32)": "56ca517a",
    "vm()": "3a768463"
  },
  "ast": {
    "absolutePath": "packages/contracts-bridge/contracts/test/Encoding.t.sol",
    "id": 38015,
    "exportedSymbols": {
      "Encoding": [
        31983
      ],
      "EncodingTest": [
        38014
      ],
      "Test": [
        4902
      ]
    },
    "nodeType": "SourceUnit",
    "src": "46:1090:50",
    "nodes": [
      {
        "id": 37880,
        "nodeType": "PragmaDirective",
        "src": "46:22:50",
        "literals": [
          "solidity",
          "0.7",
          ".6"
        ]
      },
      {
        "id": 37882,
        "nodeType": "ImportDirective",
        "src": "70:40:50",
        "absolutePath": "lib/forge-std/src/Test.sol",
        "file": "forge-std/Test.sol",
        "scope": 38015,
        "sourceUnit": 6216,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37881,
              "name": "Test",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "78:4:50",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 37884,
        "nodeType": "ImportDirective",
        "src": "111:74:50",
        "absolutePath": "packages/contracts-bridge/contracts/Encoding.sol",
        "file": "packages/contracts-bridge/contracts/Encoding.sol",
        "scope": 38015,
        "sourceUnit": 31984,
        "symbolAliases": [
          {
            "foreign": {
              "id": 37883,
              "name": "Encoding",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "119:8:50",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 38014,
        "nodeType": "ContractDefinition",
        "src": "187:948:50",
        "nodes": [
          {
            "id": 37889,
            "nodeType": "UsingForDirective",
            "src": "223:26:50",
            "libraryName": {
              "id": 37887,
              "name": "Encoding",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31983,
              "src": "229:8:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Encoding_$31983",
                "typeString": "library Encoding"
              }
            },
            "typeName": {
              "id": 37888,
              "name": "uint32",
              "nodeType": "ElementaryTypeName",
              "src": "242:6:50",
              "typeDescriptions": {
                "typeIdentifier": "t_uint32",
                "typeString": "uint32"
              }
            }
          },
          {
            "id": 37892,
            "nodeType": "UsingForDirective",
            "src": "254:27:50",
            "libraryName": {
              "id": 37890,
              "name": "Encoding",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31983,
              "src": "260:8:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Encoding_$31983",
                "typeString": "library Encoding"
              }
            },
            "typeName": {
              "id": 37891,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "273:7:50",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 37896,
            "nodeType": "FunctionDefinition",
            "src": "287:26:50",
            "body": {
              "id": 37895,
              "nodeType": "Block",
              "src": "311:2:50",
              "statements": []
            },
            "functionSelector": "0a9254e4",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setUp",
            "parameters": {
              "id": 37893,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "301:2:50"
            },
            "returnParameters": {
              "id": 37894,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "311:0:50"
            },
            "scope": 38014,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 37976,
            "nodeType": "FunctionDefinition",
            "src": "319:575:50",
            "body": {
              "id": 37975,
              "nodeType": "Block",
              "src": "372:522:50",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 37906,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 37904,
                          "name": "input",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 37898,
                          "src": "392:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 37905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "401:1:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "392:10:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "id": 37901,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "382:2:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "assume",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6585,
                      "src": "382:9:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool) external"
                      }
                    },
                    "id": 37907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "382:21:50",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37908,
                  "nodeType": "ExpressionStatement",
                  "src": "382:21:50"
                },
                {
                  "assignments": [
                    37910
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37910,
                      "mutability": "mutable",
                      "name": "digits",
                      "nodeType": "VariableDeclaration",
                      "scope": 37975,
                      "src": "413:14:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37909,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "413:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37911,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "413:14:50"
                },
                {
                  "assignments": [
                    37913
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37913,
                      "mutability": "mutable",
                      "name": "number",
                      "nodeType": "VariableDeclaration",
                      "scope": 37975,
                      "src": "437:13:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 37912,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "437:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37915,
                  "initialValue": {
                    "id": 37914,
                    "name": "input",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 37898,
                    "src": "453:5:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "437:21:50"
                },
                {
                  "body": {
                    "id": 37926,
                    "nodeType": "Block",
                    "src": "488:59:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 37921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 37919,
                            "name": "number",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37913,
                            "src": "502:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "/=",
                          "rightHandSide": {
                            "hexValue": "3130",
                            "id": 37920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "512:2:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "src": "502:12:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 37922,
                        "nodeType": "ExpressionStatement",
                        "src": "502:12:50"
                      },
                      {
                        "expression": {
                          "id": 37924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "528:8:50",
                          "subExpression": {
                            "id": 37923,
                            "name": "digits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37910,
                            "src": "528:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 37925,
                        "nodeType": "ExpressionStatement",
                        "src": "528:8:50"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 37918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 37916,
                      "name": "number",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37913,
                      "src": "475:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 37917,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "485:1:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "475:11:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 37927,
                  "nodeType": "WhileStatement",
                  "src": "468:79:50"
                },
                {
                  "assignments": [
                    37929
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37929,
                      "mutability": "mutable",
                      "name": "str",
                      "nodeType": "VariableDeclaration",
                      "scope": 37975,
                      "src": "556:17:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 37928,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "556:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37937,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 37934,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37898,
                            "src": "596:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          ],
                          "id": 37933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "588:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 37932,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "588:7:50",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "588:14:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 37930,
                        "name": "vm",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1816,
                        "src": "576:2:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Vm_$6909",
                          "typeString": "contract Vm"
                        }
                      },
                      "id": 37931,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toString",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6687,
                      "src": "576:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256) external returns (string memory)"
                      }
                    },
                    "id": 37936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "576:27:50",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "556:47:50"
                },
                {
                  "body": {
                    "id": 37960,
                    "nodeType": "Block",
                    "src": "752:65:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 37958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 37949,
                            "name": "str",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37929,
                            "src": "766:3:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 37954,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "796:3:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                      "typeString": "literal_string \"0\""
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 37955,
                                    "name": "str",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 37929,
                                    "src": "801:3:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                      "typeString": "literal_string \"0\""
                                    },
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 37952,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "779:3:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 37953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "779:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 37956,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "779:26:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 37951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "772:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                "typeString": "type(string storage pointer)"
                              },
                              "typeName": {
                                "id": 37950,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "772:6:50",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 37957,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "772:34:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "766:40:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 37959,
                        "nodeType": "ExpressionStatement",
                        "src": "766:40:50"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 37945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 37941,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 37939,
                      "src": "730:1:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 37944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 37942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "734:2:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "id": 37943,
                        "name": "digits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37910,
                        "src": "739:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "734:11:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "730:15:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 37961,
                  "initializationExpression": {
                    "assignments": [
                      37939
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 37939,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 37961,
                        "src": "719:9:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 37938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "719:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 37940,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "719:9:50"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 37947,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "747:3:50",
                      "subExpression": {
                        "id": 37946,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37939,
                        "src": "747:1:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 37948,
                    "nodeType": "ExpressionStatement",
                    "src": "747:3:50"
                  },
                  "nodeType": "ForStatement",
                  "src": "714:103:50"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 37965,
                                "name": "input",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 37898,
                                "src": "852:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 37966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "decimalUint32",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 31840,
                              "src": "852:19:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint32_$returns$_t_uint80_$bound_to$_t_uint32_$",
                                "typeString": "function (uint32) pure returns (uint80)"
                              }
                            },
                            "id": 37967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "852:21:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint80",
                              "typeString": "uint80"
                            }
                          ],
                          "expression": {
                            "id": 37963,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "835:3:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 37964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "835:16:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 37968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "835:39:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 37971,
                            "name": "str",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37929,
                            "src": "882:3:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 37970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "876:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 37969,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "876:5:50",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "876:10:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 37962,
                      "name": "assertEq",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3136,
                        3161,
                        3174,
                        3190,
                        3232,
                        3274,
                        3316,
                        3353,
                        3390,
                        3427,
                        320,
                        345,
                        375,
                        400,
                        459,
                        484,
                        514,
                        539,
                        1639,
                        1674
                      ],
                      "referencedDeclaration": 3174,
                      "src": "826:8:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory,bytes memory)"
                      }
                    },
                    "id": 37973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "826:61:50",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 37974,
                  "nodeType": "ExpressionStatement",
                  "src": "826:61:50"
                }
              ]
            },
            "functionSelector": "60b63c9a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testFuzz_decimalUint32",
            "parameters": {
              "id": 37899,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37898,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 37976,
                  "src": "351:12:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 37897,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:6:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "350:14:50"
            },
            "returnParameters": {
              "id": 37900,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "372:0:50"
            },
            "scope": 38014,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 38013,
            "nodeType": "FunctionDefinition",
            "src": "900:233:50",
            "body": {
              "id": 38012,
              "nodeType": "Block",
              "src": "950:183:50",
              "statements": [
                {
                  "assignments": [
                    37982,
                    37984
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37982,
                      "mutability": "mutable",
                      "name": "a",
                      "nodeType": "VariableDeclaration",
                      "scope": 38012,
                      "src": "961:9:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37981,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "961:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 37984,
                      "mutability": "mutable",
                      "name": "b",
                      "nodeType": "VariableDeclaration",
                      "scope": 38012,
                      "src": "972:9:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 37983,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "972:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 37991,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "arguments": [
                          {
                            "id": 37987,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37978,
                            "src": "993:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 37986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "985:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 37985,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "985:7:50",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 37988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "985:14:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 37989,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "encodeHex",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31931,
                      "src": "985:24:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint256,uint256)"
                      }
                    },
                    "id": 37990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "985:26:50",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "960:51:50"
                },
                {
                  "assignments": [
                    37993
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 37993,
                      "mutability": "mutable",
                      "name": "output",
                      "nodeType": "VariableDeclaration",
                      "scope": 38012,
                      "src": "1021:20:50",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 37992,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1021:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 38003,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "3078",
                            "id": 37998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1068:4:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                              "typeString": "literal_string \"0x\""
                            },
                            "value": "0x"
                          },
                          {
                            "id": 37999,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37982,
                            "src": "1074:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 38000,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37984,
                            "src": "1077:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837",
                              "typeString": "literal_string \"0x\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 37996,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1051:3:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 37997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "1051:16:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 38001,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1051:28:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 37995,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1044:6:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 37994,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1044:6:50",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 38002,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1044:36:50",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1021:59:50"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 38005,
                        "name": "output",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 37993,
                        "src": "1099:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 38008,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 37978,
                            "src": "1119:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 38006,
                            "name": "vm",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1816,
                            "src": "1107:2:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Vm_$6909",
                              "typeString": "contract Vm"
                            }
                          },
                          "id": 38007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toString",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6673,
                          "src": "1107:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (bytes32) external returns (string memory)"
                          }
                        },
                        "id": 38009,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1107:18:50",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 38004,
                      "name": "assertEq",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3136,
                        3161,
                        3174,
                        3190,
                        3232,
                        3274,
                        3316,
                        3353,
                        3390,
                        3427,
                        320,
                        345,
                        375,
                        400,
                        459,
                        484,
                        514,
                        539,
                        1639,
                        1674
                      ],
                      "referencedDeclaration": 1639,
                      "src": "1090:8:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory,string memory)"
                      }
                    },
                    "id": 38010,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1090:36:50",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 38011,
                  "nodeType": "ExpressionStatement",
                  "src": "1090:36:50"
                }
              ]
            },
            "functionSelector": "56ca517a",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "testFuzz_encodeHex",
            "parameters": {
              "id": 37979,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 37978,
                  "mutability": "mutable",
                  "name": "input",
                  "nodeType": "VariableDeclaration",
                  "scope": 38013,
                  "src": "928:13:50",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 37977,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "928:7:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "927:15:50"
            },
            "returnParameters": {
              "id": 37980,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "950:0:50"
            },
            "scope": 38014,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 37885,
              "name": "Test",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4902,
              "src": "212:4:50",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Test_$4902",
                "typeString": "contract Test"
              }
            },
            "id": 37886,
            "nodeType": "InheritanceSpecifier",
            "src": "212:4:50"
          }
        ],
        "contractDependencies": [
          1786,
          2021,
          4902
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          38014,
          4902,
          2021,
          1786
        ],
        "name": "EncodingTest",
        "scope": 38015
      }
    ],
    "license": "MIT OR Apache-2.0"
  },
  "id": 50
}