{
  "contractName": "TestSecp256k1",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "witSignature",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "evmAddr",
          "type": "address"
        }
      ],
      "name": "recoverWitPublicKeyX",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "witSignature",
          "type": "bytes"
        },
        {
          "internalType": "address",
          "name": "evmAddr",
          "type": "address"
        }
      ],
      "name": "recoverWitAddr",
      "outputs": [
        {
          "internalType": "bytes20",
          "name": "",
          "type": "bytes20"
        },
        {
          "internalType": "bytes20",
          "name": "",
          "type": "bytes20"
        },
        {
          "internalType": "bytes20",
          "name": "",
          "type": "bytes20"
        },
        {
          "internalType": "bytes20",
          "name": "",
          "type": "bytes20"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"witSignature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"evmAddr\",\"type\":\"address\"}],\"name\":\"recoverWitAddr\",\"outputs\":[{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"},{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"},{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"},{\"internalType\":\"bytes20\",\"name\":\"\",\"type\":\"bytes20\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"witSignature\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"evmAddr\",\"type\":\"address\"}],\"name\":\"recoverWitPublicKeyX\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/mockups/tests/TestSecp256k1.sol\":\"TestSecp256k1\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/mockups/tests/TestSecp256k1.sol\":{\"keccak256\":\"0xfc6917bcf1d515b06ac4a2e9973986233860ed398f1095bf270c5dd56fc6ea3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b73c16302536613b5919b196b56c173ac1afca301cee06d1f403303795e0e492\",\"dweb:/ipfs/QmehvQYqYiBkDbSBsEdBYkUi7N9CNni5PxnVM436xTLa7d\"]}},\"version\":1}",
  "bytecode": "0x6080604052348015600e575f5ffd5b50610e008061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80634c9a882014610038578063f7d2a56c14610089575b5f5ffd5b61004b610046366004610c22565b6100aa565b604080516bffffffffffffffffffffffff19958616815293851660208501529184169183019190915290911660608201526080015b60405180910390f35b61009c610097366004610c22565b610292565b604051908152602001610080565b5f5f5f5f5f6100b98787610292565b905060025f60f81b826040516020016100d3929190610ce6565b60408051601f19818403018152908290526100ed91610d00565b602060405180830381855afa158015610108573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061012b9190610d16565b60405160029061014590600160f81b908590602001610ce6565b60408051601f198184030181529082905261015f91610d00565b602060405180830381855afa15801561017a573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061019d9190610d16565b6040516002906101b790600160f91b908690602001610ce6565b60408051601f19818403018152908290526101d191610d00565b602060405180830381855afa1580156101ec573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061020f9190610d16565b60405160029061022990600360f81b908790602001610ce6565b60408051601f198184030181529082905261024391610d00565b602060405180830381855afa15801561025e573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906102819190610d16565b929a91995097509095509350505050565b6040516bffffffffffffffffffffffff19606083901b1660208201525f9081906034016040516020818303038152906040528051906020012090508351604103610355576020840151604085015160608601515f1a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821180159061032757508060ff16601b148061032757508060ff16601c145b15610351575f6103438561033c601b85610d41565b8686610360565b50955061035a945050505050565b5050505b505f90505b92915050565b5f80806401000003d019610381607f600189901c166401000003d019610d6e565b860890506401000003d0198111806103aa575070014551231950b75fc4402da1732fc9bebe1984115b806103c6575070014551231950b75fc4402da1732fc9bebe1985115b806103cf575083155b806103d8575084155b806103e6575060018660ff16115b156103f7575f5f925092505061057e565b5f6104148670014551231950b75fc4402da1732fc9bebe19610587565b90505f6401000003d0198060076401000003d0195f8709086401000003d0198086870986090890506104628160046104536401000003d0196001610d85565b61045d9190610d98565b610656565b90505f61047260ff8a1683610d85565b61047d906002610d85565b6001161561049a57610495826401000003d019610db7565b61049c565b815b90505f808061051e70014551231950b75fc4402da1732fc9bebe196104d38f70014551231950b75fc4402da1732fc9bebe19610db7565b88097f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817987f483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b86001610708565b9250925092505f5f5f61055670014551231950b75fc4402da1732fc9bebe198061054a5761054a610d5a565b8e8b098b896001610708565b9250925092505f5f61056c888888888888610781565b909e509c505050505050505050505050505b94509492505050565b5f82158015906105975750818314155b80156105a257508115155b6105e45760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b210373ab6b132b960911b60448201526064015b60405180910390fd5b5f600183825b861561064b576105fa8783610d98565b905082868061060b5761060b610d5a565b878061061957610619610d5a565b8584096106269089610db7565b86089094509250866106388183610d6e565b6106429084610db7565b975091506105ea565b509195945050505050565b5f825f0361066557505f61035a565b815f036106745750600161035a565b6001600160ff1b5b8015610700576401000003d0198185161515860a6401000003d0198485090991506401000003d0196002820485161515860a6401000003d0198485090991506401000003d0196004820485161515860a6401000003d0198485090991506401000003d0196008820485161515860a6401000003d0198485090991506010900461067c565b509392505050565b5f5f5f865f0361071f575084915083905082610777565b865f8060015b831561076e57600184161561074a576107428383838d8d8d6107f6565b919450925090505b610755600285610d98565b93506107628a8a8a610a86565b919b5099509750610725565b91955093509150505b9450945094915050565b5f80808080878b036107c2576401000003d019878b085f036107ab575f5f945094505050506107eb565b6107b68b8b8b610a86565b919450925090506107d8565b6107d08b8b8b8b8b8b6107f6565b919450925090505b6107e3838383610b88565b945094505050505b965096945050505050565b5f808088158015610805575087155b15610817575084915083905082610a7a565b85158015610823575084155b15610835575087915086905085610a7a565b61083d610bd5565b6401000003d0198889098082526401000003d01990890960208201526401000003d019858009604082018190526401000003d0199086096060820152604080516080810182529082015181906401000003d019908d0981526020016401000003d01983600360200201518c0981526020016401000003d019835f60200201518a0981526020016401000003d019836001602002015189099052604081015181519192501415806108f557506060810151602082015114155b6109415760405162461bcd60e51b815260206004820152601e60248201527f557365206a6163446f75626c652066756e6374696f6e20696e7374656164000060448201526064016105db565b610949610bd5565b81516401000003d0199061095d9082610db7565b604084015108815260208201516401000003d0199061097c9082610db7565b606084015108602082015280516401000003d0199080096040820181905281516401000003d0199109606082018190525f906401000003d019906109c09082610db7565b60208401516401000003d01990800908604083015184519192506401000003d0199182918291096002096109fa906401000003d019610db7565b820890505f6401000003d01980610a17846401000003d019610db7565b604086015187516401000003d0199190090860208501510990506401000003d019808460036020020151866001602002015109610a5a906401000003d019610db7565b820890505f6401000003d019808a8e098551099297509095509093505050505b96509650969350505050565b5f5f5f835f03610a9d575084915083905082610b7f565b5f6401000003d01987880990505f6401000003d01987880990505f6401000003d01987880990505f6401000003d01980848c0960040990505f6401000003d019806401000003d0198586095f096401000003d019876003090890506401000003d01980838408610b13906401000003d019610db7565b6401000003d0198384090894506401000003d019806401000003d019868709600809610b45906401000003d019610db7565b6401000003d01980610b5d896401000003d019610db7565b860884090893506401000003d019808a8c096002099497509295509293505050505b93509350939050565b5f5f5f610b9b846401000003d019610587565b90505f6401000003d01982830990505f6401000003d01982890990505f6401000003d0198084860989099199919850909650505050505050565b60405180608001604052806004906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114610c1d575f5ffd5b919050565b5f5f60408385031215610c33575f5ffd5b823567ffffffffffffffff811115610c49575f5ffd5b8301601f81018513610c59575f5ffd5b803567ffffffffffffffff811115610c7357610c73610bf3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ca257610ca2610bf3565b604052818152828201602001871015610cb9575f5ffd5b816020840160208301375f60208383010152809450505050610cdd60208401610c07565b90509250929050565b6001600160f81b0319929092168252600182015260210190565b5f82518060208501845e5f920191825250919050565b5f60208284031215610d26575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b60ff828116828216039081111561035a5761035a610d2d565b634e487b7160e01b5f52601260045260245ffd5b808202811582820484141761035a5761035a610d2d565b8082018082111561035a5761035a610d2d565b5f82610db257634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561035a5761035a610d2d56fea264697066735822122046017d2d913305174440a5d9c1f140a3adf92756f31f206d438eca9affcae1bb64736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610034575f3560e01c80634c9a882014610038578063f7d2a56c14610089575b5f5ffd5b61004b610046366004610c22565b6100aa565b604080516bffffffffffffffffffffffff19958616815293851660208501529184169183019190915290911660608201526080015b60405180910390f35b61009c610097366004610c22565b610292565b604051908152602001610080565b5f5f5f5f5f6100b98787610292565b905060025f60f81b826040516020016100d3929190610ce6565b60408051601f19818403018152908290526100ed91610d00565b602060405180830381855afa158015610108573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061012b9190610d16565b60405160029061014590600160f81b908590602001610ce6565b60408051601f198184030181529082905261015f91610d00565b602060405180830381855afa15801561017a573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061019d9190610d16565b6040516002906101b790600160f91b908690602001610ce6565b60408051601f19818403018152908290526101d191610d00565b602060405180830381855afa1580156101ec573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061020f9190610d16565b60405160029061022990600360f81b908790602001610ce6565b60408051601f198184030181529082905261024391610d00565b602060405180830381855afa15801561025e573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906102819190610d16565b929a91995097509095509350505050565b6040516bffffffffffffffffffffffff19606083901b1660208201525f9081906034016040516020818303038152906040528051906020012090508351604103610355576020840151604085015160608601515f1a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821180159061032757508060ff16601b148061032757508060ff16601c145b15610351575f6103438561033c601b85610d41565b8686610360565b50955061035a945050505050565b5050505b505f90505b92915050565b5f80806401000003d019610381607f600189901c166401000003d019610d6e565b860890506401000003d0198111806103aa575070014551231950b75fc4402da1732fc9bebe1984115b806103c6575070014551231950b75fc4402da1732fc9bebe1985115b806103cf575083155b806103d8575084155b806103e6575060018660ff16115b156103f7575f5f925092505061057e565b5f6104148670014551231950b75fc4402da1732fc9bebe19610587565b90505f6401000003d0198060076401000003d0195f8709086401000003d0198086870986090890506104628160046104536401000003d0196001610d85565b61045d9190610d98565b610656565b90505f61047260ff8a1683610d85565b61047d906002610d85565b6001161561049a57610495826401000003d019610db7565b61049c565b815b90505f808061051e70014551231950b75fc4402da1732fc9bebe196104d38f70014551231950b75fc4402da1732fc9bebe19610db7565b88097f79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f817987f483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b86001610708565b9250925092505f5f5f61055670014551231950b75fc4402da1732fc9bebe198061054a5761054a610d5a565b8e8b098b896001610708565b9250925092505f5f61056c888888888888610781565b909e509c505050505050505050505050505b94509492505050565b5f82158015906105975750818314155b80156105a257508115155b6105e45760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b210373ab6b132b960911b60448201526064015b60405180910390fd5b5f600183825b861561064b576105fa8783610d98565b905082868061060b5761060b610d5a565b878061061957610619610d5a565b8584096106269089610db7565b86089094509250866106388183610d6e565b6106429084610db7565b975091506105ea565b509195945050505050565b5f825f0361066557505f61035a565b815f036106745750600161035a565b6001600160ff1b5b8015610700576401000003d0198185161515860a6401000003d0198485090991506401000003d0196002820485161515860a6401000003d0198485090991506401000003d0196004820485161515860a6401000003d0198485090991506401000003d0196008820485161515860a6401000003d0198485090991506010900461067c565b509392505050565b5f5f5f865f0361071f575084915083905082610777565b865f8060015b831561076e57600184161561074a576107428383838d8d8d6107f6565b919450925090505b610755600285610d98565b93506107628a8a8a610a86565b919b5099509750610725565b91955093509150505b9450945094915050565b5f80808080878b036107c2576401000003d019878b085f036107ab575f5f945094505050506107eb565b6107b68b8b8b610a86565b919450925090506107d8565b6107d08b8b8b8b8b8b6107f6565b919450925090505b6107e3838383610b88565b945094505050505b965096945050505050565b5f808088158015610805575087155b15610817575084915083905082610a7a565b85158015610823575084155b15610835575087915086905085610a7a565b61083d610bd5565b6401000003d0198889098082526401000003d01990890960208201526401000003d019858009604082018190526401000003d0199086096060820152604080516080810182529082015181906401000003d019908d0981526020016401000003d01983600360200201518c0981526020016401000003d019835f60200201518a0981526020016401000003d019836001602002015189099052604081015181519192501415806108f557506060810151602082015114155b6109415760405162461bcd60e51b815260206004820152601e60248201527f557365206a6163446f75626c652066756e6374696f6e20696e7374656164000060448201526064016105db565b610949610bd5565b81516401000003d0199061095d9082610db7565b604084015108815260208201516401000003d0199061097c9082610db7565b606084015108602082015280516401000003d0199080096040820181905281516401000003d0199109606082018190525f906401000003d019906109c09082610db7565b60208401516401000003d01990800908604083015184519192506401000003d0199182918291096002096109fa906401000003d019610db7565b820890505f6401000003d01980610a17846401000003d019610db7565b604086015187516401000003d0199190090860208501510990506401000003d019808460036020020151866001602002015109610a5a906401000003d019610db7565b820890505f6401000003d019808a8e098551099297509095509093505050505b96509650969350505050565b5f5f5f835f03610a9d575084915083905082610b7f565b5f6401000003d01987880990505f6401000003d01987880990505f6401000003d01987880990505f6401000003d01980848c0960040990505f6401000003d019806401000003d0198586095f096401000003d019876003090890506401000003d01980838408610b13906401000003d019610db7565b6401000003d0198384090894506401000003d019806401000003d019868709600809610b45906401000003d019610db7565b6401000003d01980610b5d896401000003d019610db7565b860884090893506401000003d019808a8c096002099497509295509293505050505b93509350939050565b5f5f5f610b9b846401000003d019610587565b90505f6401000003d01982830990505f6401000003d01982890990505f6401000003d0198084860989099199919850909650505050505050565b60405180608001604052806004906020820280368337509192915050565b634e487b7160e01b5f52604160045260245ffd5b80356001600160a01b0381168114610c1d575f5ffd5b919050565b5f5f60408385031215610c33575f5ffd5b823567ffffffffffffffff811115610c49575f5ffd5b8301601f81018513610c59575f5ffd5b803567ffffffffffffffff811115610c7357610c73610bf3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ca257610ca2610bf3565b604052818152828201602001871015610cb9575f5ffd5b816020840160208301375f60208383010152809450505050610cdd60208401610c07565b90509250929050565b6001600160f81b0319929092168252600182015260210190565b5f82518060208501845e5f920191825250919050565b5f60208284031215610d26575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b60ff828116828216039081111561035a5761035a610d2d565b634e487b7160e01b5f52601260045260245ffd5b808202811582820484141761035a5761035a610d2d565b8082018082111561035a5761035a610d2d565b5f82610db257634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561035a5761035a610d2d56fea264697066735822122046017d2d913305174440a5d9c1f140a3adf92756f31f206d438eca9affcae1bb64736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:4994:136",
        "nodeType": "YulBlock",
        "src": "0:4994:136",
        "statements": [
          {
            "nativeSrc": "6:3:136",
            "nodeType": "YulBlock",
            "src": "6:3:136",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "46:95:136",
              "nodeType": "YulBlock",
              "src": "46:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "63:1:136",
                        "nodeType": "YulLiteral",
                        "src": "63:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "70:3:136",
                            "nodeType": "YulLiteral",
                            "src": "70:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "75:10:136",
                            "nodeType": "YulLiteral",
                            "src": "75:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "66:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "66:3:136"
                        },
                        "nativeSrc": "66:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "66:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "56:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "56:6:136"
                    },
                    "nativeSrc": "56:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "56:31:136"
                  },
                  "nativeSrc": "56:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "56:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "103:1:136",
                        "nodeType": "YulLiteral",
                        "src": "103:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "106:4:136",
                        "nodeType": "YulLiteral",
                        "src": "106:4:136",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "96:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "96:6:136"
                    },
                    "nativeSrc": "96:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "96:15:136"
                  },
                  "nativeSrc": "96:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "96:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "127:1:136",
                        "nodeType": "YulLiteral",
                        "src": "127:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "130:4:136",
                        "nodeType": "YulLiteral",
                        "src": "130:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "120:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "120:6:136"
                    },
                    "nativeSrc": "120:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "120:15:136"
                  },
                  "nativeSrc": "120:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "120:15:136"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "14:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "14:127:136"
          },
          {
            "body": {
              "nativeSrc": "195:124:136",
              "nodeType": "YulBlock",
              "src": "195:124:136",
              "statements": [
                {
                  "nativeSrc": "205:29:136",
                  "nodeType": "YulAssignment",
                  "src": "205:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "227:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "227:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "214:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "214:12:136"
                    },
                    "nativeSrc": "214:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "214:20:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "205:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "205:5:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "297:16:136",
                    "nodeType": "YulBlock",
                    "src": "297:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "306:1:136",
                              "nodeType": "YulLiteral",
                              "src": "306:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "309:1:136",
                              "nodeType": "YulLiteral",
                              "src": "309:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "299:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "299:6:136"
                          },
                          "nativeSrc": "299:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "299:12:136"
                        },
                        "nativeSrc": "299:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "299:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "256:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "256:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nativeSrc": "267:5:136",
                                "nodeType": "YulIdentifier",
                                "src": "267:5:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "282:3:136",
                                        "nodeType": "YulLiteral",
                                        "src": "282:3:136",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "287:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "287:1:136",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "278:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "278:3:136"
                                    },
                                    "nativeSrc": "278:11:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "278:11:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "291:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "291:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "274:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "274:3:136"
                                },
                                "nativeSrc": "274:19:136",
                                "nodeType": "YulFunctionCall",
                                "src": "274:19:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "263:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "263:3:136"
                            },
                            "nativeSrc": "263:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "263:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "253:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "253:2:136"
                        },
                        "nativeSrc": "253:42:136",
                        "nodeType": "YulFunctionCall",
                        "src": "253:42:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "246:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "246:6:136"
                    },
                    "nativeSrc": "246:50:136",
                    "nodeType": "YulFunctionCall",
                    "src": "246:50:136"
                  },
                  "nativeSrc": "243:70:136",
                  "nodeType": "YulIf",
                  "src": "243:70:136"
                }
              ]
            },
            "name": "abi_decode_address",
            "nativeSrc": "146:173:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "174:6:136",
                "nodeType": "YulTypedName",
                "src": "174:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nativeSrc": "185:5:136",
                "nodeType": "YulTypedName",
                "src": "185:5:136",
                "type": ""
              }
            ],
            "src": "146:173:136"
          },
          {
            "body": {
              "nativeSrc": "420:932:136",
              "nodeType": "YulBlock",
              "src": "420:932:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "466:16:136",
                    "nodeType": "YulBlock",
                    "src": "466:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "475:1:136",
                              "nodeType": "YulLiteral",
                              "src": "475:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "478:1:136",
                              "nodeType": "YulLiteral",
                              "src": "478:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "468:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "468:6:136"
                          },
                          "nativeSrc": "468:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "468:12:136"
                        },
                        "nativeSrc": "468:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "468:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "441:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "441:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "450:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "450:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "437:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "437:3:136"
                        },
                        "nativeSrc": "437:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "437:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "462:2:136",
                        "nodeType": "YulLiteral",
                        "src": "462:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "433:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "433:3:136"
                    },
                    "nativeSrc": "433:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "433:32:136"
                  },
                  "nativeSrc": "430:52:136",
                  "nodeType": "YulIf",
                  "src": "430:52:136"
                },
                {
                  "nativeSrc": "491:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "491:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "518:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "518:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "505:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "505:12:136"
                    },
                    "nativeSrc": "505:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "505:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "495:6:136",
                      "nodeType": "YulTypedName",
                      "src": "495:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "571:16:136",
                    "nodeType": "YulBlock",
                    "src": "571:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "580:1:136",
                              "nodeType": "YulLiteral",
                              "src": "580:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "583:1:136",
                              "nodeType": "YulLiteral",
                              "src": "583:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "573:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "573:6:136"
                          },
                          "nativeSrc": "573:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "573:12:136"
                        },
                        "nativeSrc": "573:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "573:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "543:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "543:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "551:18:136",
                        "nodeType": "YulLiteral",
                        "src": "551:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "540:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "540:2:136"
                    },
                    "nativeSrc": "540:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "540:30:136"
                  },
                  "nativeSrc": "537:50:136",
                  "nodeType": "YulIf",
                  "src": "537:50:136"
                },
                {
                  "nativeSrc": "596:32:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "596:32:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "610:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "610:9:136"
                      },
                      {
                        "name": "offset",
                        "nativeSrc": "621:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "621:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "606:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "606:3:136"
                    },
                    "nativeSrc": "606:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "606:22:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "600:2:136",
                      "nodeType": "YulTypedName",
                      "src": "600:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "676:16:136",
                    "nodeType": "YulBlock",
                    "src": "676:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "685:1:136",
                              "nodeType": "YulLiteral",
                              "src": "685:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "688:1:136",
                              "nodeType": "YulLiteral",
                              "src": "688:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "678:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "678:6:136"
                          },
                          "nativeSrc": "678:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "678:12:136"
                        },
                        "nativeSrc": "678:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "678:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "655:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "655:2:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "659:4:136",
                                "nodeType": "YulLiteral",
                                "src": "659:4:136",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "651:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "651:3:136"
                            },
                            "nativeSrc": "651:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "651:13:136"
                          },
                          {
                            "name": "dataEnd",
                            "nativeSrc": "666:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "666:7:136"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "647:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "647:3:136"
                        },
                        "nativeSrc": "647:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "647:27:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "640:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "640:6:136"
                    },
                    "nativeSrc": "640:35:136",
                    "nodeType": "YulFunctionCall",
                    "src": "640:35:136"
                  },
                  "nativeSrc": "637:55:136",
                  "nodeType": "YulIf",
                  "src": "637:55:136"
                },
                {
                  "nativeSrc": "701:30:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "701:30:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "728:2:136",
                        "nodeType": "YulIdentifier",
                        "src": "728:2:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "715:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "715:12:136"
                    },
                    "nativeSrc": "715:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "715:16:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "705:6:136",
                      "nodeType": "YulTypedName",
                      "src": "705:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "774:22:136",
                    "nodeType": "YulBlock",
                    "src": "774:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "776:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "776:16:136"
                          },
                          "nativeSrc": "776:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "776:18:136"
                        },
                        "nativeSrc": "776:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "776:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "746:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "746:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "754:18:136",
                        "nodeType": "YulLiteral",
                        "src": "754:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "743:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "743:2:136"
                    },
                    "nativeSrc": "743:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "743:30:136"
                  },
                  "nativeSrc": "740:56:136",
                  "nodeType": "YulIf",
                  "src": "740:56:136"
                },
                {
                  "nativeSrc": "805:23:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "805:23:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "825:2:136",
                        "nodeType": "YulLiteral",
                        "src": "825:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "819:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "819:5:136"
                    },
                    "nativeSrc": "819:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "819:9:136"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "809:6:136",
                      "nodeType": "YulTypedName",
                      "src": "809:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "837:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "837:85:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "859:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "859:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "883:6:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "883:6:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "891:4:136",
                                        "nodeType": "YulLiteral",
                                        "src": "891:4:136",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "879:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "879:3:136"
                                    },
                                    "nativeSrc": "879:17:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "879:17:136"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "902:2:136",
                                        "nodeType": "YulLiteral",
                                        "src": "902:2:136",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "898:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "898:3:136"
                                    },
                                    "nativeSrc": "898:7:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "898:7:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "875:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "875:3:136"
                                },
                                "nativeSrc": "875:31:136",
                                "nodeType": "YulFunctionCall",
                                "src": "875:31:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "908:2:136",
                                "nodeType": "YulLiteral",
                                "src": "908:2:136",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "871:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "871:3:136"
                            },
                            "nativeSrc": "871:40:136",
                            "nodeType": "YulFunctionCall",
                            "src": "871:40:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "917:2:136",
                                "nodeType": "YulLiteral",
                                "src": "917:2:136",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "913:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "913:3:136"
                            },
                            "nativeSrc": "913:7:136",
                            "nodeType": "YulFunctionCall",
                            "src": "913:7:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "867:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "867:3:136"
                        },
                        "nativeSrc": "867:54:136",
                        "nodeType": "YulFunctionCall",
                        "src": "867:54:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "855:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "855:3:136"
                    },
                    "nativeSrc": "855:67:136",
                    "nodeType": "YulFunctionCall",
                    "src": "855:67:136"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "841:10:136",
                      "nodeType": "YulTypedName",
                      "src": "841:10:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "997:22:136",
                    "nodeType": "YulBlock",
                    "src": "997:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "999:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "999:16:136"
                          },
                          "nativeSrc": "999:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "999:18:136"
                        },
                        "nativeSrc": "999:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "999:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "940:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "940:10:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "952:18:136",
                            "nodeType": "YulLiteral",
                            "src": "952:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "937:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "937:2:136"
                        },
                        "nativeSrc": "937:34:136",
                        "nodeType": "YulFunctionCall",
                        "src": "937:34:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "976:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "976:10:136"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "988:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "988:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "973:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "973:2:136"
                        },
                        "nativeSrc": "973:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "973:22:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "934:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "934:2:136"
                    },
                    "nativeSrc": "934:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "934:62:136"
                  },
                  "nativeSrc": "931:88:136",
                  "nodeType": "YulIf",
                  "src": "931:88:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "1035:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1035:2:136",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "1039:10:136",
                        "nodeType": "YulIdentifier",
                        "src": "1039:10:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1028:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1028:6:136"
                    },
                    "nativeSrc": "1028:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1028:22:136"
                  },
                  "nativeSrc": "1028:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1028:22:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "1066:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1066:6:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1074:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1074:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1059:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1059:6:136"
                    },
                    "nativeSrc": "1059:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1059:22:136"
                  },
                  "nativeSrc": "1059:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1059:22:136"
                },
                {
                  "body": {
                    "nativeSrc": "1133:16:136",
                    "nodeType": "YulBlock",
                    "src": "1133:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1142:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1142:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1145:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1145:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1135:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1135:6:136"
                          },
                          "nativeSrc": "1135:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1135:12:136"
                        },
                        "nativeSrc": "1135:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1135:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "_1",
                                "nativeSrc": "1104:2:136",
                                "nodeType": "YulIdentifier",
                                "src": "1104:2:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1108:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1108:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1100:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1100:3:136"
                            },
                            "nativeSrc": "1100:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1100:15:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1117:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1117:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1096:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1096:3:136"
                        },
                        "nativeSrc": "1096:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1096:26:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1124:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "1124:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1093:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1093:2:136"
                    },
                    "nativeSrc": "1093:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1093:39:136"
                  },
                  "nativeSrc": "1090:59:136",
                  "nodeType": "YulIf",
                  "src": "1090:59:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "1175:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1175:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1183:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1183:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1171:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1171:3:136"
                        },
                        "nativeSrc": "1171:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1171:17:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "_1",
                            "nativeSrc": "1194:2:136",
                            "nodeType": "YulIdentifier",
                            "src": "1194:2:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1198:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1198:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1190:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1190:3:136"
                        },
                        "nativeSrc": "1190:13:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1190:13:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1205:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1205:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "1158:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1158:12:136"
                    },
                    "nativeSrc": "1158:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1158:54:136"
                  },
                  "nativeSrc": "1158:54:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1158:54:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nativeSrc": "1236:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1236:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1244:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1244:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1232:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1232:3:136"
                            },
                            "nativeSrc": "1232:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1232:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1253:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1253:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1228:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1228:3:136"
                        },
                        "nativeSrc": "1228:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1228:30:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1260:1:136",
                        "nodeType": "YulLiteral",
                        "src": "1260:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1221:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1221:6:136"
                    },
                    "nativeSrc": "1221:41:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1221:41:136"
                  },
                  "nativeSrc": "1221:41:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1221:41:136"
                },
                {
                  "nativeSrc": "1271:16:136",
                  "nodeType": "YulAssignment",
                  "src": "1271:16:136",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "1281:6:136",
                    "nodeType": "YulIdentifier",
                    "src": "1281:6:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1271:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1271:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1296:50:136",
                  "nodeType": "YulAssignment",
                  "src": "1296:50:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1329:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1329:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1340:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1340:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1325:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1325:3:136"
                        },
                        "nativeSrc": "1325:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1325:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_address",
                      "nativeSrc": "1306:18:136",
                      "nodeType": "YulIdentifier",
                      "src": "1306:18:136"
                    },
                    "nativeSrc": "1306:40:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1306:40:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1296:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1296:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptrt_address",
            "nativeSrc": "324:1028:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "378:9:136",
                "nodeType": "YulTypedName",
                "src": "378:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "389:7:136",
                "nodeType": "YulTypedName",
                "src": "389:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "401:6:136",
                "nodeType": "YulTypedName",
                "src": "401:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "409:6:136",
                "nodeType": "YulTypedName",
                "src": "409:6:136",
                "type": ""
              }
            ],
            "src": "324:1028:136"
          },
          {
            "body": {
              "nativeSrc": "1542:358:136",
              "nodeType": "YulBlock",
              "src": "1542:358:136",
              "statements": [
                {
                  "nativeSrc": "1552:27:136",
                  "nodeType": "YulAssignment",
                  "src": "1552:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1564:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1564:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1575:3:136",
                        "nodeType": "YulLiteral",
                        "src": "1575:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "1560:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1560:3:136"
                    },
                    "nativeSrc": "1560:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1560:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "1552:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "1552:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1595:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1595:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "1610:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1610:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "1622:26:136",
                                "nodeType": "YulLiteral",
                                "src": "1622:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "1618:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1618:3:136"
                            },
                            "nativeSrc": "1618:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1618:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1606:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1606:3:136"
                        },
                        "nativeSrc": "1606:44:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1606:44:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1588:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1588:6:136"
                    },
                    "nativeSrc": "1588:63:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1588:63:136"
                  },
                  "nativeSrc": "1588:63:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1588:63:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1671:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1671:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1682:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1682:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1667:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1667:3:136"
                        },
                        "nativeSrc": "1667:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1667:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "1691:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1691:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "1703:26:136",
                                "nodeType": "YulLiteral",
                                "src": "1703:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "1699:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1699:3:136"
                            },
                            "nativeSrc": "1699:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1699:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1687:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1687:3:136"
                        },
                        "nativeSrc": "1687:44:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1687:44:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1660:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1660:6:136"
                    },
                    "nativeSrc": "1660:72:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1660:72:136"
                  },
                  "nativeSrc": "1660:72:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1660:72:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1752:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1752:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1763:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1763:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1748:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1748:3:136"
                        },
                        "nativeSrc": "1748:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1748:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value2",
                            "nativeSrc": "1772:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1772:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "1784:26:136",
                                "nodeType": "YulLiteral",
                                "src": "1784:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "1780:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1780:3:136"
                            },
                            "nativeSrc": "1780:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1780:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1768:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1768:3:136"
                        },
                        "nativeSrc": "1768:44:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1768:44:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1741:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1741:6:136"
                    },
                    "nativeSrc": "1741:72:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1741:72:136"
                  },
                  "nativeSrc": "1741:72:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1741:72:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1833:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1833:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1844:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1844:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1829:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1829:3:136"
                        },
                        "nativeSrc": "1829:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1829:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value3",
                            "nativeSrc": "1853:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1853:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "1865:26:136",
                                "nodeType": "YulLiteral",
                                "src": "1865:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "1861:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1861:3:136"
                            },
                            "nativeSrc": "1861:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1861:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "1849:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1849:3:136"
                        },
                        "nativeSrc": "1849:44:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1849:44:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1822:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1822:6:136"
                    },
                    "nativeSrc": "1822:72:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1822:72:136"
                  },
                  "nativeSrc": "1822:72:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1822:72:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes20_t_bytes20_t_bytes20_t_bytes20__to_t_bytes20_t_bytes20_t_bytes20_t_bytes20__fromStack_reversed",
            "nativeSrc": "1357:543:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1487:9:136",
                "nodeType": "YulTypedName",
                "src": "1487:9:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "1498:6:136",
                "nodeType": "YulTypedName",
                "src": "1498:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1506:6:136",
                "nodeType": "YulTypedName",
                "src": "1506:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1514:6:136",
                "nodeType": "YulTypedName",
                "src": "1514:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1522:6:136",
                "nodeType": "YulTypedName",
                "src": "1522:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1533:4:136",
                "nodeType": "YulTypedName",
                "src": "1533:4:136",
                "type": ""
              }
            ],
            "src": "1357:543:136"
          },
          {
            "body": {
              "nativeSrc": "2006:76:136",
              "nodeType": "YulBlock",
              "src": "2006:76:136",
              "statements": [
                {
                  "nativeSrc": "2016:26:136",
                  "nodeType": "YulAssignment",
                  "src": "2016:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2028:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2028:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2039:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2039:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2024:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2024:3:136"
                    },
                    "nativeSrc": "2024:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2024:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2016:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "2016:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2058:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2058:9:136"
                      },
                      {
                        "name": "value0",
                        "nativeSrc": "2069:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2069:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2051:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2051:6:136"
                    },
                    "nativeSrc": "2051:25:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2051:25:136"
                  },
                  "nativeSrc": "2051:25:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2051:25:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
            "nativeSrc": "1905:177:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1975:9:136",
                "nodeType": "YulTypedName",
                "src": "1975:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "1986:6:136",
                "nodeType": "YulTypedName",
                "src": "1986:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "1997:4:136",
                "nodeType": "YulTypedName",
                "src": "1997:4:136",
                "type": ""
              }
            ],
            "src": "1905:177:136"
          },
          {
            "body": {
              "nativeSrc": "2232:119:136",
              "nodeType": "YulBlock",
              "src": "2232:119:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "2249:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "2249:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "2258:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2258:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "2270:3:136",
                                "nodeType": "YulLiteral",
                                "src": "2270:3:136",
                                "type": "",
                                "value": "248"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "2275:3:136",
                                "nodeType": "YulLiteral",
                                "src": "2275:3:136",
                                "type": "",
                                "value": "255"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "2266:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2266:3:136"
                            },
                            "nativeSrc": "2266:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2266:13:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "2254:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2254:3:136"
                        },
                        "nativeSrc": "2254:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2254:26:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2242:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2242:6:136"
                    },
                    "nativeSrc": "2242:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2242:39:136"
                  },
                  "nativeSrc": "2242:39:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2242:39:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "2301:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "2301:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2306:1:136",
                            "nodeType": "YulLiteral",
                            "src": "2306:1:136",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2297:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2297:3:136"
                        },
                        "nativeSrc": "2297:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2297:11:136"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "2310:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2310:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2290:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2290:6:136"
                    },
                    "nativeSrc": "2290:27:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2290:27:136"
                  },
                  "nativeSrc": "2290:27:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2290:27:136"
                },
                {
                  "nativeSrc": "2326:19:136",
                  "nodeType": "YulAssignment",
                  "src": "2326:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "2337:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "2337:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2342:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2342:2:136",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2333:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2333:3:136"
                    },
                    "nativeSrc": "2333:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2333:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "2326:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2326:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes1_t_bytes32__to_t_bytes1_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "2087:264:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "2200:3:136",
                "nodeType": "YulTypedName",
                "src": "2200:3:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "2205:6:136",
                "nodeType": "YulTypedName",
                "src": "2205:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2213:6:136",
                "nodeType": "YulTypedName",
                "src": "2213:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "2224:3:136",
                "nodeType": "YulTypedName",
                "src": "2224:3:136",
                "type": ""
              }
            ],
            "src": "2087:264:136"
          },
          {
            "body": {
              "nativeSrc": "2493:164:136",
              "nodeType": "YulBlock",
              "src": "2493:164:136",
              "statements": [
                {
                  "nativeSrc": "2503:27:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2503:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "2523:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2523:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "2517:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "2517:5:136"
                    },
                    "nativeSrc": "2517:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2517:13:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "2507:6:136",
                      "nodeType": "YulTypedName",
                      "src": "2507:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "2545:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "2545:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "2554:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2554:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2562:4:136",
                            "nodeType": "YulLiteral",
                            "src": "2562:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2550:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2550:3:136"
                        },
                        "nativeSrc": "2550:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2550:17:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "2569:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2569:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mcopy",
                      "nativeSrc": "2539:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "2539:5:136"
                    },
                    "nativeSrc": "2539:37:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2539:37:136"
                  },
                  "nativeSrc": "2539:37:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2539:37:136"
                },
                {
                  "nativeSrc": "2585:26:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2585:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "2599:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "2599:3:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "2604:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2604:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2595:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2595:3:136"
                    },
                    "nativeSrc": "2595:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2595:16:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "2589:2:136",
                      "nodeType": "YulTypedName",
                      "src": "2589:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "2627:2:136",
                        "nodeType": "YulIdentifier",
                        "src": "2627:2:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2631:1:136",
                        "nodeType": "YulLiteral",
                        "src": "2631:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2620:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2620:6:136"
                    },
                    "nativeSrc": "2620:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2620:13:136"
                  },
                  "nativeSrc": "2620:13:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2620:13:136"
                },
                {
                  "nativeSrc": "2642:9:136",
                  "nodeType": "YulAssignment",
                  "src": "2642:9:136",
                  "value": {
                    "name": "_1",
                    "nativeSrc": "2649:2:136",
                    "nodeType": "YulIdentifier",
                    "src": "2649:2:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "2642:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2642:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "2356:301:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "2469:3:136",
                "nodeType": "YulTypedName",
                "src": "2469:3:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2474:6:136",
                "nodeType": "YulTypedName",
                "src": "2474:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "2485:3:136",
                "nodeType": "YulTypedName",
                "src": "2485:3:136",
                "type": ""
              }
            ],
            "src": "2356:301:136"
          },
          {
            "body": {
              "nativeSrc": "2743:103:136",
              "nodeType": "YulBlock",
              "src": "2743:103:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "2789:16:136",
                    "nodeType": "YulBlock",
                    "src": "2789:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2798:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2798:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2801:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2801:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2791:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2791:6:136"
                          },
                          "nativeSrc": "2791:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2791:12:136"
                        },
                        "nativeSrc": "2791:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2791:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "2764:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "2764:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "2773:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2773:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "2760:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2760:3:136"
                        },
                        "nativeSrc": "2760:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2760:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2785:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2785:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "2756:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2756:3:136"
                    },
                    "nativeSrc": "2756:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2756:32:136"
                  },
                  "nativeSrc": "2753:52:136",
                  "nodeType": "YulIf",
                  "src": "2753:52:136"
                },
                {
                  "nativeSrc": "2814:26:136",
                  "nodeType": "YulAssignment",
                  "src": "2814:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2830:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2830:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "2824:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "2824:5:136"
                    },
                    "nativeSrc": "2824:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2824:16:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2814:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2814:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32_fromMemory",
            "nativeSrc": "2662:184:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2709:9:136",
                "nodeType": "YulTypedName",
                "src": "2709:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "2720:7:136",
                "nodeType": "YulTypedName",
                "src": "2720:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "2732:6:136",
                "nodeType": "YulTypedName",
                "src": "2732:6:136",
                "type": ""
              }
            ],
            "src": "2662:184:136"
          },
          {
            "body": {
              "nativeSrc": "2970:110:136",
              "nodeType": "YulBlock",
              "src": "2970:110:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "2987:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "2987:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "3000:2:136",
                                "nodeType": "YulLiteral",
                                "src": "3000:2:136",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value0",
                                "nativeSrc": "3004:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "3004:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "2996:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2996:3:136"
                            },
                            "nativeSrc": "2996:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2996:15:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "3017:26:136",
                                "nodeType": "YulLiteral",
                                "src": "3017:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "3013:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3013:3:136"
                            },
                            "nativeSrc": "3013:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3013:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "2992:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2992:3:136"
                        },
                        "nativeSrc": "2992:53:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2992:53:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2980:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2980:6:136"
                    },
                    "nativeSrc": "2980:66:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2980:66:136"
                  },
                  "nativeSrc": "2980:66:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2980:66:136"
                },
                {
                  "nativeSrc": "3055:19:136",
                  "nodeType": "YulAssignment",
                  "src": "3055:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "3066:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "3066:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3071:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3071:2:136",
                        "type": "",
                        "value": "20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3062:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3062:3:136"
                    },
                    "nativeSrc": "3062:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3062:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "3055:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3055:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_address__to_t_address__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "2851:229:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "2946:3:136",
                "nodeType": "YulTypedName",
                "src": "2946:3:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2951:6:136",
                "nodeType": "YulTypedName",
                "src": "2951:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "2962:3:136",
                "nodeType": "YulTypedName",
                "src": "2962:3:136",
                "type": ""
              }
            ],
            "src": "2851:229:136"
          },
          {
            "body": {
              "nativeSrc": "3117:95:136",
              "nodeType": "YulBlock",
              "src": "3117:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3134:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3134:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "3141:3:136",
                            "nodeType": "YulLiteral",
                            "src": "3141:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3146:10:136",
                            "nodeType": "YulLiteral",
                            "src": "3146:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "3137:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3137:3:136"
                        },
                        "nativeSrc": "3137:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3137:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3127:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3127:6:136"
                    },
                    "nativeSrc": "3127:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3127:31:136"
                  },
                  "nativeSrc": "3127:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3127:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3174:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3174:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3177:4:136",
                        "nodeType": "YulLiteral",
                        "src": "3177:4:136",
                        "type": "",
                        "value": "0x11"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3167:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3167:6:136"
                    },
                    "nativeSrc": "3167:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3167:15:136"
                  },
                  "nativeSrc": "3167:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3167:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3198:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3198:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3201:4:136",
                        "nodeType": "YulLiteral",
                        "src": "3201:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "3191:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3191:6:136"
                    },
                    "nativeSrc": "3191:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3191:15:136"
                  },
                  "nativeSrc": "3191:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3191:15:136"
                }
              ]
            },
            "name": "panic_error_0x11",
            "nativeSrc": "3085:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "3085:127:136"
          },
          {
            "body": {
              "nativeSrc": "3264:104:136",
              "nodeType": "YulBlock",
              "src": "3264:104:136",
              "statements": [
                {
                  "nativeSrc": "3274:39:136",
                  "nodeType": "YulAssignment",
                  "src": "3274:39:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "x",
                            "nativeSrc": "3290:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "3290:1:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3293:4:136",
                            "nodeType": "YulLiteral",
                            "src": "3293:4:136",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3286:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3286:3:136"
                        },
                        "nativeSrc": "3286:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3286:12:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "y",
                            "nativeSrc": "3304:1:136",
                            "nodeType": "YulIdentifier",
                            "src": "3304:1:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3307:4:136",
                            "nodeType": "YulLiteral",
                            "src": "3307:4:136",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3300:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3300:3:136"
                        },
                        "nativeSrc": "3300:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3300:12:136"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "3282:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3282:3:136"
                    },
                    "nativeSrc": "3282:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3282:31:136"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "3274:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "3274:4:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3340:22:136",
                    "nodeType": "YulBlock",
                    "src": "3340:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "3342:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "3342:16:136"
                          },
                          "nativeSrc": "3342:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3342:18:136"
                        },
                        "nativeSrc": "3342:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3342:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nativeSrc": "3328:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "3328:4:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3334:4:136",
                        "nodeType": "YulLiteral",
                        "src": "3334:4:136",
                        "type": "",
                        "value": "0xff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3325:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "3325:2:136"
                    },
                    "nativeSrc": "3325:14:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3325:14:136"
                  },
                  "nativeSrc": "3322:40:136",
                  "nodeType": "YulIf",
                  "src": "3322:40:136"
                }
              ]
            },
            "name": "checked_sub_t_uint8",
            "nativeSrc": "3217:151:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "3246:1:136",
                "nodeType": "YulTypedName",
                "src": "3246:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "3249:1:136",
                "nodeType": "YulTypedName",
                "src": "3249:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "3255:4:136",
                "nodeType": "YulTypedName",
                "src": "3255:4:136",
                "type": ""
              }
            ],
            "src": "3217:151:136"
          },
          {
            "body": {
              "nativeSrc": "3405:95:136",
              "nodeType": "YulBlock",
              "src": "3405:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3422:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3422:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "3429:3:136",
                            "nodeType": "YulLiteral",
                            "src": "3429:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3434:10:136",
                            "nodeType": "YulLiteral",
                            "src": "3434:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "3425:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3425:3:136"
                        },
                        "nativeSrc": "3425:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3425:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3415:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3415:6:136"
                    },
                    "nativeSrc": "3415:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3415:31:136"
                  },
                  "nativeSrc": "3415:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3415:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3462:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3462:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3465:4:136",
                        "nodeType": "YulLiteral",
                        "src": "3465:4:136",
                        "type": "",
                        "value": "0x12"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3455:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3455:6:136"
                    },
                    "nativeSrc": "3455:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3455:15:136"
                  },
                  "nativeSrc": "3455:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3455:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "3486:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3486:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3489:4:136",
                        "nodeType": "YulLiteral",
                        "src": "3489:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "3479:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3479:6:136"
                    },
                    "nativeSrc": "3479:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3479:15:136"
                  },
                  "nativeSrc": "3479:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3479:15:136"
                }
              ]
            },
            "name": "panic_error_0x12",
            "nativeSrc": "3373:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "3373:127:136"
          },
          {
            "body": {
              "nativeSrc": "3557:116:136",
              "nodeType": "YulBlock",
              "src": "3557:116:136",
              "statements": [
                {
                  "nativeSrc": "3567:20:136",
                  "nodeType": "YulAssignment",
                  "src": "3567:20:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "3582:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "3582:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "3585:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "3585:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "mul",
                      "nativeSrc": "3578:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3578:3:136"
                    },
                    "nativeSrc": "3578:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3578:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "product",
                      "nativeSrc": "3567:7:136",
                      "nodeType": "YulIdentifier",
                      "src": "3567:7:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3645:22:136",
                    "nodeType": "YulBlock",
                    "src": "3645:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "3647:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "3647:16:136"
                          },
                          "nativeSrc": "3647:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3647:18:136"
                        },
                        "nativeSrc": "3647:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3647:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "x",
                                "nativeSrc": "3616:1:136",
                                "nodeType": "YulIdentifier",
                                "src": "3616:1:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "3609:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "3609:6:136"
                            },
                            "nativeSrc": "3609:9:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3609:9:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "y",
                                "nativeSrc": "3623:1:136",
                                "nodeType": "YulIdentifier",
                                "src": "3623:1:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "product",
                                    "nativeSrc": "3630:7:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3630:7:136"
                                  },
                                  {
                                    "name": "x",
                                    "nativeSrc": "3639:1:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3639:1:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nativeSrc": "3626:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3626:3:136"
                                },
                                "nativeSrc": "3626:15:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3626:15:136"
                              }
                            ],
                            "functionName": {
                              "name": "eq",
                              "nativeSrc": "3620:2:136",
                              "nodeType": "YulIdentifier",
                              "src": "3620:2:136"
                            },
                            "nativeSrc": "3620:22:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3620:22:136"
                          }
                        ],
                        "functionName": {
                          "name": "or",
                          "nativeSrc": "3606:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "3606:2:136"
                        },
                        "nativeSrc": "3606:37:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3606:37:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3599:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3599:6:136"
                    },
                    "nativeSrc": "3599:45:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3599:45:136"
                  },
                  "nativeSrc": "3596:71:136",
                  "nodeType": "YulIf",
                  "src": "3596:71:136"
                }
              ]
            },
            "name": "checked_mul_t_uint256",
            "nativeSrc": "3505:168:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "3536:1:136",
                "nodeType": "YulTypedName",
                "src": "3536:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "3539:1:136",
                "nodeType": "YulTypedName",
                "src": "3539:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "product",
                "nativeSrc": "3545:7:136",
                "nodeType": "YulTypedName",
                "src": "3545:7:136",
                "type": ""
              }
            ],
            "src": "3505:168:136"
          },
          {
            "body": {
              "nativeSrc": "3726:77:136",
              "nodeType": "YulBlock",
              "src": "3726:77:136",
              "statements": [
                {
                  "nativeSrc": "3736:16:136",
                  "nodeType": "YulAssignment",
                  "src": "3736:16:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "3747:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "3747:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "3750:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "3750:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3743:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3743:3:136"
                    },
                    "nativeSrc": "3743:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3743:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "sum",
                      "nativeSrc": "3736:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3736:3:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3775:22:136",
                    "nodeType": "YulBlock",
                    "src": "3775:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "3777:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "3777:16:136"
                          },
                          "nativeSrc": "3777:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3777:18:136"
                        },
                        "nativeSrc": "3777:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3777:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "3767:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "3767:1:136"
                      },
                      {
                        "name": "sum",
                        "nativeSrc": "3770:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "3770:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "3764:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "3764:2:136"
                    },
                    "nativeSrc": "3764:10:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3764:10:136"
                  },
                  "nativeSrc": "3761:36:136",
                  "nodeType": "YulIf",
                  "src": "3761:36:136"
                }
              ]
            },
            "name": "checked_add_t_uint256",
            "nativeSrc": "3678:125:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "3709:1:136",
                "nodeType": "YulTypedName",
                "src": "3709:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "3712:1:136",
                "nodeType": "YulTypedName",
                "src": "3712:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "sum",
                "nativeSrc": "3718:3:136",
                "nodeType": "YulTypedName",
                "src": "3718:3:136",
                "type": ""
              }
            ],
            "src": "3678:125:136"
          },
          {
            "body": {
              "nativeSrc": "3854:171:136",
              "nodeType": "YulBlock",
              "src": "3854:171:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3885:111:136",
                    "nodeType": "YulBlock",
                    "src": "3885:111:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3906:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3906:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "3913:3:136",
                                  "nodeType": "YulLiteral",
                                  "src": "3913:3:136",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "3918:10:136",
                                  "nodeType": "YulLiteral",
                                  "src": "3918:10:136",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nativeSrc": "3909:3:136",
                                "nodeType": "YulIdentifier",
                                "src": "3909:3:136"
                              },
                              "nativeSrc": "3909:20:136",
                              "nodeType": "YulFunctionCall",
                              "src": "3909:20:136"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "3899:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3899:6:136"
                          },
                          "nativeSrc": "3899:31:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3899:31:136"
                        },
                        "nativeSrc": "3899:31:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3899:31:136"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3950:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3950:1:136",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3953:4:136",
                              "nodeType": "YulLiteral",
                              "src": "3953:4:136",
                              "type": "",
                              "value": "0x12"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nativeSrc": "3943:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3943:6:136"
                          },
                          "nativeSrc": "3943:15:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3943:15:136"
                        },
                        "nativeSrc": "3943:15:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3943:15:136"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3978:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3978:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3981:4:136",
                              "nodeType": "YulLiteral",
                              "src": "3981:4:136",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3971:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3971:6:136"
                          },
                          "nativeSrc": "3971:15:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3971:15:136"
                        },
                        "nativeSrc": "3971:15:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3971:15:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "y",
                        "nativeSrc": "3874:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "3874:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3867:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3867:6:136"
                    },
                    "nativeSrc": "3867:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3867:9:136"
                  },
                  "nativeSrc": "3864:132:136",
                  "nodeType": "YulIf",
                  "src": "3864:132:136"
                },
                {
                  "nativeSrc": "4005:14:136",
                  "nodeType": "YulAssignment",
                  "src": "4005:14:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "4014:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "4014:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "4017:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "4017:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "div",
                      "nativeSrc": "4010:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4010:3:136"
                    },
                    "nativeSrc": "4010:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4010:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "r",
                      "nativeSrc": "4005:1:136",
                      "nodeType": "YulIdentifier",
                      "src": "4005:1:136"
                    }
                  ]
                }
              ]
            },
            "name": "checked_div_t_uint256",
            "nativeSrc": "3808:217:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "3839:1:136",
                "nodeType": "YulTypedName",
                "src": "3839:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "3842:1:136",
                "nodeType": "YulTypedName",
                "src": "3842:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "r",
                "nativeSrc": "3848:1:136",
                "nodeType": "YulTypedName",
                "src": "3848:1:136",
                "type": ""
              }
            ],
            "src": "3808:217:136"
          },
          {
            "body": {
              "nativeSrc": "4079:79:136",
              "nodeType": "YulBlock",
              "src": "4079:79:136",
              "statements": [
                {
                  "nativeSrc": "4089:17:136",
                  "nodeType": "YulAssignment",
                  "src": "4089:17:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "x",
                        "nativeSrc": "4101:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "4101:1:136"
                      },
                      {
                        "name": "y",
                        "nativeSrc": "4104:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "4104:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "sub",
                      "nativeSrc": "4097:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4097:3:136"
                    },
                    "nativeSrc": "4097:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4097:9:136"
                  },
                  "variableNames": [
                    {
                      "name": "diff",
                      "nativeSrc": "4089:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "4089:4:136"
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "4130:22:136",
                    "nodeType": "YulBlock",
                    "src": "4130:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x11",
                            "nativeSrc": "4132:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "4132:16:136"
                          },
                          "nativeSrc": "4132:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "4132:18:136"
                        },
                        "nativeSrc": "4132:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "4132:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "diff",
                        "nativeSrc": "4121:4:136",
                        "nodeType": "YulIdentifier",
                        "src": "4121:4:136"
                      },
                      {
                        "name": "x",
                        "nativeSrc": "4127:1:136",
                        "nodeType": "YulIdentifier",
                        "src": "4127:1:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "4118:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "4118:2:136"
                    },
                    "nativeSrc": "4118:11:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4118:11:136"
                  },
                  "nativeSrc": "4115:37:136",
                  "nodeType": "YulIf",
                  "src": "4115:37:136"
                }
              ]
            },
            "name": "checked_sub_t_uint256",
            "nativeSrc": "4030:128:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "x",
                "nativeSrc": "4061:1:136",
                "nodeType": "YulTypedName",
                "src": "4061:1:136",
                "type": ""
              },
              {
                "name": "y",
                "nativeSrc": "4064:1:136",
                "nodeType": "YulTypedName",
                "src": "4064:1:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "diff",
                "nativeSrc": "4070:4:136",
                "nodeType": "YulTypedName",
                "src": "4070:4:136",
                "type": ""
              }
            ],
            "src": "4030:128:136"
          },
          {
            "body": {
              "nativeSrc": "4337:164:136",
              "nodeType": "YulBlock",
              "src": "4337:164:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4354:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4354:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4365:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4365:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4347:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4347:6:136"
                    },
                    "nativeSrc": "4347:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4347:21:136"
                  },
                  "nativeSrc": "4347:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4347:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4388:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4388:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4399:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4399:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4384:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4384:3:136"
                        },
                        "nativeSrc": "4384:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4384:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4404:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4404:2:136",
                        "type": "",
                        "value": "14"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4377:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4377:6:136"
                    },
                    "nativeSrc": "4377:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4377:30:136"
                  },
                  "nativeSrc": "4377:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4377:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4427:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4427:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4438:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4438:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4423:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4423:3:136"
                        },
                        "nativeSrc": "4423:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4423:18:136"
                      },
                      {
                        "hexValue": "496e76616c6964206e756d626572",
                        "kind": "string",
                        "nativeSrc": "4443:16:136",
                        "nodeType": "YulLiteral",
                        "src": "4443:16:136",
                        "type": "",
                        "value": "Invalid number"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4416:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4416:6:136"
                    },
                    "nativeSrc": "4416:44:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4416:44:136"
                  },
                  "nativeSrc": "4416:44:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4416:44:136"
                },
                {
                  "nativeSrc": "4469:26:136",
                  "nodeType": "YulAssignment",
                  "src": "4469:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4481:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4481:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4492:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4492:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4477:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4477:3:136"
                    },
                    "nativeSrc": "4477:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4477:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4469:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "4469:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f10345bf174b7296e0343b593f8b22d6d65d2b16a2522b6b74d9848a96db003a__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "4163:338:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4314:9:136",
                "nodeType": "YulTypedName",
                "src": "4314:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "4328:4:136",
                "nodeType": "YulTypedName",
                "src": "4328:4:136",
                "type": ""
              }
            ],
            "src": "4163:338:136"
          },
          {
            "body": {
              "nativeSrc": "4538:95:136",
              "nodeType": "YulBlock",
              "src": "4538:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "4555:1:136",
                        "nodeType": "YulLiteral",
                        "src": "4555:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "4562:3:136",
                            "nodeType": "YulLiteral",
                            "src": "4562:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4567:10:136",
                            "nodeType": "YulLiteral",
                            "src": "4567:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "4558:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4558:3:136"
                        },
                        "nativeSrc": "4558:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4558:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4548:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4548:6:136"
                    },
                    "nativeSrc": "4548:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4548:31:136"
                  },
                  "nativeSrc": "4548:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4548:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "4595:1:136",
                        "nodeType": "YulLiteral",
                        "src": "4595:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4598:4:136",
                        "nodeType": "YulLiteral",
                        "src": "4598:4:136",
                        "type": "",
                        "value": "0x32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4588:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4588:6:136"
                    },
                    "nativeSrc": "4588:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4588:15:136"
                  },
                  "nativeSrc": "4588:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4588:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "4619:1:136",
                        "nodeType": "YulLiteral",
                        "src": "4619:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4622:4:136",
                        "nodeType": "YulLiteral",
                        "src": "4622:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "4612:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4612:6:136"
                    },
                    "nativeSrc": "4612:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4612:15:136"
                  },
                  "nativeSrc": "4612:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4612:15:136"
                }
              ]
            },
            "name": "panic_error_0x32",
            "nativeSrc": "4506:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "4506:127:136"
          },
          {
            "body": {
              "nativeSrc": "4812:180:136",
              "nodeType": "YulBlock",
              "src": "4812:180:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4829:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4829:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4840:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4840:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4822:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4822:6:136"
                    },
                    "nativeSrc": "4822:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4822:21:136"
                  },
                  "nativeSrc": "4822:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4822:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4863:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4863:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4874:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4874:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4859:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4859:3:136"
                        },
                        "nativeSrc": "4859:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4859:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4879:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4879:2:136",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4852:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4852:6:136"
                    },
                    "nativeSrc": "4852:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4852:30:136"
                  },
                  "nativeSrc": "4852:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4852:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4902:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4902:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4913:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4913:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4898:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4898:3:136"
                        },
                        "nativeSrc": "4898:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4898:18:136"
                      },
                      {
                        "hexValue": "557365206a6163446f75626c652066756e6374696f6e20696e7374656164",
                        "kind": "string",
                        "nativeSrc": "4918:32:136",
                        "nodeType": "YulLiteral",
                        "src": "4918:32:136",
                        "type": "",
                        "value": "Use jacDouble function instead"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4891:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4891:6:136"
                    },
                    "nativeSrc": "4891:60:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4891:60:136"
                  },
                  "nativeSrc": "4891:60:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4891:60:136"
                },
                {
                  "nativeSrc": "4960:26:136",
                  "nodeType": "YulAssignment",
                  "src": "4960:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4972:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4972:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4983:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4983:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4968:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4968:3:136"
                    },
                    "nativeSrc": "4968:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4968:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4960:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "4960:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_5fdf44d35b202e4b4a5d1b6167961ee48e84a906ae5e709d7bddb824c86220a6__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "4638:354:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "4789:9:136",
                "nodeType": "YulTypedName",
                "src": "4789:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "4803:4:136",
                "nodeType": "YulTypedName",
                "src": "4803:4:136",
                "type": ""
              }
            ],
            "src": "4638:354:136"
          }
        ]
      },
      "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_1)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(_1, length), 0x20), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(_1, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        value0 := memPtr\n        value1 := abi_decode_address(add(headStart, 0x20))\n    }\n    function abi_encode_tuple_t_bytes20_t_bytes20_t_bytes20_t_bytes20__to_t_bytes20_t_bytes20_t_bytes20_t_bytes20__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, and(value0, not(0xffffffffffffffffffffffff)))\n        mstore(add(headStart, 32), and(value1, not(0xffffffffffffffffffffffff)))\n        mstore(add(headStart, 64), and(value2, not(0xffffffffffffffffffffffff)))\n        mstore(add(headStart, 96), and(value3, not(0xffffffffffffffffffffffff)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_bytes32__to_t_bytes1_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), value1)\n        end := add(pos, 33)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        mcopy(pos, add(value0, 0x20), length)\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_packed_t_address__to_t_address__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, and(shl(96, value0), not(0xffffffffffffffffffffffff)))\n        end := add(pos, 20)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        diff := sub(and(x, 0xff), and(y, 0xff))\n        if gt(diff, 0xff) { panic_error_0x11() }\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        product := mul(x, y)\n        if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_stringliteral_f10345bf174b7296e0343b593f8b22d6d65d2b16a2522b6b74d9848a96db003a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Invalid number\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_stringliteral_5fdf44d35b202e4b4a5d1b6167961ee48e84a906ae5e709d7bddb824c86220a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Use jacDouble function instead\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 136,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "143:1507:125:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "143:1507:125:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1094:553;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;1606:44:136;;;1588:63;;1687:44;;;1682:2;1667:18;;1660:72;1768:44;;;1748:18;;;1741:72;;;;1849:44;;;1844:2;1829:18;;1822:72;1575:3;1560:19;1094:553:125;;;;;;;;206:880;;;;;;:::i;:::-;;:::i;:::-;;;2051:25:136;;;2039:2;2024:18;206:880:125;1905:177:136;1094:553:125;1193:7;1202;1211;1220;1245:19;1267:43;1288:12;1302:7;1267:20;:43::i;:::-;1245:65;;1351:51;1382:4;1375:12;;1389:11;1358:43;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1358:43:125;;;;;;;;;;1351:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1433:43;;1426:51;;1433:43;;-1:-1:-1;;;1450:12:125;1464:11;;1433:43;;;:::i;:::-;;;;-1:-1:-1;;1433:43:125;;;;;;;;;;1426:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1508:43;;1501:51;;1508:43;;-1:-1:-1;;;1525:12:125;1539:11;;1508:43;;;:::i;:::-;;;;-1:-1:-1;;1508:43:125;;;;;;;;;;1501:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1583:43;;1576:51;;1583:43;;-1:-1:-1;;;1600:12:125;1614:11;;1583:43;;;:::i;:::-;;;;-1:-1:-1;;1583:43:125;;;;;;;;;;1576:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1321:318;;;;-1:-1:-1;1321:318:125;-1:-1:-1;1321:318:125;;-1:-1:-1;1094:553:125;-1:-1:-1;;;;1094:553:125:o;206:880::-;362:25;;-1:-1:-1;;3000:2:136;2996:15;;;2992:53;362:25:125;;;2980:66:136;310:7:125;;;;3062:12:136;;362:25:125;;;;;;;;;;;;352:36;;;;;;335:53;;403:12;:19;426:2;403:25;399:652;;572:4;554:23;;548:30;625:4;607:23;;601:30;687:4;669:23;;663:30;445:9;655:39;759:66;745:80;;;;;:125;;;851:1;:7;;856:2;851:7;:18;;;;862:1;:7;;867:2;862:7;851:18;723:317;;;906:10;921:66;947:6;956;960:2;956:1;:6;:::i;:::-;972:1;984;921:17;:66::i;:::-;-1:-1:-1;905:82:125;-1:-1:-1;1006:18:125;;-1:-1:-1;;;;;1006:18:125;723:317;430:621;;;399:652;-1:-1:-1;1076:1:125;;-1:-1:-1;206:880:125;;;;;:::o;1248:835:112:-;1378:7;;;-1:-1:-1;;1429:12:112;1434:6;1439:1;1434:6;;;;-1:-1:-1;;1429:12:112;:::i;:::-;1426:1;1419:26;1407:38;;-1:-1:-1;;1460:1:112;:5;:14;;;;-1:-1:-1;;1469:1:112;:5;1460:14;:23;;;;-1:-1:-1;;1478:1:112;:5;1460:23;:33;;;-1:-1:-1;1487:6:112;;1460:33;:43;;;-1:-1:-1;1497:6:112;;1460:43;:52;;;;1511:1;1507;:5;;;1460:52;1456:98;;;1537:1;1540;1529:13;;;;;;;1456:98;1564:12;1579;1586:1;-1:-1:-1;;1579:6:112;:12::i;:::-;1564:27;-1:-1:-1;1604:10:112;-1:-1:-1;;828:66:112;585:1;-1:-1:-1;;548:1:112;1669;1662:15;1655:29;-1:-1:-1;;828:66:112;1644:1;1641;1634:15;1631:1;1624:29;1617:71;1604:84;-1:-1:-1;1704:23:112;1604:84;1725:1;1716:5;-1:-1:-1;;1720:1:112;1716:5;:::i;:::-;1715:11;;;;:::i;:::-;1704:6;:23::i;:::-;1699:28;-1:-1:-1;1738:9:112;1752:6;;;;1699:28;1752:6;:::i;:::-;:10;;1761:1;1752:10;:::i;:::-;1766:1;1751:16;:21;1750:37;;1781:6;1785:2;-1:-1:-1;;1781:6:112;:::i;:::-;1750:37;;;1776:2;1750:37;1738:49;-1:-1:-1;1801:10:112;;;1839:46;-1:-1:-1;;1859:10:112;1863:6;-1:-1:-1;;1859:10:112;:::i;:::-;1853:4;1846:27;623:66;726;1883:1;1839:6;:46::i;:::-;1800:85;;;;;;1897:11;1910;1923;1938:35;-1:-1:-1;;1945:18:112;;;;;:::i;:::-;1958:1;1952:4;1945:18;1965:1;1968;1971;1938:6;:35::i;:::-;1896:77;;;;;;1985:11;1998;2013:32;2019:2;2023;2027;2031:3;2036;2041;2013:5;:32::i;:::-;1984:61;;-1:-1:-1;1984:61:112;-1:-1:-1;;;;;;;;;;;;;1248:835:112;;;;;;;;:::o;10523:452::-;10587:7;10615;;;;;:20;;;10632:3;10626:2;:9;;10615:20;:32;;;;-1:-1:-1;10639:8:112;;;10615:32;10607:59;;;;-1:-1:-1;;;10607:59:112;;4365:2:136;10607:59:112;;;4347:21:136;4404:2;4384:18;;;4377:30;-1:-1:-1;;;4423:18:136;;;4416:44;4477:18;;10607:59:112;;;;;;;;;10677:9;10716:1;10740:3;10677:9;10774:173;10781:7;;10774:173;;10809:6;10813:2;10809:1;:6;:::i;:::-;10805:10;;10843:4;10889:3;10849:44;;;;;:::i;:::-;10882:3;10866:20;;;;;:::i;:::-;10876:4;10873:1;10866:20;10860:26;;:3;:26;:::i;:::-;10856:1;10849:44;10830:64;;-1:-1:-1;10830:64:112;-1:-1:-1;10920:2:112;10928:6;10920:2;10928:1;:6;:::i;:::-;10924:10;;:1;:10;:::i;:::-;10909:26;-1:-1:-1;10909:26:112;-1:-1:-1;10774:173:112;;;-1:-1:-1;10966:1:112;;10523:452;-1:-1:-1;;;;;10523:452:112:o;2456:788::-;2524:7;2548:5;2557:1;2548:10;2544:24;;-1:-1:-1;2567:1:112;2560:8;;2544:24;2583:4;2591:1;2583:9;2579:23;;-1:-1:-1;2601:1:112;2594:8;;2579:23;2627:1;-1:-1:-1;;;2703:502:112;2726:10;;2703:502;;-1:-1:-1;;2839:3:112;2833:4;2829:14;2822:22;2815:30;2808:5;2804:42;-1:-1:-1;;2797:1:112;2794;2787:15;2780:70;2775:75;;-1:-1:-1;;2941:1:112;2936:3;2932:11;2926:4;2922:22;2915:30;2908:38;2901:5;2897:50;-1:-1:-1;;2890:1:112;2887;2880:15;2873:78;2868:83;;-1:-1:-1;;3042:1:112;3037:3;3033:11;3027:4;3023:22;3016:30;3009:38;3002:5;2998:50;-1:-1:-1;;2991:1:112;2988;2981:15;2974:78;2969:83;;-1:-1:-1;;3143:1:112;3138:3;3134:11;3128:4;3124:22;3117:30;3110:38;3103:5;3099:50;-1:-1:-1;;3092:1:112;3089;3082:15;3075:78;3070:83;-1:-1:-1;3187:2:112;3178:12;;2703:502;;;-1:-1:-1;3235:1:112;2456:788;-1:-1:-1;;;2456:788:112:o;5901:799::-;6072:7;6094;6116;6203:2;6209:1;6203:7;6199:59;;-1:-1:-1;6235:2:112;;-1:-1:-1;6239:2:112;;-1:-1:-1;6243:2:112;6227:19;;6199:59;6290:2;6270:17;;6366:1;6417:246;6424:14;;6417:246;;6472:1;6460:13;;6459:20;6455:106;;6515:30;6522:2;6526;6530;6534;6538;6542;6515:6;:30::i;:::-;6500:45;;-1:-1:-1;6500:45:112;-1:-1:-1;6500:45:112;-1:-1:-1;6455:106:112;6587:13;6599:1;6587:9;:13;:::i;:::-;6575:25;;6630:21;6640:2;6644;6648;6630:9;:21::i;:::-;6615:36;;-1:-1:-1;6615:36:112;-1:-1:-1;6615:36:112;-1:-1:-1;6417:246:112;;;6681:2;;-1:-1:-1;6685:2:112;-1:-1:-1;6689:2:112;-1:-1:-1;;5901:799:112;;;;;;;;;:::o;8787:728::-;8964:7;;;;;9109:10;;;9105:337;;-1:-1:-1;;9183:3:112;9178;9171:19;9194:1;9171:24;9167:183;;9224:1;9227;9216:13;;;;;;;;;9167:183;9310:24;9320:3;9325;9330;9310:9;:24::i;:::-;9298:36;;-1:-1:-1;9298:36:112;-1:-1:-1;9298:36:112;-1:-1:-1;9105:337:112;;;9394:36;9401:3;9406;9411;9416;9421;9426;9394:6;:36::i;:::-;9382:48;;-1:-1:-1;9382:48:112;-1:-1:-1;9382:48:112;-1:-1:-1;9105:337:112;9490:17;9499:1;9502;9505;9490:8;:17::i;:::-;9483:24;;;;;;;8787:728;;;;;;;;;;:::o;3717:1822::-;3936:7;;;4019:8;;:20;;;;-1:-1:-1;4031:8:112;;4019:20;4015:48;;;-1:-1:-1;4049:3:112;;-1:-1:-1;4054:3:112;;-1:-1:-1;4059:3:112;4041:22;;4015:48;4078:8;;:20;;;;-1:-1:-1;4090:8:112;;4078:20;4074:48;;;-1:-1:-1;4108:3:112;;-1:-1:-1;4113:3:112;;-1:-1:-1;4118:3:112;4100:22;;4074:48;4273:20;;:::i;:::-;-1:-1:-1;;4350:3:112;4345;4338:19;4330:27;;;-1:-1:-1;;828:66:112;4383:3;4376:21;4368:5;;;:29;-1:-1:-1;;4428:3:112;;4416:19;4408:5;;;:27;;;-1:-1:-1;;828:66:112;4461:3;4454:21;4446:5;;;:29;4515:97;;;;;;;;4533:5;;;;4515:97;;-1:-1:-1;;828:66:112;4528:3;4521:21;4515:97;;;;-1:-1:-1;;4556:2:112;4559:1;4556:5;;;;4551:3;4544:21;4515:97;;;;-1:-1:-1;;4579:2:112;4582:1;4579:5;;;;4574:3;4567:21;4515:97;;;;-1:-1:-1;;4602:2:112;4605:1;4602:5;;;;4597:3;4590:21;4515:97;;4730:5;;;;4721;;4515:97;;-1:-1:-1;4721:14:112;;;:32;;-1:-1:-1;4748:5:112;;;;;4739;;;:14;;4721:32;4713:75;;;;-1:-1:-1;;;4713:75:112;;4840:2:136;4713:75:112;;;4822:21:136;4879:2;4859:18;;;4852:30;4918:32;4898:18;;;4891:60;4968:18;;4713:75:112;4638:354:136;4713:75:112;4801:20;;:::i;:::-;4871:5;;-1:-1:-1;;828:66:112;4867:9;;828:66;4867:9;:::i;:::-;4860:5;;;;4853:27;4845:35;;:5;4930;;;-1:-1:-1;;828:66:112;4926:9;;828:66;4926:9;:::i;:::-;4919:5;;;;4912:27;4904:5;;;:35;4987:5;;-1:-1:-1;;828:66:112;4987:5;4973:23;4965:5;;;:31;;;5045:5;;-1:-1:-1;;828:66:112;5031:23;5023:5;;;:31;;;5100:10;;-1:-1:-1;;828:66:112;5145:9;;828:66;5145:9;:::i;:::-;5134:5;;;;-1:-1:-1;;828:66:112;5134:5;5120:23;5113:45;5213:5;;;;5206;;5100:58;;-1:-1:-1;;;828:66:112;;;;;5199:23;5196:1;5189:37;5185:41;;-1:-1:-1;;5185:41:112;:::i;:::-;5181:2;5174:56;5169:61;-1:-1:-1;5284:10:112;-1:-1:-1;;828:66:112;5343:6;5347:2;-1:-1:-1;;5343:6:112;:::i;:::-;5332:5;;;;5325;;-1:-1:-1;;828:66:112;5332:5;5318:23;5311:42;5304:5;;;;5297:60;5284:73;-1:-1:-1;;;828:66:112;5402:2;5405:1;5402:5;;;;5395:2;5398:1;5395:5;;;;5388:23;5384:27;;-1:-1:-1;;5384:27:112;:::i;:::-;5380:2;5373:42;5368:47;-1:-1:-1;5451:10:112;-1:-1:-1;;828:66:112;5490:3;5485;5478:19;5471:5;;5464:37;5520:2;;-1:-1:-1;5524:2:112;;-1:-1:-1;5451:50:112;;-1:-1:-1;;;;3717:1822:112;;;;;;;;;;;:::o;7016:1370::-;7169:7;7191;7213;7252:2;7258:1;7252:7;7248:32;;-1:-1:-1;7269:2:112;;-1:-1:-1;7273:2:112;;-1:-1:-1;7277:2:112;7261:19;;7248:32;7594:9;-1:-1:-1;;7617:2:112;7613;7606:17;7594:29;-1:-1:-1;7641:9:112;-1:-1:-1;;7664:2:112;7660;7653:17;7641:29;-1:-1:-1;7688:9:112;-1:-1:-1;;7711:2:112;7707;7700:17;7688:29;-1:-1:-1;7751:9:112;-1:-1:-1;;828:66:112;7784:1;7780:2;7773:16;7770:1;7763:30;7751:42;-1:-1:-1;7818:9:112;-1:-1:-1;;828:66:112;-1:-1:-1;;7874:1:112;7871;7864:15;548:1;7854:29;-1:-1:-1;;7847:1:112;7844;7837:15;7830:57;7818:69;-1:-1:-1;;;828:66:112;8141:1;8138;8131:15;8127:19;;-1:-1:-1;;8127:19:112;:::i;:::-;-1:-1:-1;;8120:1:112;8117;8110:15;8103:47;8099:51;-1:-1:-1;;;828:66:112;-1:-1:-1;;8265:1:112;8262;8255:15;8252:1;8245:29;8241:33;;-1:-1:-1;;8241:33:112;:::i;:::-;-1:-1:-1;;828:66:112;8226:5;8230:1;-1:-1:-1;;8226:5:112;:::i;:::-;8223:1;8216:19;8213:1;8206:33;8199:79;8195:83;-1:-1:-1;;;828:66:112;8339:2;8335;8328:17;8325:1;8318:31;8370:1;;-1:-1:-1;8373:1:112;;-1:-1:-1;8314:35:112;;-1:-1:-1;;;;7016:1370:112;;;;;;;;:::o;9881:357::-;9992:7;10001;10021:12;10036:13;10043:2;-1:-1:-1;;10036:6:112;:13::i;:::-;10021:28;-1:-1:-1;10060:13:112;-1:-1:-1;;10089:4:112;10083;10076:21;10060:37;-1:-1:-1;10108:10:112;-1:-1:-1;;10132:5:112;10128:2;10121:20;10108:33;-1:-1:-1;10152:10:112;-1:-1:-1;;828:66:112;10189:5;10183:4;10176:22;10172:2;10165:37;10223:2;;;;-1:-1:-1;9881:357:112;;-1:-1:-1;;;;;;;9881:357:112:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:127:136:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:173;214:20;;-1:-1:-1;;;;;263:31:136;;253:42;;243:70;;309:1;306;299:12;243:70;146:173;;;:::o;324:1028::-;401:6;409;462:2;450:9;441:7;437:23;433:32;430:52;;;478:1;475;468:12;430:52;518:9;505:23;551:18;543:6;540:30;537:50;;;583:1;580;573:12;537:50;606:22;;659:4;651:13;;647:27;-1:-1:-1;637:55:136;;688:1;685;678:12;637:55;728:2;715:16;754:18;746:6;743:30;740:56;;;776:18;;:::i;:::-;825:2;819:9;917:2;879:17;;-1:-1:-1;;875:31:136;;;908:2;871:40;867:54;855:67;;952:18;937:34;;973:22;;;934:62;931:88;;;999:18;;:::i;:::-;1035:2;1028:22;1059;;;1100:15;;;1117:4;1096:26;1093:39;-1:-1:-1;1090:59:136;;;1145:1;1142;1135:12;1090:59;1205:6;1198:4;1194:2;1190:13;1183:4;1175:6;1171:17;1158:54;1260:1;1253:4;1244:6;1236;1232:19;1228:30;1221:41;1281:6;1271:16;;;;;1306:40;1340:4;1329:9;1325:20;1306:40;:::i;:::-;1296:50;;324:1028;;;;;:::o;2087:264::-;-1:-1:-1;;;;;;2254:26:136;;;;2242:39;;2306:1;2297:11;;2290:27;2342:2;2333:12;;2087:264::o;2356:301::-;2485:3;2523:6;2517:13;2569:6;2562:4;2554:6;2550:17;2545:3;2539:37;2631:1;2595:16;;2620:13;;;-1:-1:-1;2595:16:136;2356:301;-1:-1:-1;2356:301:136:o;2662:184::-;2732:6;2785:2;2773:9;2764:7;2760:23;2756:32;2753:52;;;2801:1;2798;2791:12;2753:52;-1:-1:-1;2824:16:136;;2662:184;-1:-1:-1;2662:184:136:o;3085:127::-;3146:10;3141:3;3137:20;3134:1;3127:31;3177:4;3174:1;3167:15;3201:4;3198:1;3191:15;3217:151;3307:4;3300:12;;;3286;;;3282:31;;3325:14;;3322:40;;;3342:18;;:::i;3373:127::-;3434:10;3429:3;3425:20;3422:1;3415:31;3465:4;3462:1;3455:15;3489:4;3486:1;3479:15;3505:168;3578:9;;;3609;;3626:15;;;3620:22;;3606:37;3596:71;;3647:18;;:::i;3678:125::-;3743:9;;;3764:10;;;3761:36;;;3777:18;;:::i;3808:217::-;3848:1;3874;3864:132;;3918:10;3913:3;3909:20;3906:1;3899:31;3953:4;3950:1;3943:15;3981:4;3978:1;3971:15;3864:132;-1:-1:-1;4010:9:136;;3808:217::o;4030:128::-;4097:9;;;4118:11;;;4115:37;;;4132:18;;:::i",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.7.0 <0.9.0;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"../../libs/Secp256k1.sol\";\r\n\r\ncontract TestSecp256k1 {\r\n\r\n    string internal result;\r\n\r\n    function recoverWitPublicKeyX(bytes memory witSignature, address evmAddr)\r\n        public pure returns (bytes32)\r\n    {\r\n        bytes32 digest = keccak256(abi.encodePacked(evmAddr));\r\n        if (witSignature.length == 65) {\r\n            bytes32 r;\r\n            bytes32 s;\r\n            uint8 v;\r\n            assembly {\r\n                r := mload(add(witSignature, 0x20))\r\n                s := mload(add(witSignature, 0x40)) \r\n                v := byte(0, mload(add(witSignature, 0x60)))\r\n            }\r\n            if (\r\n                uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0\r\n                    && (v == 27 || v == 28)\r\n            ) {\r\n                (uint256 _x,) = Secp256k1.recover(uint256(digest), v - 27, uint256(r), uint256(s));\r\n                return bytes32(_x);\r\n            }\r\n        }\r\n        return bytes32(0);\r\n    }\r\n\r\n    function recoverWitAddr(bytes memory witSignature, address evmAddr) \r\n        public pure returns (bytes20, bytes20, bytes20, bytes20)\r\n    {\r\n        bytes32 _publicKeyX = recoverWitPublicKeyX(witSignature, evmAddr);\r\n        return (\r\n            bytes20(sha256(abi.encodePacked(bytes1(0x00), _publicKeyX))),\r\n            bytes20(sha256(abi.encodePacked(bytes1(0x01), _publicKeyX))),\r\n            bytes20(sha256(abi.encodePacked(bytes1(0x02), _publicKeyX))),\r\n            bytes20(sha256(abi.encodePacked(bytes1(0x03), _publicKeyX)))\r\n        );\r\n    }\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\mockups\\tests\\TestSecp256k1.sol",
  "ast": {
    "absolutePath": "project:/contracts/mockups/tests/TestSecp256k1.sol",
    "exportedSymbols": {
      "Secp256k1": [
        32535
      ],
      "TestSecp256k1": [
        45260
      ]
    },
    "id": 45261,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 45095,
        "literals": [
          "solidity",
          ">=",
          "0.7",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:125"
      },
      {
        "id": 45096,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "68:33:125"
      },
      {
        "absolutePath": "project:/contracts/libs/Secp256k1.sol",
        "file": "../../libs/Secp256k1.sol",
        "id": 45097,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 45261,
        "sourceUnit": 32536,
        "src": "105:34:125",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "TestSecp256k1",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 45260,
        "linearizedBaseContracts": [
          45260
        ],
        "name": "TestSecp256k1",
        "nameLocation": "152:13:125",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 45099,
            "mutability": "mutable",
            "name": "result",
            "nameLocation": "191:6:125",
            "nodeType": "VariableDeclaration",
            "scope": 45260,
            "src": "175:22:125",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 45098,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "175:6:125",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 45181,
              "nodeType": "Block",
              "src": "324:762:125",
              "statements": [
                {
                  "assignments": [
                    45109
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 45109,
                      "mutability": "mutable",
                      "name": "digest",
                      "nameLocation": "343:6:125",
                      "nodeType": "VariableDeclaration",
                      "scope": 45181,
                      "src": "335:14:125",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 45108,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "335:7:125",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 45116,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 45113,
                            "name": "evmAddr",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45103,
                            "src": "379:7:125",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 45111,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "362:3:125",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 45112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "366:12:125",
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "src": "362:16:125",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 45114,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "362:25:125",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 45110,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4294967288,
                      "src": "352:9:125",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 45115,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "352:36:125",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "335:53:125"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 45120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 45117,
                        "name": "witSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45101,
                        "src": "403:12:125",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 45118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "416:6:125",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "403:19:125",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "3635",
                      "id": 45119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "426:2:125",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_65_by_1",
                        "typeString": "int_const 65"
                      },
                      "value": "65"
                    },
                    "src": "403:25:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45175,
                  "nodeType": "IfStatement",
                  "src": "399:652:125",
                  "trueBody": {
                    "id": 45174,
                    "nodeType": "Block",
                    "src": "430:621:125",
                    "statements": [
                      {
                        "assignments": [
                          45122
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 45122,
                            "mutability": "mutable",
                            "name": "r",
                            "nameLocation": "453:1:125",
                            "nodeType": "VariableDeclaration",
                            "scope": 45174,
                            "src": "445:9:125",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 45121,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "445:7:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 45123,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "445:9:125"
                      },
                      {
                        "assignments": [
                          45125
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 45125,
                            "mutability": "mutable",
                            "name": "s",
                            "nameLocation": "477:1:125",
                            "nodeType": "VariableDeclaration",
                            "scope": 45174,
                            "src": "469:9:125",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 45124,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "469:7:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 45126,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "469:9:125"
                      },
                      {
                        "assignments": [
                          45128
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 45128,
                            "mutability": "mutable",
                            "name": "v",
                            "nameLocation": "499:1:125",
                            "nodeType": "VariableDeclaration",
                            "scope": 45174,
                            "src": "493:7:125",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 45127,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "493:5:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 45129,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "493:7:125"
                      },
                      {
                        "AST": {
                          "nativeSrc": "524:185:125",
                          "nodeType": "YulBlock",
                          "src": "524:185:125",
                          "statements": [
                            {
                              "nativeSrc": "543:35:125",
                              "nodeType": "YulAssignment",
                              "src": "543:35:125",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "witSignature",
                                        "nativeSrc": "558:12:125",
                                        "nodeType": "YulIdentifier",
                                        "src": "558:12:125"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "572:4:125",
                                        "nodeType": "YulLiteral",
                                        "src": "572:4:125",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "554:3:125",
                                      "nodeType": "YulIdentifier",
                                      "src": "554:3:125"
                                    },
                                    "nativeSrc": "554:23:125",
                                    "nodeType": "YulFunctionCall",
                                    "src": "554:23:125"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "548:5:125",
                                  "nodeType": "YulIdentifier",
                                  "src": "548:5:125"
                                },
                                "nativeSrc": "548:30:125",
                                "nodeType": "YulFunctionCall",
                                "src": "548:30:125"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nativeSrc": "543:1:125",
                                  "nodeType": "YulIdentifier",
                                  "src": "543:1:125"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "596:35:125",
                              "nodeType": "YulAssignment",
                              "src": "596:35:125",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "witSignature",
                                        "nativeSrc": "611:12:125",
                                        "nodeType": "YulIdentifier",
                                        "src": "611:12:125"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "625:4:125",
                                        "nodeType": "YulLiteral",
                                        "src": "625:4:125",
                                        "type": "",
                                        "value": "0x40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "607:3:125",
                                      "nodeType": "YulIdentifier",
                                      "src": "607:3:125"
                                    },
                                    "nativeSrc": "607:23:125",
                                    "nodeType": "YulFunctionCall",
                                    "src": "607:23:125"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nativeSrc": "601:5:125",
                                  "nodeType": "YulIdentifier",
                                  "src": "601:5:125"
                                },
                                "nativeSrc": "601:30:125",
                                "nodeType": "YulFunctionCall",
                                "src": "601:30:125"
                              },
                              "variableNames": [
                                {
                                  "name": "s",
                                  "nativeSrc": "596:1:125",
                                  "nodeType": "YulIdentifier",
                                  "src": "596:1:125"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "650:44:125",
                              "nodeType": "YulAssignment",
                              "src": "650:44:125",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "660:1:125",
                                    "nodeType": "YulLiteral",
                                    "src": "660:1:125",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "witSignature",
                                            "nativeSrc": "673:12:125",
                                            "nodeType": "YulIdentifier",
                                            "src": "673:12:125"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "687:4:125",
                                            "nodeType": "YulLiteral",
                                            "src": "687:4:125",
                                            "type": "",
                                            "value": "0x60"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "669:3:125",
                                          "nodeType": "YulIdentifier",
                                          "src": "669:3:125"
                                        },
                                        "nativeSrc": "669:23:125",
                                        "nodeType": "YulFunctionCall",
                                        "src": "669:23:125"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "663:5:125",
                                      "nodeType": "YulIdentifier",
                                      "src": "663:5:125"
                                    },
                                    "nativeSrc": "663:30:125",
                                    "nodeType": "YulFunctionCall",
                                    "src": "663:30:125"
                                  }
                                ],
                                "functionName": {
                                  "name": "byte",
                                  "nativeSrc": "655:4:125",
                                  "nodeType": "YulIdentifier",
                                  "src": "655:4:125"
                                },
                                "nativeSrc": "655:39:125",
                                "nodeType": "YulFunctionCall",
                                "src": "655:39:125"
                              },
                              "variableNames": [
                                {
                                  "name": "v",
                                  "nativeSrc": "650:1:125",
                                  "nodeType": "YulIdentifier",
                                  "src": "650:1:125"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 45122,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "543:1:125",
                            "valueSize": 1
                          },
                          {
                            "declaration": 45125,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "596:1:125",
                            "valueSize": 1
                          },
                          {
                            "declaration": 45128,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "650:1:125",
                            "valueSize": 1
                          },
                          {
                            "declaration": 45101,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "558:12:125",
                            "valueSize": 1
                          },
                          {
                            "declaration": 45101,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "611:12:125",
                            "valueSize": 1
                          },
                          {
                            "declaration": 45101,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "673:12:125",
                            "valueSize": 1
                          }
                        ],
                        "id": 45130,
                        "nodeType": "InlineAssembly",
                        "src": "515:194:125"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 45145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 45136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 45133,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45125,
                                  "src": "753:1:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 45132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "745:7:125",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 45131,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "745:7:125",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 45134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "745:10:125",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130",
                              "id": 45135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "759:66:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1",
                                "typeString": "int_const 5789...(69 digits omitted)...7168"
                              },
                              "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"
                            },
                            "src": "745:80:125",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 45143,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 45139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 45137,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45128,
                                    "src": "851:1:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "3237",
                                    "id": 45138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "856:2:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_27_by_1",
                                      "typeString": "int_const 27"
                                    },
                                    "value": "27"
                                  },
                                  "src": "851:7:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 45142,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 45140,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45128,
                                    "src": "862:1:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "3238",
                                    "id": 45141,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "867:2:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_28_by_1",
                                      "typeString": "int_const 28"
                                    },
                                    "value": "28"
                                  },
                                  "src": "862:7:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "851:18:125",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 45144,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "850:20:125",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "745:125:125",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 45173,
                        "nodeType": "IfStatement",
                        "src": "723:317:125",
                        "trueBody": {
                          "id": 45172,
                          "nodeType": "Block",
                          "src": "886:154:125",
                          "statements": [
                            {
                              "assignments": [
                                45147,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 45147,
                                  "mutability": "mutable",
                                  "name": "_x",
                                  "nameLocation": "914:2:125",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 45172,
                                  "src": "906:10:125",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 45146,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "906:7:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 45166,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 45152,
                                        "name": "digest",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45109,
                                        "src": "947:6:125",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 45151,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "939:7:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 45150,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "939:7:125",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 45153,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "939:15:125",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 45156,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 45154,
                                      "name": "v",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 45128,
                                      "src": "956:1:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "3237",
                                      "id": 45155,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "960:2:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_27_by_1",
                                        "typeString": "int_const 27"
                                      },
                                      "value": "27"
                                    },
                                    "src": "956:6:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 45159,
                                        "name": "r",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45122,
                                        "src": "972:1:125",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 45158,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "964:7:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 45157,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "964:7:125",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 45160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "964:10:125",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 45163,
                                        "name": "s",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 45125,
                                        "src": "984:1:125",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 45162,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "976:7:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 45161,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "976:7:125",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 45164,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "976:10:125",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 45148,
                                    "name": "Secp256k1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 32535,
                                    "src": "921:9:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Secp256k1_$32535_$",
                                      "typeString": "type(library Secp256k1)"
                                    }
                                  },
                                  "id": 45149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "931:7:125",
                                  "memberName": "recover",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 31717,
                                  "src": "921:17:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint8_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256,uint8,uint256,uint256) pure returns (uint256,uint256)"
                                  }
                                },
                                "id": 45165,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "921:66:125",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "905:82:125"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 45169,
                                    "name": "_x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45147,
                                    "src": "1021:2:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 45168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1013:7:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 45167,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1013:7:125",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 45170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1013:11:125",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "functionReturnParameters": 45107,
                              "id": 45171,
                              "nodeType": "Return",
                              "src": "1006:18:125"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 45178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1076:1:125",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 45177,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1068:7:125",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 45176,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1068:7:125",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 45179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1068:10:125",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 45107,
                  "id": 45180,
                  "nodeType": "Return",
                  "src": "1061:17:125"
                }
              ]
            },
            "functionSelector": "f7d2a56c",
            "id": 45182,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "recoverWitPublicKeyX",
            "nameLocation": "215:20:125",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 45104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45101,
                  "mutability": "mutable",
                  "name": "witSignature",
                  "nameLocation": "249:12:125",
                  "nodeType": "VariableDeclaration",
                  "scope": 45182,
                  "src": "236:25:125",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 45100,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "236:5:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45103,
                  "mutability": "mutable",
                  "name": "evmAddr",
                  "nameLocation": "271:7:125",
                  "nodeType": "VariableDeclaration",
                  "scope": 45182,
                  "src": "263:15:125",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45102,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "263:7:125",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "235:44:125"
            },
            "returnParameters": {
              "id": 45107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45106,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 45182,
                  "src": "310:7:125",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 45105,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "310:7:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "309:9:125"
            },
            "scope": 45260,
            "src": "206:880:125",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 45258,
              "nodeType": "Block",
              "src": "1234:413:125",
              "statements": [
                {
                  "assignments": [
                    45198
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 45198,
                      "mutability": "mutable",
                      "name": "_publicKeyX",
                      "nameLocation": "1253:11:125",
                      "nodeType": "VariableDeclaration",
                      "scope": 45258,
                      "src": "1245:19:125",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 45197,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1245:7:125",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 45203,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 45200,
                        "name": "witSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45184,
                        "src": "1288:12:125",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 45201,
                        "name": "evmAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45186,
                        "src": "1302:7:125",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 45199,
                      "name": "recoverWitPublicKeyX",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45182,
                      "src": "1267:20:125",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory,address) pure returns (bytes32)"
                      }
                    },
                    "id": 45202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1267:43:125",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1245:65:125"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30783030",
                                        "id": 45211,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1382:4:125",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0x00"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 45210,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1375:6:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 45209,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1375:6:125",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 45212,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1375:12:125",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  {
                                    "id": 45213,
                                    "name": "_publicKeyX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45198,
                                    "src": "1389:11:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 45207,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967295,
                                    "src": "1358:3:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 45208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "1362:12:125",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "1358:16:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 45214,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1358:43:125",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 45206,
                              "name": "sha256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967274,
                              "src": "1351:6:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 45215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1351:51:125",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 45205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1343:7:125",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes20_$",
                            "typeString": "type(bytes20)"
                          },
                          "typeName": {
                            "id": 45204,
                            "name": "bytes20",
                            "nodeType": "ElementaryTypeName",
                            "src": "1343:7:125",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 45216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1343:60:125",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30783031",
                                        "id": 45224,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1457:4:125",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "0x01"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 45223,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1450:6:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 45222,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1450:6:125",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 45225,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1450:12:125",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  {
                                    "id": 45226,
                                    "name": "_publicKeyX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45198,
                                    "src": "1464:11:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 45220,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967295,
                                    "src": "1433:3:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 45221,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "1437:12:125",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "1433:16:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 45227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1433:43:125",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 45219,
                              "name": "sha256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967274,
                              "src": "1426:6:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 45228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1426:51:125",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 45218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1418:7:125",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes20_$",
                            "typeString": "type(bytes20)"
                          },
                          "typeName": {
                            "id": 45217,
                            "name": "bytes20",
                            "nodeType": "ElementaryTypeName",
                            "src": "1418:7:125",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 45229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1418:60:125",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30783032",
                                        "id": 45237,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1532:4:125",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "0x02"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        }
                                      ],
                                      "id": 45236,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1525:6:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 45235,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1525:6:125",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 45238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1525:12:125",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  {
                                    "id": 45239,
                                    "name": "_publicKeyX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45198,
                                    "src": "1539:11:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 45233,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967295,
                                    "src": "1508:3:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 45234,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "1512:12:125",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "1508:16:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 45240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1508:43:125",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 45232,
                              "name": "sha256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967274,
                              "src": "1501:6:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 45241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1501:51:125",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 45231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1493:7:125",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes20_$",
                            "typeString": "type(bytes20)"
                          },
                          "typeName": {
                            "id": 45230,
                            "name": "bytes20",
                            "nodeType": "ElementaryTypeName",
                            "src": "1493:7:125",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 45242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1493:60:125",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30783033",
                                        "id": 45250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1607:4:125",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "0x03"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        }
                                      ],
                                      "id": 45249,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1600:6:125",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 45248,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1600:6:125",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 45251,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1600:12:125",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  {
                                    "id": 45252,
                                    "name": "_publicKeyX",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45198,
                                    "src": "1614:11:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "expression": {
                                    "id": 45246,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967295,
                                    "src": "1583:3:125",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 45247,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberLocation": "1587:12:125",
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "1583:16:125",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 45253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1583:43:125",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 45245,
                              "name": "sha256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967274,
                              "src": "1576:6:125",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_sha256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 45254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1576:51:125",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 45244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1568:7:125",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes20_$",
                            "typeString": "type(bytes20)"
                          },
                          "typeName": {
                            "id": 45243,
                            "name": "bytes20",
                            "nodeType": "ElementaryTypeName",
                            "src": "1568:7:125",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 45255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1568:60:125",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        }
                      }
                    ],
                    "id": 45256,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1328:311:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes20_$_t_bytes20_$_t_bytes20_$_t_bytes20_$",
                      "typeString": "tuple(bytes20,bytes20,bytes20,bytes20)"
                    }
                  },
                  "functionReturnParameters": 45196,
                  "id": 45257,
                  "nodeType": "Return",
                  "src": "1321:318:125"
                }
              ]
            },
            "functionSelector": "4c9a8820",
            "id": 45259,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "recoverWitAddr",
            "nameLocation": "1103:14:125",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 45187,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45184,
                  "mutability": "mutable",
                  "name": "witSignature",
                  "nameLocation": "1131:12:125",
                  "nodeType": "VariableDeclaration",
                  "scope": 45259,
                  "src": "1118:25:125",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 45183,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1118:5:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45186,
                  "mutability": "mutable",
                  "name": "evmAddr",
                  "nameLocation": "1153:7:125",
                  "nodeType": "VariableDeclaration",
                  "scope": 45259,
                  "src": "1145:15:125",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 45185,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1145:7:125",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1117:44:125"
            },
            "returnParameters": {
              "id": 45196,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45189,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 45259,
                  "src": "1193:7:125",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 45188,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "1193:7:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45191,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 45259,
                  "src": "1202:7:125",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 45190,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "1202:7:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45193,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 45259,
                  "src": "1211:7:125",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 45192,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45195,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 45259,
                  "src": "1220:7:125",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 45194,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "1220:7:125",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1192:36:125"
            },
            "scope": 45260,
            "src": "1094:553:125",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 45261,
        "src": "143:1507:125",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "35:1615:125"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:46.043Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}